From: Chong Yidong Date: Sat, 19 Mar 2011 18:49:31 +0000 (-0400) Subject: Merge changes from emacs-23 branch X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~544 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b14e3e21ec6702d27257a1400681fc36ee10282f;p=emacs.git Merge changes from emacs-23 branch --- b14e3e21ec6702d27257a1400681fc36ee10282f diff --cc doc/lispref/ChangeLog index a0498bf46c2,90a1d24ce04..437cbbd70d0 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@@ -1,54 -1,16 +1,62 @@@ + 2011-03-16 Stefan Monnier + + * strings.texi (String Conversion): Don't mention + string-make-(uni|multi)byte (bug#8262). + * nonascii.texi (Converting Representations): Fix up range. + * keymaps.texi (Key Binding Commands): Update code point, avoid + "unibyte character" and remove mention of unibyte bindings. + -2011-03-07 Chong Yidong +2011-03-10 Eli Zaretskii - * Version 23.3 released. + * modes.texi (Operator Precedence Grammars): Don't use characters + outside ISO-8859-1. -2011-02-25 Glenn Morris +2011-03-09 Eli Zaretskii + + * intro.texi (Acknowledgements): Convert to ISO-8859-1 encoding. + + * makefile.w32-in (MAKEINFO_OPTS): Add --enable-encoding. + +2011-03-08 Glenn Morris + + * Makefile.in (MAKEINFO_OPTS): Add --enable-encoding. + * intro.texi (Acknowledgements): Names to UTF-8. + * elisp.texi: Set documentencoding. + +2011-03-06 Chong Yidong + + * package.texi: Update index keywords. + (Package Archives): New node contents. Document package-x.el. + +2011-03-06 Juanma Barranquero + + * makefile.w32-in (srcs): Add package.texi. + +2011-03-06 Chong Yidong + + * package.texi (Packaging, Packaging Basics, Simple Packages) + (Multi-file Packages): Expand and clarify. + (Package Archives): Temporary placeholder node. + + * elisp.texi (Top): Update node listing. + + * Makefile.in (srcs): Add package.texi. + +2011-03-05 Chong Yidong + + * processes.texi (Synchronous Processes): Minor clarification + (Bug#8149). + +2011-03-03 Glenn Morris + + * files.texi (Truenames): Minor clarification. (Bug#2341) + +2011-03-01 Glenn Morris + + * variables.texi (Directory Local Variables): + Mention `(subdirs . nil)' alist element. + +2011-02-28 Glenn Morris * variables.texi (Directory Local Variables): Mention the optional mtime argument of dir-locals-set-directory-class. (Bug#3577) diff --cc lisp/ChangeLog index 42b4d759c07,602b60c6aac..55f0b52bb41 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,8194 -1,1621 +1,8213 @@@ + 2011-03-19 Eli Zaretskii + + * emerge.el (emerge-metachars): Separate value for ms-dos and + windows-nt systems. + (emerge-protect-metachars): Quote correctly for ms-dos and + windows-nt systems. + -2011-03-15 Ralph Schleicher ++2011-03-19 Ralph Schleicher + + * info.el (info-initialize): Replace all uses of `:' with + path-separator for compatibility with non-Unix systems. + Cache quoting of path-separator. (Bug#8258) + -2011-03-12 Juanma Barranquero ++2011-03-19 Juanma Barranquero + + * avoid.el (mouse-avoidance-mode, mouse-avoidance-nudge-dist) + (mouse-avoidance-threshold, mouse-avoidance-banish-destination) + (mouse-avoidance-mode): Fix typos in docstrings. + -2011-03-12 Michael Albinus +2011-03-19 Chong Yidong - * net/tramp.el (tramp-progress-reporter-update): Use - `tramp-compat-funcall'. - (tramp-handle-start-file-process): Use `tramp-compat-process-get'. - (tramp-handle-insert-file-contents): Make `file-remote-p' call - compatible. - (tramp-open-connection-setup-interactive-shell): Use - `tramp-compat-process-put'. + * startup.el (package-subdirectory-regexp): Move from package.el. + Omit \\` and \\', and let callers add them. - * net/tramp-compat.el (tramp-compat-process-get) - (tramp-compat-process-put): New defuns. + * emacs-lisp/package.el (package-strip-version) + (package-load-all-descriptors): Add \\` and \\' to + package-subdirectory-regexp before using it. + (package-untar-buffer): New arg DIR; ensure that file untars only + into this expected directory. Remove superfluous delete-region. + (package-unpack): Caller changed. + (package-tar-file-info): Use package-subdirectory-regexp. - * net/trampver.el: Update release number. +2011-03-18 Stefan Monnier -2011-03-12 Stefan Monnier + * vc/diff-mode.el (diff-mode-map): Shadow problematic bindings from + diff-mode-shared-map (bug#8284). + (diff-mode-shared-map): Re-introduce some bindings that were problematic. - * ebuff-menu.el (electric-buffer-menu-mode-map): Move initialization - into declaration. Remove redundant and harmful binding. +2011-03-17 Lars Magne Ingebrigtsen -2011-03-11 Juanma Barranquero + * calendar/time-date.el (format-seconds): Use assoc instead of + assoc-string, since assoc-string doesn't exist in XEmacs. - Backport revno:103463 from trunk. - * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring. +2011-03-17 Juanma Barranquero - Backport revno:103622 from trunk. - * help-fns.el (describe-variable): Don't complete keywords. - Suggested by Teodor Zlatanov . + * custom.el (custom-known-themes): Reflow docstring. + (custom-theme-load-path): Fix typo in docstring. + (load-theme): Fix typo in error message. + (custom-available-themes, custom-variable-theme-value): + Use `let', not `let*'. -2011-03-11 Eli Zaretskii +2011-03-17 Jay Belanger - * files.el (file-ownership-preserved-p): Pass `integer' as an - explicit 2nd argument to `file-attributes'. If the file's owner - is the Administrators group on Windows, and the current user is - Administrator, consider that a match. + * calc/README: Mention inclusion of musical notes. - * server.el (server-ensure-safe-dir): Consider server directory - safe on MS-Windows if its owner is the Administrators group while - the current Emacs user is Administrator. Use `=' to compare - numerical UIDs, since they could be integers or floats. + * calc/calc-units.el (calc-lu-quant): Rename from + `calc-logunits-quantity'. + (calcFunc-lupquant): Rename from `calcFunc-powerquant'. + (calcFunc-lufquant): Rename from `calcFunc-fieldquant'. + (calc-db): Rename from `calc-dblevel'. + (calcFunc-dbpower): Rename from `calcFunc-dbpowerlevel'. + (calcFunc-dbfield): Rename from `calcFunc-dbfieldlevel'. + (calc-np): Rename from `calc-nplevel'. + (calcFunc-nppower): Rename from `calcFunc-nppowerlevel'. + (calcFunc-npfield): Rename from `calcFunc-npfieldlevel'. + (calc-lu-plus): Rename from `calc-logunits-add'. + (calcFunc-lupadd): Rename from `calcFunc-lupoweradd'. + (calcFunc-lufadd): Rename from `calcFunc-lufieldadd'. + (calc-lu-minus): Rename from `calc-logunits-sub'. + (calcFunc-lupsub): Rename from `calcFunc-lupowersub'. + (calcFunc-lufsub): Rename from `calcFunc-lufieldsub'. + (calc-lu-times): Rename from `calc-logunits-mul'. + (calcFunc-lupmul): Rename from `calcFunc-lupowermul'. + (calcFunc-lufmul): Rename from `calcFunc-lufieldmul'. + (calc-lu-divide): Rename from `calc-logunits-div'. + (calcFunc-lupdiv): Rename from `calcFunc-lupowerdiv'. + (calcFunc-lufdiv): Rename from `calcFunc-lufielddiv'. -2011-03-07 Chong Yidong + * calc/calc-ext.el (calc-init-extensions): Update the names of the + functions being autoloaded. - * Version 23.3 released. + * calc/calc.el (calc-lu-power-reference): Rename from + `calc-logunits-power-reference'. + (calc-lu-field-reference): Rename from + `calc-logunits-field-reference'. -2011-03-07 Chong Yidong + * calc/calc-help (calc-l-prefix-help): Mention musical note functions. - * progmodes/cc-cmds.el (c-beginning-of-statement): Fix 2011-01-31 - change; patch supplied by Alan Mackenzie was applied incorrectly. +2011-03-17 Stefan Monnier -2011-02-26 Eli Zaretskii + * minibuffer.el (completion-all-sorted-completions): + Use :completion-cycle-penalty text property if present. - * international/mule-cmds.el (set-default-coding-systems): Use the - -unix variant of encoding in default-keyboard-coding-system. - (Bug#8122) +2011-03-16 Ken Manheimer -2011-02-23 Kenichi Handa + * allout.el (allout-yank-processing): Adjust for new rebulleting + regime so bullet being yanked is used without prompting the user + for a choice. - * mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an - error when a multipart boundary in the nested multipart is found. +2011-03-16 Juanma Barranquero -2011-02-22 Kenichi Handa + * startup.el (command-line): Warn the user that _emacs is deprecated. - * mail/rmail.el (rmail-start-mail): Decode "encoded-words" of - header components. +2011-03-16 Juanma Barranquero -2011-02-19 Kenichi Handa + * progmodes/delphi.el (delphi-search-path, delphi-indent-level) + (delphi-verbose, delphi-comment-face, delphi-string-face) + (delphi-keyword-face, delphi-ignore-changes, delphi-indent-line) + (delphi-mode-abbrev-table, delphi-debug-buffer, delphi-tab) + (delphi-find-unit, delphi-find-current-xdef, delphi-fill-comment) + (delphi-new-comment-line, delphi-font-lock-defaults) + (delphi-debug-mode-map, delphi-mode-syntax-table, delphi-mode): + Fix typos in docstrings. - * mail/rmailmm.el (rmail-mime-find-header-encoding): Be sure to - get the header copy into the temporary buffer. - (rmail-mime-insert-decoded-text): Ignore us-ascii. - (rmail-show-mime): When rmail-mime-coding-system is nil, set - buffer-file-coding-system to undecided. +2011-03-15 Ken Manheimer -2011-02-18 Eli Zaretskii + * allout.el (allout-make-topic-prefix, allout-rebullet-heading): + Invert the roles of character and string values for INSTEAD, so a + string is used for the more common case of a defaulting prompt. - * image-mode.el (image-toggle-display-image): Disable - require-final-newline in buffers visiting binary image files. - (Bug#8047) +2011-03-15 Stefan Monnier - * international/mule-cmds.el (read-char-by-name, ucs-insert): - Document completion with asterisk and a substring. + * progmodes/ruby-mode.el (ruby-backward-sexp): + * progmodes/ebrowse.el (ebrowse-draw-file-member-info): + * play/gamegrid.el (gamegrid-make-face): + * play/bubbles.el (bubbles--grid-width, bubbles--grid-height) + (bubbles--colors, bubbles--shift-mode, bubbles--initialize-images): + * notifications.el (notifications-notify): + * net/xesam.el (xesam-search-engines): + * net/quickurl.el (quickurl-list-insert): + * vc/vc-hg.el (vc-hg-dir-printer): Fix use of case. -2011-02-18 Glenn Morris +2011-03-15 Chong Yidong - * files.el (find-file-literally): Doc fix. + * startup.el (command-line): Update package subdirectory regexp. -2011-02-17 Glenn Morris +2011-03-15 Stefan Monnier - * simple.el (rfc822-goto-eoh): Give it a doc-string. + * allout.el (allout-abbreviate-flattened-numbering) + (allout-mode-deactivate-hook): Fix up obsolescence "date". - * log-edit.el (log-edit-insert-changelog): - Fix `log-edit-strip-single-file-name' functionality. (Bug#8057) + * subr.el (read-char-choice): Only show the cursor after the prompt, + not after the answer. -2011-02-14 Chong Yidong +2011-03-15 Kevin Ryde - * pgg-gpg.el (pgg-gpg-process-region): Bind - delete-by-moving-to-trash to nil. + * help-fns.el (variable-at-point): Skip leading quotes, if any + (bug#8253). - * pgg-pgp.el (pgg-pgp-process-region, pgg-pgp-verify-region) - (pgg-pgp-snarf-keys-region): - * pgg-pgp5.el (pgg-pgp5-process-region, pgg-pgp5-verify-region) - (pgg-pgp5-snarf-keys-region): Likewise. +2011-03-15 Stefan Monnier -2011-02-12 Chong Yidong + * emacs-lisp/bytecomp.el (byte-compile-save-excursion): Change the + warning message. - * files.el (copy-directory): Revert to pre-2011-01-29 version. +2011-03-14 Michael Albinus -2011-02-12 Chong Yidong + * shell.el (shell): When called interactively, offer to change the + shell file name on remote hosts. - * epg.el (epg-delete-output-file, epg-decrypt-string) - (epg-verify-string, epg-sign-string, epg-encrypt-string): Bind - delete-by-moving-to-trash to nil. +2011-03-13 Teodor Zlatanov - * epa-file.el (epa-file-insert-file-contents): Likewise. + * net/ldap.el (ldap-search-internal): Add `auth-source-search' + integration for LDAP parameters. The host, base, user or binddn, + and secret tokens can be specified in a netrc file, for instance. + This is optional because an `auth-source' parameter must be + specified in the search attributes. -2011-02-10 Glenn Morris +2011-03-13 Juanma Barranquero - * emacs-lisp/cl-seq.el (union, nunion, intersection) - (nintersection, set-difference, nset-difference) - (set-exclusive-or, nset-exclusive-or): Doc fix. + * help.el (describe-mode): Link to the mode's definition (bug#8185). - * ediff-ptch.el (ediff-fixup-patch-map): Doc fix. +2011-03-12 Stefan Monnier -2011-02-08 Glenn Morris + * ebuff-menu.el (electric-buffer-menu-mode-map): Move initialization + into declaration. Remove redundant and harmful binding. - * faces.el (face-attr-match-p): Handle the obsolete :bold and - :italic props, so that frame-set-background-mode works. (Bug#7966) +2011-03-12 Eli Zaretskii -2011-02-07 Glenn Morris + * files.el (file-ownership-preserved-p): Pass `integer' as an + explicit 2nd argument to `file-attributes'. If the file's owner + is the Administrators group on Windows, and the current user is + Administrator, consider that a match. - * simple.el (next-error): Doc fix. + * server.el (server-ensure-safe-dir): Consider server directory + safe on MS-Windows if its owner is the Administrators group while + the current Emacs user is Administrator. Use `=' to compare + numerical UIDs, since they could be integers or floats. -2011-02-06 Chong Yidong - Thierry Volpiatto +2011-03-12 Juanma Barranquero - * files.el (copy-directory): New arg COPY-AS-SUBDIR. If nil, - don't copy as a subdirectory. + * vc/vc-bzr.el (vc-bzr-state): Handle bzr 2.3.0 (follow-up to bug#8170). -2011-02-05 Glenn Morris +2011-03-12 Michael Albinus - * emacs-lisp/cl-macs.el (return-from): Fix doc typo. + Sync with Tramp 2.2.1. -2011-02-04 Glenn Morris + * net/tramp-sh.el (tramp-methods): Exchange "%k" marker with options. - * calendar/diary-lib.el (diary-font-lock-keywords): - Tweak diary-time-regexp match. (Bug#7891) + * net/trampver.el: Update release number. - * progmodes/f90.el (f90-find-tag-default): New function. (Bug#7919) - (f90-mode): Use it for mode's `find-tag-default-function' property. +2011-03-12 Stefan Monnier -2011-02-03 Glenn Morris + * progmodes/compile.el (compilation--previous-directory): Fix up + various nil/dead-marker mismatches (bug#8014). + (compilation-directory-properties, compilation-error-properties): + Don't call it at a position past the one we're about to change. - * ibuf-ext.el (ibuffer-filter-disable): Make it work. (Bug#7969) + * emacs-lisp/bytecomp.el (byte-compile-make-obsolete-variable): + Disable obsolescence warnings in the file that declares it. - * faces.el (set-face-attribute): Doc fix. (Bug#2659) +2011-03-11 Ken Manheimer -2011-02-02 Stefan Monnier + * allout-widgets.el (allout-widgets-tally): Initialize + allout-widgets-tally as a hash table rather than nil to prevent + mode-line redisplay warnings. + Also, clarify the module description and fix a comment typo. - * pcomplete.el (pcomplete-here*): Backport fix for mistaken change - (bug#7959) and (bug#5935). +2011-03-11 Juanma Barranquero -2011-01-31 Deniz Dogan + * help-fns.el (describe-variable): Don't complete keywords. + Suggested by Teodor Zlatanov . - * net/rcirc.el: Clean log filenames (Bug#7933). - (rcirc-log-write): Use convert-standard-filename. - (rcirc-log-filename-function): Documentation updates. +2011-03-10 Chong Yidong -2011-01-31 Alan Mackenzie + * emacs-lisp/package.el (package-version-join): Impose a standard + string representation for pre/alpha/beta version lists. + (package-unpack-single): Standardize the directory name by passing + it through package-version-join. + (package-strip-rcs-id): Accept any version string that does not + signal an error in version-to-list. - * progmodes/cc-cmds.el (c-forward-over-illiterals): - Continue parsing if we encounter a naked # (Bug#7595). - (c-beginning-of-statement): Avoid loop in locating the beginning - of a macro. +2011-03-10 Michael Albinus -2011-01-31 Chong Yidong + * simple.el (delete-trailing-whitespace): Return nil for the + benefit of `write-file-functions'. - * files.el (copy-directory): Fix arguments to recursive call. +2011-03-10 Glenn Morris -2011-01-29 Daiki Ueno + * vc/vc-hg.el (vc-hg-pull, vc-hg-merge-branch): Use vc-hg-program. - * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): - Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status - (Bug#7931). + * vc/vc-git.el (vc-git-program): New option. + (vc-git-branches, vc-git-pull, vc-git-merge-branch, vc-git-command) + (vc-git--call): Use it. -2011-01-29 Chong Yidong + * eshell/esh-util.el (eshell-condition-case): Doc fix. - * files.el (copy-directory): If destination is an existing - directory, copy into a subdirectory there. + * cus-edit.el (Custom-newline): If no button at point, look + for a subgroup button at start-of-line. (Bug#2298) -2011-01-29 Andreas Schwab + * mail/rmail.el (rmail-msgend, rmail-msgbeg): Doc fixes. - * emacs-lisp/shadow.el (load-path-shadows-find): Ignore leim-list - files. +2011-03-10 Julien Danjou -2011-01-28 Chong Yidong + * avoid.el (mouse-avoidance-ignore-p): Do not move the cursor if + `cursor-type' is nil. - * image-dired.el (image-dired-mouse-display-image): No-op if no - file is found (Bug#7817). +2011-03-09 Jay Belanger - * mouse.el (mouse-menu-non-singleton): Doc fix (Bug#7801). + * calc/calc.el (calc-mode-map): Don't bind "C-_" to `calc-missing-key'. -2011-01-28 Kenichi Handa +2011-03-09 Ken Manheimer - * international/quail.el (quail-keyboard-layout-alist): - Remove superfluous SPC for "pc105-uk" (bug#7927). + * allout.el Summary: Change so yank of distinctive-bullet items + preserves the existing header prefix, rebulleting it if necessary, + rather than replacing it. This is necessary for proper operation + of cooperative addons like allout-widgets. + (allout-make-topic-prefix, allout-rebullet-heading): Change + SOLICIT arg to INSTEAD, and interpret additionally a string value + as alternate bullet to be used, instead of prompting the user for + a bullet character. -2011-01-27 Glenn Morris +2011-03-09 Michael Albinus - * msb.el (msb-menu-bar-update-buffers): Update for changed - argument handling of menu-bar-select-frame. (Bug#7902) + * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Do + not use `tramp-file-name-port', because this returns also + `tramp-default-port'. -2011-01-27 Chong Yidong +2011-03-09 Deniz Dogan - * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit - to the recursion depth (Bug#7722). + * net/rcirc.el (rcirc-handler-001): Remove useless + with-rcirc-process-buffer. + (rcirc-check-auth-status): Swap arguments to string-match. -2011-01-26 Roy Liu (tiny change) +2011-03-09 Glenn Morris - * term/ns-win.el (ns-find-file): Expand ns-input-file with - command-line-default-directory (Bug#7872). + * shell.el (shell-mode): + Set comint-input-ring-size from HISTSIZE. (Bug#7889) -2011-01-25 Glenn Morris + * progmodes/gdb-mi.el (gdb): Improve 2010-12-08 change. + Check for GDBHISTFILE, HISTSIZE, etc. (Bug#7889) - * comint.el (comint-mode): Doc fix. (Bug#7897) +2011-03-08 Chong Yidong -2011-01-24 Stefan Monnier + * emacs-lisp/package.el (package-refresh-contents) + (package-menu-execute): Use condition-case-no-debug. - * files.el (file-name-non-special): Only change buffer-file-name after - insert-file-contents if it's `visit'ing the file (bug#7854). +2011-03-08 Michael Albinus -2011-01-23 Chong Yidong + * simple.el (shell-command-to-string): Use `process-file'. - * dired.el (dired-revert): Doc fix (Bug#7758). + * emacs-lisp/package.el (package-tar-file-info): Handle also + remote files. -2011-01-23 Nobuyoshi Nakada + * emacs-lisp/package-x.el (package-upload-buffer-internal): Use + `equal' for upload base check. - * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for - here-doc which ends with an underscore. - (ruby-mode-set-encoding): Skip shebang line always. - (ruby-mode-map): Bind C-c C-c to comment-region. - (ruby-font-lock-keywords): Highlight literal hash key labels as symbols. - (ruby-forward-sexp): Stop after literal hash key labels. - (ruby-font-lock-syntactic-keywords): Highlight regexp after open - bracket. +2011-03-08 Arni Magnusson (tiny change) -2011-01-22 Keitaro Miyazaki (tiny change) + * textmodes/texinfo.el (texinfo-environments): + Add deftypecv, deftypeivar, deftypemethod, deftypeop, html. (Bug#2783) - * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in - the correct buffer (Bug#7650). +2011-03-08 Glenn Morris -2011-01-22 Glenn Morris + * cus-start.el (cursor-in-non-selected-windows): + Fix :set quoting oddness. (Bug#8192) - * simple.el (do-auto-fill): Give it a doc string. + * font-lock.el (lisp-font-lock-keywords-1): Don't highlight `)' + in some setf expressions. (Bug#2159) - * button.el (make-text-button): Doc fix. (See bug#7881) +2011-03-08 Chong Yidong -2011-01-22 Chong Yidong + * custom.el (custom-available-themes): Return themes in + alphabetical order. - * simple.el (line-move-visual): Doc fix (Bug#7594). +2011-03-07 Chong Yidong - * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in - "Case sensitive" menu item. + * progmodes/cc-cmds.el (c-beginning-of-statement): Fix incorrect + application of patch from Alan Mackenzie (Bug#7595). -2011-01-21 Roland McGrath +2011-03-07 Deniz Dogan - * comint.el (comint-replace-by-expanded-history-before-point): Fix - expansion of !$ and !!:N syntax to pick the indicated word (bug#7883). + * net/rcirc.el (rcirc-connect): Fix PASS bug. -2011-01-21 Stefan Monnier +2011-03-07 Glenn Morris - * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882). + * vc/vc.el (vc-next-action): Add missing space to y-or-n-p prompt. + Give an explicit error if failed to make writable. (Bug#6146) -2011-01-21 Jari Aalto +2011-03-07 Ed Reingold - * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): - Assume foo(bar) is a manpage reference rather than some unquoted - symbol (bug#7705). + * calendar/cal-hebrew.el (diary-hebrew-yahrzeit): + Add optional `after-sunset' argument. (Bug#8190) -2011-01-21 Stefan Monnier +2011-03-07 Aaron S. Hawley - * subr.el (shell-quote-argument): Properly quote \n (bug#7687). - Suggested by Flo . + * play/morse.el (nato-alphabet, nato-region, denato-region): + New variable and functions. (Bug#2288) + (morse-region, unmorse-region): Barf if read-only. -2011-01-21 Glenn Morris +2011-03-06 Stefan Monnier - * progmodes/compile.el (compilation-error-regexp-alist): - Fix custom type. (Bug#7812) + * progmodes/gud.el (gdb-script-syntax-propertize-function): + Don't change the syntax of a \n that closes a comment (bug#8169). -2011-01-17 Stefan Monnier +2011-03-06 Chong Yidong - * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the - keymap expression. Improve docstring. + * emacs-lisp/package-x.el (package-archive-upload-base): Make it a + defcustom. + (package--update-file): Doc fix. Accept relative file names. + (package--archive-contents-from-file): Remove the argument, since + it's necessarily always "archive-contents". + (package-maint-add-news-item): Pass relative file name args to + package--update-file. + (package-upload-buffer-internal): Prompt for a destination if + package-archive-upload-base is invalid. Create the directory if + it does not exist. + (package-upload-buffer, package-upload-file): Doc fix. -2011-01-15 Mark Diekhans +2011-03-06 Chong Yidong - * files.el (backup-buffer): Make last-resort backup file in - .emacs.d (Bug#6953). + * isearch.el (isearch-mode-map): Bind C-y to isearch-yank-kill, + and move isearch-yank-line to M-s C-e (Bug#8183). - * subr.el (locate-user-emacs-file): If .emacs.d does not exist, - make it with permission 700. +2011-03-06 Alan Mackenzie -2011-01-14 Kenichi Handa + * progmodes/cc-engine.el (c-guess-basic-syntax): Reindent. + (c-guess-basic-syntax): Move CASE 19 to a different place, + correctly to process template-args-cont lines. - * mail/rmailmm.el (rmail-mime-insert-header): - Set rmail-mime-coding-system to a cons whose car is the last coding - system used to decode the header. - (rmail-mime-find-header-encoding): New function. - (rmail-mime-insert-decoded-text): - Override rmail-mime-coding-system if it is a cons. - (rmail-show-mime): If only a header part was decoded, find the - coding system while ignoring mm-charset-override-alist. +2011-03-06 Jay Belanger -2011-01-13 Chong Yidong + * calc/calc-ext.el (calc-init-extensions): + Rename calc-logunits-dblevel and calc-logunits-nplevel to calc-dblevel + and calc-nplevel, respectively. Add keybindings for calc-spn, + calc-midi and calc-freq. Add autoloads for calcFunc-spn, + calcFunc-midi, calcFunc-freq, calc-spn, calc-midi and calc-freq. - * subr.el (event-start, event-end): Doc fix (Bug#7826). + * calc/calc-units.el (calc-dblevel): Rename from + calc-logunits-dblevel. + (calc-nplevel): Rename from calc-logunits-nplevel. + (math-midi-round, math-freqp, math-midip, math-spnp) + (math-spn-to-midi, math-midi-to-spn, math-freq-to-spn) + (math-midi-to-freq, math-spn-to-freq, calcFunc-spn, calcFunc-midi) + (calcFunc-freq, calc-freq, calc-midi, calc-spn): New functions. + (math-notes): New variable. -2011-01-12 Kenichi Handa + * calc/calc.el (calc-note-threshold): New variable. - * mail/rmailmm.el (rmail-mime-next-item) - (rmail-mime-previous-item): Delete them. - (rmail-mime-shown-mode): Recursively call for children. - (rmail-mime-hidden-mode): Delete the 2nd arg TOP. - Callers changed. - (rmail-mime-raw-mode): Recursively call for children. - (rmail-mode-map): Change mapping of tab and backtab to - forward-button and backward-button respectively. - (rmail-mime-insert-tagline): Always insert "Hide" or "Show" - button. - (rmail-mime-update-tagline): New function. - (rmail-mime-insert-text): Call rmail-mime-update-tagline if the - body display is changed. - (rmail-mime-toggle-button): Rename from rmail-mime-image. - (rmail-mime-image): Delete this button type. - (rmail-mime-toggle): New button type. - (rmail-mime-insert-bulk): Call rmail-mime-update-tagline if the - body display is changed. Change the save button label to "Save". - Don't process show/hide button here. - (rmail-mime-insert-multipart): Call rmail-mime-update-tagline if - the body display is changed. Unconditionally call - rmail-mime-insert for children. - (rmail-mime-handle): Update `display' vector of the just inserted - entity. - (rmail-mime-process): If mail-header-parse-content-type returns - nil, use "text/plain" as the fallback type. - (rmail-mime-insert): For raw-mode, recursively call - rmail-mim-insert for children. - (rmail-mime): Handle the case that the current buffer is not rmail - buffer (e.g. in summary buffer). +2011-03-06 Chong Yidong -2011-01-05 Kenichi Handa + * emacs-lisp/package.el (package-archives): Accept either ordinary + directory names, in addition to HTTP URLs. + (package--with-work-buffer): New macro. Handle normal directories. + (package-handle-response): Don't display the failing buffer. + (package-download-single, package-download-tar) + (package--download-one-archive): Use package--with-work-buffer. + (package-archive-base): Rename from package-archive-url. - * mail/rmailmm.el (rmail-mime-next-item) - (rmail-mime-previous-item): Skip the body of a non-multipart - entity if a tagline is shown. +2011-03-06 Glenn Morris -2011-01-11 Stefan Monnier + * generic-x.el (generic-unix-modes): Add xmodmap-generic-mode. + (xmodmap-generic-mode): Respect generic-extras-enable-list. - * tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721). - (tmm-prompt): Simplify. - (tmm-add-prompt): Remove unused var `win'. +2011-03-06 Daniel Clemente (tiny change) - * whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810) - to minor mode which used nil accidentally to mean "turn off". + * generic-x.el (xmodmap-generic-mode): New. (Bug#2065) -2011-01-10 Michael Albinus +2011-03-06 Juanma Barranquero - * net/tramp.el (tramp-find-inline-compress) - (tramp-get-inline-coding): Quote command after pipe symbol for - local calls under W32. (Bug#6784) + * allout.el (allout-init, allout-prefixed-keybindings) + (allout-unprefixed-keybindings): + * progmodes/prolog.el (prolog-find-term): + Fix typos in docstrings. -2011-01-10 Michael Albinus +2011-03-06 Nikolaj Schumacher (tiny change) - * net/tramp.el (tramp-default-method): Initialize with pscp/plink - only when running under W32. + * emacs-lisp/elp.el (elp-results): Fix off-by-one in header. (Bug#2746) -2011-01-09 Eli Zaretskii +2011-03-06 Kevin Ryde - * progmodes/grep.el (grep-compute-defaults): Quote the program - file name after the pipe symbol in Grep templates. (Bug#6784) - * jka-compr.el (jka-compr-partial-uncompress): Likewise. + * textmodes/sgml-mode.el (sgml-fill-nobreak): Give it a doc. (Bug#5326) -2011-01-08 Lennart Borgman +2011-03-06 Michael Shields (tiny change) - * buff-menu.el (Buffer-menu-buffer-list): New var. - (Buffer-menu-revert-function, list-buffers-noselect): Use it, so a - restricted buffer list is not lost on revert (Bug#7749). + * window.el (one-window-p, walk-windows, display-buffer): + Doc fixes. (Bug#5567) -2011-01-08 Eric Hanchrow +2011-03-06 Jay Belanger - * net/ldap.el (ldap-search-internal): Discard stderr output. + * cus-edit.el (custom-prompt-variable): Use the `custom-get' property + of the variable if it exists. -2011-01-07 Eli Zaretskii +2011-03-06 Juanma Barranquero - * files.el (directory-abbrev-alist): Doc fix. (Bug#7777) + * bookmark.el: + * desktop.el: + * emacs-lock.el: + * ps-print.el: + * saveplace.el: + * net/tramp-cache.el: + * obsolete/fast-lock.el: + * textmodes/reftex.el: + Don't set `kill-emacs-hook' on noninteractive sessions (bug#8137). -2011-01-06 Stefan Monnier +2011-03-05 Antoine Levitt - * vc-bzr.el (vc-bzr-annotate-command, vc-bzr-annotate-time): - Author names can have spaces (bug#7792). + * files.el (delete-directory, copy-directory, list-directory): + Use read-directory-name. -2011-01-04 Kenichi Handa + * find-file.el (ff-find-the-other-file): + * net/ange-ftp.el (ange-ftp-make-directory): + * printing.el (pr-interactive-dir): + * progmodes/ada-prj.el (ada-prj-load-directory): + * progmodes/ebnf2ps.el (ebnf-print-directory) + (ebnf-spool-directory, ebnf-eps-directory) + (ebnf-syntax-directory): + * shell.el (shell): + * speedbar.el (speedbar-create-directory): + * vc/emerge.el (emerge-merge-directories): + * vc/vc-dir.el (vc-dir): + * vc/vc.el (vc-create-tag, vc-retrieve-tag): Likewise. - * mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown - part as a plain text. - (rmail-mime-process-multipart): Set the default content-type to - nil for unknown multipart subtypes (bug#7651). +2011-03-05 Chong Yidong -2011-01-03 Brent Goodrick (tiny change) + * help-mode.el (help-buffer): If we are to return the current + buffer, signal an error if it's not in Help mode (Bug#8147). - * abbrev.el (prepare-abbrev-list-buffer): If listing local abbrev - table, get the value before switching to the output buffer. (Bug#7733) +2011-03-05 Reuben Thomas -2011-01-03 Stefan Monnier + * files.el (file-name-version-regexp): Handle backup files of the + form `foo.js.~HEAD~1~' (Bug#8159). - * progmodes/python.el (python-mode): Don't impose font-lock (bug#3628). +2011-03-05 Glenn Morris -2011-01-02 Stefan Monnier + * eshell/esh-var.el: Don't require esh-test when compiling. + * eshell/em-banner.el, eshell/esh-cmd.el, eshell/esh-mode.el: + * eshell/esh-var.el, eshell/eshell.el: Move tests to esh-test. + * eshell/esh-test.el: Move to ../../test/eshell.el. - * files.el (file-local-variables-alist): - Make permanent-local (bug#7767). +2011-03-05 David Engster -2011-01-02 Glenn Morris + * files.el (save-some-buffers): Report the names of buffers saved + automatically due to buffer-save-without-query (Bug#8134). - * version.el (emacs-copyright): Set short copyright year to 2011. +2011-03-05 Deniz Dogan -2011-01-02 Mark Lillibridge (tiny change) + * net/rcirc.el: Add QuakeNet authentication support. + (rcirc-authinfo, rcirc-check-auth-status) + (rcirc-authenticate): Support QuakeNet. - * mail/mail-utils.el (mail-strip-quoted-names): Avoid clobbering - an existing temp buffer. (Bug#7746) +2011-03-05 Deniz Dogan -2011-01-02 Glenn Morris + * net/rcirc.el: Add functionality to authenticate before + autojoining channels. + (rcirc-authenticate-before-join): New option. + (rcirc-authenticated-hook): New variable. + (rcirc-connect): Make local variable rcirc-user-authenticated. + (rcirc-handler-001): Respect rcirc-authenticate-before-join. + (rcirc-check-auth-status, rcirc-join-channels-post-auth): + New functions. + (rcirc-handler-PRIVMSG, rcirc-handler-NOTICE): + Call rcirc-check-auth-status. + +2011-03-05 Alex Harsanyi + + * net/soap-client.el (soap-namespace-put-link): Check if the target + name is fully qualified -- use only the name part. + (soap-parse-complex-type, soap-parse-sequence): Recognize xsd:all + types, treated the same as xsd:sequence. (Bug#8166) + +2011-03-05 Eli Zaretskii + + * files.el (find-file-noselect): Don't ask about re-visiting + non-literally if the file is already visited in image-mode. + (Bug#8177) + +2011-03-05 Glenn Morris + + * eshell/esh-mode.el (eshell-kill-buffer-function): New function. + (eshell-mode): Use eshell-kill-buffer-function. + Run the -initialize functions independently of the -load-hooks. + * eshell/esh-proc.el (eshell-kill-process-function): New function. + (eshell-gather-process-output, eshell-sentinel) + (eshell-interrupt-process, eshell-kill-process, eshell-quit-process): + Use eshell-kill-process-function. + * eshell/em-alias.el (eshell-alias-load-hook): + * eshell/em-banner.el (eshell-banner-load-hook): + * eshell/em-cmpl.el (eshell-cmpl-load-hook): + * eshell/em-dirs.el (eshell-dirs-load-hook): + * eshell/em-glob.el (eshell-glob-load-hook): + * eshell/em-hist.el (eshell-hist-load-hook): + * eshell/em-pred.el (eshell-pred-load-hook): + * eshell/em-prompt.el (eshell-prompt-load-hook): + * eshell/em-rebind.el (eshell-rebind-load-hook): + * eshell/em-script.el (eshell-script-load-hook): + * eshell/em-smart.el (eshell-smart-load-hook): + * eshell/em-term.el (eshell-term-load-hook): + * eshell/em-unix.el (eshell-unix-load-hook): + * eshell/esh-arg.el (eshell-arg-load-hook): + * eshell/esh-cmd.el (eshell-cmd-load-hook): + * eshell/esh-ext.el (eshell-ext-load-hook): + * eshell/esh-io.el (eshell-io-load-hook): + * eshell/esh-mode.el (eshell-exit-hook): + * eshell/esh-proc.el (eshell-proc-load-hook, eshell-kill-hook): + * eshell/esh-var.el (eshell-var-load-hook): + Set default hook values to nil. (Bug#5375) + + * eshell/esh-module.el (eshell-module-unload-hook) + (eshell-modules-list): Remove leading * from defcustom docs. + + * eshell/esh-util.el (eshell-for): Make it obsolete. + * eshell/em-alias.el (eshell/alias, eshell-alias-completions): + * eshell/em-dirs.el (eshell-save-some-last-dir): + * eshell/em-hist.el (eshell-save-some-history) + (eshell-hist-parse-modifier): + * eshell/em-ls.el (eshell-ls-dir, eshell-ls-files) + (eshell-ls-entries): + * eshell/em-unix.el (eshell/cat, eshell/du, eshell/su): + * eshell/esh-cmd.el (eshell-invoke-directly, eshell-do-eval) + (eshell/which): + * eshell/esh-ext.el (eshell-find-interpreter): + * eshell/esh-mode.el (eshell-mode): + * eshell/esh-module.el (eshell-unload-extension-modules): + * eshell/esh-proc.el (eshell-process-interact): + * eshell/esh-test.el (eshell-test): + * eshell/esh-util.el (eshell-flatten-list, eshell-winnow-list): + * eshell/esh-var.el (eshell/env, eshell-environment-variables) + (eshell-variables-list): + * eshell/eshell.el (eshell-unload-all-modules): + Replace eshell-for with dolist. + +2011-03-04 Glenn Morris + + * vc/vc-bzr.el (vc-bzr-after-dir-status): Handle bzr 2.3.0. (Bug#8170) + +2011-03-04 Tom Tromey + + * progmodes/gud.el (gdb-script-mode): Derive from prog-mode. + +2011-03-04 Glenn Morris + + * outline.el (outline-regexp): No longer allow nil. + (outline-heading-end-regexp): Add safety predicate. (Bug#7619) - * mail/mail-utils.el (mail-mbox-from): Handle From: headers with - multiple addresses. (Bug#7760) + * net/browse-url.el (browse-url): + Handle deleted default-directory. (Bug#6077) -2010-12-31 Michael Albinus + * recentf.el (recentf-include-p): In case of a buggy predicate, + err on the side of including, not excluding. (Bug#5843) - * net/tramp.el (tramp-methods): Add recursive options to "scpc", - "scpx", "pscp" and "psftp". +2011-03-04 Jay Belanger -2010-12-31 Eli Zaretskii + * calc/calc-units.el (math-to-standard-rec): Don't treat subscripted + variables as units. - * term/w32-win.el (image-library-alist): Set up correctly for - libpng versions both before and after 1.4.0. (Bug#7716) +2011-03-04 Bob Rogers -2010-12-25 Eli Zaretskii + * emacs-lisp/ewoc.el (ewoc-goto-next): Give a more explicit error + if there is no node. (Bug#3261) - * time.el (display-time-mode): Mention display-time-interval in - the doc string. (Bug#7713) +2011-03-04 Leo - * simple.el (select-active-regions): Doc fix. (Bug#7702) + * vc/diff-mode.el (diff-mode): Fix whitespace-style. (Bug#8139) -2010-12-24 Kenichi Handa + * time.el (display-time-world-list): Fix typo. (Bug#7571) - * mail/rmailmm.el (rmail-mime-parse): Perform parsing in - condition-case and return an error message string if something - goes wrong. - (rmail-show-mime): Adjust for the above change. Insert the - header by rmail-mime-insert-header. +2011-03-04 Zachary Kanfer (tiny change) -2010-12-24 Kenichi Handa + * cus-edit.el (custom-buffer-create-internal): + Split search string before passing it to `customize-apropos' (bug#8136). - * mail/rmailmm.el: New key bindings for rmail-mime-next-item, - rmail-mime-previous-item, and rmail-mime-toggle-hidden. - (rmail-mime-mbox-buffer) - (rmail-mime-view-buffer, rmail-mime-coding-system): New variables. - (rmail-mime-entity): Argument changed. All codes handling an - entity object are changed. - (rmail-mime-entity-header, rmail-mime-entity-body): Adjust for - the above change. - (rmail-mime-entity-children, rmail-mime-entity-handler) - (rmail-mime-entity-tagline): New functions. - (rmail-mime-message-p): New function. - (rmail-mime-save): Bind rmail-mime-mbox-buffer. - (rmail-mime-entity-segment, rmail-mime-next-item) - (rmail-mime-previous-item, rmail-mime-shown-mode) - (rmail-mime-hidden-mode, rmail-mime-raw-mode) - (rmail-mime-toggle-raw, rmail-mime-toggle-hidden) - (rmail-mime-insert-tagline, rmail-mime-insert-header): - New functions. - (rmail-mime-text-handler): Call rmail-mime-insert-text. - (rmail-mime-insert-decoded-text): New function. - (rmail-mime-insert-text): Call rmail-mime-insert-decoded-text. - (rmail-mime-insert-image): Argument changed. Caller changed. - (rmail-mime-image): Call rmail-mime-toggle-hidden. - (rmail-mime-set-bulk-data): New function. - (rmail-mime-insert-bulk): Argument changed. - (rmail-mime-multipart-handler): Return t. - (rmail-mime-process-multipart): Argument changed. - Handle "multipart/alternative" here. - (rmail-mime-process): Argument changed. - (rmail-mime-parse): Bind rmail-mime-mbox-buffer. - (rmail-mime-insert): Argument changed. Handle raw display mode. - (rmail-mime): Argument changed. Handle toggling of raw display - mode. - (rmail-show-mime): Bind rmail-mime-mbox-buffer and - rmail-mime-view-buffer. - (rmail-insert-mime-forwarded-message): Likewise. - (rmail-search-mime-message): Likewise. Don't bind rmail-buffer. +2011-03-04 Drew Adams - * mail/rmail.el (rmail-show-message-1): If rmail-enable-mime is - non-nil, handle the header in rmail-show-mime-function. + * image-dired.el (image-dired-cmd-read-exif-data-options): + Fix typo in docstring (bug#8156). -2010-12-20 Leo +2011-03-03 Deniz Dogan - * help-fns.el (describe-variable): Fix 2010-12-17 change. + * net/rcirc.el (rcirc-cmd-join): Accept comma-separated input. -2010-12-20 Juri Linkov +2011-03-03 Christian Ohler - * isearch.el (isearch-lazy-highlight-error): New variable. - (isearch-lazy-highlight-new-loop): Compare `isearch-error' and - `isearch-lazy-highlight-error'. Set `isearch-lazy-highlight-error' - to the current value of `isearch-error' (Bug#7468). + * emacs-lisp/ert.el (ert--explain-equal): New function. + (ert--explain-equal-rec): Renamed from `ert--explain-not-equal'. + All callers changed. + (ert--explain-equal-including-properties): Renamed from + `ert--explain-not-equal-including-properties'. All callers + changed. -2010-12-17 Chong Yidong +2011-03-03 Christian Ohler - * help-fns.el (describe-variable): Don't emit trailing whitespace - (Bug#7511). + * emacs-lisp/ert.el (ert--stats-set-test-and-result) + (ert-char-for-test-result, ert-string-for-test-result) + (ert-run-tests-batch, ert--print-test-for-ewoc): + Handle `ert-test-quit'. -2010-12-17 Leo +2011-03-03 David Abrahams (tiny change) - * eshell/em-hist.el (eshell-previous-matching-input): Signal error - if point is not behind eshell-last-output-end (Bug#7585). + * vc/ediff-init.el (ediff-use-faces, ediff-highlight-all-diffs): + Move ediff-defvar-local calls after defcustoms. (Bug#1821) -2010-12-16 Chong Yidong +2011-03-03 Glenn Morris - * textmodes/rst.el (rst-compile-pdf-preview) - (rst-compile-slides-preview): Use make-temp-file (Bug#7646). + * files.el (file-truename): Doc fix. (Bug#2341) -2010-12-15 Kevin Gallagher +2011-03-03 Bob Rogers - * emulation/edt-mapper.el: Override mapping of function keys so - that the later call to read-key-sequence works. + * vc/vc-dir.el (vc-dir-mode-map): Bind vc-dir-find-file to e (Bug#7349). -2010-12-13 Eli Zaretskii +2011-03-03 Vagn Johansen (tiny change) - * mail/smtpmail.el (smtpmail-send-it): Write queued mail body with - Unix EOLs. (Bug#7589) + * vc/vc-svn.el (vc-svn-after-dir-status): Some MS Windows svn client + programs output backslashes. (Bug#7663) -2010-12-12 Eli Zaretskii +2011-03-03 Glenn Morris - * subr.el (posn-col-row): Evaluate header-line-format in the - context of the POSITION window's buffer. + * mail/sendmail.el (mail-mode-map): Remove mail-sent-via. + (mail-mode): Remove mail-sent-via from the doc. + (mail-sent-via): Make it obsolete. (Bug#1776) -2010-12-11 Glenn Morris + * progmodes/grep.el (grep-highlight-matches): Doc fix. + (grep-process-setup): No highlighting without font-lock. (Bug#8084) - * subr.el (member-ignore-case, run-mode-hooks, insert-for-yank-1) - (with-silent-modifications): Doc fixes. + * vc/vc-bzr.el (vc-bzr-state-heuristic): Handle dirstate entries + with no parents. (Bug#8025) -2010-12-10 Michael Albinus +2011-03-02 Teodor Zlatanov - * net/tramp.el (tramp-action-password, tramp-process-actions): - Revert patch from 2010-12-08. Use `save-restriction'. + * password-cache.el (password-in-cache-p): Add autoload. -2010-12-09 Eli Zaretskii +2011-03-02 Glenn Morris - * menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p): - New functions. - (menu-bar-showhide-menu) : Use - them instead of `nil' and `>', respectively. (Bug#1077) + * man.el (Man-support-local-filenames): Also handle Red Hat's man. + * dired-x.el (Man-support-local-filenames): Autoload it. + (dired-guess-shell-alist-default): Also handle Red Hat's man. -2010-12-09 Stephen Berman + * dired-x.el (dired-default-directory-alist, dired-default-directory): + Mark as obsolete. + (dired-smart-shell-command): Just call dired-current-directory. - * calendar/diary-lib.el (diary-list-sexp-entries): - Handle case of no newline at end of file. (Bug#7536) + * dired-x.el (dired-jump-other-window): Add autoload. + (dired-default-directory-alist, dired-default-directory): Doc fixes. + (dired-default-directory-alist): Mark as risky. -2010-12-09 Glenn Morris + * dired-x.el (dired-omit-here-always): Make it obsolete. - * mail/smtpmail.el (smtpmail-send-it): Revert previous change. +2011-03-02 Chong Yidong -2010-12-08 Michael Albinus + * textmodes/artist.el (artist-curr-go): Default to pen-line. + (artist-select-op-pen-line): New function. + (artist-menu-map): New variable. + (artist-mode-map): Add a menu to the menu-bar. - * net/tramp.el (tramp-handle-start-file-process): - Protect buffer-modified value. (Bug#7557) - (tramp-action-password): Delete region, do not narrow. - (tramp-process-actions): Do not widen. +2011-03-02 Jay Belanger -2010-12-08 Jan Moringen + * calc/calc-math.el (calcFunc-log10): Check for symbolic mode + when evaluating. - * log-edit.el (log-edit-changelog-entries): - Regexp quote filename. (Bug#7505) + * calc/calc-units.el (math-conditional-apply, math-conditional-pow): + New function. + (math-logunits-add, math-logunits-mul, math-logunits-divide): + (math-logunits-quant, math-logunits-level): + Use `math-conditional-apply' and `math-conditional-pow' to evaluate + functions. + (math-logunits-level): Extract units from ratio. -2010-12-08 Tom Breton +2011-03-01 Juanma Barranquero - * cus-edit.el (custom-save-all): - Bind print-length and print-level to nil. (Bug#7581) + * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring. -2010-12-08 Glenn Morris +2011-03-01 Glenn Morris - * mouse.el (mouse-menu-major-mode-map, mouse-menu-bar-map): - Run hooks to update menu contents. (Bug#7586) + * calendar/cal-hebrew.el (calendar-hebrew-birthday) + (diary-hebrew-birthday): Rename and rework functions added + in previous change. - * mail/smtpmail.el (smtpmail-send-it): Avoid colons in the queued - file names, for the sake of MS Windows. (Bug#7588) +2011-03-01 Ed Reingold -2010-12-07 Stefan Monnier + * calendar/cal-hebrew.el (hebrew-calendar-birthday) + (diary-hebrew-birthday): New functions. - * diff-mode.el (diff-refine-hunk): Make it work when the hunk contains - empty lines without a leading space. +2011-03-01 Glenn Morris -2010-12-06 Leo + * dired.el (dired-safe-switches-p): Beef it up. + (dired-actual-switches): Use it for the safe-local prop. (Bug#3230) - * dired-aux.el (dired-do-redisplay): Postpone dired-after-readin-hook - while mapping over marks (Bug#6810). +2011-03-01 Stefan Monnier -2010-12-06 Chong Yidong + * dired.el (dired-safe-switches-p): New function. - * image-dired.el (image-dired-db-file) - (image-dired-temp-image-file, image-dired-gallery-dir) - (image-dired-temp-rotate-image-file): Set default values relative - to image-dired-dir (Bug#7518). +2011-03-01 Glenn Morris -2010-12-06 Lawrence Mitchell + * files.el (dir-locals-collect-variables): + Add the ability to exclude subdirectories. (Bug#8100) - * format.el (format-decode-run-method): Pass args FROM and TO, not - point-min and point-max, to shell-command-on-region (Bug#7488). + * dired-x.el (dired-omit-here-always): Add `(subdirs . nil)' to locals. -2010-12-06 Jan Djärv +2011-02-28 Christoph Scholtes - * frame.el (blink-cursor-mode): Make default t for ns. + * ido.el (ido-everywhere): Doc fix. + (ido-mode): Doc fix. -2010-12-05 Bob Rogers +2011-02-28 Glenn Morris - * vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501). + * dired-x.el (dired-guess-shell-alist-default): Use \\', not $. -2010-12-05 Chong Yidong +2011-02-28 Michael Albinus - * comint.el (comint-dynamic-list-input-ring) - (comint-dynamic-complete-filename) - (comint-replace-by-expanded-filename) - (comint-dynamic-simple-complete) - (comint-dynamic-list-filename-completions) - (comint-dynamic-list-completions): Doc fix (Bug#7499). + * net/tramp-cmds.el (tramp-append-tramp-buffers): Dump load-path + shadows. - * subr.el (posn-x-y, posn-object-x-y, posn-object-width-height): - Doc fix (Bug#7471). +2011-02-28 Antoine Levitt -2010-12-04 Martin Rudalics + * dired-x.el (dired-guess-shell-alist-default): Add rar and 7z. - * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil - (Bug#7533). +2011-02-28 Juanma Barranquero -2010-12-04 W. Martin Borgert (tiny change) + * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1): + Fix typos in docstrings. - * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode. - (Bug#7491). +2011-02-28 Stephen Berman -2010-12-04 Chong Yidong + * dired-aux.el (dired-update-file-line): + Fix 2010-11-09 change. (Bug#8131) - * simple.el (transient-mark-mode): Doc fix (Bug#7465). +2011-02-28 Eli Zaretskii -2010-12-04 Eli Zaretskii + * international/mule-cmds.el (set-default-coding-systems): Use the + -unix variant of encoding in default-keyboard-coding-system. + (Bug#8122) - * files.el (file-relative-name): Handle UNC file names on - DOS/Windows. (Bug#4674) +2011-02-27 Chong Yidong -2010-12-03 Daiki Ueno + * facemenu.el (list-colors-display): Use with-help-window (Bug#8048). - * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with - "RIPEMD160" (Bug#7490). Reported by Daniel Kahn Gillmor. - (epg-context-set-passphrase-callback): Mention that the callback - is not called when used with GnuPG 2.x. +2011-02-27 Prestoo Ten (tiny change) -2010-12-02 Glenn Morris + * term/screen.el: New file (Bug#2650). - * ps-print.el (ps-line-lengths-internal, ps-nb-pages): - Ensure ps-footer-font-size-internal is initialized. - Call ps-get-page-dimensions before trying to use ps-font-for-text. +2011-02-27 Stefan Monnier -2010-12-01 Kenichi Handa + * emacs-lisp/pcase.el (pcase--if): Try to invert test to reduce depth. + (pcase-mutually-exclusive-predicates): New var. + (pcase--split-consp, pcase--split-pred): Use it. + (pcase--split-equal, pcase--split-member): When splitting against + a pure predicate, run it to know the outcome. + (pcase--u1): Mark vars that are actually used. + (pcase--q1): Avoid introducing unused vars. - * mail/rmailmm.el (rmail-mime-parse): Call rmail-mime-process - within condition-case. - (rmail-show-mime): Don't use condition-case. - (rmail-search-mime-message): New function. - (rmail-search-mime-message-function): Set to - rmail-search-mime-message. +2011-02-27 Jay Belanger -2010-12-01 Leo + * calc/calc-ext.el (calc-init-extensions): + Autoload `calc-l-prefix-help' instead of `calc-ul-prefix-help'. - * ido.el (ido-common-initialization): New function. (bug#3274) - (ido-mode): Use it. - (ido-completing-read): Call it. + * calc/calc-math.el (calcFunc-log10): Don't signal an error in + symbolic mode. -2010-11-27 Chong Yidong + * calc/calc-vec.el (calcFunc-subscr): Return nil if the first + argument is a variable. - * log-edit.el (log-edit-font-lock-keywords): Don't try matching - stand-alone lines, since that is handled by log-edit-match-to-eoh - (Bug#6465). +2011-02-26 Stefan Monnier -2010-11-27 Eduard Wiebe + * emacs-lisp/assoc.el: Remove misleading `sort' (bug#8126). + (aput, adelete, amake): Replace `eval' -> `symbol-value'. + Suggested by Michael Heerdegen . - * dired.el (dired-get-filename): Replace backslashes with slashes - in file names on MS-Windows, needed by `locate'. (Bug#7308) - * locate.el (locate-default-make-command-line): Don't consider - drive letter and root directory part of - `directory-listing-before-filename-regexp'. (Bug#7308) - (locate-post-command-hook, locate-post-command-hook): New defcustoms. +2011-02-25 Teodor Zlatanov -2010-11-26 Stefan Monnier + * password-cache.el (password-in-cache-p): Convenience function to + check if a key is in the cache, even if the value is nil. - * emacs-lisp/smie.el (smie-prec2->grammar): Simplify handling - of :smie-open/close-alist. - (smie-next-sexp): Make it accept a "start token" as argument. - (smie-indent-keyword): Be careful not to misidentify tokens that span - more than one line, as empty lines. Add argument `token'. +2011-02-25 Jambunathan K -2010-11-26 Kenichi Handa + * emacs-lisp/package-x.el (package--archive-contents-from-url) + (package--archive-contents-from-file): New functions. + (package-update-news-on-upload): New var. + (package-upload-buffer-internal): Extract archive-contents from + package-archive-upload-base if it is not found at archive-url. + Obey package-update-news-on-upload. + (package-upload-buffer, package-upload-file): Doc fix. - * mail/rmailmm.el (rmail-mime-insert-multipart): For unsupported - multipart subtypes, insert all as usual. +2011-02-24 Glenn Morris - * mail/rmail.el: Require rfc2047. + * files-x.el (modify-dir-local-variable): Handle dir-locals from + the cache, and from non-file sources. -2010-11-26 Kenichi Handa + * help-fns.el (describe-variable): Return consistent results when a + dir-local from a file came from the cache or did not. (Bug#8095) + If a dir-local has no associated file, say it came from a "directory". - * mail/rmailmm.el (rmail-mime-entity, rmail-mime-entity-type) - (rmail-mime-entity-disposition) - (rmail-mime-entity-transfer-encoding, rmail-mime-entity-header) - (rmail-mime-entity-body, rmail-mime-entity-children): New functions. - (rmail-mime-save): Handle the case that the button's `data' is a - MIME entity. - (rmail-mime-insert-text): New function. - (rmail-mime-insert-image): Handle the case that DATA is a MIME entity. - (rmail-mime-bulk-handler): Just call rmail-mime-insert-bulk. - (rmail-mime-insert-bulk): New function mostly copied from the old - rmail-mime-bulk-handler. - (rmail-mime-multipart-handler): Just call rmail-mime-process-multipart. - (rmail-mime-process-multipart): New function mostly copied from - the old rmail-mime-multipart-handler. - (rmail-mime-show): Just call rmail-mime-process. - (rmail-mime-process): New function mostly copied from the old - rmail-mime-show. - (rmail-mime-insert-multipart, rmail-mime-parse) - (rmail-mime-insert, rmail-show-mime) - (rmail-insert-mime-forwarded-message) - (rmail-insert-mime-resent-message): New functions. - (rmail-insert-mime-forwarded-message-function): Set to - rmail-insert-mime-forwarded-message. - (rmail-insert-mime-resent-message-function): Set to - rmail-insert-mime-resent-message. + * files.el (hack-dir-local-variables): Fix setting of `dir-name'. + (hack-local-variables-confirm, hack-local-variables-filter): Doc fix. - * mail/rmailsum.el: Require rfc2047. - (rmail-header-summary): Handle multiline Subject: field. - (rmail-summary-line-decoder): Change the default to - rfc2047-decode-string. + * files.el (dir-locals-find-file): Doc fix. + Fix the check for cache elements that have no associated file, + and the mtime check for those that do. (Bug#8095) - * mail/rmail.el (rmail-enable-mime): Change the default to t. - (rmail-mime-feature): Change the default to `rmailmm'. - (rmail-quit): Delete the specifal code for rmail-enable-mime. - (rmail-display-labels): Likewise. - (rmail-show-message-1): Check rmail-enable-mime, and use - rmail-show-mime-function for a MIME message. Decode the headers - according to RFC2047. + * dired-x.el (dired-hack-local-variables): + Handle interrupts during hacking local variables. (Bug#5216) -2010-11-24 Stefan Monnier + * emacs-lisp/autoload.el (autoload-save-buffers) + (autoload-find-destination, update-directory-autoloads): + Avoid prompts when updating autoloads. - * progmodes/which-func.el (which-func-imenu-joiner-function): - Return a string, as expected. - (which-function-mode): Make sure we stop any previous timer before - starting a new one. +2011-02-23 Stefan Monnier -2010-11-23 Michael Albinus + * emacs-lisp/bytecomp.el (byte-compile-disable-print-circle): Obsolete. - * net/tramp.el (tramp-default-method-alist) - (tramp-default-user-alist, tramp-default-proxies-alist): - Adapt custom options type. (Bug#7445) +2011-02-23 Kenichi Handa -2010-11-21 Chong Yidong + * mail/rmailmm.el (rmail-mime-process-multipart): Do not signal an + error when a multipart boundary in the nested multipart is found. - * progmodes/python.el: Add Ipython support (Bug#5390). - (python-shell-prompt-alist) - (python-shell-continuation-prompt-alist): New options. - (python--set-prompt-regexp): New function. - (inferior-python-mode, run-python, python-shell): - Require ansi-color. Use python--set-prompt-regexp to set the comint - prompt based on the Python interpreter. - (python--prompt-regexp): New var. - (python-check-comint-prompt) - (python-comint-output-filter-function): Use it. - (run-python): Use a pipe (Bug#5694). + * mail/rmail.el (rmail-start-mail): Decode "encoded-words" of + header components. -2010-11-21 Chong Yidong +2011-02-23 Glenn Morris - * progmodes/python.el (run-python): Doc fix. - (python-keep-current-directory-in-path): New var (Bug#7454). + * dired.el (dired-mode): Call hack-dir-local-variables-non-file-buffer. + * dired-x.el (dired-omit-mode): Safe if boolean. + (dired-enable-local-variables): Fix doc and custom type. + (dired-enable-local-variables, dired-local-variables-file) + (dired-hack-local-variables): Make obsolete. + (dired-omit-here-always): Use dir-locals.el instead. -2010-11-20 Chong Yidong + * files.el (safe-local-eval-forms): Add the write-file-hooks version. - * lpr.el (lpr-buffer, print-buffer, lpr-region, print-region): - Prompt user before actually printing. +2011-02-22 Stefan Monnier -2010-11-18 Stefan Monnier + * help-fns.el (describe-function-1): Don't signal an error just because + the DOC file disappeared. - * simple.el (kill-new, kill-append, kill-region): - * comint.el (comint-kill-region): Make the yank-handler argument - obsolete. +2011-02-22 Seppo Sade (tiny change) -2010-11-17 Stefan Monnier + * eshell/esh-ext.el (eshell-external-command): Do not restrict + remote check to "ftp". (Bug#8089) - * emacs-lisp/smie.el (smie-bnf-classify): Signal errors for tokens - that are both openers (resp. closers) and something else. - (smie-grammar): Loosen definition of valid values. - (smie-next-sexp, smie-down-list, smie-blink-matching-open) - (smie-indent--parent, smie-rule-parent, smie-indent-keyword) - (smie-indent-after-keyword): Adjust users. - (smie-indent-keyword): Don't indent empty lines. +2011-02-21 Alan Mackenzie - * vc-hg.el (vc-hg-program): New var. - Suggested by Norman Gray . - (vc-hg-state, vc-hg-working-revision, vc-hg-command): Use it. + Fix bug #7930. + * progmodes/cc-engine.el (c-state-literal-at): Prevent positions + in macros finding their way into c-state-nonlit-pos-cache. + Strengthen the comments. + (c-state-dump): New commented out diagnostic routine. -2010-11-17 Glenn Morris +2011-02-21 Michael Albinus - * emacs-lisp/autoload.el (autoload-find-destination): The function - coding-system-eol-type may return non-numeric values. (Bug#7414) + * net/tramp.el (tramp-rfn-eshadow-setup-minibuffer): Do not use + `field' property of `rfn-eshadow-overlay'. -2010-11-16 Ulrich Mueller +2011-02-21 Lars Ingebrigtsen - * server.el (server-force-stop): Ensure the server is stopped (Bug#7409). + * net/netrc.el (netrc-parse): Comment fix. -2010-11-13 Eli Zaretskii +2011-02-21 Chong Yidong - * subr.el (posn-col-row): Pay attention to header line. (Bug#7390) + * color.el (color-name-to-rgb): Rename from color-rgb->normalize. + Autoload. Add optional arg FRAME, and pass it to color-values. + (color-complement): Caller changed. Doc fix. + (color-gradient): Rewrite for better clarity and efficiency. -2010-11-13 Chong Yidong + * faces.el (color-values): Use cond for clarity. Doc fix. - * textmodes/picture.el (picture-mouse-set-point): Don't use - posn-col-row; explicitly compute the motion based on the posn at - the window-start (Bug#7390). + * facemenu.el (color-rgb-to-hsv): Delete; use the version in + color.el instead. + (list-colors-sort-key, list-colors-print): + Use color-normalized-values. -2010-11-13 Michael Albinus +2011-02-20 Drew Adams - * net/tramp.el (tramp-remote-coding-commands): Add an alternative - using "base64 -d -i". This is needed for older base64 versions - from GNU coreutils. Reported by Klaus Reichl - . + * color.el: First part of merge from hexrgb.el. + (color-rgb-to-hex): Rename from color-rgb->hex. + (color-rgb-to-hsv): Rename from color-rgb->hsv. Force hue and + saturation to zero if the value is too small. + (color-rgb-to-hsl): Rename from color-rgb->hsl. + (color-srgb-to-xyz): Rename from color-srgb->xyz. Doc fix. + (color-xyz-to-srgb): Rename from color-xyz->srgb. Doc fix. + (color-xyz-to-lab): Rename from color-xyz->lab. Doc fix. + (color-lab-to-xyz): Rename from color-lab->xyz. Doc fix. + (color-lab-to-srgb): Rename from color-lab->srgb. Doc fix. + (color-cie-de2000): Doc fix. -2010-11-13 Glenn Morris +2011-02-20 Alan Mackenzie - * novice.el (disabled-command-function): - Fix 2009-11-15 change. (Bug#7384) + * progmodes/cc-cmds.el (c-beginning-of-statement): Avoid loop in + locating the beginning of a macro. (Bug#7595) -2010-11-12 Glenn Morris +2011-02-20 Glenn Morris - * calendar/calendar.el (diary-iso-date-forms): Make elements - mutually exclusive. (Bug#7377) + * edmacro.el (edmacro-eight-bits): Make it a defcustom. + Don't autoload it. -2010-11-12 Stefan Monnier + * autorevert.el (auto-revert-mode, auto-revert-tail-mode) + (global-auto-revert-ignore-buffer): Remove leading "*" from docs. - * emacs-lisp/smie.el (smie-prec2->grammar): Obey equality constraints - when filling the remaining "unconstrained" values. +2011-02-19 Dmitry Bolshakov + Dima Kogan (tiny change) -2010-11-11 Stefan Monnier + * progmodes/hideshow.el (hs-find-block-beginning) + (hs-hide-level-recursive): Ignore comments when parsing braces + (Bug#8036). - * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the - safety predicate. +2011-02-19 Chong Yidong - * files.el (safe-local-variable-p): Gracefully handle errors. + * vc/vc-bzr.el (vc-bzr-bound-branch-p): New function. + (vc-bzr-pull): Use it. - * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule): - Use smie-indent-virtual when indenting relative to an opener. - (smie-rule-separator): Use smie-rule-parent. - (smie-indent-keyword): Consult rules, even for openers at bol. - (smie-indent-comment-close): Try to align closer's content. +2011-02-19 Chong Yidong -2010-11-11 Glenn Morris + * vc/vc-bzr.el (vc-bzr--branch-conf): Function deleted. + (vc-bzr-branch-conf): New function, similar to vc-bzr--branch-conf + but returning an alist. Ignore comments in bzr conffile. + (vc-bzr-pull, vc-bzr-merge-branch): Use vc-bzr-branch-conf. + (vc-bzr-error-regex-alist): New var. + (vc-bzr-merge-branch): Use it to highlight the pull/merge buffer. - * ls-lisp.el (ls-lisp-dired-ignore-case): Make it an obsolete alias. + * vc/vc-dispatcher.el (vc-do-async-command): + Bind inhibit-read-only to t. -2010-11-10 Glenn Morris + * progmodes/compile.el (compilation--flush-directory-cache): + Handle the case where cdr of compilation--flush-directory-cache + points to no buffer, which can occur if we previously switched to + compilation-mode in a pregenerated buffer. - * printing.el (pr-menu-bind): Doc fix. +2011-02-19 Kenichi Handa - * speedbar.el (speedbar-toggle-images): Doc fix. + * mail/rmailmm.el (rmail-mime-find-header-encoding): Be sure to + get the header copy into the temporary buffer. + (rmail-mime-insert-decoded-text): Ignore us-ascii. + (rmail-show-mime): When rmail-mime-coding-system is nil, set + buffer-file-coding-system to undecided. - * progmodes/python.el (python-shell): Doc fix. +2011-02-19 Eli Zaretskii - * wid-edit.el (widget-field-use-before-change) - (widget-use-overlay-change): Doc fixes. + * international/mule-cmds.el (read-char-by-name, ucs-insert): + Document completion with asterisk and a substring. -2010-11-09 Glenn Morris +2011-02-19 Glenn Morris - * progmodes/tcl.el (tcl-hairy-scan-for-comment): Doc fix. + * files.el (find-file-literally): Doc fix. -2010-11-08 Stefan Monnier + * simple.el (rfc822-goto-eoh): Give it a doc-string. - * minibuffer.el (minibuffer-completion-help): Specify the end of the - completion field (bug#7211). + * log-edit.el (log-edit-insert-changelog): + Fix `log-edit-strip-single-file-name' functionality. (Bug#8057) - * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322) - Fix handling of backslash escapes. - (python-quote-syntax): Adjust accordingly. +2011-02-19 Glenn Morris -2010-11-08 Richard Levitte (tiny change) + * dired-x.el: Don't require dired-aux. + (dired-do-create-files, dired-mark-read-regexp) + (dired-do-create-files-regexp): Autoload from dired-aux. - * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status) - (vc-mtn-workfile-branch): Adjust to new output format. + * dired-x.el (dired-find-buffer-nocreate): Merge into dired.el. + * dired.el (dired-find-buffer-nocreate): Merge dired-x version. -2010-11-08 Stefan Monnier + * dired-x.el (dired-read-shell-command): Merge into dired-aux's version. + * dired-aux.el (dired-read-shell-command): Merge dired-x's version. - * international/mule-cmds.el (princ-list): Mark as obsolete. + * dired-x.el (dired-clean-up-after-deletion): Merge into dired.el. + * dired.el (dired-clean-up-after-deletion): Merge dired-x's version. + (dired-clean-up-buffers-too): Declare. -2010-11-07 Stefan Monnier + * dired-x.el (dired-initial-position): Merge into dired.el's version. + * dired.el (dired-initial-position): Merge dired-x's version here. + (dired-find-subdir): Declare. - * emacs-lisp/smie.el: New package. + * dired-x.el (dired-omit-new-add-entry): Merge into dired-add-entry. + * dired-aux.el (dired-add-entry): Give it a doc-string. + Merge dired-x's dired-omit handling here. + (dired-omit-mode, dired-omit-regexp, dired-omit-localp): Declare. -2010-11-06 Michael Albinus + * international/mule-diag.el (list-input-methods-1): + Indent all lines of multi-line doc-strings. (Bug#8066) - * files.el (backup-by-copying-when-mismatch): - Set `permanent-local' property. +2011-02-18 Chong Yidong - * net/tramp.el (tramp-handle-insert-file-contents): Do not set - `permanent-local' property for `backup-by-copying-when-mismatch'. + Fix 2011-02-02 changes. -2010-11-06 Eli Zaretskii + * apropos.el (apropos-print): Call apropos-mode before setting up + buffer variables. Use inhibit-read-only. - * ls-lisp.el (insert-directory): Doc fix. (bug#7285) - (ls-lisp-classify-file): New function. - (ls-lisp-insert-directory): Call it if switches include -F (bug#6294). - (ls-lisp-classify): Call ls-lisp-classify-file. - (insert-directory): Remove blanks from switches. + * emacs-lisp/package.el (package--list-packages): + Call package-menu-mode before setting up buffer variables. -2010-11-07 Wilson Snyder + * play/solitaire.el (solitaire): Call solitaire-mode before + setting up buffer variables. Use inhibit-read-only. - * progmodes/verilog-mode.el (verilog-insert-one-definition) - (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and - AUTOINOUT for SV style multidimensional arrays, bug294. - Reported by Eric Mastromarchi. - (verilog-preprocess): Use with-current-buffer and - font-lock-fontify-buffer to cleanup style issues. +2011-02-18 Lawrence Mitchell -2010-11-05 Michael Albinus + * progmodes/sh-script.el (sh-syntax-propertize-here-doc): (bug#8053) + Bind case-fold-search to nil when looking for end of here-doc. - * net/trampver.el: Update release number. +2011-02-18 Eli Zaretskii -2010-08-01 YAMAMOTO Mitsuharu + * image-mode.el (image-toggle-display-image): + Set find-file-literally non-nil in buffers visiting binary image + files. (Bug#8047) - * mouse.el (mouse-fixup-help-message): Match "mouse-2" only at the - beginning of the string. Use `string-match-p'. (Bug#6765) +2011-02-18 Stefan Monnier -2010-11-01 Glenn Morris + * files.el (cd): Make completion obey cd-path (bug#7924). - * locate.el (locate, locate-mode): Doc fixes. +2011-02-18 Glenn Morris -2010-11-01 Chong Yidong + * progmodes/prolog.el: Don't require compile when compiling. + (compilation-shell-minor-mode, compilation-error-regexp-alist) + (compilation-forget-errors, compilation-fake-loc) + (compilation-parse-errors-function, compilation-error-list): Declare. + (prolog-inferior-mode): Require 'compile. + + * emulation/cua-base.el (pc-selection-mode): Declare. + + * emacs-lisp/eieio-custom.el: Set generated-autoload-file. + (customize-object): Add autoload cookie. + * emacs-lisp/eieio-opt.el: Set generated-autoload-file. + (eieio-browse, describe-class, eieio-describe-class) + (eieio-describe-constructor, describe-generic, eieio-describe-generic) + (eieio-help-mode-augmentation-maybee): Add autoload cookies. + * emacs-lisp/eieio.el: Regenerate with automatic autoloads. + * Makefile.in (autoloads): Make eieio.el writable. + + * dired-x.el (dired-clean-up-after-deletion, dired-do-relsymlink) + (dired-do-relsymlink-regexp, dired-find-buffer-nocreate): Use #'. + (dired-hack-local-variables): Use inhibit-read-only. + (dired-guess-default): Simplify. + (dired-make-relative-symlink): Use dotimes. + (dired-simultaneous-find-file): Use dolist. + (dired-mark-sexp): Remove unneeded `if'. Use line-end-position. + (dired-x-hands-off-my-keys): Doc fix. + (dired-x-bind-find-file): Doc fix. Use remapping. + (after-init-hook): No need to add dired-x-bind-find-file. + (dired-x-find-file, dired-x-find-file-other-window): Doc fixes. + No need to call expand-file-name. + (dired-filename-at-point): Remove unused locals `end', `filename'. + +2011-02-18 Stefan Monnier + + * emacs-lisp/pcase.el (pcase--u1): Understand non-linear patterns. + +2011-02-18 Christian Ohler + + * emacs-lisp/ert.el (ert--setup-results-buffer) + (ert-results-pop-to-backtrace-for-test-at-point) + (ert-results-pop-to-messages-for-test-at-point) + (ert-results-pop-to-should-forms-for-test-at-point) + (ert-results-pop-to-timings): Revert parts of change 2011-02-02T17:59:44Z!sds@gnu.org that + were incorrect and unnecessary. This should make `make check' + pass again. + +2011-02-17 Ken Manheimer + + * lisp/allout-widgets.el (allout-widgets-icons-light-subdir) + (allout-widgets-icons-dark-subdir): Track relocations of icons. + * lisp/allout.el: Remove commentary about remove encryption + passphrase mnemonic support and verification. + (allout-encrypt-string): Recognize epg failure to decrypt gpg2 + armored text using gpg1, and indicate that the gpg version *might* + be the problem in the error message. + +2011-02-17 Deniz Dogan + + * net/rcirc.el (rcirc-float-time): New function. + (rcirc-keepalive, rcirc-handler-ctcp-KEEPALIVE) + (rcirc-ctcp-sender-PING): Use it. - * server.el (server-start): New arg INHIBIT-PROMPT prevents asking - user for confirmation. - (server-force-stop): Use it. - (server-start): Use server-force-stop for kill-emacs-hook, to - avoid user interaction while killing Emacs. +2011-02-17 Glenn Morris -2010-10-31 Stefan Monnier + * speedbar.el (speedbar-ignored-modes, speedbar-file-unshown-regexp) + (speedbar-update-flag, speedbar-fetch-etags-command) + (speedbar-fetch-etags-arguments): + * term.el (term-buffer-maximum-size, term-input-chunk-size) + (term-completion-autolist, term-completion-addsuffix) + (term-completion-recexact, term-completion-fignore): + * term/sup-mouse.el (sup-mouse-fast-select-window): + * term/x-win.el (x-select-request-type): + Convert some defvars with "*" to defcustoms. - * vc/log-edit.el (log-edit-rewrite-fixes): New var. - (log-edit-author): New dynamic var. - (log-edit-changelog-ours-p, log-edit-insert-changelog-entries): - Use it to return the author if different from committer. - (log-edit-insert-changelog): Use them to add Author: and Fixes headers. + * shell.el (shell-delimiter-argument-list): Set it to nil. (Bug#8027) -2010-10-31 Eli Zaretskii + * vc/vc.el (vc-default-previous-version): + Remove alias that points nowhere. (Bug#4496) - * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix. + * dired-x.el (dired-clean-up-after-deletion): + kill-buffer does not need save-excursion. + (dired-do-run-mail): Doc fix. + (dired-filename-at-point): Doc fix. + Use looking-at, and skip-chars rather than re search. -2010-10-31 Chong Yidong + * dired-x.el (dired-filename-at-point): Fix 8-year old typo. - * vc/vc.el (vc-deduce-backend): New fun. Handle diff buffers. - (vc-root-diff, vc-print-root-log, vc-log-incoming) - (vc-log-outgoing): Use it. - (vc-diff-internal): Set diff-vc-backend. +2011-02-16 Ken Manheimer - * vc/diff-mode.el (diff-vc-backend): New var. + * allout-widgets.el: New allout extension that shows allout + outline structure with graphical widgets. 'allout-widgets' + customize group is an 'allout' subgroup, for easy discovery. -2010-10-31 Juri Linkov + * allout.el: Include PGP and GnuPG in Keywords, and other + commentary refinements. + (allout-abbreviate-flattened-numbering): Rename to + allout-flattened-numbering-abbreviation, and + define-obsolete-variable-alias the old name. + (allout-flattened-numbering-abbreviation): Rename from + allout-abbreviate-flattened-numbering. + (allout-mode-p): Include among autoloads, for use by other modes + with impunity. + (allout-listify-exposed): + Use allout-flattened-numbering-abbreviation. + (allout-encrypt-string): Use set-buffer-multibyte directly. + (allout-set-buffer-multibyte): Remove. - * vc/vc.el (vc-diff-internal): Set `revert-buffer-function' - buffer-locally to lambda that re-runs the vc diff command. - (Bug#6447) +2011-02-16 Deniz Dogan -2010-10-31 Dan Nicolaescu + * simple.el (just-one-space): Remove useless `or' call. - * vc/log-view.el (log-view-mode-map): Bind revert-buffer. +2011-02-16 Alex Harsanyi - Make 'g' (AKA revert-buffer) rerun VC log, log-incoming and - log-outgoing commands. - * vc/vc.el (vc-log-internal-common): Add a new argument and use it - to create a buffer local revert-buffer-function variable. - (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a - revert-buffer-function lambda. + * net/soap-client.el (soap-well-known-xmlns, soap-local-xmlns) + (soap-default-xmlns, soap-target-xmlns, soap-multi-refs) + (soap-decoded-multi-refs, soap-current-wsdl) + (soap-encoded-namespaces): Rename CL-style *...* variables. - Improve VC create/retrieve tag/branch. - * vc.el (vc-create-tag): Do not read the directory name for VCs - with repository revision granularity. Adjust the tag/branch - prompt. Reset VC properties. - (vc-retrieve-tag): Do not read the directory name for VCs - with repository revision granularity. Reset VC properties. +2011-02-16 Michael Albinus - Add optional support for resetting VC properties. - * vc-dispatcher.el (vc-resynch-window): Add new optional argument, - call vc-file-clearprops when true. - (vc-resynch-buffer): Add new optional argument, pass it down. - (vc-resynch-buffers-in-directory): Likewise. + * net/soap-client.el: Add "comm" and "hypermedia" to the + keywords. Reflow too long lines. - Improve support for special markup in the VC commit message. - * vc-mtn.el (vc-mtn-checkin): Support Author: and Date: markup. - * vc-hg.el (vc-hg-checkin): Add support for Date:. - * vc-git.el (vc-git-checkin): - * vc-bzr.el (vc-bzr-checkin): Likewise. + * net/soap-inspect.el: Ditto. Require 'cl. - Add support for vc-log-incoming, improve vc-log-outgoing for Git. - * vc-git.el (vc-git-log-view-mode): Fix font lock for - incoming/outgoing logs. - (vc-git-log-outgoing, vc-git-log-incoming): New functions. +2011-02-16 Bastien Guerry - * vc-git.el (vc-git-log-outgoing): Use the same format as the - short log. - (vc-git-log-incoming): Likewise. Run "git fetch" before the log - command + * play/doctor.el (doctor-mode): Bugfix: escape the "," character + in a `doctor-type' argument. - Add bindings for vc-log-incoming and vc-log-outgoing. - * vc-hooks.el (vc-prefix-map): Add bindings for vc-log-incoming - and vc-log-outgoing. - * vc-dir.el (vc-dir-menu-map): Add menu bindings for vc-log-incoming - and vc-log-outgoing. +2011-02-16 Alex Harsanyi - Improve state updating for VC tag commands. - * vc.el (vc-create-tag, vc-retrieve-tag): Call vc-resynch-buffer - to update the state of all buffers in the directory. + * net/soap-client.el: + * net/soap-inspect.el: New files. -2010-05-19 Glenn Morris +2011-02-16 Leo - * vc-dir.el (vc-dir): Don't pop-up-windows. (Bug#6204) + * dired-x.el (dired-mode-map, dired-extra-startup): + Remove dired-copy-filename-as-kill since it's already in dired.el. -2010-10-31 Stefan Monnier +2011-02-16 Glenn Morris - * vc.el (vc-checkin, vc-modify-change-comment): - Adjust to new vc-start/finish-logentry. - (vc-find-conflicted-file): New command. - (vc-transfer-file): Adjust to new vc-checkin. - (vc-next-action): Improve scoping. + * dired-x.el (dired-bind-jump, dired-bind-man, dired-bind-info): + Doc fixes. Add :set property, replacing top-level calls. + (dired-vm-read-only-folders, dired-vm): Doc fix (drop v. old VM 4). + (dired-guess-shell-gnutar): Test tar version rather than system-type. + (dired-extra-startup, dired-man, dired-info): Doc fixes. + (dired-clean-up-after-deletion): Use when and dolist. + (dired-jump): Use unless and when. + (dired-virtual): Use line-end-position. + (dired-default-directory-alist): Rename from default-directory-alist. + (dired-default-directory): Update for above name change. + (dired-vm): Drop VM < 5 and simplify. + (dired-buffer-more-recently-used-p): Rewrite. + (dired-filename-at-point): Use when and or. + (dired-x-read-filename-at-point): Rename from read-filename-at-point. + Update callers. - * vc-git.el (vc-git-checkin): Use log-edit-extract-headers. - (vc-git-commits-coding-system): Rename from git-commits-coding-system. +2011-02-15 Glenn Morris - * vc-dispatcher.el (vc-log-edit): Shorten names for - log-edit-show-files. + * dired-x.el: Use easymenu for menu items. Fix item capitalization. - * vc-bzr.el (vc-bzr-checkin): Use log-edit-extract-headers. - (vc-bzr-conflicted-files): New function. +2011-02-14 Chong Yidong - * log-edit.el (log-edit-summary, log-edit-header) - (log-edit-unknown-header): New faces. - (log-edit-headers-alist): New var. - (log-edit-header-contents-regexp): New const. - (log-edit-match-to-eoh): New function. - (log-edit-font-lock-keywords): Use them. - (log-edit): Insert a "Summary:" header as default. - (log-edit-mode): Mark font-lock rules as case-insensitive. - (log-edit-done): Cleanup headers. - (log-edit-extract-headers): New function to replace it. + * vc/vc-git.el (vc-git-root-log-format): New option for + customizing log format. + (vc-git-print-log, vc-git-log-outgoing, vc-git-log-incoming) + (vc-git-log-view-mode): Use it. + (vc-git-expanded-log-entry): New function. + (vc-git-log-view-mode): Use it. Truncate lines in root log. - * vc-dispatcher.el (vc-finish-logentry): Don't mess so badly with - the windows/frames. + * vc/vc-hg.el (vc-hg-root-log-template): New option for + customizing log format. + (vc-hg-print-log): Use it. + (vc-hg-expanded-log-entry): New function. + (vc-hg-log-view-mode): Use vc-hg-root-log-template and + vc-hg-expanded-log-entry. Truncate lines in root log. - * vc-bzr.el (vc-bzr-shelve-apply): Don't use *vc-bzr-shelve*. + * vc/vc-bzr.el (vc-bzr-log-view-mode): Truncate lines in root log. - * vc-dir.el (vc-dir-kill-line): New command. - (vc-dir-mode-map): Bind it to C-k. - (vc-dir-headers): Abbreviate the working dir. + * vc/log-view.el (log-view-mode-menu): + Add log-view-toggle-entry-display. - * vc-git.el (vc-git-revision-table): Include remote branches. +2011-02-14 Glenn Morris -2010-10-31 Dan Nicolaescu + * dired-x.el: Don't require man when compiling. + (dired-omit-extensions, dired-local-variables-file) + (dired-x-hands-off-my-keys): Make them defcustoms. + (Man-support-local-filenames, Man-getpage-in-background): Declare. + (vm-visit-folder): Declare rather than defining. + (dired-x-help-address, dired-x-variable-list): Remove. + (dired-x-submit-report): Make it an obsolete alias. - New VC methods: vc-log-incoming and vc-log-outgoing. - * vc.el (vc-print-log-setup-buttons, vc-log-internal-common) - (vc-incoming-outgoing-internal, vc-log-incoming, vc-log-outgoing): - New functions. - (vc-print-log-internal): Just call vc-log-internal-common. - (vc-log-view-type): New permanent local variable. +2011-02-14 Juanma Barranquero - * vc-hooks.el (vc-menu-map): Bind vc-log-incoming and vc-log-outgoing. + * makefile.w32-in (TRAMP_SRC): Remove tramp-imap.el. - * vc-bzr.el (vc-bzr-log-view-mode): Use vc-log-view-type instead - of the dynamic bound vc-short-log. - (vc-bzr-log-incoming, vc-bzr-log-outgoing): New functions. +2011-02-13 Teodor Zlatanov - * vc-git.el (vc-git-log-outgoing): New function. - (vc-git-log-view-mode): Use vc-log-view-type instead - of the dynamic bound vc-short-log. + * net/imap.el: Bring it back. - * vc-hg.el (vc-hg-log-view-mode): Use vc-log-view-type instead of - the dynamic bound vc-short-log. Highlight the tag. - (vc-hg-log-incoming, vc-hg-log-outgoing): New functions. - (vc-hg-outgoing, vc-hg-incoming, vc-hg-outgoing-mode): - (vc-hg-incoming-mode): Remove. - (vc-hg-extra-menu-map): Do not bind vc-hg-incoming and vc-hg-outgoing. +2011-02-13 Alan Mackenzie - Fix default-directory for vc-root-diff. - * vc.el (vc-root-diff): Bind default-directory to the root - directory for the diff command. + * progmodes/cc-fonts.el (c-font-lock-declarations): Remove a + narrow-to-region call that cuts context off the end (Bug#7722). -2010-10-31 Sam Steingold + * progmodes/cc-engine.el (c-forward-<>-arglist-recur): + Refactor nested if-forms with a simple cond. + (c-forward-<>-arglist): Revert 2011-01-31 change. - * vc-hg.el (vc-hg-push, vc-hg-pull): Use `apply' when calling - `vc-hg-command' with a list of flags. +2011-02-13 Chong Yidong -2010-10-31 Glenn Morris + * vc/log-view.el: New command log-view-toggle-entry-display for + toggling log entries between concise and detailed forms. + (log-view-toggle-entry-display): New command. + (log-view-mode-map): Bind RET to it. + (log-view-expanded-log-entry-function): New variable. + (log-view-current-entry, log-view-inside-comment-p) + (log-view-current-tag): New functions. + (log-view-toggle-mark-entry): Use log-view-current-entry and + log-view-end-of-defun instead of searching directly with + log-view-message-re. + (log-view-end-of-defun): Likewise. Add optional ARG for + compatibility with end-of-defun. + (log-view-end-of-defun): Ignore comments and VC buttons. - * vc-bzr.el (vc-bzr-log-edit-mode): Add --fixes support to - log-edit-before-checkin-process. + * vc/vc-bzr.el (vc-bzr-expanded-log-entry): New function. + (vc-bzr-log-view-mode): Use log-view-expanded-log-entry-function. - * vc.el (vc-modify-change-comment): Pass MODE to vc-start-logentry. +2011-02-13 Teodor Zlatanov - * vc-bzr.el, vc-hg.el (log-edit-mode): Declare. + * net/imap.el: Remove file. All the functionality is in nnimap.el. - * vc-dispatcher.el (vc-start-logentry): Doc fix. - (log-view-process-buffer, log-edit-extra-flags): Declare. + * net/imap-hash.el: Remove file. -2010-10-31 Dan Nicolaescu +2011-02-13 Michael Albinus - Add special markup processing for commit logs. - * log-edit.el (log-edit): Add new argument MODE. Use that mode - when non-nil instead of the log-view-mode. + * Makefile.in (TRAMP_SRC): Remove tramp-imap.el. - * vc.el (vc-default-log-edit-mode): New function. + * net/tramp.el (tramp-read-passwd): Simplify `auth-source-search' + call. - * vc-dispatcher.el (vc-log-edit): Add a mode argument, pass it to - log-edit. + * net/tramp-imap.el: Remove file. - Support for shelving snapshots and for showing shelves. - * vc-bzr.el (vc-bzr-shelve-show, vc-bzr-shelve-show-at-point) - (vc-bzr-shelve-apply-and-keep-at-point, vc-bzr-shelve-snapshot): - New functions. - (vc-bzr-shelve-map, vc-bzr-shelve-menu-map) - (vc-bzr-extra-menu-map): Map them. +2011-02-13 Chong Yidong -2010-10-30 Michael Albinus + * vc/vc.el (vc-print-log-setup-buttons): Instead of using the + widget library for buttons, just use button.el. - * net/tramp.el (tramp-handle-insert-file-contents): For root, - preserve owner and group when editing files. (Bug#7289) + * vc/log-view.el (log-view-mode-map): Don't inherit from + widget-keymap. -2010-10-29 Glenn Morris +2011-02-12 Glenn Morris - * speedbar.el (speedbar-mode): - * play/fortune.el (fortune-in-buffer, fortune): - * play/gomoku.el (gomoku-mode): - * play/landmark.el (lm-mode): - * textmodes/bibtex.el (bibtex-validate, bibtex-validate-globally): - Replace inappropriate uses of toggle-read-only. (Bug#7292) + * emacs-lisp/cl-seq.el (union, nunion, intersection) + (nintersection, set-difference, nset-difference) + (set-exclusive-or, nset-exclusive-or): Doc fix. -2010-10-28 Glenn Morris + * ediff-ptch.el (ediff-fixup-patch-map): Doc fix. - * select.el (x-selection): Mark it as an obsolete alias. + * faces.el (face-attr-match-p): Handle the obsolete :bold and + :italic props, so that frame-set-background-mode works. (Bug#7966) -2010-10-27 Aaron S. Hawley + * simple.el (next-error): Doc fix. - * add-log.el (find-change-log): Use derived-mode-p rather than - major-mode (bug#7284). +2011-02-12 Thierry Volpiatto -2010-10-27 Glenn Morris + * dired-aux.el (dired-create-files): Adapt destination name to + match the new behavior of copy-directory. - * menu-bar.el (menu-bar-files-menu): Make it into an actual alias, - rather than just an unused variable that inherits from the real one. +2011-02-12 Chong Yidong -2010-10-23 Michael McNamara + * mail/mail-utils.el (mail-dont-reply-to-names): New variable, + from rmail-dont-reply-to-names. Callers changed. + (mail-dont-reply-to): Rename from mail-dont-reply-to. + (rmail-dont-reply-to): Make it an obsolete alias. - * progmodes/verilog-mode.el (verilog-directive-re): Make this variable - auto-built for efficiency of execution and updating. - (verilog-extended-complete-re): Support 'pure' fucntion & task - declarations (these have no bodies). - (verilog-beg-of-statement): General cleanup to enable support of - 'pure' fucntion & task declarations (these have no bodies). - These efforts together fix Verilog bug210 from veripool; which was also - noticed by Steve Pearlmutter. - (verilog-directive-re, verilog-directive-begin, verilog-indent-re) - (verilog-directive-nest-re, verilog-set-auto-endcomments): - Support `elsif. Reported by Shankar Giri. - (verilog-forward-ws&directives, verilog-in-attribute-p): Fixes for - attribute handling for lining up declarations and assignments. - (verilog-beg-of-statement-1): Fix issue where continued declaration - is indented differently if it is after a begin..end clock. - (verilog-in-attribute-p, verilog-skip-backward-comments) - (verilog-skip-forward-comment-p): Support proper treatment of - attributes by indent code. Reported by Jeff Steele. - (verilog-in-directive-p): Fix comment to correctly describe function. - (verilog-backward-up-list, verilog-in-struct-region-p) - (verilog-backward-token, verilog-in-struct-p) - (verilog-in-coverage-p, verilog-do-indent) - (verilog-pretty-declarations): Use verilog-backward-up-list as - wrapper around backward-up-list inorder to properly skip comments. - Reported by David Rogoff. - (verilog-property-re, verilog-endcomment-reason-re) - (verilog-beg-of-statement, verilog-set-auto-endcomments) - (verilog-calc-1 ): Fix for assert a; else b; indentation (new form - of if). Reported by Max Bjurling and - (verilog-calc-1): Fix for clocking block in modport - declaration. Reported by Brian Hunter. + * mail/rmail.el (rmail-default-dont-reply-to-names): Default to + nil, and make obsolete (Bug#7888). + (rmail-dont-reply-to-names): Alias to mail-dont-reply-to-names. -2010-10-23 Wilson Snyder + * mail/rmailsum.el (rmail-summary-sort-by-correspondent): Doc fix. - * progmodes/verilog-mode.el (verilog-auto-inst, verilog-gate-ios) - (verilog-gate-keywords, verilog-read-sub-decls) - (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios) - (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support - AUTOINST for gate primitives, bug284. Reported by Mark Johnson. - (verilog-read-decls): Fix spaces in V2K module parameters causing - mis-identification as interfaces, bug287. - (verilog-read-decls): Fix not treating "parameter string" as a - parameter in AUTOINSTPARAM. - (verilog-read-always-signals-recurse, verilog-read-decls): Fix not - treating `elsif similar to `endif inside AUTOSENSE. - (verilog-do-indent): Implement correct automatic or static task or - function end comment highlight. Reported by Steve Pearlmutter. - (verilog-font-lock-keywords-2): Fix highlighting of single - character pins, bug264. Reported by Michael Laajanen. - (verilog-auto-inst, verilog-read-decls, verilog-read-sub-decls) - (verilog-read-sub-decls-in-interfaced, verilog-read-sub-decls-sig) - (verilog-subdecls-get-interfaced, verilog-subdecls-new): - Support interfaces with AUTOINST, bug270. Reported by Luis Gutierrez. - (verilog-pretty-expr): Fix interactive arguments, bug272. - Reported by Mark Johnson. - (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp): - Add 'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF, - bug269. Suggested by Gary Delp. - (verilog-mode-map, verilog-preprocess, verilog-preprocess-history) - (verilog-preprocessor, verilog-set-compile-command): - Create verilog-preprocess and verilog-preprocessor to show - preprocessed output. - (verilog-get-beg-of-line, verilog-get-end-of-line) - (verilog-modi-file-or-buffer, verilog-modi-name) - (verilog-modi-point, verilog-within-string): Move defmacro's - before first use to avoid warning. Reported by Steve Pearlmutter. - (verilog-colorize-buffer, verilog-colorize-include-files-buffer) - (verilog-colorize-region, verilog-highlight-buffer) - (verilog-highlight-includes, verilog-highlight-modules) - (verilog-highlight-region, verilog-mode): Rename colorize to - highlight to match other packages. Disable module highlighting, - as received speed complaints, reenable for experimentation only - using new verilog-highlight-modules. - (verilog-read-decls): Fix regexp stack overflow in very large - AUTO_TEMPLATEs, bug250. - (verilog-auto, verilog-delete-auto, verilog-save-buffer-state) - (verilog-scan): Create verilog-save-buffer-state to standardize - making insignificant changes that shouldn't call hooks. - (verilog-save-no-change-functions, verilog-save-scan-cache) - (verilog-scan, verilog-scan-cache-ok-p, verilog-scan-region): - Create verilog-save-no-change-functions to wrap verilog-scan - preservation, and fix to work with nested preserved calls. - (verilog-auto-inst, verilog-auto-inst-dot-name): Support .name - port syntax for AUTOWIRE, and with new verilog-auto-inst-dot-name - generate .name with AUTOINST, bug245. Suggested by David Rogoff. - (verilog-submit-bug-report): Update variable list to be complete. - (verilog-auto, verilog-colorize-region): Fix AUTO expansion - breaking on-the-fly font-locking. - (verilog-colorize-buffer, verilog-colorize-include-files) - (verilog-colorize-include-files-buffer, verilog-colorize-region) - (verilog-load-file-at-mouse, verilog-load-file-at-point) - (verilog-mode, verilog-read-inst-module-matcher): With point on a - AUTOINST cell instance name, middle mouse button now finds-file on - it. Suggested by Brad Dobbie. - (verilog-alw-get-temps, verilog-auto-reset) - (verilog-auto-sense-sigs, verilog-read-always-signals) - (verilog-read-always-signals-recurse): Fix loop indexes being - AUTORESET. AUTORESET now assumes any variables in the - initialization section of a for() should be ignored. - Reported by Dan Dever. - (verilog-error-font-lock-keywords) - (verilog-error-regexp-emacs-alist) - (verilog-error-regexp-xemacs-alist): Fix error detection of - Cadence HAL, reported by David Asher. Repair drift between the - three similar error variables. - (verilog-modi-lookup, verilog-modi-lookup-cache) - (verilog-modi-lookup-last-current, verilog-modi-lookup-last-mod) - (verilog-modi-lookup-last-modi, verilog-modi-lookup-last-tick): - Fix slow verilog-auto expansion on very large files. - (verilog-read-sub-decls-expr, verilog-read-sub-decls-line): - Fix AUTOOUTPUT treating "1*2" as a signal name in submodule connection - "{1*2{...". Broke in last revision. - (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting - submodule connections with replications "{#{a},#{b}}". + * mail/rmailsort.el (rmail-sort-by-correspondent) + (rmail-select-correspondent): Doc fix. Use mail-dont-reply-to. -2010-10-23 Glenn Morris + * mail/rmail.el (rmail-reply): Use mail-dont-reply-to. - * comint.el (comint-password-prompt-regexp): - Match "enter the password". (Bug#7224) +2011-02-12 Thierry Volpiatto -2010-10-22 Juanma Barranquero + * files.el (copy-directory): New argument COPY-CONTENTS for + copying directory contents into another existing directory. - * progmodes/dcl-mode.el (dcl-electric-reindent-regexps): - Fix typo in docstring. +2011-02-12 Tassilo Horn -2010-10-21 Michael Albinus + * minibuffer.el (completion-table-case-fold): New function for + creating a case-insensitive completion table. - * net/tramp.el (tramp-get-inline-coding): Return `nil' in case of - errors. +2011-02-12 Teodor Zlatanov - * net/trampver.el: Update release number. + * net/tramp.el (tramp-default-method): Also check if + `auth-source-search' is bound. + (tramp-read-passwd): Use `auth-source-search' instead of + `auto-source-user-or-password'. -2010-10-20 Kenichi Handa + * net/tramp-imap.el: Autoload `auto-source-search' instead of + `auto-source-user-or-password. + (tramp-imap-passphrase-callback-function): Use it. - * face-remap.el (text-scale-adjust): Call read-event with a proper - prompt. + * net/imap-hash.el: Autoload `auto-source-search' instead of + `auto-source-user-or-password. + (imap-hash-open-connection): Use it. -2010-10-19 Michael Albinus + * mail/smtpmail.el: Autoload `auto-source-search' instead of + `auto-source-user-or-password. + (smtpmail-try-auth-methods): Use it. - * net/tramp.el (tramp-do-file-attributes-with-stat) - (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in - order to make stat results a float. Patch by Andreas Schwab - . +2011-02-12 Phil Hagelberg -2010-10-18 Stefan Monnier + * emacs-lisp/package.el: Allow packages to be reinstalled. + (package--write-file-no-coding): Remove EXCL arg. + (package-unpack-single): Don't use it. - * repeat.el (repeat): Use read-key (bug#6256). +2011-02-12 Karl Pflästerer (tiny change) -2010-10-18 Chong Yidong + * vc/vc-svn.el: Adapt to Subversion change, with no .svn directory + in each sub directory. + (vc-svn-registered): Use vc-svn-root. + (vc-svn-root): New function. Make vc-svn-responsible-p an alias. + (vc-svn-repository-hostname): Use "svn info". - * emacs-lisp/unsafep.el: Don't mark functions that display - messages as safe. Suggested by Johan Bockgård. +2011-02-11 Deniz Dogan -2010-10-17 Stefan Monnier + * simple.el (delete-trailing-whitespace): New optional buffer + bound parameters. - * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset): - Turn comments into docstrings. +2011-02-11 Bastien Guerry - * minibuffer.el (completion--replace): Move point where it belongs - when there's a common suffix (bug#7215). + * files.el (basic-save-buffer): save unmodified buffers when + the file pointed by buffer-file-name doesn't exist. -2010-10-15 Michael Albinus +2011-02-11 Deniz Dogan - * net/tramp.el (tramp-open-connection-setup-interactive-shell): - Suppress expansion of tabs to spaces. Reported by Dale Sedivec - . + * net/rcirc.el (rcirc-cmd-join): Accept multiple channels. -2010-10-15 Kenichi Handa +2011-02-11 Glenn Morris - * international/characters.el: Add category '|' (word breakable) - to fullwidth characters. + * emacs-lisp/cl-specs.el (multiple-value-bind): Fix debug spec. -2010-10-14 Kenichi Handa +2011-02-11 Juanma Barranquero - * mail/rmail.el (rmail-show-message-1): Catch an error of - base64-decode-region and just show an error message (bug#7165). + * net/rcirc.el (rcirc-send-ctcp): Remove spurious arg to `format'. - * ps-mule.el (ps-mule-font-spec-list): Delete it. Not used anymore. - (ps-mule-begin-job): Fix for the case that only ENCODING is set in - a font-spec (bug#7197). +2011-02-10 Stefan Monnier -2010-10-13 Glenn Morris + * server.el (server-process-filter): Use pcase. - * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org. + * emacs-lisp/smie.el (smie-blink-matching-open): Don't use `pos' in two + conflicting ways. + (smie-indent--parent): Extend to "parent of arg". + (smie-indent-inside-string): New function. + (smie-indent-functions): Use it. -2010-10-12 Juanma Barranquero + * vc/vc-dir.el (vc-dir-refresh): Reorder operations to try and avoid + bzr locking race condition. - * international/mule.el (define-coding-system): - * international/titdic-cnv.el (quail-cxterm-package-ext-info): - * composite.el (compose-region): Fix typo in docstring. + * emacs-lisp/edebug.el (edebug-instrument-function): Check a marker is + still valid before using it. -2010-10-10 Jan Djärv + * progmodes/grep.el (grep-mode-font-lock-keywords): Adjust to + `message' -> `compilation-message' rename (bug#8004). - * term/ns-win.el (ns-right-alternate-modifier): New defvar. - (ns-right-option-modifier): New alias for ns-right-alternate-modifier. - (mac-right-option-modifier): New alias for ns-right-option-modifier. + Move keymap initialization into declaration. + * textmodes/enriched.el (enriched-mode-map): + * textmodes/bib-mode.el (bib-mode-map): + * term/lk201.el (lk201-function-map): + * tar-mode.el (tar-mode-map): + * replace.el (occur-mode-map): + * progmodes/idlwave.el (idlwave-rinfo-mouse-map, idlwave-rinfo-map): + * progmodes/idlw-help.el (idlwave-help-mode-map): + * progmodes/gdb-mi.el (gdb-memory-format-menu, gdb-memory-unit-menu): + * play/solitaire.el (solitaire-mode-map): + * play/snake.el (snake-mode-map, snake-null-map): + * play/pong.el (pong-mode-map): + * play/handwrite.el (menu-bar-handwrite-map): + * play/gametree.el (gametree-mode-map): + * net/rcirc.el (rcirc-mode-map, rcirc-browse-url-map) + (rcirc-multiline-minor-mode-map, rcirc-track-minor-mode-map): + * net/newst-plainview.el (newsticker-menu, newsticker-mode-map) + (newsticker--url-keymap): + * net/net-utils.el (nslookup-mode-map, ftp-mode-map): + * menu-bar.el (menu-bar-file-menu, menu-bar-i-search-menu) + (menu-bar-search-menu, menu-bar-replace-menu, menu-bar-goto-menu) + (menu-bar-edit-menu, menu-bar-custom-menu) + (menu-bar-showhide-fringe-ind-menu, menu-bar-showhide-fringe-menu) + (menu-bar-showhide-scroll-bar-menu, menu-bar-showhide-menu) + (menu-bar-line-wrapping-menu, menu-bar-options-menu) + (menu-bar-games-menu, menu-bar-encryption-decryption-menu) + (menu-bar-tools-menu, menu-bar-describe-menu) + (menu-bar-search-documentation-menu, menu-bar-manuals-menu) + (menu-bar-help-menu): + * mail/rmailsum.el (rmail-summary-mode-map): + * kmacro.el (kmacro-step-edit-map): + * ibuffer.el (ibuffer-mode-groups-popup, ibuffer-mode-map) + (ibuffer-mode-operate-map): + * hi-lock.el (hi-lock-menu, hi-lock-map): + * emulation/vip.el (vip-mode-map): + * emacs-lisp/re-builder.el (reb-lisp-mode-map): + * bookmark.el (bookmark-bmenu-mode-map): + * help-mode.el (help-mode-map): Move initialization into declaration. - * cus-start.el (all): ns-right-alternate-modifier is new. +2011-02-10 Deniz Dogan -2010-10-10 Andreas Schwab + * net/rcirc.el: Add PRIVMSG and CTCP functions. + (rcirc-send-privmsg, rcirc-send-ctcp): New functions. + (rcirc-keepalive, rcirc-cmd-ctcp, rcirc-ctcp-sender-PING) + (rcirc-cmd-me, rcirc-authenticate): Use them. - * Makefile.in (ELCFILES): Update. +2011-02-10 Ken Manheimer -2010-10-09 Stefan Monnier + * allout.el: Synopsis: Change allout user configuration so + auto-activation is controlled solely by customization + `allout-auto-activation'. - * emacs-lisp/lisp.el (lisp-completion-at-point): - Use emacs-lisp-mode-syntax-table for the whole function. + (allout-auto-activation-helper, allout-setup): New autoloads + implement new custom set procedure for allout-auto-activation. + Also, explicitly invoke (allout-setup) after allout-auto-activation + is custom-defined, to affect the settings in emacs sessions besides + the few where allout-auto-activation customization is done. + (allout-auto-activation): Use allout-auto-activation-helper to + :set. Revise the docstring. + (allout-init): Reduce functionality to just customizing + allout-auto-activation, and mark obsolete. + (allout-mode): Respect string values for allout-auto-activation. + Run allout-after-copy-or-kill-hook without any args. + (allout-mode, allout-layout, allout-default-layout) + (outlineify-sticky): Adjust docstring for new scheme. + (allout-after-copy-or-kill-hook): No arguments - hook implementers + should concentrate on the kill ring. -2010-10-09 Richard Sharman (tiny change) +2011-02-09 Teodor Zlatanov - * progmodes/gdb-ui.el (gdb-mouse-toggle-breakpoint-margin) - (gdb-mouse-toggle-breakpoint-fringe): Correct regexp to - work when breakpoint number exceeds nine. + * password-cache.el (password-cache-remove): Accept secrets that are + not strings. -2010-10-05 David Koppelman +2011-02-09 Stefan Monnier - * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified - instead of font-lock-mode before adding keywords. - Remove hi-lock-mode off code. Remove inhibit hack. - (hi-lock-set-pattern): Only add keywords if font-lock-fontified - non-nil; removed hook inhibit hack. + * progmodes/sh-script.el (sh-font-lock-open-heredoc): Fix case + of here-doc that immediately follows a comment. -2010-10-09 Glenn Morris +2011-02-09 Deniz Dogan - * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it... - (load-path-shadows-find): ... to this. - (list-load-path-shadows): Update for above change. + * net/rcirc.el (rcirc-ctcp-sender-PING): Simplifying. - * mail/mail-utils.el (mail-mbox-from): Also try return-path. + * net/rcirc.el (rcirc-cmd-ctcp): Use dedicated function when + available. + (rcirc-ctcp-sender-PING): New function. -2010-10-08 Glenn Morris +2011-02-08 Stefan Monnier - * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/. + * obsolete/pc-select.el: Rename from emulation/pc-select.el (bug#7940). + Remove the mark/nomark handling, and activate shift-select-mode instead. - * emacs-lisp/shadow.el (lisp-shadow): Change prefix. - (shadows-compare-text-p): Make it an obsolete alias for... - (load-path-shadows-compare-text): ... new name. - (find-emacs-lisp-shadows): Update for above name change. - (load-path-shadows-same-file-or-nonexistent): New name for the old - shadow-same-file-or-nonexistent. + * obsolete/pc-mode.el: Rename from emulation/pc-mode.el. -2010-10-03 Chong Yidong +2011-02-07 Jay Belanger - * minibuffer.el (completion--some, completion--do-completion) - (minibuffer-complete-and-exit, minibuffer-completion-help) - (completion-basic-try-completion) - (completion-basic-all-completions) - (completion-pcm--find-all-completions): Use lexical-let to - avoid some false matches in variable completion (Bug#7056) + * calc/calc-units.el (math-logunits-quant): Add support for + non-logarithmic units. -2010-10-03 Olof Ohlsson Sax (tiny change) +2011-02-07 Ken Manheimer - * vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152) + * allout.el (allout-after-copy-or-kill-hook): New hook for + extension-specific processing of killed text. + (allout-mode): Include new allout-after-copy-or-kill-hook among + mentioned hooks. + (allout-kill-line, allout-kill-topic): Ensure that processing + after kill happens even if barf-if-buffer-read-only is raised. + Include new allout-after-copy-or-kill-hook among that subsequent + processing. + (allout-deannotate-hidden): Actually remove the annotation text + properties. -2010-10-03 Leo + * allout.el (allout-listify-exposed): Copy text sans text properties. - * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only - return non-nil if the file exists (Bug#7090). +2011-02-07 Michael Albinus -2010-09-30 Stefan Monnier + * net/dbus.el (dbus-list-activatable-names): Add optional argument BUS. - * minibuffer.el (completion--replace): - Better preserve markers (bug#7138). +2011-02-07 Deniz Dogan -2010-09-29 Juanma Barranquero + * net/rcirc.el (rcirc-handler-317): New function (Bug#6507). - * server.el (server-process-filter): Doc fix. +2011-02-06 Jay Belanger -2010-09-27 Drew Adams + * calc/calc.el (calc-logunits-field-reference): Rename from + `calc-default-field-reference-level'. + (calc-logunits-power-reference): Rename from + `calc-default-power-reference-level'. - * dired.el (dired-save-positions): Doc fix. (Bug#7119) + * calc/calc-units.el (math-logunits-quant): Rename from + `math-logunits-level' + (math-logunits-plus): Rename from math-logcombine. + (calcFunc-luplus, calcFunc-luminus calc-luplus, calc-luminus): Remove. + (calcFunc-lufieldadd, calcFunc-lupoweradd, calcFunc-lufieldsub) + (calcFunc-lufieldsub, calc-logunits-add, calc-logunits-sub): + New functions. + (calcFunc-fieldquant): Rename from `calcFunc-fieldlevel'. + (calcFunc-powerquant): Rename from `calcFunc-powerlevel'. + (calc-logunits-quantity): Rename from `calc-level'. + (calcFunc-dbfieldlevel, calcFunc-dbpowerlevel, calcFunc-npfieldlevel) + (calcFunc-nppowerlevel, calc-logunits-dblevel, calc-logunits-nplevel) + (math-logunits-mul, calcFunc-lufieldmul, calcFunc-lupowermul) + (calc-logunits-mul, math-logunits-divide, calcFunc-lufielddiv) + (calcFunc-lupowerdiv, calc-logunits-divide, math-logunits-level): + New functions. -2010-09-27 Andreas Schwab + * calc/calc-help.el (calc-u-prefix-help): Remove "L" reference. + (calc-ul-prefix-help): Remove. + (calc-l-prefix-help): New function. + (calc-full-help): Add reference to `calc-l-prefix-help'. - * Makefile.in (ELCFILES): Update. + * calc/calc-ext.el (calc-init-extensions): Update autoloads. - * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): - Avoid infinite recursion on erroneous lambda form. (Bug#7114) + * calc/README: Mention logarithmic units. -2010-09-27 Kenichi Handa +2011-02-06 Chong Yidong - * tar-mode.el (tar-header-block-tokenize): Decode filenames in - "ustar" format. + * mail/emacsbug.el (report-emacs-bug-hook): Remove the check for + non-ASCII characters (Bug#7925). -2010-09-27 Kenichi Handa +2011-02-05 Glenn Morris - * international/mule.el (define-coding-system): Docstring fixed. + * emacs-lisp/cl-macs.el (return-from): Fix doc typo. - * international/mule-diag.el (describe-character-set): Use princ - with proper print-length and print-level instead of insert. + * calendar/diary-lib.el (diary-font-lock-keywords): + Tweak diary-time-regexp match. (Bug#7891) -2010-09-26 Juanma Barranquero + * progmodes/f90.el (f90-find-tag-default): New function. (Bug#7919) + (f90-mode): Use it for mode's `find-tag-default-function' property. - * window.el (walk-windows): Doc fix (bug#7105). + * ibuf-ext.el (ibuffer-filter-disable): Make it work. (Bug#7969) -2010-09-23 Glenn Morris + * faces.el (set-face-attribute): Doc fix. (Bug#2659) - * isearch.el (isearch-lazy-highlight-cleanup) - (isearch-lazy-highlight-initial-delay) - (isearch-lazy-highlight-interval) - (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face): - * net/net-utils.el (ipconfig-program-options): - Move aliases to options before the associated definitions. +2011-02-05 Deniz Dogan -2010-09-21 Stefan Monnier + * net/rcirc.el (rcirc-handler-JOIN): Reset mode-line-process + (Bug#6386). - * newcomment.el (comment-normalize-vars): Better test validity of - comment-end-skip. +2011-02-05 Stefan Monnier -2010-09-19 Stefan Monnier + * progmodes/sh-script.el (sh-here-doc-open-re): Don't rely on the + font-lock-syntax-table remappings. + (sh-here-doc-markers, sh-here-doc-re): Remove. + (sh-font-lock-close-heredoc): Remove. + (sh-syntax-propertize-here-doc): New function. + (sh-font-lock-open-heredoc): Set the sh-here-doc-marker property + instead of the sh-here-doc-re. + (sh-font-lock-paren): Don't do anything in comments or strings. + Handle line continuations. Accept a few more chars. + Don't rely on the font-lock-syntax-table remappings. + `esac' is not a valid pattern. + (sh-syntax-propertize-function): Handle here-docs differently, so we + don't bother syntax-propertizing the insides. - * emacs-lisp/float-sup.el (float-pi): New name for `pi'. - (float-e): New name for `e'. - (degrees-to-radians, radians-to-degrees): - * calendar/solar.el (solar-longitude): - * calculator.el (calculator-registers, calculator-funcall): - * textmodes/artist.el (artist-spray-random-points): - * play/bubbles.el (bubbles--initialize-images): Use new names. + * progmodes/sh-script.el (sh-font-lock-paren, sh-kw, sh-prev-thing): + Handle new bashisms ";&" and ";;&" (bug#7947). -2010-09-19 Eric M. Ludlam +2011-02-05 Michael Albinus - Update to CEDET 1.0's version of EIEIO. + * net/tramp-smb.el (tramp-smb-errors): Use `regexp-opt'. + Add "NT_STATUS_IO_TIMEOUT" and "NT_STATUS_NO_SUCH_USER". - * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key): - New function. - (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it. - (eieio-default-eval-maybe): Eval val instead of unquoting only. - (class-precedence-list): If class is nil, return nil. - (eieio-generic-call): If class of first input arg is nil, don't - look up static methods, and do check for primary methods. - (initialize-instance): See if the default needs to be evaluated - during the constructor. - (eieio-perform-slot-validation-for-default): Don't do the check - for values that will eventually be evaluated. - (eieio-eval-default-p): New function. - (eieio-default-eval-maybe): Use it. +2011-02-05 Era Eriksson (tiny change) -2010-07-03 Jan Moringen + * net/tramp.el (tramp-postfix-method-format) + (tramp-postfix-method-regexp, tramp-prefix-domain-format) + (tramp-prefix-domain-regexp, tramp-postfix-user-format) + (tramp-postfix-user-regexp, tramp-prefix-port-format) + (tramp-prefix-port-regexp, tramp-postfix-host-format) + (tramp-postfix-host-regexp, tramp-handle-substitute-in-file-name): + Doc fix. - * emacs-lisp/eieio.el (eieio-defclass): Allow :c3 - method-invocation-order. - (eieio-c3-candidate, eieio-c3-merge-lists): New functions. - (eieio-class-precedence-dfs): Compute class precedence list using - dfs algorithm. - (eieio-class-precedence-bfs): Compute class precedence list using - bfs algorithm. - (eieio-class-precedence-c3): Compute class precedence list using - c3 algorithm. - (class-precedence-list): New function. - (eieiomt-method-list, eieiomt-sym-optimize): Use it. - (inconsistent-class-hierarchy): New error symbol. - (call-next-method): Stow the replacement argument list for future - call-next-method invocations. +2011-02-04 Sam Steingold -2010-09-15 Glenn Morris + * mouse.el (mouse-buffer-menu-mode-groups): Add a "GDB" group. - * calendar/appt.el (appt-check): If not displaying the diary, - use (diary 1) to only get the entries we need. - (appt-make-list): Sort diary-list-entries, if we cannot guarantee - that it is in day order. (Bug#7019) +2011-02-04 Andreas Schwab - * calendar/appt.el (appt-check): Rather than showing the diary, - just turn off invisible display, and only if needed. + * international/mule-util.el (with-coding-priority): Doc fix. - * calendar/diary-lib.el (diary-list-entries): Doc fix. (Bug#7019) +2011-02-04 Eli Zaretskii -2010-09-14 Stefan Monnier + * arc-mode.el (archive-mode-map): Fix a typo in last change. - * emacs-lisp/byte-run.el (set-advertised-calling-convention): - Add `when' argument. Update callers. +2011-02-03 Sam Steingold - * subr.el (unintern): Declare the obarray arg mandatory. + * progmodes/gdb-mi.el (gdb-breakpoints-list-handler-custom): + Do not error out when `func' is nil. -2010-09-14 Glenn Morris +2011-02-03 Michael Albinus - * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries): - Doc fixes. + * net/tramp-sh.el (tramp-remote-path): Add default settings for + `tramp-default-remote-path' to the docstring. + (tramp-get-remote-path): Suppress error message when `getconf + PATH' fails. - * calendar/diary-lib.el (diary-included-files): New variable. - (diary-list-entries): Maybe initialize diary-included-files. - (diary-include-other-diary-files): Append to diary-included-files. - * calendar/appt.el (appt-update-list): Also check the members of - diary-included-files. (Bug#6999) - (appt-check): Doc fix. + * net/tramp-smb.el (tramp-smb-errors): Add "NT_STATUS_UNSUCCESSFUL". -2010-09-12 David Reitter +2011-02-03 Glenn Morris - * simple.el (line-move-visual): Do not truncate goal column to - integer size. (Bug#7020) + * vc/vc-hg.el (vc-hg-command): Doc fix. + + * term/w32-win.el (libpng-version): Declare for compiler. + + * msb.el: No need to load dired while compiling. + + * emacs-lisp/elint.el (elint-standard-variables): + Remove a couple of built-ins that now have doc-strings. + + * hi-lock.el, ps-bdf.el, ps-mule.el, ps-print.el, ps-samp.el: + `require' is automatically `eval-and-compile'd. + + * net/rcirc.el (rcirc-nick-completion-format): Add :version tag. + (rcirc-log-directory, rcirc-log-flag): Move definitions before use. + + * strokes.el (strokes-fill-current-buffer-with-whitespace): + Move definition before use. + (strokes-report-bug): Make it obsolete. + +2011-02-02 Sam Steingold + + * apropos.el (apropos-print): Now that `apropos-mode' inherits + from `special-mode', entering it makes the buffer read-only, so + call it only when everything has been already inserted. + * emacs-lisp/ert.el (ert--setup-results-buffer) + (ert-results-pop-to-backtrace-for-test-at-point) + (ert-results-pop-to-messages-for-test-at-point) + (ert-results-pop-to-timings): Ditto. + * emacs-lisp/package.el (package--list-packages): Ditto. + * play/solitaire.el (solitaire): Ditto. + +2011-02-02 Chong Yidong + + * progmodes/compile.el: Make all faces inherit. + (compilation-warning): Inherit from font-lock-variable-name-face. + (compilation-info): Inherit from font-lock-type-face. + (compilation-line-number): Reassign to font-lock-keyword-face. + (compilation-column-number): Reassign to font-lock-doc-face. + (compilation-leave-directory-face): Reassign to + font-lock-builtin-face. + +2011-02-02 Eli Zaretskii + + * dired.el (dired-insert-directory): Don't invoke `ls' when + ls-lisp.el is used to emulate it. + +2011-02-01 Julien Danjou + + * color.el (color-gradient): Add a color-gradient function. + +2011-02-01 Sam Steingold + + * simple.el (special-mode-map): Bind "h" to `describe-mode'; + bind "z" to `kill-this-buffer'. + (completion-list-mode-map): Bind "z" to `kill-this-buffer'. + * apropos.el (apropos-mode-map): Inherit from `special-mode-map'. + (apropos-mode): Inherit from `special-mode'. + * arc-mode.el (archive-mode-map): Inherit from `special-mode-map'. + * bookmark.el (bookmark-bmenu-mode): Define using + `define-derived-mode' inheriting from `special-mode'. + * dired.el (dired-mode-map): Inherit from `special-mode-map'. + * image-mode.el (image-mode-map): Ditto. + * replace.el (occur-mode): Define using + `define-derived-mode' inheriting from `special-mode'. + * tar-mode.el (tar-mode): Inherit from `special-mode'. + * calendar/diary-lib.el (diary-fancy-display-mode): + Inherit from `special-mode-map'. + * emacs-lisp/ert.el (ert-simple-view-mode, ert-results-mode): + Inherit from `special-mode'. + * emacs-lisp/package.el (package-menu-mode-map): Copy from + `special-mode-map'. + (package-menu-mode): Define using `define-derived-mode' + inheriting from `special-mode'. + * erc/erc-list.el (erc-list-menu-mode): Inherit from `special-mode'. + * net/xesam.el (xesam-mode): Inherit from `special-mode'. + (xesam-mode-map): Define separately. + * play/solitaire.el (solitaire-mode): Inherit from `special-mode'. + * progmodes/compile.el (compilation-minor-mode-map) + (compilation-mode-map): Inherit from `special-mode-map'. + * vc/diff-mode.el (diff-mode-shared-map): + Inherit from `special-mode-map'. + * vc/log-view.el (log-view-mode-map): Add a comment. + +2011-02-01 Chong Yidong + + * custom.el (load-theme): Define return value. Drop use of + unsafep; call custom-theme-load-confirm for non-known-safe themes. + (custom-theme-load-confirm): Scroll in the correct window. + (custom-enabled-themes): Add custom-safe-themes to :set-after. + + * cus-theme.el (custom-theme-checkbox-toggle): Don't activate the + checkbox if load-theme fails. + +2011-02-01 Stefan Monnier + + * progmodes/compile.el (compilation-next-error): Check there's + a message before using it (bug#7941). + +2011-02-01 Jay Belanger + + * calc/calc-mtx.el (math-lud-pivot-check): New function. + (math-do-matrix-lud): Use `math-lud-pivot-check' to check the size + of potential pivots. -2010-09-11 Stefan Monnier +2011-01-31 Alan Mackenzie - * repeat.el (repeat): Allow repeating when the last event is a click. - Suggested by Drew Adams (bug#6256). + * progmodes/cc-cmds.el (c-forward-over-illiterals): + Continue parsing if we encounter a naked # (Bug#7595). + (c-beginning-of-statement): Avoid loop in locating the beginning + of a macro. (Not actually committed until 2011-02-20, see above). -2010-09-11 Sascha Wilde +2011-01-31 Chong Yidong - * vc/vc-hg.el (vc-hg-state,vc-hg-working-revision): - Replace setting HGRCPATH to "" by some less invasive --config options. + * files.el (copy-directory): Fix arguments to recursive call. -2010-09-11 Stefan Monnier +2011-01-31 Chong Yidong - * font-lock.el (font-lock-beginning-of-syntax-function): - Mark as obsolete. + * files.el (copy-directory): If destination is an existing + directory, copy into a subdirectory there. -2010-09-10 Glenn Morris +2011-01-31 Andreas Schwab - * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar - and tool-bar modes. (Bug#6211) - (menu-bar-mode): Move setting of standard-value after the - minor-mode definition, otherwise it seems to have no effect. + * emacs-lisp/shadow.el (load-path-shadows-find): Ignore leim-list + files. -2010-09-08 Masatake YAMATO +2011-01-31 Chong Yidong - * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords): - Fix typo. (Bug#6976) + * image-dired.el (image-dired-mouse-display-image): No-op if no + file is found (Bug#7817). -2010-09-06 Vinicius Jose Latorre + * mouse.el (mouse-menu-non-singleton): Doc fix (Bug#7801). - * whitespace.el: Allow cleaning up blanks without blank - visualization (Bug#6651). Adjust help window for - whitespace-toggle-options (Bug#6479). Allow to use fill-column - instead of whitespace-line-column (from EmacsWiki). New version 13.1. - (whitespace-style): Add new value 'face. Adjust docstring. - (whitespace-space, whitespace-hspace, whitespace-tab): - Adjust foreground property face. - (whitespace-line-column): Adjust docstring and type declaration. - (whitespace-style-value-list, whitespace-toggle-option-alist) - (whitespace-help-text): Adjust const initialization. - (whitespace-toggle-options, global-whitespace-toggle-options): +2011-01-31 Kenichi Handa + + * international/quail.el (quail-keyboard-layout-alist): + Remove superfluous SPC for "pc105-uk" (bug#7927). + +2011-01-31 Glenn Morris + + * msb.el (msb-menu-bar-update-buffers): Update for changed + argument handling of menu-bar-select-frame. (Bug#7902) + +2011-01-31 Chong Yidong + + * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Set a limit + to the recursion depth (Bug#7722). + +2011-01-31 Roy Liu (tiny change) + + * term/ns-win.el (ns-find-file): Expand ns-input-file with + command-line-default-directory (Bug#7872). + +2011-01-31 Stefan Monnier + + * progmodes/compile.el (compilation--flush-directory-cache): + New function, extracted from compilation--remove-properties. + (compilation--remove-properties, compilation--parse-region): Use it. + (compilation--previous-directory): Handle one more case. + (compilation-enable-debug-messages): Remove. + (compilation-parse-errors, compilation--flush-parse): Just remove the + left over debug messages. + +2011-01-31 Sam Steingold + + * progmodes/compile.el (compilation-enable-debug-messages): + Add a variable to make the parsing messages introduced in + 2011-01-28T22:12:05Z!monnier@iro.umontreal.ca optional. + (compilation-parse-errors, compilation--flush-parse): Use it. + +2011-01-31 Deniz Dogan + + * net/rcirc.el: New customizable nick completion format. (Bug#6314) + (rcirc-nick-completion-format): New defcustom. + (rcirc-complete): Use it. + +2011-01-31 Deniz Dogan + + * net/rcirc.el: Clean log filenames (Bug#7933). + (rcirc-log-write): Use convert-standard-filename. + (rcirc-log-filename-function): Documentation updates. + +2011-01-30 Jan Djärv + + * mail/emacsbug.el (report-emacs-bug-insert-to-mailer): + Check report-emacs-bug-can-use-osx-open and use that if t. + (report-emacs-bug-can-use-osx-open): New function. + (report-emacs-bug): Rename can-xdg-email to can-insert-mail. + Check report-emacs-bug-can-use-osx-open also for can-insert-mail. + +2011-01-29 Chong Yidong + + * vc/vc-dispatcher.el (vc-set-async-update): New function for + updating Dired or VC-dir buffers after async command completes. + + * vc/vc-bzr.el (vc-bzr-async-command): Return the process buffer. + (vc-bzr-pull, vc-bzr-merge-branch): Use vc-set-async-update. + + * vc/vc-git.el (vc-git-merge-branch): Add FETCH_HEAD to branch + completions if it exists. Use vc-set-async-update. + (vc-git-pull): Use vc-set-async-update. + + * vc/vc-hg.el (vc-hg-pull): Fix default-contents arg to + read-shell-command. Use vc-set-async-update. + (vc-hg-merge-branch): Use vc-set-async-update. + +2011-01-29 Daiki Ueno + + * epg.el (epg--status-KEYEXPIRED, epg--status-KEYREVOKED): + Don't presume KEYEXPIRED and KEYREVOKED to be a fatal error status + (Bug#7931). + +2011-01-29 Stefan Monnier + + * progmodes/compile.el: Avoid an N² behavior in grep. + (compilation--previous-directory): New fun. + (compilation--previous-directory-cache): New var. + (compilation--remove-properties): Flush it. + (compilation-directory-properties, compilation-error-properties): + Use the new fun to speed up looking for the current directory. + +2011-01-29 Chong Yidong + + * vc/vc-hg.el (vc-hg-history): New var. + (vc-hg-pull): Perform default pull if called via Lisp by vc-pull. + (vc-hg-merge-branch): New function. + + * vc/vc.el (vc-pull): Make vc-update an alias for this, instead of + the other way around. + + * vc/vc-git.el (vc-git-branches, vc-git-pull) + (vc-git-merge-branch): New functions. + (vc-git-history): New var. + +2011-01-28 Chong Yidong + + * vc/vc-dispatcher.el (vc-do-async-command): New function. + + * vc/vc-bzr.el (vc-bzr-async-command): Convert into a wrapper for + vc-do-async-command. + + * vc/vc-bzr.el (vc-bzr-pull, vc-bzr-merge-branch): + Callers changed. + +2011-01-28 Leo + + * emacs-lisp/advice.el (ad-make-advised-docstring): Don't apply + highlighting to the "this function is advised" message. + + * help-mode.el (help-mode-finish): Apply highlighting here, to + avoid clobbering by substitute-command-keys (Bug#6304). + +2011-01-28 Chong Yidong + + * woman.el (woman0-roff-buffer): Process roff escape sequences + occurring prior to the first request (Bug#7843). + +2011-01-28 Stefan Monnier + + * progmodes/compile.el: Don't use font-lock any more. + (compilation-error-regexp-alist-alist): Change handling of makepp + so it preserves the warning/error distinction on subsequent files. + Simplify various rules. + (compilation-directory-properties): Use font-lock-face. + Add a compilation-message property. + (compilation-internal-error-properties): Use font-lock-face. + Don't set the compilation-debug property here. + (compilation--put-prop, compilation--remove-properties) + (compilation--parse-region, compilation--ensure-parse) + (compilation--ensure-parse): New functions. + (compilation-parse-errors): New function, largely inspired of + compilation-mode-font-lock-keywords. Set compilation-debug here. + (compilation--parsed): New var. + (compilation--flush-parse): Use compilation--ensure-parse. + (compilation-start): Don't call font-lock. + (compilation-turn-on-font-lock): Remove. + (compilation-setup): Don't set font-lock-extra-managed-props not change + other font-lock settings, other than keywords. + Don't activate font-lock-mode. + Set change-major-mode-hook and before-change-functions. + (compilation--unsetup): Remove properties and hooks. + (compilation-next-single-property-change): New function. + (compilation-next-error): Use it to parse when needed. + (compile-goto-error): Parse buffer as needed. + (compilation--compat-error-properties): Don't need a dummy `face' + property any more. + +2011-01-28 Stefan Monnier + + * progmodes/compile.el: Use accessors for clarity and fix omake hack. + (compilation-process-setup-function): Fix docstring's false promises. + (compilation-error-regexp-alist-alist): Catch omake's continuous + recompilation message and avoid reuse of old markers. + (compilation-parse-errors-function): Declare obsolete. + (compilation-buffer-modtime): Remove. + (compilation--make-cdrloc, compilation--loc->col) + (compilation--loc->line, compilation--loc->file-struct) + (compilation--loc->marker, compilation--loc->visited) + (compilation--make-file-struct, compilation--file-struct->file-spec) + (compilation--file-struct->formats) + (compilation--file-struct->loc-tree): New macros. Use them. + (compilation--message): New defstruct. Use them. + (compilation-next-error-function): Don't mess with timestamps to try + and guess when to reparse. + +2011-01-28 Stefan Monnier + + * textmodes/tex-mode.el: Get rid of compilation-parse-errors-function + (tex-old-error-file-name): New function, + extracted from tex-compilation-parse-errors. + (tex-compilation-parse-errors): Remove. + (tex-error-regexp-alist): New var. + (tex-shell): Use it to avoid compilation-parse-errors-function. + + * progmodes/grep.el (grep-regexp-alist): Tighten regexp. + (grep-mode-font-lock-keywords): Remove regexp that seems like + a left-over from before we used compile.el. + (grep-mode-font-lock-keywords): Call syntax-ppss-flush-cache when + modifying the buffer within with-silent-modifications. + + * progmodes/compile.el: Cleanup text-properties namespace by using + `compilation-message' instead of `message', `compilation-directory' + instead of `directory', and `compilation-debug' instead of `debug'. + (compilation-last-buffer, compilation-parsing-end) + (compilation-error-list, compilation-old-error-list): Move to the + compatibility part of the code. + (compilation-error-properties): If `file' is a function, let it return + a file name. + (compilation-mode-font-lock-keywords): Be more conservative with the + omake "^ *" pattern prefix, to try and minimize the risk of + pathologically slow regexp matching. + (compilation-start): Use inhibit-read-only. + (compilation--unsetup): New function. + (compilation-shell-minor-mode, compilation-minor-mode): Use it. + (compilation-filter): Minor tweaks. + (compilation-next-error-function): Try and avoid abusing variables. + (compilation--flush-file-structure): New fun. + (compilation-fake-loc): Use it to improve behavior when file is reused. + (debug-ignored-errors): Add "Moved past last ...". + (compilation--compat-error-properties) + (compilation--compat-parse-errors): Rename by doubling the "-". + + Port features from the previous prolog.el to the new one. + * progmodes/prolog.el (prolog-system): Add GNU and ECLiPSe options. + (prolog-program-name, prolog-program-switches, prolog-consult-string) + (prolog-compile-string, prolog-prompt-regexp): Get rid of the -i + variable and use a function to compute the value dynamically. + (prolog-prompt-regexp): Add regexp for GNU Prolog. + (prolog-continued-prompt-regexp): Remove, unused. + (prolog-find-value-by-system): Try and use the value of prolog-system + in the *prolog* buffer if it helps. + (prolog-mode-keybindings-common): Bind C-c C-z unconditionally... + (prolog-zip-on): ..and check prolog-system and version here instead. + (prolog-inferior-self-insert-command): New command. + (prolog-inferior-mode-map): Use it. + (prolog-inferior-error-regexp-alist): New var. + (prolog-inferior-mode): Use it, with compilation-shell-minor-mode. + (prolog-input-filter): Use derived-mode-p. + (prolog-inferior-guess-flavor): New function. + (prolog-ensure-process): Use it. Use make-comint-in-buffer rather than + make-comint to avoid running comint-mode twice. + (prolog-inferior-buffer): New fun. + (prolog-old-process-region, prolog-old-process-file): + Don't call prolog-bsts here... + (prolog-build-prolog-command): ...do it here instead. + (prolog-old-process-region, prolog-old-process-file): + Use compilation-fake-loc and compilation-forget-errors. + (prolog-consult-compile-region): Use bolp. + +2011-01-28 Chong Yidong + + * image-mode.el (image-display-size): Doc fix (Bug#7820). + +2011-01-27 Sam Steingold + + * midnight.el (clean-buffer-list-kill-never-buffer-names): + Remove "*server*" which is never created by emacs server. + +2011-01-27 Deniz Dogan + + * vc/vc-bzr.el (vc-bzr-diff): Don't pass --diff-options unless + there are some diff switches. + +2011-01-27 Stefan Monnier + + * progmodes/ruby-mode.el (ruby-syntax-propertize-function): + Copy change made to ruby-font-lock-syntactic-keywords. + + * htmlfontify.el: Make it obey the font-lock-face text property. + Miscellaneous cleanup such as: + - Don't hide expressions after a closing paren. + - Move initial setq into let. + - Hoist common parts out of ifs. + (hfy-p-to-face, hfy-p-to-face-lennart): Remove. + (hfy-face-at): Use get-text-property instead. + (hfy-prop-invisible-p): Use invisible-p if available. + (htmlfontify-manual): Use \\[...]. + (hfy-html-quote-regex): Use [...]. + (hfy-combined-face-spec): Simplify. + (hfy-compile-face-map): Don't presume point-min==1. + (hfy-css-name, hfy-buffer, htmlfontify-buffer): Use \' rather than $ to + match end of string. + (hfy-text-p): η-reduce. + (hfy-tags-for-file): Receive cache-hash directly. + (hfy-mark-tag-names): Adjust call. + +2011-01-27 Glenn Morris + + * msb.el (msb-after-load-hooks): Make it an obsolete alias. + (msb-after-load-hook): Remove eval-after-load wackiness. + +2011-01-25 Sam Steingold + + * vc/vc-svn.el (vc-svn-diff): Use `diff-command' instead of the + literal "diff" (important for windows-nt). + +2011-01-25 Glenn Morris + + * emacs-lisp/copyright.el (copyright-at-end-flag) + (copyright-names-regexp): Add safety properties. + (copyright-year-ranges): New option. + (copyright-find-end): New function, split from copyright-update-year. + (copyright-update-year): Use copyright-find-end. + (copyright-fix-years): Optionally, convert years to ranges. + Handle years continued over comment lines. + Do not mess with the fill-prefix. + Do not call copyright-update. + (copyright-update-directory): Optionally, fix years rather than update. + Skip directories. Find files with only safe local vars. + +2011-01-25 Stefan Monnier + + * files.el (file-name-non-special): Only change buffer-file-name after + insert-file-contents if it's `visit'ing the file (bug#7854). + +2011-01-25 Chong Yidong + + * dired.el (dired-revert): Doc fix (Bug#7758). + + * simple.el (line-move-visual): Doc fix (Bug#7594). + +2011-01-25 Nobuyoshi Nakada + + * progmodes/ruby-mode.el (ruby-here-doc-beg-match): Fix for + here-doc which ends with an underscore. + (ruby-mode-set-encoding): Skip shebang line always. + (ruby-mode-map): Bind C-c C-c to comment-region. + (ruby-font-lock-keywords): Highlight literal hash key labels as symbols. + (ruby-forward-sexp): Stop after literal hash key labels. + (ruby-font-lock-syntactic-keywords): Highlight regexp after open + bracket. + +2011-01-25 Keitaro Miyazaki (tiny change) + + * emacs-lisp/re-builder.el (reb-mode-map): Set case-fold-search in + the correct buffer (Bug#7650). + +2011-01-25 Glenn Morris + + * comint.el (comint-mode): Doc fix. (Bug#7897) + + * simple.el (do-auto-fill): Give it a doc string. + + * button.el (make-text-button): Doc fix. (See bug#7881) + +2011-01-24 Stefan Monnier + + * progmodes/perl-mode.el (perl-syntax-propertize-special-constructs): + Don't move backward, so as not to fall in an inf-loop (bug#7736). + + * progmodes/ruby-mode.el (ruby-syntax-propertize-function): (bug#7735) + Handle ?" and friends differently (e.g. don't use backrefs). + +2011-01-24 Jay Belanger + + * calc/calc.el (calc-default-power-reference-level) + (calc-default-field-reference-level): New variables. + * calc/calc-units.el (math-standard-units): Add dB and Np. + (math-logunits): New variable. + (math-extract-logunits, math-logcombine, calcFunc-luplus) + (calcFunc-luminus, calc-luplus, calc-luminus, math-logunit-level) + (calcFunc-fieldlevel, calcFunc-powerlevel, calc-level): + New functions. + (math-find-base-units-rec): Add entry for ln(10). + * calc/calc-help.el (calc-u-prefix-help): Add logarithmic help. + (calc-ul-prefix-help): New function. + * calc/calc-ext.el (calc-init-extensions): Autoload new units + functions. Add keybindings for new units functions. + +2011-01-22 Giorgos Keramidas (tiny change) + + * net/rcirc.el (rcirc-kill-buffer-hook): Flush logs when killing + rcirc buffers. (Bug#4940) + +2011-01-22 Glenn Morris + + * emacs-lisp/copyright.el (copyright-find-copyright): New function, + split out from copyright-update-year. + (copyright-update): Don't mess with the GPL version if we don't own the + copyright. Update license regexp, and remove no longer needed + Esperanto stuff. + (copyright-fix-years): Use copyright-find-copyright. + +2011-01-22 Chong Yidong + + * vc/diff.el (diff-sentinel): Doc fix (Bug#7682). + +2011-01-22 Jari Aalto + + * play/landmark.el: Change `lm-' prefix to `landmark-' (Bug#7672). + (lm): Rename to landmark. + (lm-test-run): Rename to landmark-test-run. + +2011-01-22 Chong Yidong + + * emacs-lisp/re-builder.el (reb-mode-map): Fix logic error in + "Case sensitive" menu item. + +2011-01-22 Roland McGrath + + * comint.el (comint-replace-by-expanded-history-before-point): Fix + expansion of !$ and !!:N syntax to pick the indicated word (bug#7883). + +2011-01-22 Stefan Monnier + + * progmodes/js.el (js--regexp-literal): Count backslashes (bug#7882). + +2011-01-22 Jari Aalto + + * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): + Assume foo(bar) is a manpage reference rather than some unquoted + symbol (bug#7705). + +2011-01-22 Stefan Monnier + + * subr.el (shell-quote-argument): Properly quote \n (bug#7687). + Suggested by Flo . + +2011-01-22 Glenn Morris + + * progmodes/compile.el (compilation-error-regexp-alist): + Fix custom type. (Bug#7812) + +2011-01-22 Ken Manheimer + + * allout.el (allout-prefixed-keybindings): Bind (prefixed) '#' to + allout-number-siblings, in keeping with what obtained due to + (now-defunct) allout-keybindings-list. Ditch repeat binding to + (prefixed) ?i. + (allout-before-change-handler): Better expose spots affected by + undo. + +2011-01-22 Chong Yidong + + * man.el (Man-highlight-references0): Use make-button (Bug#7881). + +2011-01-22 Phil Hagelberg + + * pcmpl-unix.el (pcmpl-ssh-config-file): New option. + (pcmpl-ssh-known-hosts): Rename from pcmpl-ssh-hosts. + (pcmpl-ssh-config-hosts): New function. + (pcmpl-ssh-hosts): Use pcmpl-ssh-config-hosts in addition to + pcmpl-ssh-known-hosts. + +2011-01-21 Jay Belanger + + * calc/calc-undo.el (calc-undo): Autoload it. + * calc/calc-ext.el (calc-init-extensions): Remove keybindings + and autoload for `calc-undo'. + * calc/calc.el (calc-mode-map): Add keybindings for `calc-undo'. + * calc/calc-prog.el: + * calc/calc-graph.el: + * calc/calc-map.el: Change `arglist' to `math-arglist' throughout. + +2011-01-21 Štěpán Němec (tiny change) + + * calc/calc-ext.el (calc-init-extensions): Map all `undo' + keybindings to `calc-undo'. + +2011-01-20 Stefan Monnier + + Don't mess with *temp*. + * obsolete/spell.el: Move from textmodes/spell.el. + (spell-string): + * term.el (term-read-input-ring): + * startup.el (display-startup-echo-area-message): + * progmodes/antlr-mode.el (antlr-directory-dependencies): + * comint.el (comint-read-input-ring): Use with-temp-buffer. + * international/mule.el (ctext-pre-write-conversion): Don't hardcode + point-min==1. + +2011-01-20 Ken Manheimer + + * allout.el (allout-institute-keymap): Use fset instead of + reapplying defalias. + + (allout-hotspot-key-handler): Check for non-control-modified + bindings for hotspot characters if there are no control-modified + versions. + + * allout.el: Summary - migrate to defining allout mode using + define-minor-mode instead of defun. Significantly clean-up + internal keymap provisions, refactoring and, in the process, + removing a lot of accumulated cruft. + + allout-mode-map is now a keymap by virtue of being a defalias to + allout-mode-map-value, which contains the actual keymap structure. + + (allout-mode): Use define-minor-mode rather than defun. + Remove now-unnecessary minor-mode setup activities from the body. + Specify :keymap as allout-mode-map so the minor-mode-map-alist + entry will be '(allout-mode . allout-mode-map) - see + allout-mode-map-value, below. Adjust docstring to track changes. + (allout-minor-mode): Remove this defalias, now that we're using + define-minor-mode. + (allout-mode-map): Set value to be 'allout-mode-map. The actual + keymap is allout-mode-map-value, via defalias. + (allout-mode-map-value): The variable holding the actual mode + keymap structure, by virtue of defalias from allout-mode-map. + (allout-compose-and-institute-keymap): Rename from + allout-bind-keys, and including the binding-composition + functionality of the former produce-allout-mode-map and + allout-setup-mode-map. + (allout-institute-keymap): Take over the "setup" part of the former + allout-setup-mode-map. Reassign allout-mode-map-value value and + update the defalias. + (allout-command-prefix, allout-prefixed-keybindings) + (allout-unprefixed-keybindings): + Use allout-compose-and-institute-keymap to process the bindings. + (allout-unprefixed-keybindings): Remove extraneous '?' question marks. + (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h - + user can customize if they want to use that binding. + Bind allout-copy-topic-as-kill to (prefixed) \M-k. + Bind allout-up-current-level to (prefixed) \C-u. (I think i mistakenly + elided that, previously, instead of the one for \C-h.) + (allout-hotspot-key-handler): Remove attempt to resolve the key + through the literal key-string lookup on allout-keybindings-list. + That probably hasn't worked for a Long Time, and removal of + allout-keybindings-list further simplifies the keybindings situation. + (allout-pre-command-business): Use allout-mode-map-value instead + of allout-mode-map. + (allout-preempt-trailing-ctrl-h): Remove. The user can customize + the bindings if they want to use a keybinding having a trailing + \C-h. No deprecation needed since this feature was never in a release. + (allout-keybindings-list): Remove. It's not been useful for a + while. (See allout-hotspot-key-handler changes, above.) + (produce-allout-mode-map): Remove. Consolidate into + allout-compose-and-institute-keymap. + (allout-mode-map-adjustments): Remove. No longer necessary with + removal of allout-preempt-trailing-ctrl-h. + (allout-setup-mode-map): Remove. Consolidate into + allout-compose-and-institute-keymap and allout-institute-keymap. + +2011-01-20 Glenn Morris + + * vc/vc-svn.el (vc-svn-after-dir-status): Tweak previous change. + + * simple.el (read-expression-history): Remove, it's in minibuf.c. + +2011-01-20 Chong Yidong + + * subr.el (y-or-n-p): Revert 2011-01-07 change, removing ARGS. + + * files.el (find-alternate-file, basic-save-buffer) + (basic-save-buffer-2, revert-buffer, recover-file) + (kill-buffer-ask, abort-if-file-too-large) + (set-visited-file-name, write-file, backup-buffer) + (basic-save-buffer, save-some-buffers): + * dired-aux.el (dired-compress-file): Callers changed. + +2011-01-19 Glenn Morris + + * vc/vc-svn.el (vc-svn-after-dir-status, vc-svn-parse-status): + Also check the property status. (Bug#7861) + +2011-01-18 Michael Albinus + + * net/tramp.el (tramp-debug-message): Extend function exclude + list. Use `regexp-opt'. + +2011-01-18 Stefan Monnier + + * textmodes/tex-mode.el (tex-font-lock-verb): Make sure \verb + highlighting doesn't spill over subsequent lines. + + * emacs-lisp/easy-mmode.el (define-minor-mode): Don't re-evaluate the + keymap expression. Improve docstring. + + * electric.el (electric-indent-post-self-insert-function): + Don't auto-indent for indent-to-left-margin, it's too often + counter-productive. + +2011-01-16 Tassilo Horn + + * strokes.el (strokes-read-stroke): Re-fill strokes buffer with + spaces if the frame was resized, so that the full visible buffer + serves as canvas for strokes. + +2011-01-16 Glenn Morris + + * info-xref.el (info-xref-docstrings): Replace cl function. + Also skip directories. + +2011-01-16 Kevin Ryde + + * info-xref.el: Version 3. + (info-xref-check, info-xref-check-all): Move commentary details + into docstrings for better visibility. + Use compilation-mode for the results buffer. + (info-xref-output, info-xref-output-error, info-xref-with-output) + (info-xref-filename, info-xref-in-progress): + New internals for this. + (info-xref-check-list, info-xref-check-buffer) + (info-xref-check-all-custom): Use those. + (info-xref-output-buffer): Rename from info-xref-results-buffer. + (info-xref-output-heading): Rename from info-xref-filename-heading. + (info-xref-good, info-xref-bad, info-xref-xfile-alist) + (info-xref-filename-heading): Move to output managing section. + (info-xref-docstrings): New command checking "Info node `(foo)Bar'" + (info-xref-lock-file-p, info-xref-with-file): New helpers for it. + (info-xref-subfile-p): Move to generic section with those two. + (info-xref-check-node): New function split from + info-xref-check-buffer, shared by info-xref-docstrings. + (info-xref-goto-node-p): Move to a checking section with that func. + (info-xref-unavail): New counter. + (info-xref-check-node): Use it. + (info-xref-with-output): Show count of unavailables at end of output. + (info-xref-all-info-files): Exclude ".*" dotfiles. Ignore broken + symlinks. Exclude .texi files. Exclude Emacs backup files. + (info-xref-check-all-custom): Fix quietening viper-mode and + gnus-registry-install -- use setq not let so as not to unbind + after load. + +2011-01-16 Juri Linkov + + * isearch.el (isearch-abort): Don't quit if search has + an incomplete regexp (isearch-error is non-nil). (Bug#7534) + +2011-01-15 Mark Diekhans + + * files.el (backup-buffer): Make last-resort backup file in + .emacs.d (Bug#6953). + + * subr.el (locate-user-emacs-file): If .emacs.d does not exist, + make it with permission 700. + +2011-01-15 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-insert-header): + Set rmail-mime-coding-system to a cons whose car is the last coding + system used to decode the header. + (rmail-mime-find-header-encoding): New function. + (rmail-mime-insert-decoded-text): + Override rmail-mime-coding-system if it is a cons. + (rmail-show-mime): If only a header part was decoded, find the + coding system while ignoring mm-charset-override-alist. + +2011-01-15 Chong Yidong + + * subr.el (event-start, event-end): Doc fix (Bug#7826). + +2011-01-15 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-next-item) + (rmail-mime-previous-item): Delete them. + (rmail-mime-shown-mode): Recursively call for children. + (rmail-mime-hidden-mode): Delete the 2nd arg TOP. + Callers changed. + (rmail-mime-raw-mode): Recursively call for children. + (rmail-mode-map): Change mapping of tab and backtab to + forward-button and backward-button respectively. + (rmail-mime-insert-tagline): Always insert "Hide" or "Show" + button. + (rmail-mime-update-tagline): New function. + (rmail-mime-insert-text): Call rmail-mime-update-tagline if the + body display is changed. + (rmail-mime-toggle-button): Rename from rmail-mime-image. + (rmail-mime-image): Delete this button type. + (rmail-mime-toggle): New button type. + (rmail-mime-insert-bulk): Call rmail-mime-update-tagline if the + body display is changed. Change the save button label to "Save". + Don't process show/hide button here. + (rmail-mime-insert-multipart): Call rmail-mime-update-tagline if + the body display is changed. Unconditionally call + rmail-mime-insert for children. + (rmail-mime-handle): Update `display' vector of the just inserted + entity. + (rmail-mime-process): If mail-header-parse-content-type returns + nil, use "text/plain" as the fallback type. + (rmail-mime-insert): For raw-mode, recursively call + rmail-mim-insert for children. + (rmail-mime): Handle the case that the current buffer is not rmail + buffer (e.g. in summary buffer). + +2011-01-15 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-next-item) + (rmail-mime-previous-item): Skip the body of a non-multipart + entity if a tagline is shown. + +2011-01-15 Stefan Monnier + + * tmm.el (tmm-get-keymap): Skip bindings without labels (bug#7721). + (tmm-prompt): Simplify. + (tmm-add-prompt): Remove unused var `win'. + + * whitespace.el (global-whitespace-newline-mode): Fix call (bug#7810) + to minor mode which used nil accidentally to mean "turn off". + +2011-01-15 Michael Albinus + + * net/tramp-sh.el (tramp-find-inline-compress) + (tramp-get-inline-coding): Quote command after pipe symbol for + local calls under W32. (Bug#6784) + +2011-01-15 Michael Albinus + + * net/tramp.el (tramp-default-method): Initialize with pscp/plink + only when running under W32. + +2011-01-15 Eli Zaretskii + + * progmodes/grep.el (grep-compute-defaults): Quote the program + file name after the pipe symbol in Grep templates. (Bug#6784) + * jka-compr.el (jka-compr-partial-uncompress): Likewise. + +2011-01-15 Lennart Borgman + + * buff-menu.el (Buffer-menu-buffer-list): New var. + (Buffer-menu-revert-function, list-buffers-noselect): Use it, so a + restricted buffer list is not lost on revert (Bug#7749). + +2011-01-15 Eric Hanchrow + + * net/ldap.el (ldap-search-internal): Discard stderr output. + +2011-01-15 Eli Zaretskii + + * files.el (directory-abbrev-alist): Doc fix. (Bug#7777) + +2011-01-15 Stefan Monnier + + * vc-bzr.el (vc-bzr-annotate-time): Tweak previous change. + +2011-01-15 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-insert-bulk): Display an unknown + part as a plain text. + (rmail-mime-process-multipart): Set the default content-type to + nil for unknown multipart subtypes (bug#7651). + +2011-01-14 Stefan Monnier + + * hexl.el (hexl-mode-old-*): Remove. + (hexl-mode--old-var-vals): New var to replace them. + (hexl-mode--minor-mode-p, hexl-mode--setq-local): New funs. + (hexl-mode, hexl-follow-line, hexl-activate-ruler): + Use them to set local vars (bug#7846). + (hexl-mode-exit): Use hexl-mode--old-var-vals to restore state. + (hexl-backward-short, hexl-backward-word, hexl-scroll-down) + (hexl-scroll-up, hexl-end-of-1k-page, hexl-end-of-512b-page): Simplify. + + * vc/smerge-mode.el: Resolve comment conflicts more aggressively. + (smerge-resolve--normalize-re): New var. + (smerge-resolve--extract-comment, smerge-resolve--normalize): New funs. + (smerge-resolve): Use them. + * newcomment.el (comment-only-p): New function. + (comment-or-uncomment-region): Use it. + +2011-01-14 Brent Goodrick (tiny change) + + * abbrev.el (prepare-abbrev-list-buffer): If listing local abbrev + table, get the value before switching to the output buffer. (Bug#7733) + +2011-01-14 Stefan Monnier + + * progmodes/python.el (python-mode): Don't impose font-lock (bug#3628). + +2011-01-14 Kim F. Storm + + * emulation/cua-base.el (cua--init-keymaps): + Remap exchange-point-and-mark in cua-global-keymap. + +2011-01-14 Tassilo Horn + + * progmodes/sh-script.el (sh-other-keywords): Add ZSH's foreach + loop keyword. + +2011-01-14 Stefan Monnier + + * emacs-lisp/easymenu.el: Add :enable (bug#7754), and obey :label. + Require CL. + (easy-menu-create-menu, easy-menu-convert-item-1): + Use :label rather than nil for labels. Use `case'. + Add :enable as alias for :active. + (easy-menu-binding): Obey :label. + +2011-01-13 Stefan Monnier + + Use run-mode-hooks for major mode hooks (bug#513). + * textmodes/reftex-toc.el (reftex-toc-mode-map): + Rename from reftex-toc-map. + (reftex-toc-mode): Use define-derived-mode. + * textmodes/reftex-sel.el (reftex-select-shared-map): New map. + (reftex-select-label-mode-map, reftex-select-bib-mode-map): + Rename from reftex-select-(label|bib)-map. Move init into declaration. + (reftex-select-label-mode, reftex-select-bib-mode): + Use define-derived-mode. + * textmodes/reftex-index.el (reftex-index-phrases-mode-map) + (reftex-index-mode-map): Rename from reftex-index(-phrases)-map. + Move init into delcaration. + (reftex-index-mode, reftex-index-phrases-mode): + Use define-derived-mode. + * speedbar.el (speedbar-mode-syntax-table): Renaqme from + speedbar-syntax-table. Move init into declaration. + (speedbar-mode-map): Rename from speedbar-key-map. + Move init into declaration. + (speedbar-file-key-map): Move init into declaration. + (speedbar-mode): Use define-derived-mode. + * recentf.el (recentf-mode): Don't run hook (or message) redundantly. + * net/rcirc.el (rcirc-mode): Use run-mode-hooks. + * emacs-lisp/chart.el (chart-mode-map): Rename from chart-map. + (chart-face-list): Move initialization into declaration. + (chart-mode): Use define-derived-mode. + * calculator.el (calculator-mode-map): Move init into declaration. + (calculator-mode): Use define-derived-mode. + + * mail/mail-utils.el (mail-strip-quoted-names): Make the regexp code + work for nested comments. + + * progmodes/prolog.el: Use syntax-propertize. Further code cleanup. + (prolog-use-prolog-tokenizer-flag): Change default when + syntax-propertize can be used. + (prolog-syntax-propertize-function): New var. + (prolog-mode-variables): Move make-local-variable into `set'. + Don't make comment-column local since we don't set it. + Set comment-add (as it was in previous prolog.el). Use dolist. + Set syntax-propertize-function. + (prolog-mode, prolog-inferior-mode): + Call prolog(-inferior)-menu directly, not through the mode-hook. + (prolog-buffer-module, prolog-indent-level) + (prolog-paren-is-the-first-on-line-p, prolog-paren-balance) + (prolog-comment-limits, prolog-goto-comment-column): + Use line-(end|beginning)-position. + (prolog-build-prolog-command): Tighten up regexp. + (prolog-consult-compile): Move make-local-variable into `set'. + (prolog-consult-compile-filter, prolog-goto-next-paren) + (prolog-help-on-predicate, prolog-clause-info) + (prolog-mark-predicate): Don't let+setq. + (prolog-indent-line): Use indent-line-to. + Only call prolog-goto-comment-column if necessary. + (prolog-indent-level): Use bobp. + (prolog-first-pos-on-line): Remove, not used any more. + (prolog-in-string-or-comment): Use syntax-ppss if available. + (prolog-help-on-predicate): Use read-string. + (prolog-goto-predicate-info): Simplify. + (prolog-read-predicate): Use `default' rather than `initial'. + (prolog-temporary-file): Use make-temp-file to close a security hole. + (prolog-toggle-sicstus-sd): New command. + (prolog-electric-underscore, prolog-variables-to-anonymous): + Use dynamic-scoping as it was meant. + (prolog-menu): Move menu definitions to top-level. + Use a toggle-button for Sicstus's source debugger. + Change "Code" to the more usual "Prolog", and hence change "Prolog" + to "System". + (prolog-inferior-menu): Reuse prolog-menu's help menu. + Move other menu definition to top-level. + +2011-01-13 Tassilo Horn + + * doc-view.el (doc-view-open-text): Use meaningful text buffer + name. Keep original document's directory as default-directory + (bug#6446). + (doc-view-initiate-display): Fall back to normal mode when + doc-view-mode cannot be enabled, also when extracting the document + text into a separate buffer (bug#6446). + + * simple.el (shell-command): Don't error out if shell command + buffer contains text with non-nil read-only property when erasing + the buffer. + +2011-01-13 Kim F. Storm + + * ido.el (ido-may-cache-directory): Move "too-big" check later. + (ido-next-match, ido-prev-match): Fix stray reordering of matching + items when cycling through the matches. + +2011-01-13 Tassilo Horn + + * dired-x.el (dired-omit-verbose): New defcustom that allows + disabling the omit messages. + (dired-omit-expunge): Use it. + +2011-01-13 Christian Ohler + + * emacs-lisp/ert.el, emacs-lisp/ert-x.el: New files. + +2011-01-13 Chong Yidong + + * font-lock.el (font-lock-verbose): Default to nil. + +2011-01-13 Chong Yidong + + * simple.el (sendmail-user-agent-compose): Move to sendmail.el. + (compose-mail): New arg RETURN-ACTION. + (compose-mail-other-window, compose-mail-other-frame): Likewise. + + * mail/sendmail.el (mail-return-action): New var. + (mail-mode): Make it buffer-local. + (mail-bury): Obey it. Move special Rmail window handling to + rmail-mail-return. + (mail, mail-setup): New arg RETURN-ACTION. + (sendmail-user-agent-compose): Move from simple.el. + + * mail/rmail.el (rmail-mail-return): New function. + (rmail-start-mail): Pass it to compose-mail. + +2011-01-12 Chong Yidong + + * menu-bar.el (menu-bar-custom-menu): Tweak Mule and Customize + menus. Add menu item for customize-themes. + + * cus-theme.el (customize-themes): + * emacs-lisp/package.el (package--list-packages): + Use switch-to-buffer. + +2011-01-11 Johan Bockgård + + * emacs-lisp/unsafep.el (unsafep): Handle backquoted forms. + +2011-01-11 Stefan Monnier + + * progmodes/prolog.el: Fix up coding convention and such. + (prolog-indent-width): Use the same default as in + previous prolog.el rather than tab-width which depends on which buffer + is current when the file is loaded. + (prolog-electric-newline-flag): Only enable if electric-indent-mode + is not available. + (prolog-emacs): Remove. Use (featurep 'xemacs) instead. + (prolog-known-systems): Remove. + (prolog-mode-syntax-table, prolog-inferior-mode-map): + Move initialization into declaration. + (prolog-mode-map): Move initialization into declaration. + Remove system-specific mode-map vars, since they referred to the same + keymap anyway. + (prolog-mode-variables): Obey the user's preference w.r.t + adaptive-fill-mode. Prefer symbol-value to `eval'. + (prolog-mode-keybindings-edit): Add compatibility bindings. + (prolog-mode): Use define-derived-mode. Don't handle mercury here. + (mercury-mode-map): New var. + (mercury-mode, prolog-inferior-mode): Use define-derived-mode. + (prolog-ensure-process, prolog-process-insert-string) + (prolog-consult-compile): Use with-current-buffer. + (prolog-guess-fill-prefix): Simplify data flow. + (prolog-replace-in-string): New function to use instead of + replace-in-string. + (prolog-enable-sicstus-sd): Don't abuse `eval'. + (prolog-uncomment-region): Use `uncomment-region' when available. + (prolog-electric-colon, prolog-electric-dash): Use `eolp'. + (prolog-int-to-char, prolog-char-to-int): New functions to use instead + of int-to-char and char-to-int. + (prolog-mode-hook, prolog-inferior-mode-hook): Don't force font-lock. + +2011-01-11 Stefan Bruda + + * progmodes/prolog.el: Replace by a whole new file. + +2011-01-11 Stefan Monnier + + * subr.el (eval-after-load): Fix timing for features (bug#7769). + (declare-function, undefined, insert-for-yank) + (replace-regexp-in-string): Follow checkdoc's recommendations. + +2011-01-10 Stefan Monnier + + * calendar/diary-lib.el (diary-mode): Refresh *Calendar* after + refreshing the diary buffer. + +2011-01-10 Ken Manheimer + + * allout.el: Add 2011 to the file copyright. + (allout-encrypt-string): Prevent encryption from adding an extra + newline at the end of the topic body. + (allout-version): Increment to 2.3. + +2011-01-10 Michael Albinus + + * net/dbus.el (dbus-unregister-service): Complete doc. + Fix call of dbus-error signal. + (dbus-register-property): Use `dont-register' keyword. + +2011-01-10 Jan Moringen + + * net/dbus.el (dbus-unregister-service): Translate returned + integer into a symbol. + (dbus-register-property): Use `dbus-register-service' to do the + name registration. + +2011-01-09 Chong Yidong + + * progmodes/idlw-help.el (idlwave-help-link): Inherit from link face. + Suggested by Joakim Verona. + + * comint.el (comint-highlight-prompt): Inherit minibuffer-prompt. + + * wid-edit.el (visibility): Replace :on-image and :off-image + widget properties with :on-glyph and :off-glyph, for consistency + with the `visibility' widget. + (widget-toggle-value-create, widget-visibility-value-create): + Merge into a single function `widget-toggle-value-create'. + + * cus-edit.el (custom-variable-value-create, custom-visibility) + (custom-face-edit-value-create, custom-face-value-create): + Replace :on-image and :off-image widget properties with :on-glyph and + :off-glyph, for consistency with the `visibility' widget. + +2011-01-09 Andreas Schwab + + * net/ldap.el (ldap-search-internal): Don't use eval. + +2011-01-09 Chong Yidong + + * subr.el (read-char-choice): Use read-key. + + * custom.el (custom-safe-themes): Rename from + custom-safe-theme-files. Add :risky tag. + (load-theme, custom-theme-load-confirm): Save sha1 hashes to + custom-safe-themes, not filenames. Suggested by Stefan Monnier. + +2011-01-09 Chong Yidong + + * tool-bar.el (tool-bar-setup): Remove Help button. Remove label + from Search and add a label to Undo. + + * vc/vc-dir.el (vc-dir-tool-bar-map): Rearrange, removing + inappropriate buttons and adding :vert-only tags. + + * progmodes/compile.el (compilation-mode-tool-bar-map): Adjust to + removal of Help tool-bar button. Remove Undo button for space. + + * info.el (info-tool-bar-map): Add :vert-only tags. + +2011-01-08 Tassilo Horn + + * doc-view.el (doc-view-mode-p): Check for png or imagemagick + image backend support. Either of them is fine. + +2011-01-08 Chong Yidong + + * subr.el (y-or-n-p): Doc fix. + + * custom.el (custom-safe-theme-files): New defcustom. + (custom-theme-load-confirm): New function. + (load-theme): Load theme using `load', confirming with + custom-theme-load-confirm if necessary. + + * subr.el (read-char-choice): New function, factored out from + dired-query and hack-local-variables-confirm. + + * dired-aux.el (dired-query): + * files.el (hack-local-variables-confirm): Use it. + + * dired-aux.el (dired-compress-file): + * files.el (abort-if-file-too-large, find-alternate-file) + (set-visited-file-name, write-file, backup-buffer) + (basic-save-buffer, basic-save-buffer-2, save-some-buffers) + (delete-directory, revert-buffer, recover-file, kill-buffer-ask): + Use new format string args for y-or-n-p and yes-or-no-p. + +2011-01-08 Andreas Schwab + + * progmodes/compile.el (compilation-error-regexp-alist-alist) + [gcc-include]: Tighten file name match, add match for column + number. (Bug#7806) + [gnu]: Remove unused group. + +2011-01-08 Glenn Morris + + * makefile.w32-in (EMACSOPT): Add --no-site-lisp. + + * makefile.w32-in (EMACSOPT): -batch implies --no-init-file. + +2011-01-07 Sam Steingold + + * w32-fns.el (w32-shell-name): Use `shell-file-name' instead of + the `explicit-shell-file-name' because that is the + non-interactive shell. + +2011-01-07 Chong Yidong + + * subr.el (y-or-n-p): Accept format string args. + +2011-01-07 Glenn Morris + + * Makefile.in (EMACSOPT): Add --no-site-lisp. + +2011-01-06 Ken Manheimer + + * allout.el (allout-back-to-current-heading): Ensure return to + the visible containing topic, rather than a collapsed one. + (allout-view-change-hook): Remove hook that was deprecated long ago. + (allout-exposure-change-hook): Remove documentation remarks + concerning removed allout-view-change-hook. + (allout-flag-region): Remove invocation of and documentation + remarks concerning allout-view-change-hook. + +2011-01-06 Glenn Morris + + * vc/vc-bzr.el (vc-bzr-annotate-command, vc-bzr-annotate-time) + (vc-bzr-annotate-extract-revision-at-line): + Handle authors with embedded spaces. (Bug#7792) + +2011-01-05 Tassilo Horn + + * doc-view.el (doc-view-image-width): New variable. + (doc-view-enlarge, doc-view-insert-image): Prefer imagemagick + backend for PNG images, and do dynamic rescaling instead of + reconverting the whole doc. + +2011-01-05 Glenn Morris + + * emacs-lisp/rx.el (rx-repeat): Replace CL function. + +2011-01-04 Ken Manheimer + + * allout.el: Reconcile with changes in line movement behavior for + long text lines that cross more than a single physical window + line, ie when truncate-lines is nil. + (allout-next-visible-heading): Provide for change in line-move + behavior on long lines when truncate-lines is nil. In that case, + line-move can wind up on the same textual line when it moves to + the next window line, and moving to the bullet position after the + move yields zero advancement. Add logic to detect and compensate + for the lack of progress. + (allout-current-topic-collapsed-p): move-end-of-line respect for + field boundaries is different when operating with body lines + shorter than window width versus ones greater than window width, + which can yield false negatives in this function. Avoid + difference by applying move-end-of-line while field-text-motion is + inhibited. + +2011-01-04 Glenn Morris + + * textmodes/rst.el (rst-compile-toolsets): + Add pdf and s5 to option alist. + +2011-01-04 Jan Moringen + + * net/dbus.el (dbus-register-property): Add optional parameter + dont-register-service. Updated docstring accordingly. + +2011-01-04 Andreas Schwab + + * textmodes/rst.el (rst-compile-pdf-preview) + (rst-compile-slides-preview): Remove extra line. + +2011-01-04 Glenn Morris + + * textmodes/rst.el (rst-compile-toolsets): Make it a defcustom. + Add `pdf' and `s5' entries. Use `prog.py' if found, otherwise + default to `prog' without a .py extension. + (rst-compile-pdf-preview, rst-compile-slides-preview): + Use program names from rst-compile-toolsets, rather than hard-coding. + (rst-portable-mark-active-p): Fix presumed typo. + +2011-01-02 Eli Zaretskii + + * term/w32-win.el (dynamic-library-alist): Set up correctly for + libpng versions both before and after 1.4.0. (Bug#7716) + +2011-01-02 Eli Zaretskii + + * time.el (display-time-mode): Mention display-time-interval in + the doc string. (Bug#7713) + +2011-01-02 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-parse): Perform parsing in + condition-case and return an error message string if something + goes wrong. + (rmail-show-mime): Adjust for the above change. Insert the + header by rmail-mime-insert-header. + +2011-01-02 Kenichi Handa + + * mail/rmailmm.el: New key bindings for rmail-mime-next-item, + rmail-mime-previous-item, and rmail-mime-toggle-hidden. + (rmail-mime-mbox-buffer) + (rmail-mime-view-buffer, rmail-mime-coding-system): New variables. + (rmail-mime-entity): Argument changed. All codes handling an + entity object are changed. + (rmail-mime-entity-header, rmail-mime-entity-body): Adjust for + the above change. + (rmail-mime-entity-children, rmail-mime-entity-handler) + (rmail-mime-entity-tagline): New functions. + (rmail-mime-message-p): New function. + (rmail-mime-save): Bind rmail-mime-mbox-buffer. + (rmail-mime-entity-segment, rmail-mime-next-item) + (rmail-mime-previous-item, rmail-mime-shown-mode) + (rmail-mime-hidden-mode, rmail-mime-raw-mode) + (rmail-mime-toggle-raw, rmail-mime-toggle-hidden) + (rmail-mime-insert-tagline, rmail-mime-insert-header): + New functions. + (rmail-mime-text-handler): Call rmail-mime-insert-text. + (rmail-mime-insert-decoded-text): New function. + (rmail-mime-insert-text): Call rmail-mime-insert-decoded-text. + (rmail-mime-insert-image): Argument changed. Caller changed. + (rmail-mime-image): Call rmail-mime-toggle-hidden. + (rmail-mime-set-bulk-data): New function. + (rmail-mime-insert-bulk): Argument changed. + (rmail-mime-multipart-handler): Return t. + (rmail-mime-process-multipart): Argument changed. + Handle "multipart/alternative" here. + (rmail-mime-process): Argument changed. + (rmail-mime-parse): Bind rmail-mime-mbox-buffer. + (rmail-mime-insert): Argument changed. Handle raw display mode. + (rmail-mime): Argument changed. Handle toggling of raw display + mode. + (rmail-show-mime): Bind rmail-mime-mbox-buffer and + rmail-mime-view-buffer. + (rmail-insert-mime-forwarded-message): Likewise. + (rmail-search-mime-message): Likewise. Don't bind rmail-buffer. + + * mail/rmail.el (rmail-show-message-1): If rmail-enable-mime is + non-nil, handle the header in rmail-show-mime-function. + +2011-01-02 Leo + + * help-fns.el (describe-variable): Fix previous change. + +2011-01-02 Juri Linkov + + * isearch.el (isearch-lazy-highlight-error): New variable. + (isearch-lazy-highlight-new-loop): Compare `isearch-error' and + `isearch-lazy-highlight-error'. Set `isearch-lazy-highlight-error' + to the current value of `isearch-error' (Bug#7468). + +2011-01-02 Chong Yidong + + * help-fns.el (describe-variable): Don't emit trailing whitespace + (Bug#7511). + +2011-01-02 Chong Yidong + + * textmodes/rst.el (rst-compile-pdf-preview) + (rst-compile-slides-preview): Use make-temp-file (Bug#7646). + +2011-01-02 Kevin Gallagher + + * emulation/edt-mapper.el: Override mapping of function keys so + that the later call to read-key-sequence works. + +2011-01-02 Eli Zaretskii + + * mail/smtpmail.el (smtpmail-send-it): Write queued mail body with + Unix EOLs. (Bug#7589) + +2011-01-02 Leo + + * eshell/em-hist.el (eshell-previous-matching-input): Signal error + if point is not behind eshell-last-output-end (Bug#7585). + +2011-01-02 Stefan Monnier + + * files.el (file-local-variables-alist): + Make permanent-local (bug#7767). + +2011-01-02 Glenn Morris + + * version.el (emacs-copyright): Set short copyright year to 2011. + +2011-01-02 Mark Lillibridge (tiny change) + + * mail/mail-utils.el (mail-strip-quoted-names): Avoid clobbering + an existing temp buffer. (Bug#7746) + +2011-01-02 Glenn Morris + + * mail/mail-utils.el (mail-mbox-from): Handle From: headers with + multiple addresses. (Bug#7760) + +2011-01-01 Ken Manheimer + + * allout.el (allout-auto-fill): Do not infinitely recurse - use + do-auto-fill if everything points back to allout-auto-fill. + (allout-mode-deactivate-hook): Declare obsolete, in favor of + standard-formed minor-mode deactivate hook, allout-mode-off-hook. + +2010-12-31 Michael Albinus + + * net/tramp-sh.el (tramp-methods): Add recursive options to "scpc" + and "scpx". + +2010-12-30 Tassilo Horn + + * doc-view.el (doc-view-set-doc-type): New function refactored + from doc-view-mode. + (doc-view-fallback-mode): New function. + (doc-view-mode): Use it. + (doc-view-mode-maybe): New function that checks if doc-view-mode + can be used and falls back to the next best mode otherwise. + + * files.el (auto-mode-alist): Use doc-view-mode-maybe for PDF, + DVI, OpenDocument, and MS Office files. + +2010-12-30 Andreas Schwab + + * emacs-lisp/rx.el (rx-syntax): Fix typo. + +2010-12-30 Tassilo Horn + + * doc-view.el (doc-view-toggle-display): Perform rassq-delete-all + on a copy of auto-mode-alist, because that deletes with side + effects. + +2010-12-30 Tassilo Horn + + * doc-view.el (doc-view-mode, doc-view-toggle-display): + Use normal-mode without doc-view-mode bindings in auto-mode-alist as + fallback instead of hard coding fundamental mode. + +2010-12-30 Tassilo Horn + + * doc-view.el (doc-view-doc->txt): Handle OpenDocument (or MS + Office) files also for searching. + +2010-12-30 Tassilo Horn + + * doc-view.el: Implement viewing of OpenDocument (and Microsoft + Office) files. Not yet enabled via auto-mode-list. + (doc-view-unoconv-program): New custom variable. + (doc-view-mode-p): Handle new odf document type. + (doc-view-odf->pdf): New conversion function. + (doc-view-convert-current-doc): Call it for odf files. + (doc-view-mode): Recognize newly supported file extensions. + +2010-12-30 Michael Albinus + + * net/tramp.el (tramp-default-method-alist) + (tramp-default-user-alist) + (tramp-local-host-regexp, tramp-prefix-domain-format) + (tramp-prefix-domain-regexp): Set tramp-autoload cookie. + + * net/tramp-ftp.el: + * net/tramp-gvfs.el: + * net/tramp-gw.el: + * net/tramp-imap.el: + * net/tramp-sh.el: + * net/tramp-smb.el: Add tramp-autoload cookie for initialisation + code of `tramp-default-method-alist' and `tramp-default-user-alist'. + +2010-12-29 Karl Fogel + + * saveplace.el (save-place-alist-to-file): Save list sorted and + pretty-printed, so that it is mergeable by line-based text merging, + as suggested by Iain Dalton . + +2010-12-28 Ken Manheimer + + * allout.el (allout-v18/19-file-var-hack): Obsolete, remove. + (allout-mode): Argument "toggle" => "force". + Refine the docstring. + Remove special provisions for reactivation, besides the 'force' + argument. + Consolidate layout provisions coce directly into the activation + condition branch, now that we've removed those provisions. + (allout-unload-function): Explicitly activate the mode before + deactivating, if it's initially deactivated. + (allout-set-buffer-multibyte): Properly prevent byte-compiler + warnings for version of function used only where + set-buffer-multibyte is unavailable. + +2010-12-28 Chong Yidong + + * tool-bar.el (tool-bar-setup): Remove :enable conditions, which + are handled by the menu-bar entries. As before, don't use + :visibile to avoid changing the tool-bar. + +2010-12-27 Michael Albinus + + * net/secrets.el (secrets-delete-alias): New defun. + +2010-12-27 Michael Albinus + + * net/tramp.el (tramp-default-user-alist): Do not add "ssh" based + methods, otherwise ~/.ssh/config would be ignored. + +2010-12-26 Stefan Monnier + + * emacs-lisp/rx.el: Make it a superset of sregex. + (rx-constituents): Add `any => "."', mark `repeat' as taking any number + of args, add `regex' alias. + (rx-info): Add arg to distinguish head and standalone forms. + (rx-check, rx-form): Pass the corresponding arg. + (rx-**): Simplify. + (rx-repeat): Make it work for any number of args. + (rx-syntax): Make it accept syntax chars as is. + * obsolete/sregex.el: Move from emacs-lisp/. + * emacs-lisp/re-builder.el: Remove sregex support. + * emacs-lisp/edebug.el (sregexq, rx): Remove redundant defs. + +2010-12-25 Eli Zaretskii + + * mouse.el (mouse-yank-primary): On MS-Windows, try the (emulated) + PRIMARY first, then the clipboard. (Bug#7699) + +2010-12-22 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-output-docform): Fix up use of + print-number-table. + +2010-12-21 Chong Yidong + + * help-fns.el (find-lisp-object-file-name): Locate .emacs from + .emacs.elc (Bug#7530). + + * wid-edit.el (widget-image-find): Remove bogus :ascent spec from + image spec (Bug#7480). + +2010-12-21 Daiki Ueno + + * obsolete/pgg-parse.el, obsolete/pgg-pgp5.el, obsolete/pgg-pgp.el, + * obsolete/pgg-gpg.el, obsolete/pgg-def.el, obsolete/pgg.el: + Move from lisp/. + +2010-12-20 Leo + + * dnd.el (dnd-get-local-file-name): Unhex of file name shall + always be performed (Bug#7680). + +2010-12-20 Chong Yidong + + * menu-bar.el (menu-bar-kill-ring-save): Make obsolete. + (menu-bar-edit-menu): Bind "Copy" to kill-ring-save. Don't use + mouse-region-match. + + * color.el: Move from gnus/. + + * vc/diff.el (diff-better-file-name): Function deleted. + abbreviating file names causes problems with shell-quote-argument. + (diff-no-select): Just use expand-file-name. + + * tool-bar.el (tool-bar--image-expression): New function. + (tool-bar-local-item, tool-bar--image-exp): Use it. + (tool-bar-setup): Initialize tool-bar-separator-image-expression. + Use :enable instead of :visible to avoid changing the tool-bar + configuration unnecessarily. + + * info.el (info-tool-bar-map): Add separators. + +2010-12-17 Ken Brown + + * loadup.el: Use version numbers in Cygwin build. + +2010-12-17 Ryan Twitchell (tiny change) + + * ido.el (ido-file-internal): Ask for confirmation before + overwriting an existing file (Bug#1238). + +2010-12-16 Chong Yidong + + * tool-bar.el (tool-bar-setup): Add separators. + + * menu-bar.el (featurep): Use menu-bar-separator. + +2010-12-16 Ken Manheimer + + Migrate allout encryption provisions from pgg to epg. + + * allout.el (allout-toggle-current-subtree-encryption) + (allout-toggle-subtree-encryption): Adjust docstrings to reflect + defaulting policy and other changes. Change fetch-pass to keymode-cue, + for simpler universal argument interpretation. + (allout-toggle-subtree-encryption): Adjust docstring to describe + changed encryption provisions. Change fetch-pass to keymode-cue, for + simpler universal argument interpretation. Remove provisions for + handling key type and identity - they'll all be within + allout-encrypt-string or epg/epg or even contained all the way in gpg. + (allout-encrypt-string): Include keymode-cue, for optionally prompting + for keypair recipients (universal argument > 1) and, in addition, + associating the specified recipients with the outline (universal + argument > 4) using a file local variable setting for + 'epa-file-encrypt-to'. + Require epa, for recipients handling. + Change how regexp filtering elements are named. + Describe the problem with caching of incorrect symmetric-decryption + keys. + Use the epa-passphrase-callback-function, in case the user is using + GnuPG v1. + Support saving of the selected keypair recipients when invoked with a + keymode-cue > 4. + Remove obsolete arguments 'fetch-pass', 'target-cache-id', 'retried'. + Require 'epa. + Establish epg-context with armoring and default epg-protocol. + Remove all passphrase cache, verification, and hinting code. + (allout-passphrase-verifier-handling, allout-passphrase-hint-handling): + No longer used, delete. + (allout-mode): Adjust docstring to describe changed encryption + provisions. Describe the problem with caching of incorrect + symmetric-decryption keys. + (allout-obtain-passphrase, allout-epg-passphrase-callback-function) + (allout-make-passphrase-state, allout-passphrase-state-passphrase) + (allout-encrypted-key-info, allout-update-passphrase-mnemonic-aids) + (allout-get-encryption-passphrase-verifier, allout-verify-passphrase): + Obsolete, remove. + +2010-12-16 Daiki Ueno + + * epa-file.el (epa-file-select-keys): Accept 'silent to inhibit + key selection prompt; make 'silent as default (Bug#7487). + +2010-12-16 Leo + + * eshell/eshell.el (eshell-directory-name): + Use locate-user-emacs-file (Bug#7578). + +2010-12-15 Glenn Morris + + * loadup.el (symbol-file-load-history-loaded): Remove; unused. + +2010-12-15 Jari Aalto + Scott Evans + + * rect.el (rectange--default-line-number-format) + (rectangle-number-line-callback): New functions. + (rectangle-number-lines): New command, bound to C-x r N (Bug#4382). + +2010-12-15 Chong Yidong + + * rect.el (operate-on-rectangle-lines, string-rectangle-string): + Delete unused variables. + (move-to-column-force): Remove function obsolete since 21.2. + +2010-12-14 Michael Albinus + + * net/tramp.el (tramp-temp-buffer-file-name): Make it permanent-local. + (tramp-handle-insert-file-contents): Do not set permanent-local + property. + + * net/tramp-cache.el (tramp-persistency-file-name): + Use `locate-user-emacs-file' if fboundp. + + * net/tramp-sh.el (tramp-methods): Add "ksu". + (tramp-default-user-alist): Add "ksu". Use `regexp-opt' for + method list. + +2010-12-14 Glenn Morris + + * progmodes/js.el: Doc't require font-lock, etags, or easymenu. + (find-tag-marker-ring): Declare. + (js-find-symbol): Require etags. + + * mail/sendmail.el: Don't require rmail or mailalias when compiling. + Require mail-utils. + (mail-alias-file): Don't autoload. Doc fix. + (mail-bury-selects-summary, mail-send-nonascii): Don't autoload. + (mail-mailer-swallows-blank-line): Default to nil. Doc fix. + Mark as obsolete, and risky. + (mail-setup): Simplify. + + * mail/mailalias.el (build-mail-aliases): Make it interactive. + * mail/sendmail.el (build-mail-aliases): Update autoload. + + * dired.el (dired-trivial-filenames, dired-chown-program) + (dired-auto-revert-buffer): Remove autoload cookies. + * mail/sendmail.el (mail-recover-1): Require 'dired. + + * dired.el (dired-subdir-switches, dired-chown-program) + (dired-use-ls-dired, dired-chmod-program, dired-touch-program): + Make into defcustoms. + (dired-chown-program): Simplify initialization. + + * mail/mail-utils.el: No need to require lisp-mode, it's in loadup. + +2010-12-13 Romain Francoise + + * net/gnutls.el (gnutls-negotiate): Fix setting of default trustfiles. + +2010-12-13 Lars Magne Ingebrigtsen + + * net/netrc.el (netrc-point-at-eol): Remove the unused + netrc-point-at-old and netrc-bound-and-true-p bindings. + (netrc-parse): Cache the netrc contents. + +2010-12-13 Eli Zaretskii + + * subr.el (posn-col-row): Evaluate header-line-format in the + context of the POSITION window's buffer. + +2010-12-13 Glenn Morris + + * subr.el (member-ignore-case, run-mode-hooks, insert-for-yank-1) + (with-silent-modifications): Doc fixes. + +2010-12-13 Michael Albinus + + * net/tramp.el (tramp-action-password, tramp-process-actions): + Revert previous from. Use `save-restriction'. + +2010-12-13 Stephen Berman + + * calendar/diary-lib.el (diary-list-sexp-entries): + Handle case of no newline at end of file. (Bug#7536) + +2010-12-13 Glenn Morris + + * mail/smtpmail.el (smtpmail-send-it): Revert previous change. + +2010-12-13 Michael Albinus + + * net/tramp.el (tramp-action-password): Delete region, do not narrow. + (tramp-process-actions): Do not widen. + + * net/tramp-sh.el (tramp-sh-handle-start-file-process): + Protect buffer-modified value. (Bug#7557) + +2010-12-13 Jan Moringen + + * log-edit.el (log-edit-changelog-entries): + Regexp quote filename. (Bug#7505) + +2010-12-13 Tom Breton + + * cus-edit.el (custom-save-all): + Bind print-length and print-level to nil. (Bug#7581) + +2010-12-13 Glenn Morris + + * mouse.el (mouse-menu-major-mode-map, mouse-menu-bar-map): + Run hooks to update menu contents. (Bug#7586) + + * mail/smtpmail.el (smtpmail-send-it): Avoid colons in the queued + file names, for the sake of MS Windows. (Bug#7588) + +2010-12-13 Stefan Monnier + + * diff-mode.el (diff-refine-hunk): Make it work when the hunk contains + empty lines without a leading space. + +2010-12-13 Leo + + * dired-aux.el (dired-do-redisplay): Postpone dired-after-readin-hook + while mapping over marks (Bug#6810). + +2010-12-13 Chong Yidong + + * image-dired.el (image-dired-db-file) + (image-dired-temp-image-file, image-dired-gallery-dir) + (image-dired-temp-rotate-image-file): Set default values relative + to image-dired-dir (Bug#7518). + +2010-12-13 Lawrence Mitchell + + * format.el (format-decode-run-method): Pass args FROM and TO, not + point-min and point-max, to shell-command-on-region (Bug#7488). + +2010-12-13 Jan Djärv + + * frame.el (blink-cursor-mode): Make default t for ns. + +2010-12-13 Bob Rogers + + * vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501). + +2010-12-13 Chong Yidong + + * comint.el (comint-dynamic-list-input-ring) + (comint-dynamic-complete-filename) + (comint-replace-by-expanded-filename) + (comint-dynamic-simple-complete) + (comint-dynamic-list-filename-completions) + (comint-dynamic-list-completions): Doc fix (Bug#7499). + + * subr.el (posn-x-y, posn-object-x-y, posn-object-width-height): + Doc fix (Bug#7471). + +2010-12-13 Martin Rudalics + + * dired.el (dired-pop-to-buffer): Bind pop-up-frames to nil + (Bug#7533). + +2010-12-13 W. Martin Borgert (tiny change) + + * files.el (auto-mode-alist): Handle .dbk (DocBook) with xml-mode. + (Bug#7491). + +2010-12-13 Eli Zaretskii + + * files.el (file-relative-name): Handle UNC file names on + DOS/Windows. (Bug#4674) + +2010-12-13 Daiki Ueno + + * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with + "RIPEMD160" (Bug#7490). Reported by Daniel Kahn Gillmor. + (epg-context-set-passphrase-callback): Mention that the callback + is not called when used with GnuPG 2.x. + +2010-12-13 Glenn Morris + + * ps-print.el (ps-line-lengths-internal, ps-nb-pages): + Ensure ps-footer-font-size-internal is initialized. + Call ps-get-page-dimensions before trying to use ps-font-for-text. + +2010-12-13 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-parse): Call rmail-mime-process + within condition-case. + (rmail-show-mime): Don't use condition-case. + (rmail-search-mime-message): New function. + (rmail-search-mime-message-function): Set to + rmail-search-mime-message. + +2010-12-13 Leo + + * ido.el (ido-common-initialization): New function. (bug#3274) + (ido-mode): Use it. + (ido-completing-read): Call it. + +2010-12-12 Karl Fogel + + * bookmark.el (bookmark-name-from-full-record): Rename back to + this original name from `bookmark-name-from-record' reverting part + of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm. + As Drew Adams pointed out, there was no reason to cause churn for + third-party callers. (Bug#7609) + +2010-12-12 Alan Mackenzie + + * progmodes/cc-engine.el (c-forward-type): Before scanning a + template arglist, check that the current language supports this. + +2010-12-11 Glenn Morris + + * vc/vc-bzr.el (vc-bzr-state-heuristic): Also check that the executable + state of the file matches. (Bug#7544) + (vc-bzr-register, vc-bzr-checkin) + (vc-bzr-annotate-extract-revision-at-line): Doc fixes. + (vc-directory-exclusion-list): Remove unnecessary eval-after-load. + + * textmodes/sgml-mode.el (sgml-xml-guess): Add .xhtml extension. + +2010-12-11 Karel Klíč + + * files.el (auto-mode-alist): Use html-mode for *.xhtml. (Bug#7606) + +2010-12-10 Stefan Monnier + + Derive from prog-mode, use derived-mode-p, and fix up various + minor style issues in lisp/progmodes. + + * progmodes/vhdl-mode.el (vhdl-mode): + * progmodes/verilog-mode.el (verilog-mode): + * progmodes/vera-mode.el (vera-mode): + * progmodes/sql.el (sql-mode): + * progmodes/scheme.el (scheme-mode): + * progmodes/perl-mode.el (perl-mode): + * progmodes/octave-inf.el (inferior-octave-mode): + * progmodes/autoconf.el (autoconf-mode): + * progmodes/m4-mode.el (m4-mode): + * progmodes/inf-lisp.el (inferior-lisp-mode): + * progmodes/idlwave.el (idlwave-mode): + * progmodes/icon.el (icon-mode): + * progmodes/idlw-help.el (idlwave-help-mode): + * progmodes/dcl-mode.el (dcl-mode): + * progmodes/idlw-shell.el (idlwave-shell-mode): + * progmodes/ebrowse.el (ebrowse-tree-mode, ebrowse-electric-list-mode) + (ebrowse-member-mode, ebrowse-electric-position-mode): + Use define-derived-mode. + + * progmodes/xscheme.el (exit-scheme-interaction-mode) + (xscheme-enter-interaction-mode, xscheme-enter-debugger-mode) + (xscheme-debugger-mode-p, xscheme-send-string-1): + * progmodes/tcl.el (inferior-tcl-proc, tcl-current-word) + (tcl-load-file, tcl-restart-with-file): + * progmodes/ps-mode.el (ps-run-running): + * progmodes/gdb-mi.el (gud-watch, gdb-mouse-set-clear-breakpoint): + * progmodes/js.el (js--get-all-known-symbols): + * progmodes/inf-lisp.el (inferior-lisp-proc): + * progmodes/idlwave.el (idlwave-beginning-of-statement) + (idlwave-template, idlwave-update-buffer-routine-info) + (idlwave-update-current-buffer-info) + (idlwave-get-routine-info-from-buffers, idlwave-choose) + (idlwave-scan-class-info, idlwave-fix-keywords) + (idlwave-list-buffer-load-path-shadows): + * progmodes/idlw-toolbar.el (idlwave-toolbar, idlwave-toolbar-add) + (idlwave-toolbar-remove): + * progmodes/idlw-shell.el (idlwave-shell-save-and-action) + (idlwave-shell-file-name, idlwave-shell-electric-debug-all-off) + (idlwave-shell-menu-def): + * progmodes/idlw-complete-structtag.el + (idlwave-prepare-structure-tag-completion): + * progmodes/gud.el (gud-set-buffer): + * progmodes/f90.el (f90-backslash-not-special): + * progmodes/delphi.el (delphi-find-unit): Use derived-mode-p. + + * progmodes/xscheme.el (xscheme-start) + (local-set-scheme-interaction-buffer, scheme-interaction-mode): + * progmodes/which-func.el (which-function): + * progmodes/vhdl-mode.el (vhdl-set-style): + * progmodes/verilog-mode.el (verilog-set-compile-command) + (verilog-modify-compile-command, verilog-error-regexp-add-xemacs) + (verilog-set-define, verilog-auto-reeval-locals): + * progmodes/sql.el (sql-product-font-lock, sql-interactive-mode): + * progmodes/simula.el (simula-mode): + * progmodes/scheme.el (scheme-mode-variables, dsssl-mode): + * progmodes/python.el (python-check, python-mode): + * progmodes/prolog.el (prolog-mode-variables): + * progmodes/gud.el (gud-tooltip-activate-mouse-motions): + * progmodes/ebrowse.el (ebrowse-view-file-other-frame): + * progmodes/delphi.el (delphi-mode): + * progmodes/cc-styles.el (c-setup-paragraph-variables): + * progmodes/cc-mode.el (c-basic-common-init, c-common-init) + (c-font-lock-init): Move make-local-variable to their setq. + + * progmodes/vhdl-mode.el (vhdl-write-file-hooks-init) + (vhdl-hs-minor-mode, vhdl-ps-print-init): Fix make-local-variable -> + make-local-hook. + * progmodes/sh-script.el (sh-require-final-newline): Remove. + (sh-set-shell): Don't set require-final-newline since it's already done + by prog-mode. + * progmodes/modula2.el (m2-mode): Don't make m2-end-comment-column + since we never set it. + * progmodes/ebrowse.el (ebrowse-set-tree-indentation): + Use read-string and standard prompt. + * progmodes/dcl-mode.el (dcl-mode-map): Move init into declaration. + * progmodes/meta-mode.el (meta-mode-abbrev-table): Merge init and decl. + (meta-common-mode-syntax-table): Rename from meta-mode-syntax-table. + (meta-common-mode-map): Rename from meta-mode-map. + Remove C-m binding, which is a user preference, not mode specific. + (meta-common-mode): New major mode; replace meta-common-initialization. + * progmodes/js.el (js-mode): Call syntax-propertize rather than messing + around with font-lock. + * progmodes/etags.el (select-tags-table-mode): + Derive from special-mode. + * progmodes/octave-mod.el (octave-mode): + * progmodes/gdb-mi.el (gdb-inferior-io-mode, gdb-threads-mode) + (gdb-memory-mode, gdb-disassembly-mode, gdb-breakpoints-mode) + (gdb-frames-mode, gdb-locals-mode, gdb-registers-mode): + Let define-derived-mode do its job. + * progmodes/cpp.el (cpp-edit-mode-map): + Move initialization into declaration. + (cpp-edit-mode): Use define-derived-mode. + (cpp-edit-load): Use derived-mode-p. + * progmodes/mixal-mode.el (mixal-mode): + * progmodes/f90.el (f90-mode): + * progmodes/cfengine.el (cfengine-mode): Don't bother setting + require-final-newline since prog-mode does it already. + * progmodes/cc-cmds.el (c-update-modeline): Use match-string. + * progmodes/asm-mode.el (asm-mode-map): Fix menu setup. + * progmodes/antlr-mode.el: Require cc-mode upfront. + (antlr-mode-syntax-table, antlr-action-syntax-table): Initialize in + the declaration. + (antlr-directory-dependencies, antlr-show-makefile-rules): + Use derived-mode-p. + (antlr-language-option): Don't assume point-min==1. + (antlr-mode): Use define-derived-mode. + * progmodes/ada-mode.el: Use derived-mode-p. + (ada-mode): Use define-derived-mode. + Use hack-local-variables-hook. + +2010-12-10 Stefan Monnier + + * textmodes/texinfo.el (texinfo-mode-map): Bind texinfo-insert-@end. + (texinfo-mode): Don't disable adaptive-fill-mode. + (texinfo-insert-block): Adjust cursor placement for blocks with arg. + (texinfo-insert-@end, texinfo-insert-braces, texinfo-insert-@code) + (texinfo-insert-@dfn, texinfo-insert-@email, texinfo-insert-@emph) + (texinfo-insert-@example, texinfo-insert-@file, texinfo-insert-@item) + (texinfo-insert-@kbd, texinfo-insert-@node, texinfo-insert-@noindent) + (texinfo-insert-@quotation, texinfo-insert-@samp) + (texinfo-insert-@strong, texinfo-insert-@table, texinfo-insert-@var) + (texinfo-insert-@uref): Use define-skeleton. + (texinfo-insert-@-with-arg): Delete. + +2010-12-10 Eli Zaretskii + + * arc-mode.el (archive-zip-extract): If w32-quote-process-args is + nil, do quote archive member names. (Bug#6144) + +2010-12-10 Glenn Morris + + * files.el (diff-no-select): Declare. + + * mail/emacsbug.el (report-emacs-bug): Use mail-user-agent properties. + (report-emacs-bug-create-existing-bugs-buffer): Avoid free variables. + + * comint.el (comint-input-ring-file-name): Doc fix. + +2010-12-09 Eli Zaretskii + + * menu-bar.el (menu-bar-frame-for-menubar, menu-bar-positive-p): + New functions. + (menu-bar-showhide-menu) : + Use them instead of `nil' and `>', respectively. + (menu-bar-showhide-tool-bar-menu): Use menu-bar-frame-for-menubar + instead of `nil'. + (toggle-menu-bar-mode-from-frame): Use menu-bar-frame-for-menubar + and menu-bar-positive-p instead of `nil' and `>', respectively. + (Bug#1077) + +2010-12-09 Vinicius Jose Latorre + + * whitespace.el (whitespace-newline-mode): Code fix. + +2010-12-09 Glenn Morris + + * play/landmark.el (lm-print-y,s,noise-int, lm-print-y,s,noise): + Rename functions without commas, update callers. + +2010-12-08 Jeff Dairiki (tiny change) + + * whitespace.el (whitespace-cleanup-region): + Clean up spaces before tabs. (Bug#7582) + +2010-12-08 Karl Fogel + + * bookmark.el: Adjust parameter names and doc strings to resolve + confusion over whether "bookmark" meant a bookmark name or a + bookmark record. Along the way, shorten one function's name for + similar reasons. (Issue #7548) + (bookmark-name-from-record): New name for + `bookmark-name-from-full-record'. All callers changed. + (bookmark-get-bookmark, bookmark-get-bookmark-record) + (bookmark-default-annotation-text, bookmark-prop-get, bookmark-prop-set) + (bookmark-get-annotation, bookmark-set-annotation) + (bookmark-get-filename, bookmark-set-filename) + (bookmark-get-position, bookmark-set-position) + (bookmark-get-front-context-string, bookmark-set-front-context-string) + (bookmark-get-rear-context-string, bookmark-set-rear-context-string) + (bookmark-get-handler, bookmark-edit-annotation, bookmark--jump-via) + (bookmark-handle-bookmark, bookmark-location, bookmark-show-annotation): + Rename `bookmark' parameter to `bookmark-name-or-record', to + clearly show its role, and shorten or adjust doc strings accordingly. + (bookmark-set-name): Same, and pass the parameter directly to + `bookmark-get-bookmark' instead of redundantly doing the callee's work. + (bookmark-default-annotation-text, bookmark-send-edited-annotation) + (bookmark-relocate, bookmark-insert-location, bookmark-insert) + (bookmark-delete): Rename `bookmark' parameter to `bookmark-name', + and in some cases shorten doc string accordingly. + (bookmark-rename): Change `old' and `new' parameters to `old-name' + and `new-name', and adjust an internal variable to avoid confusion. + (bookmark-jump, bookmark-jump-noselect): Clarify `bookmark' + parameter in doc string. + +2010-12-08 Glenn Morris + + * progmodes/gdb-mi.el (gdb): Try to initialize comint input history + from gdb's history file. (Bug#7575) + + * mail/emacsbug.el (report-emacs-bug): + Try to handle some other mail clients. + +2010-12-08 Stefan Monnier + + * files.el (dir-locals-collect-variables): Don't let errors stop us. + Use string-prefix-p. + (file-name-version-regexp): New var. + (file-name-sans-versions): + * jka-cmpr-hook.el (jka-compr-build-file-regexp): Use it, + (jka-compr-get-compression-info): Use dolist. + (jka-compr-compression-info-list): Don't bother specifying + version/backup regexps. + +2010-12-07 Tassilo Horn + + * simple.el (just-one-space): Make argument n default to 1 if + omitted. + +2010-12-07 Stefan Monnier + + * electric.el (electric-indent-post-self-insert-function): + Delete trailing newlines even if we don't reindent. + +2010-12-06 Stefan Monnier + + * minibuffer.el (completion-at-point): Remove the `arg'. + * bindings.el (complete-symbol): Move back from minibuffer.el. + +2010-12-06 Deniz Dogan + + * simple.el (just-one-space): Delete newlines for negative arg. + +2010-12-06 Stefan Monnier + + * ansi-color.el (ansi-color-unfontify-region): Replace by trivial def. + (ansi-color-filter-apply): Simplify. + (ansi-color-apply): Use `font-lock-face' rather than `face'. + +2010-12-05 Bob Rogers + + * vc/vc-dir.el (vc-dir-query-replace-regexp): Doc fix (Bug#7501). + +2010-12-04 Chong Yidong + + * dired.el (dired-use-ls-dired): Set default to a special + "unspecified" value. + (dired-insert-directory): When called the first time, check + whether "ls --dired" succeeds and set dired-use-ls-dired (Bug#7546). + +2010-12-04 Tak Ota + + * replace.el: Add "collect" feature to occur. + (occur-collect-regexp-history): New var. + (occur-read-primary-args): Return a replace string for nlines, + if needed. + (occur): Extend the meaning of nlines. + +2010-12-04 Stefan Monnier + + * progmodes/which-func.el (which-func-ff-hook): Log the error message. + (which-func-update-1): Distinguish symbols from strings. + (which-function): Stay within 80 columns. + +2010-12-03 Stefan Monnier + + * subr.el (with-demoted-errors): Distinguish symbols from strings. + + * newcomment.el (comment-styles): Add docs to each style (bug#7509). + Improve docstring. + (comment-style): Use comment-styles's docs to describe values. + +2010-12-03 Jan Djärv + + * term/common-win.el (x-setup-function-keys): Restore ns-new-frame + and ns-show-prefs (Bug#7535). + + * term/ns-win.el (global-map): Restore ns-new-frame and ns-show-prefs + bindings (Bug#7535). + +2010-12-03 Glenn Morris + + * nxml/nxml-mode.el: Require rng-nxml. + (rng-nxml-mode-init, nxml-enable-unicode-char-name-sets): + Remove declarations. + + * nxml/nxml-mode.el, nxml/nxml-outln.el, nxml/rng-loc.el: + * nxml/rng-nxml.el, nxml/rng-valid.el: + Remove leading `*' from defcustom docs. + + * startup.el (normal-top-level-add-subdirs-to-load-path): Simplify. + (normal-top-level-add-to-load-path, tty-handle-args): + Convert comments to basic doc-strings. + + * net/browse-url.el (browse-url-url-at-point) + (browse-url-default-browser): Remove autoload cookies. + + * mail/emacsbug.el (report-emacs-bug-create-existing-bugs-buffer): + Remove more undefined cl functions. + + * vc/diff.el (diff-sentinel): Make new arguments optional. + * ibuf-ext.el (diff-sentinel): Update declaration. + +2010-12-03 Daiki Ueno + + * epg.el (epg-digest-algorithm-alist): Replace "RMD160" with + "RIPEMD160" (Bug#7490). Reported by Daniel Kahn Gillmor. + (epg-context-set-passphrase-callback): Mention that the callback + is not called when used with GnuPG 2.x. + +2010-12-02 Michael Albinus + + * net/tramp.el (tramp-local-host-regexp): Add "localhost6". + (tramp-file-name-port): Check also for `tramp-default-port'. + (tramp-get-connection-name): New defun. + (tramp-get-connection-process): Use it. + (tramp-debug-message): Extend function exclude list. + (tramp-drop-volume-letter): Fix doc string. + + * net/tramp-cmds.el: Remove solved todo item. + + * net/tramp-ftp.el: + * net/tramp-gvfs.el: + * net/tramp-gw.el: + * net/tramp-imap.el: + * net/tramp-smb.el: Fix regexps added to `tramp-default-method-alist' + and `tramp-default-user-alist', respectively. + + * net/tramp-gw.el (tramp-gw-open-connection): + Use `tramp-get-connection-name' and `tramp-get-connection-buffer'. + + * net/tramp-imap.el (tramp-imap-make-iht): Use just + `tramp-file-name-port'. + + * net/tramp-sh.el (tramp-methods): Add recursive options to "pscp" + and "psftp". Exchange "%k" marker with options. + (tramp-do-copy-or-rename-file, tramp-sh-handle-file-local-copy): + Compute size of link target. + (tramp-do-copy-or-rename-file-out-of-band): Move setting of + `tramp-current-*' up due to gateway methods. Optimize computing of + copy arguments. Use `tramp-get-connection-name' and + `tramp-get-connection-buffer'. Improve debug messages. + (tramp-compute-multi-hops): Remove port determination. + (tramp-maybe-open-connection): Use `tramp-get-connection-name'. + + * net/trampver.el: Update release number. + +2010-12-02 Glenn Morris + + * emacs-lisp/cl-macs.el (cl-parse-loop-clause): + Avoid infinite loop over windows. (Bug#7492) + + * progmodes/flymake.el (flymake-check-file-limit): + Allow nil to mean "no limit". + (flymake-check-patch-master-file-buffer): Update for above change. + Allow a .tex file-name extension to be optional. + (flymake-master-tex-init): Also match \include statements. + +2010-11-30 Sam Steingold + + * nxml/nxml-mode.el (nxml-parent-document): Add a variable. + (nxml-parent-document-set): A function to set `nxml-parent-document'. + (nxml-mode): Define using `define-derived-mode' instead of `defun'. + (nxml-mode-hook): Remove `defcustom' (auto-defined by + define-derived-mode'). + * nxml/rng-valid.el (rng-dtd-trivial-p): Add a helper function for + users who want to call `nxml-parent-document-set'. + +2010-11-27 Chong Yidong + + * log-edit.el (log-edit-font-lock-keywords): Don't try matching + stand-alone lines, since that is handled by log-edit-match-to-eoh + (Bug#6465). + +2010-11-27 Eduard Wiebe + + * dired.el (dired-get-filename): Replace backslashes with slashes + in file names on MS-Windows, needed by `locate'. (Bug#7308) + * locate.el (locate-default-make-command-line): Don't consider + drive letter and root directory part of + `directory-listing-before-filename-regexp'. (Bug#7308) + (locate-post-command-hook, locate-post-command-hook): New defcustoms. + +2010-11-27 Stefan Monnier + + * emacs-lisp/smie.el (smie-prec2->grammar): Simplify handling + of :smie-open/close-alist. + (smie-next-sexp): Make it accept a "start token" as argument. + (smie-indent-keyword): Be careful not to misidentify tokens that span + more than one line, as empty lines. Add argument `token'. + +2010-11-27 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-insert-multipart): For unsupported + multipart subtypes, insert all as usual. + + * mail/rmail.el: Require rfc2047. + +2010-11-27 Kenichi Handa + + * mail/rmailmm.el (rmail-mime-entity, rmail-mime-entity-type) + (rmail-mime-entity-disposition) + (rmail-mime-entity-transfer-encoding, rmail-mime-entity-header) + (rmail-mime-entity-body, rmail-mime-entity-children): New functions. + (rmail-mime-save): Handle the case that the button's `data' is a + MIME entity. + (rmail-mime-insert-text): New function. + (rmail-mime-insert-image): Handle the case that DATA is a MIME entity. + (rmail-mime-bulk-handler): Just call rmail-mime-insert-bulk. + (rmail-mime-insert-bulk): New function mostly copied from the old + rmail-mime-bulk-handler. + (rmail-mime-multipart-handler): Just call rmail-mime-process-multipart. + (rmail-mime-process-multipart): New function mostly copied from + the old rmail-mime-multipart-handler. + (rmail-mime-show): Just call rmail-mime-process. + (rmail-mime-process): New function mostly copied from the old + rmail-mime-show. + (rmail-mime-insert-multipart, rmail-mime-parse) + (rmail-mime-insert, rmail-show-mime) + (rmail-insert-mime-forwarded-message) + (rmail-insert-mime-resent-message): New functions. + (rmail-insert-mime-forwarded-message-function): Set to + rmail-insert-mime-forwarded-message. + (rmail-insert-mime-resent-message-function): Set to + rmail-insert-mime-resent-message. + + * mail/rmailsum.el: Require rfc2047. + (rmail-header-summary): Handle multiline Subject: field. + (rmail-summary-line-decoder): Change the default to + rfc2047-decode-string. + + * mail/rmail.el (rmail-enable-mime): Change the default to t. + (rmail-mime-feature): Change the default to `rmailmm'. + (rmail-quit): Delete the specifal code for rmail-enable-mime. + (rmail-display-labels): Likewise. + (rmail-show-message-1): Check rmail-enable-mime, and use + rmail-show-mime-function for a MIME message. Decode the headers + according to RFC2047. + +2010-11-27 Stefan Monnier + + * progmodes/which-func.el (which-func-imenu-joiner-function): + Return a string, as expected. + (which-function-mode): Make sure we stop any previous timer before + starting a new one. + +2010-11-27 Michael Albinus + + * net/tramp.el (tramp-default-method-alist) + (tramp-default-user-alist, tramp-default-proxies-alist): + Adapt custom options type. (Bug#7445) + +2010-11-27 Chong Yidong + + * progmodes/python.el: Add Ipython support (Bug#5390). + (python-shell-prompt-alist) + (python-shell-continuation-prompt-alist): New options. + (python--set-prompt-regexp): New function. + (inferior-python-mode, run-python, python-shell): + Require ansi-color. Use python--set-prompt-regexp to set the comint + prompt based on the Python interpreter. + (python--prompt-regexp): New var. + (python-check-comint-prompt) + (python-comint-output-filter-function): Use it. + (run-python): Use a pipe (Bug#5694). + +2010-11-27 Chong Yidong + + * progmodes/python.el (run-python): Doc fix. + (python-keep-current-directory-in-path): New var (Bug#7454). + +2010-11-27 Chong Yidong + + * lpr.el (lpr-buffer, print-buffer, lpr-region, print-region): + Prompt user before actually printing. + +2010-11-27 Glenn Morris + + * startup.el (package-enable-at-startup, package-initialize): + Remove unnecessary declarations. + +2010-11-27 Eli Zaretskii + + * international/characters.el (glyphless-char-display-control): + Exclude newline and TAB from the c0-control group. + +2010-11-27 Glenn Morris + + * mail/sendmail.el (build-mail-aliases): Doc fix for autoload. + (expand-mail-aliases): Remove unnecessary autoload. + + * allout.el (allout-command-prefix, allout-mode-map): Declare. + + * shell.el (shell-dir-cookie-re): Move definition before use. + + * mail/emacsbug.el (report-emacs-bug-create-existing-bugs-buffer): + Replace undefined CL functions. + +2010-11-26 Eli Zaretskii + + * simple.el (prog-mode): Set bidi-paragraph-direction to + left-to-right. + + * term/pc-win.el (x-get-selection-internal): Emulation for MS-DOS. + +2010-11-26 Glenn Morris + + * calendar/diary-lib.el (diary-outlook-format-1): New function, so that + diary-outlook-formats can be sensitive to calendar-date-style. + (diary-outlook-formats): Simplify the default setting. + (diary-from-outlook-internal): Pass subject and body as arguments. + Use dolist rather than dotimes. Don't save the diary buffer. + (diary-from-outlook-gnus, diary-from-outlook-rmail): + Pass subject and body as explicit arguments to the -internal function. + +2010-11-26 Lars Magne Ingebrigtsen + + * mail/rfc2368.el (rfc2368-parse-mailto-url): Unfold URLs before + parsing them. This makes mailto:...?subject=foo\nbar work. + +2010-11-25 Stefan Monnier + + * vc/diff.el (diff): Fix last change. + +2010-11-24 Stefan Monnier + + * emacs-lisp/pcase.el: Improve pcase-let. Use "pcase--" prefix. + (pcase--dontcare-upats): New var. + (pcase-let, pcase-let*): Generate better code. + Accept the same bodies as `let'. + (pcase-dolist): New macro. + (pcase--trivial-upat-p): New helper function. + (pcase--expand): Strip leading "(let nil" if any. + +2010-11-24 Lars Magne Ingebrigtsen + + * mail/mailclient.el (browse-url): Require. + (mailclient-send-it): Bind `browse-url-mailto-function' to nil to + use the external browser function to send the mail (bug#7469). + + * net/browse-url.el (browse-url-browser-function): Revert the + default back to the previous value, since the new value broke + mailclient.el. + (browse-url-mailto-function): New variable for mailto: URLs. + (browse-url): Use the new variable for mailto: URLs. + +2010-11-23 Stefan Monnier + + * eshell/esh-cmd.el (eshell-parse-command): + * eshell/esh-arg.el (eshell-parse-arguments): + * eshell/em-script.el (eshell-source-file): + Use with-silent-modifications. + +2010-11-23 Chong Yidong + + * vc/vc.el (vc-merge): Remove optional arg PROMPT. Always prompt + for a merge location. + + * vc/vc-bzr.el (vc-bzr-pull): Remove unused var. + (vc-bzr-merge-branch): Always prompt. + (vc-bzr-async-command): Use the full branch filename. + +2010-11-23 Stefan Monnier + + * shell.el (shell): Use current-buffer by default if it's already + a shell mode buffer and its process is dead. + Suggested by Jose E. Marchesi . + +2010-11-23 Tassilo Horn + + * mail/emacsbug.el (report-emacs-bug-query-existing-bugs): + Mention that the keywords should be comma separated. + +2010-11-23 Chong Yidong + + * vc/vc.el (vc-merge): Use vc-BACKEND-merge-branch if available. + Accept optional prefix arg meaning to prompt for a command. + (vc-update): Use vc-BACKEND-pull if available. Accept optional + prefix arg meaning to prompt for a command. + (vc-pull): Alias for vc-update. + + * vc/vc-bzr.el (vc-bzr-admin-branchconf, vc-bzr-history): New vars. + (vc-bzr--branch-conf, vc-bzr-async-command, vc-bzr-pull) + (vc-bzr-merge-branch): New functions, implementing merge-branch + and pull operations. + +2010-11-22 Stefan Monnier + + * Makefile.in: Fix up last merge. + + * vc/diff.el (diff-old-temp-file, diff-new-temp-file): Remove. + (diff-sentinel): Get them as arguments instead. + (diff-old-file, diff-new-file, diff-extra-args): Remove. + (diff-file-local-copy, diff-better-file-name): New funs. + (diff-no-select): Rename from diff-into-buffer. + Support buffers additionally to files. Move `buf' arg. Don't display buf. + Prefer closures to buffer-local variables. + (diff): Adjust accordingly. + (diff-buffer-with-file): Move from files.el. + * files.el (diff-buffer-with-file): Move to vc/diff.el. + (diff-buffer-internal): Remove. + (diff-buffer-buffer): Remove. + (save-some-buffers-action-alist): Use diff-no-select so as not to guess + the buffer name used, and so as not to mess up windows and frames. + +2010-11-22 Bob Rogers + + * files.el: Make revert work with diff-buffer-with-file (bug#7277). + (diff-buffer-internal): New function extracted from diff-buffer-with-file + (diff-buffer-with-file): Use it. + * vc/diff.el (diff-into-buffer): New fun, extracted from diff. + (diff): Use it. + +2010-11-22 Tassilo Horn + + * textmodes/reftex-ref.el (reftex-goto-label): Use the current + \ref's or \pageref's value as default instead of initial input. + +2010-11-21 Michael Albinus + + * files.el (backup-by-copying-when-mismatch): The default value is + now t. + + * startup.el (normal-top-level): + * net/tramp.el (tramp-handle-insert-file-contents): Do not set + `backup-by-copying-when-mismatch'. + +2010-11-21 Jan Djärv + + * tool-bar.el (tool-bar-setup): Remove save as, print and customize. + +2010-11-21 Deniz Dogan + + * progmodes/python.el (python-font-lock-keywords): + Highlight top-level augmented assignments (Bug#6445). + +2010-11-21 Jan Djärv + + * term/ns-win.el (ns-right-control-modifier) + (ns-right-command-modifier): Defvar them. + + * cus-start.el (all): Add ns-right-control-modifier and + ns-right-command-modifier (Bug#7458). + +2010-11-20 Glenn Morris + + * emacs-lisp/authors.el (authors-ignored-files) + (authors-valid-file-names, authors-renamed-files-alist): Add entries. + +2010-11-20 Tassilo Horn + + * mail/emacsbug.el (report-emacs-bug-query-existing-bugs) + (report-emacs-bug-parse-query-results) + (report-emacs-bug-create-existing-bugs-buffer): Pass through + keywords used for querying the bug database to show them in the + existing bugs buffer. + +2010-11-20 Jan Djärv + + * tool-bar.el (tool-bar-setup): Add some :vert-only keywords. + + * info.el (info-tool-bar-map): Add some :vert-only keywords. + +2010-11-20 Eli Zaretskii + + * international/characters.el (glyphless-char-display-control): + Make it a defcustom, with update-glyphless-char-display as its + :set attribute. + (top level): Don't call update-glyphless-char-display. + +2010-11-20 Michael Albinus + + Sync with Tramp 2.2.0. + + * net/tramp.el (tramp-handle-insert-file-contents): Don't use + `file-remote-p' (due to compatibility). + + * net/tramp-sh.el (tramp-do-copy-or-rename-file-directly) + (tramp-do-copy-or-rename-file-out-of-band): Use `ignore-errors'. + + * net/trampver.el: Update release number. + +2010-11-20 Eli Zaretskii + + * faces.el (glyphless-char): Define value for `pc'. + +2010-11-20 Tassilo Horn + + Implemented a bug querying mechanism. + * mail/emacsbug.el (report-emacs-bug-tracker-url): New variable. + (report-emacs-bug-create-existing-bugs-buffer) + (report-emacs-bug-parse-query-results) + (report-emacs-bug-query-existing-bugs): New functions. + +2010-11-19 Tassilo Horn + + * textmodes/reftex-ref.el (reftex-goto-label): If point is inside + a \ref{} or \pageref{} macro, then use its value as initial input. + +2010-11-19 Jay Belanger + + * calc/calc-units.el (math-build-units-table-buffer): + calc/README: Mention that the TeX specific units won't use the + `tex' prefix in TeX mode. + calc/calc-lang.el (math-variable-table): Don't use the `tex' + prefix for units in TeX mode. + +2010-11-18 Stefan Monnier + + * simple.el (kill-new, kill-append, kill-region): + * comint.el (comint-kill-region): Make the yank-handler argument + obsolete. + +2010-11-18 Stefan Monnier + + * emacs-lisp/smie.el (smie-bnf-classify): Signal errors for tokens + that are both openers (resp. closers) and something else. + (smie-grammar): Loosen definition of valid values. + (smie-next-sexp, smie-down-list, smie-blink-matching-open) + (smie-indent--parent, smie-rule-parent, smie-indent-keyword) + (smie-indent-after-keyword): Adjust users. + (smie-indent-keyword): Don't indent empty lines. + + * vc-hg.el (vc-hg-program): New var. + Suggested by Norman Gray . + (vc-hg-state, vc-hg-working-revision, vc-hg-command): Use it. + +2010-11-18 Glenn Morris + + * emacs-lisp/autoload.el (autoload-find-destination): The function + coding-system-eol-type may return non-numeric values. (Bug#7414) + +2010-11-18 Ulrich Mueller + + * server.el (server-force-stop): Ensure the server is stopped (Bug#7409). + +2010-11-18 Eli Zaretskii + + * subr.el (posn-col-row): Pay attention to header line. (Bug#7390) + +2010-11-18 Chong Yidong + + * textmodes/picture.el (picture-mouse-set-point): Don't use + posn-col-row; explicitly compute the motion based on the posn at + the window-start (Bug#7390). + +2010-11-18 Glenn Morris + + * novice.el (disabled-command-function): + Fix 2009-11-15 change. (Bug#7384) + +2010-11-18 Glenn Morris + + * calendar/calendar.el (diary-iso-date-forms): Make elements + mutually exclusive. (Bug#7377) + +2010-11-18 Stefan Monnier + + * emacs-lisp/smie.el (smie-prec2->grammar): Obey equality constraints + when filling the remaining "unconstrained" values. + +2010-11-18 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the + safety predicate. + + * files.el (safe-local-variable-p): Gracefully handle errors. + + * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule): + Use smie-indent-virtual when indenting relative to an opener. + (smie-rule-separator): Use smie-rule-parent. + (smie-indent-keyword): Consult rules, even for openers at bol. + (smie-indent-comment-close): Try to align closer's content. + +2010-11-18 Glenn Morris + + * ls-lisp.el (ls-lisp-dired-ignore-case): Make it an obsolete alias. + +2010-11-18 Glenn Morris + + * printing.el (pr-menu-bind): Doc fix. + + * speedbar.el (speedbar-toggle-images): Doc fix. + + * progmodes/python.el (python-shell): Doc fix. + + * wid-edit.el (widget-field-use-before-change) + (widget-use-overlay-change): Doc fixes. + +2010-11-18 Stefan Monnier + + Minor cleanup to improve style. + * textmodes/rst.el (rst-update-section): Use point-marker. + (rst-get-decoration): Eliminate unneeded assignment. + (rst-promote-region, rst-straighten-decorations) + (rst-section-tree, rst-adjust): Use point-marker. + (rst-toc-mode-mouse-goto): Avoid setq. + (rst-shift-region-guts, rst-shift-region-left) + (rst-iterate-leftmost-paragraphs, rst-iterate-leftmost-paragraphs-2) + (rst-convert-bullets-to-enumeration): Use copy-marker. + + * minibuffer.el (completion-fail-discreetly): New var. + (completion--do-completion): Use it. + + * electric.el (electric-pair-pairs): New var. + (electric-pair-post-self-insert-function): Use it. + (electric-layout-post-self-insert-function): Don't insert a before + newline unless it's actually needed. + +2010-11-17 Stefan Monnier + + * progmodes/python.el (run-python): Explain why we remove the current + directory from sys.path. Suggested by Eric Hanchrow . + + * progmodes/grep.el (grep-regexp-alist): Tighten the regexp (bug#7378). + +2010-11-16 Stefan Monnier + + * progmodes/octave-mod.el: Rely on elecric-*-modes. + (octave-mode-map): Don't bind ;, SPC, and LF. + (octave-auto-indent, octave-auto-newline): Remove. + (electric-layout-rules): Declare. + (octave-mode): Set electric-layout-rules. + (octave-indent-new-comment-line): Use reindent-then-newline-and-indent. + (octave-reindent-then-newline-and-indent, octave-electric-semi) + (octave-electric-space): Remove. + + * electric.el (electric-layout-mode): New minor mode. + (electric--after-char-pos): New function. + (electric-indent-post-self-insert-function): Use it. + (electric-layout-rules): New var. + (electric-layout-post-self-insert-function): New function. + (electric-indent-mode): Make them interact better. + +2010-11-15 Stefan Monnier + + * emacs-lisp/checkdoc.el (checkdoc-syntax-table): Fix last change. + (checkdoc-sentencespace-region-engine, checkdoc-this-string-valid) + (checkdoc-proper-noun-region-engine): Use with-syntax-table. + +2010-11-15 Agustín Martín + + * textmodes/flyspell.el (flyspell-generic-progmode-verify): + Make sure to check inside the word (Bug#6761). + +2010-11-14 Chong Yidong + + * startup.el (command-line): If the cursorColor resource is set, + change the cursor face-spec (Bug#7392). + +2010-11-13 Ken Manheimer + + The main features of the following allout.el changes are: + - implement user customization for the allout key bindings + - add a customization control by which the user can inhibit use of + a trailing Ctrl-H, so by default it's reserved for use with + describe-prefix-bindings + - adapt to new version of called-interactively-p, while + maintaining backwards compatibility with old version + - fix hotspot navigation so i works properly with meta-modified keys. + + * allout.el (allout-keybindings, allout-bind-keys) + (allout-keybindings-binding, allout-prefixed-keybindings) + (allout-unprefixed-keybindings, allout-preempt-trailing-ctrl-h) + (allout-keybindings-list, allout-mode-map-adjustments) + (allout-setup-mode-map): Establish allout-mode keymaps as user + customizable settings, and also establish a customizable setting which + regulates whether or not a trailing control-h is reserved for use with + describe-prefix-bindings - and inhibit it by default, so that control-h + *is* reserved for describe-prefix-bindings unless the user changes it. + + * allout.el (allout-hotspot-key-handler): Distinguish more explicitly + and accurately between modified and unmodified events, and handle + modified events more comprehensively. + + * allout.el (allout-substring-no-properties): + Alias to use or provide version of `substring-no-properties'. + (allout-solicit-alternate-bullet): Use `allout-substring-no-properties'. + + * allout.el (allout-next-single-char-property-change): + Alias to use or provide version of `next-single-char-property-change'. + (allout-annotate-hidden, allout-hide-by-annotation): + Use `allout-next-single-char-property-change'. + + * allout.el (allout-select-safe-coding-system): + Alias to use or provide version of `select-safe-coding-system'. + (allout-toggle-subtree-encryption): + Use `allout-select-safe-coding-system'. + + * allout.el (allout-set-buffer-multibyte): + Alias to use or provide version of `set-buffer-multibyte'. + (allout-encrypt-string): Use `allout-set-buffer-multibyte'. + + * allout.el (allout-called-interactively-p): Macro for using the + different versions of called-interactively-p identically, depending on + the subroutine's argument signature. + (allout-back-to-current-heading, allout-beginning-of-current-entry): + Use `(interactive "p")' instead of `(called-interactively-p)'. + + * allout.el (allout-init, allout-ascend, allout-end-of-level) + (allout-previous-visible-heading, allout-forward-current-level) + (allout-backward-current-level, allout-show-children): + Use `allout-called-interactively-p' instead of `called-interactively-p'. + + * allout.el (allout-before-change-handler): + Exempt edits to the (overlaid) character after the allout outline + bullet from edit confirmation prompt. + + * allout.el (allout-add-resumptions): + Ensure that it respects correct buffer for keybindings. + + * allout.el (allout-beginning-of-line): + Use `allout-previous-single-char-property-change' alias for the sake of + diverse compatibility. + + * allout.el (allout-end-of-line): + Use `allout-mark-active-p' to encapsulate respect for mark activity. + +2010-11-13 Chong Yidong + + * frame.el (frame-notice-user-settings): Don't clobber other + user-set parameters when calling face-set-after-frame-default in + response to background-color parameter (Bug#7373). + +2010-11-13 Eli Zaretskii + + * international/characters.el (glyphless-char-display-control): + Rename from glyphless-char-control; all users changed. Doc fix. + Signal an error if display method is not one of the recognized + symbols. + +2010-11-13 Michael Albinus + + * net/tramp-compat.el (tramp-compat-line-beginning-position) + (tramp-compat-line-end-position): Remove them. + + * net/tramp.el (tramp-parse-rhosts-group) + (tramp-parse-shosts-group, tramp-parse-sconfig-group) + (tramp-parse-hosts-group, tramp-parse-passwd-group) + (tramp-parse-netrc-group, tramp-parse-putty-group) + * net/tramp-cmds.el (tramp-append-tramp-buffers) + * net/tramp-sh.el (tramp-do-file-attributes-with-ls) + (tramp-sh-handle-file-selinux-context) + (tramp-sh-handle-file-name-all-completions) + (tramp-sh-handle-insert-directory) + (tramp-sh-handle-expand-file-name, tramp-find-executable) + (tramp-wait-for-output, tramp-send-command-and-read) + * net/tramp-smb.el (tramp-smb-read-file-entry) + (tramp-smb-get-cifs-capabilities): Use `point-at-eol'. + + * net/tramp-sh.el (tramp-sh-handle-insert-directory) Use + `point-at-bol'. + (tramp-remote-coding-commands): Add an alternative using "base64 + -d -i". This is needed for older base64 versions from GNU + coreutils. Reported by Klaus Reichl + . + +2010-11-13 Hrvoje Niksic + + * simple.el (count-words-region): New function. + +2010-11-12 Stefan Monnier + + * shell.el (shell-dir-cookie-re): New custom variable. + (shell-dir-cookie-watcher): New function. + + * vc/vc.el (vc-deduce-backend): Use default-directory in shell-mode + and compilation-mode (bug#7350). + + * vc/smerge-mode.el (smerge-refine): Choose better default part to + highlight when one of them is empty. + + * skeleton.el (skeleton-read): Don't use `newline' since it may strip + trailing space. + (skeleton-newline): New function. + (skeleton-internal-1): Use it. + + * simple.el (open-line): `newline' may strip trailing space. + +2010-11-12 Kevin Ryde + + * international/mule-cmds.el (princ-list): Use mapc. + +2010-11-12 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-log-buffer): New constant. + Use it to replace all instances of "*Compile-Log*". + +2010-11-12 Stefan Monnier + + * emacs-lisp/pcase.el (pcase-let*, pcase-let): Add debug and + indentation specs. + +2010-11-11 Stefan Monnier + + * progmodes/modula2.el: Use SMIE and skeleton. + (m2-mode-syntax-table): (*..*) can be nested. + Add //...\n. Fix paren syntax. + (m2-mode-map): Remove LF and TAB bindings. + (m2-indent): Add safety property. + (m2-smie-grammar): New var. + (m2-smie-refine-colon, m2-smie-refine-of, m2-smie-backward-token) + (m2-smie-forward-token, m2-smie-refine-semi, m2-smie-rules): New funs. + (m2-mode): Use define-derived-mode. + (m2-newline, m2-tab): Remove. + (m2-begin, m2-case, m2-definition, m2-else, m2-for, m2-header) + (m2-if, m2-loop, m2-module, m2-or, m2-procedure, m2-with, m2-record) + (m2-stdio, m2-type, m2-until, m2-var, m2-while, m2-export) + (m2-import): Use define-skeleton. + +2010-11-11 Glenn Morris + + * obsolete/lucid.el: Don't warn about any CL functions in this file. + + * ls-lisp.el (ls-lisp-ignore-case, ls-lisp-dirs-first) + (ls-lisp-verbosity): Add custom :set-after property. + (ls-lisp-verbosity, ls-lisp-use-localized-time-format): Doc fixes. + (ls-lisp-format, ls-lisp-format-time): Don't take `now' as an argument. + (ls-lisp-insert-directory): Update caller. + (ls-lisp-set-options): New function. + (ls-lisp-emulation): Use ls-lisp-set-options for custom :set. + Doc fix. + + * play/landmark.el (lm-prompt-for-move): + * play/gomoku.el (gomoku-prompt-for-move): Remove nonsensical code. + + * progmodes/idlw-complete-structtag.el: Remove unused dec `name'. + + * progmodes/idlwave.el (idlwave-routine-entry-compare-twins) + (idlwave-study-twins): Prefix dynamic local variable `name'. + (idlwave-routine-twin-compare): Update for above change. + + * progmodes/idlw-help.el (idlwave-do-mouse-completion-help): + Prefix dynamic local variables `name', `kwd', and `link'. + * progmodes/idlw-shell.el (idlwave-shell-complete-execcomm-help): + * progmodes/idlw-complete-structtag.el + (idlwave-complete-structure-tag-help): + * progmodes/idlwave.el (idlwave-complete-sysvar-help) + (idlwave-complete-sysvar-tag-help) + (idlwave-complete-class-structure-tag-help): + Update for above name changes. + +2010-11-10 Lars Magne Ingebrigtsen + + * net/browse-url.el (browse-url-browser-function): Change the + default to use `browse-url-mail' on mailto: URLs. + +2010-11-10 Chong Yidong + + * emacs-lisp/package.el (package-read-all-archive-contents): + Reset package-archive-contents to nil before re-reading. + +2010-11-10 Brandon Craig Rhodes (tiny change) + + * textmodes/flyspell.el (flyspell-word): Do not re-check words + already found as misspellings by (flyspell-large-region), just + do highlighting (bug#7322). + +2010-11-10 Glenn Morris + + * progmodes/octave-mod.el (octave-mark-block): Update for smie change. + + * emulation/edt.el (edt-with-position): New macro. + (edt-find-forward, edt-find-backward, edt-find-next-forward) + (edt-find-next-backward, edt-sentence-forward, edt-sentence-backward) + (edt-paragraph-forward, edt-paragraph-backward): Use it. + + * emulation/tpu-extras.el (tpu-with-position): New macro. + (tpu-paragraph, tpu-page, tpu-search-internal): Use it. + + * textmodes/texnfo-upd.el (texinfo-pointer-name): Fix typo. + + * textmodes/texnfo-upd.el (texinfo-all-menus-update) + (texinfo-menu-copy-old-description, texinfo-start-menu-description) + (texinfo-master-menu, texinfo-insert-node-lines) + (texinfo-multiple-files-update): + * textmodes/texinfmt.el (texinfo-append-refill, texinfo-copying): + Use line-beginning-position. + + * progmodes/cperl-mode.el (cperl-find-pods-heres, cperl-write-tags): + No recent Emacs supports system-type `emx'. + + * progmodes/ada-xref.el (is-windows): Rename to ada-on-ms-windows. + (ada-command-separator, ada-default-prj-properties) + (ada-find-any-references): Update for above name change. + + * dirtrack.el (dirtrack-directory-function) + (dirtrack-canonicalize-function): + * filecache.el (file-cache-completion-ignore-case) + (file-cache-case-fold-search, file-cache-ignore-case): + * term.el (serial-port-is-file-p): Cosmetic change. + + * emulation/viper-init.el (viper-ms-style-os-p): Doc fix. + Remove non-existent `windows-95' system-type. + * dired.el (dired-chown-program): Remove non-existent `linux' + system-type. + + * net/net-utils.el (net-utils-remove-ctl-m): Use memq for system-types. + (ping-program-options): Remove non-existent `linux' system-type. + + * startup.el (package-initialize): Update declaration. + + * ls-lisp.el (ls-lisp-time-lessp, ls-lisp-time-to-seconds): Remove. + (ls-lisp-handle-switches): Use time-less-p. + (ls-lisp-format-time): Use float-time. + + * textmodes/remember.el (remember-time-to-seconds): Remove. + (remember-store-in-mailbox): Use float-time. + + * calendar/timeclock.el (timeclock-time-to-seconds): Make it an alias. + + * calendar/time-date.el (time-to-seconds): Always an alias on Emacs, + never a real function. + (with-no-warnings): Remove compat stub, now unused. + (time-less-p): Doc fix. + (time-to-number-of-days): Simplify. + + * eshell/esh-util.el (eshell-time-less-p, eshell-time-to-seconds): + Remove. + (eshell-read-passwd, eshell-read-hosts): Use time-less-p. + * eshell/esh-test.el (eshell-test, eshell-show-usage-metrics): + * eshell/em-unix.el (eshell-show-elapsed-time, eshell/time): + * eshell/em-pred.el (eshell-pred-file-time): Use float-time. + * eshell/em-ls.el (eshell-ls-sort-entries): Use time-less-p. + + * eshell/em-unix.el (eshell-remove-entries, eshell/rm) + (eshell-shuffle-files, eshell-shorthand-tar-command) + (eshell-mvcpln-template, eshell/mv, eshell/cp, eshell/ln): + Prefix dynamic locals `interactive', `preview', `recursive', `verbose'. + * eshell/em-glob.el (eshell-extended-glob, eshell-glob-entries): + Prefix dynamic local variable `matches'. + + * skeleton.el (skeleton-internal-list, skeleton-internal-1): + Prefix dynamic local variable `skeleton'. + +2010-11-10 Katsumi Yamaoka + + * net/browse-url.el (browse-url-mail): Insert body part of mailto url + in mail buffer; make yank-action always a command that yanks original + buffer. + +2010-11-09 Glenn Morris + + * progmodes/tcl.el (tcl-hairy-scan-for-comment): Doc fix. + +2010-11-09 Stefan Monnier + + * minibuffer.el (minibuffer-completion-help): Specify the end of the + completion field (bug#7211). + + * progmodes/python.el (python-font-lock-syntactic-keywords): (bug#7322) + Fix handling of backslash escapes. + (python-quote-syntax): Adjust accordingly. + +2010-11-09 Richard Levitte (tiny change) + + * vc-mtn.el (vc-mtn-working-revision, vc-mtn-after-dir-status) + (vc-mtn-workfile-branch): Adjust to new output format. + +2010-11-09 Stefan Monnier + + * international/mule-cmds.el (princ-list): Mark as obsolete. + +2010-11-09 Stefan Monnier + + * emacs-lisp/smie.el: New package. + +2010-11-09 Michael Albinus + + * files.el (backup-by-copying-when-mismatch): + Set `permanent-local' property. + + * net/tramp.el (tramp-handle-insert-file-contents): Do not set + `permanent-local' property for `backup-by-copying-when-mismatch'. + +2010-11-09 Eli Zaretskii + + * ls-lisp.el (insert-directory): Doc fix. (bug#7285) + +2010-11-09 Wilson Snyder + + * progmodes/verilog-mode.el (verilog-insert-one-definition) + (verilog-read-decls, verilog-read-sub-decls-sig): Fix AUTOWIRE and + AUTOINOUT for SV style multidimensional arrays, bug294. + Reported by Eric Mastromarchi. + (verilog-preprocess): Use with-current-buffer and + font-lock-fontify-buffer to cleanup style issues. + +2010-11-09 Glenn Morris + + * locate.el (locate, locate-mode): Doc fixes. + +2010-11-09 Chong Yidong + + * server.el (server-start): New arg INHIBIT-PROMPT prevents asking + user for confirmation. + (server-force-stop): Use it. + (server-start): Use server-force-stop for kill-emacs-hook, to + avoid user interaction while killing Emacs. + +2010-11-09 Glenn Morris + + * progmodes/meta-mode.el: Remove leading `*' from defcustom docs. + (meta-indent-line): Simplify. + + * vc/emerge.el (emerge-line-number-in-buf): + * textmodes/ispell.el (ispell-region): + * textmodes/fill.el (current-fill-column): + * progmodes/xscheme.el (xscheme-send-current-line): + * progmodes/vhdl-mode.el (vhdl-current-line, vhdl-line-copy): + * progmodes/tcl.el (tcl-hairy-scan-for-comment): + * progmodes/sh-script.el (sh-handle-prev-do): + * progmodes/meta-mode.el (meta-indent-line): + * progmodes/idlwave.el (idlwave-goto-comment, idlwave-fill-paragraph) + (idlwave-in-quote): + * progmodes/idlw-shell.el (idlwave-shell-current-frame) + (idlwave-shell-update-bp-overlays, idlwave-shell-sources-filter): + * progmodes/fortran.el (fortran-looking-at-if-then): + * progmodes/etags.el (find-tag-in-order, etags-snarf-tag): + * progmodes/cperl-mode.el (cperl-sniff-for-indent) + (cperl-find-pods-heres): + * progmodes/ada-mode.el (ada-get-current-indent, ada-narrow-to-defun): + * net/quickurl.el (quickurl-list-insert): + * net/ldap.el (ldap-search-internal): + * net/eudc.el (eudc-expand-inline): + * mail/sendmail.el (sendmail-send-it): + * mail/mspools.el (mspools-visit-spool, mspools-get-spool-name): + * emulation/viper-cmd.el (viper-paren-match, viper-backward-indent) + (viper-brac-function): + * calc/calc-yank.el (calc-do-grab-region): + * calc/calc-keypd.el (calc-keypad-press): + * term.el (term-move-columns, term-insert-spaces): + * speedbar.el (speedbar-highlight-one-tag-line): + * simple.el (current-word): + * mouse-drag.el (mouse-drag-should-do-col-scrolling): + * info.el (Info-find-node-in-buffer-1, Info-follow-reference) + (Info-scroll-down): + * hippie-exp.el (he-line-beg): + * epa.el (epa--marked-keys): + * dired-aux.el (dired-kill-line, dired-do-kill-lines) + (dired-update-file-line, dired-add-entry, dired-remove-entry) + (dired-relist-entry): + * buff-menu.el (Buffer-menu-buffer): + * array.el (current-line): + * allout.el (allout-resolve-xref) + (allout-latex-verbatim-quote-curr-line): + Replace yet more uses of end-of-line etc with line-end-position, etc. + +2010-11-08 Stefan Monnier + + * emacs-lisp/checkdoc.el (checkdoc-display-status-buffer) + (checkdoc-interactive-loop, checkdoc-recursive-edit): Avoid princ-list. + (checkdoc-syntax-table): Initialize in the declaration. + (emacs-lisp-mode-hook): Use just checkdoc-minor-mode now that it turns + the mode on unconditionally. + + * emacs-lisp/cl-macs.el (extent-data, extent-face, extent-priority) + (extent-end-position, extent-start-position): Remove setf method for + non-existing functions (bug#7319). + +2010-11-07 Stefan Monnier + + * emacs-lisp/smie.el: Simplify the smie-rules-function return values. + (smie-precs->prec2): Rename from smie-precs-precedence-table. + (smie-bnf->prec2): Rename from smie-bnf-precedence-table. + (smie-prec2->grammar): Rename from smie-prec2-levels. + (smie-grammar): Rename from smie-op-levels. + (smie-indent--hanging-p): Rename from smie-hanging-p. + (smie-rule-hanging-p): New alias. + (smie-indent--bolp): Rename from smie-bolp. + (smie-indent--hanging-p): New alias. + (smie--token): New dynamically bound variable. + (smie-indent--parent): New function. + (smie-rule-parent-p): Use it; rename from smie-parent-p. + (smie-rule-next-p): Rename from smie-next-p. + (smie-rule-prev-p): Rename from smie-prev-p. + (smie-rule-sibling-p, smie-rule-parent) + (smie-indent--separator-outdent, smie-rule-separator): New functions. + (smie-rule-separator-outdent): New var. + (smie-indent--rule): Merge with smie-indent--column. + (smie-indent-forward-token, smie-indent-backward-token): + Also recognize close parens. + (smie-indent-keyword): Don't use smie-indent--column any more. + (smie-indent-after-keyword): Ignore closers by default. + (smie-indent-line): Use with-demoted-errors. + * progmodes/octave-mod.el (octave-smie-grammar): + Rename from octave-smie-op-levels. + (octave-smie-rules): Adjust to new behavior. + * progmodes/prolog.el (prolog-smie-grammar): + Rename from prolog-smie-op-levels. + +2010-11-07 Glenn Morris + + * eshell/esh-util.el (subst-char-in-string) + (directory-files-and-attributes): These compatibility definitions are + not needed on any version of Emacs since at least 21.4. + + * progmodes/verilog-mode.el (verilog-get-beg-of-line) + (verilog-get-end-of-line): Remove. + (verilog-within-string, verilog-re-search-forward-substr) + (verilog-re-search-backward-substr, verilog-set-auto-endcomments) + (verilog-surelint-off, verilog-getopt-file, verilog-highlight-region): + Use point-at-bol, point-at-eol. + * progmodes/pascal.el (pascal-get-beg-of-line, pascal-get-end-of-line): + Remove. + (pascal-declaration-end, pascal-declaration-beg, pascal-within-string) + (electric-pascal-terminate-line, pascal-set-auto-comments) + (pascal-indent-paramlist, pascal-indent-declaration) + (pascal-get-lineup-indent, pascal-func-completion) + (pascal-get-completion-decl, pascal-var-completion, pascal-completion): + Use point-at-bol, point-at-eol. + * progmodes/flymake.el (flymake-line-beginning-position) + (flymake-line-end-position): Remove. + (flymake-highlight-line): Use point-at-bol, point-at-eol. + * eshell/esh-util.el (line-end-position, line-beginning-position): + Remove compat definitions. + + * emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine): + Use end-of-line N. + (checkdoc-this-string-valid-engine, checkdoc-file-comments-engine): + Use line-end-position. + + * emacs-lisp/chart.el (chart-zap-chars): + * play/decipher.el (decipher-set-map): + * progmodes/ada-mode.el (ada-get-current-indent) + (ada-search-ignore-string-comment, ada-tab-hard, ada-untab-hard): + * progmodes/ada-prj.el (ada-prj-load-from-file, ada-prj-display-help): + * progmodes/ada-xref.el (ada-initialize-runtime-library) + (ada-get-all-references): + * progmodes/cperl-mode.el (cperl-electric-paren) + (cperl-electric-rparen, cperl-electric-keyword, cperl-electric-else) + (cperl-linefeed, cperl-sniff-for-indent, cperl-to-comment-or-eol) + (cperl-find-pods-heres, cperl-indent-exp, cperl-fix-line-spacing) + (cperl-word-at-point-hard): + * progmodes/idlw-shell.el (idlwave-shell-move-or-history) + (idlwave-shell-filename-string, idlwave-shell-batch-command) + (idlwave-shell-display-line): + * progmodes/idlwave.el (idlwave-show-begin, idlwave-fill-paragraph) + (idlwave-calc-hanging-indent, idlwave-auto-fill, idlwave-template): + * progmodes/js.el (js--re-search-forward-inner) + (js--re-search-backward-inner): + * progmodes/vhdl-mode.el (vhdl-align-region-1, vhdl-align-region-2) + (vhdl-fix-clause, vhdl-compose-configuration-architecture): + * progmodes/ruby-mode.el (ruby-parse-partial, eval-when-compile): + * textmodes/flyspell.el (flyspell-process-localwords): + * textmodes/ispell.el (ispell-buffer-local-parsing) + (ispell-buffer-local-dict, ispell-buffer-local-words): + Use point-at-bol and point-at-eol. + + * speedbar.el (speedbar-generic-item-info) + (speedbar-item-info-tag-helper, speedbar-change-expand-button-char) + (speedbar-add-indicator, speedbar-check-vc-this-line) + (speedbar-check-obj-this-line, speedbar-extract-one-symbol) + (speedbar-buffers-line-directory, speedbar-buffer-revert-buffer): + Replace more uses of end-of-line etc with line-end-position. + +2010-11-06 Glenn Morris + + * textmodes/texnfo-upd.el (texinfo-start-menu-description) + (texinfo-update-menu-region-beginning, texinfo-menu-first-node) + (texinfo-delete-existing-pointers, texinfo-find-pointer) + (texinfo-clean-up-node-line, texinfo-insert-node-lines) + (texinfo-multiple-files-update): + * textmodes/table.el (table--probe-cell-left-up) + (table--probe-cell-right-bottom): + * textmodes/picture.el (picture-tab-search): + * textmodes/page-ext.el (pages-copy-header-and-position) + (pages-directory-for-addresses): + * progmodes/vera-mode.el (vera-get-offset): + * progmodes/simula.el (simula-calculate-indent): + * progmodes/python.el (python-pdbtrack-overlay-arrow): + * progmodes/prolog.el (end-of-prolog-clause): + * progmodes/perl-mode.el (perl-calculate-indent, perl-indent-exp): + * progmodes/icon.el (indent-icon-exp): + * progmodes/etags.el (tag-re-match-p): + * progmodes/ebrowse.el (ebrowse-show-file-name-at-point): + * progmodes/ebnf2ps.el (ebnf-begin-file): + * progmodes/dcl-mode.el (dcl-back-to-indentation-1) + (dcl-save-local-variable): + * play/life.el (life-setup): + * play/gametree.el (gametree-looking-at-ply): + * nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set): + * mail/sendmail.el (mail-mode-auto-fill): + * emacs-lisp/lisp-mode.el (calculate-lisp-indent): + * emacs-lisp/edebug.el (edebug-overlay-arrow): + * emacs-lisp/checkdoc.el (checkdoc-this-string-valid): + * woman.el (woman-parse-numeric-value, woman2-TH, woman2-SH) + (woman-tab-to-tab-stop, WoMan-warn-ignored): + * type-break.el (type-break-file-keystroke-count): + * term.el (term-replace-by-expanded-history-before-point) + (term-skip-prompt, term-extract-string): + * speedbar.el (speedbar-edit-line, speedbar-expand-line) + (speedbar-contract-line, speedbar-toggle-line-expansion) + (speedbar-parse-c-or-c++tag, speedbar-parse-tex-string) + (speedbar-buffer-revert-buffer, speedbar-highlight-one-tag-line): + * sort.el (sort-skip-fields): + * skeleton.el (skeleton-internal-list): + * simple.el (line-move-finish, line-move-to-column): + * shell.el (shell-forward-command): + * misc.el (copy-from-above-command): + * makesum.el (double-column): + * ebuff-menu.el (electric-buffer-update-highlight): + * dired.el (dired-move-to-end-of-filename): + * dframe.el (dframe-popup-kludge): + * bookmark.el (bookmark-kill-line, bookmark-bmenu-show-filenames): + * arc-mode.el (archive-get-lineno): + Use line-end-position and line-beginning-position. + + * progmodes/idlwave.el (idlwave-routine-entry-compare-twins): + (idlwave-study-twins): Prefix dynamic local `class'. + (idlwave-routine-twin-compare): Update for above name change. + + * emacs-lisp/eieio-comp.el (byte-compile-file-form-defmethod): + Use boundp tests to silence compiler. Update for changed name of + bytecomp-filename variable. + + * emulation/viper-cmd.el (viper-read-string-with-history): + Prefix dynamic local `initial'. + (viper-minibuffer-standard-hook): Update for above name change. + + * emacs-lisp/elint.el (elint-init-env): Prefix dynamic local `env'. + (elint-init-form): Update for above name change. + + * mail/mail-extr.el (mail-extract-address-components): Give dynamic + local variables `cbeg' and `cend' a prefix. + (mail-extr-voodoo): Update for above name change. + + * textmodes/reftex-toc.el (reftex-toc-do-promote) + (reftex-toc-promote-prepare): Pass `delta' as an explicit argument. + (reftex-toc-promote-action): Doc fix. + + * textmodes/reftex-sel.el (reftex-select-item): Give local variables + `prompt', `data' a prefix. + (reftex-select-post-command-hook, reftex-select-callback) + (reftex-select-mouse-accept, reftex-select-read-cite): + Update for above name changes. + + * textmodes/reftex-ref.el (reftex-reference): Rename local variable + `refstyle' to reftex-refstyle. + (reftex-offer-label-menu): Update for above name change. + * textmodes/reftex-sel.el (reftex-select-toggle-varioref): Update for + `refstyle' name change. + + * vc/emerge.el (emerge-eval-in-buffer): Remove, and replace all uses + with with-current-buffer. + (diff, template): Give dynamic local variables a prefix. + (emerge-line-numbers): Rename local `diff' to emerge-line-diff. + (emerge-line-number-in-buf): Update for above name change. + (emerge-combine-versions-internal): Rename local `template' to + emerge-combine-template. + (emerge-combine-versions-edit): Update for above name change. + +2010-11-06 Ralf Angeli + + * textmodes/reftex-cite.el + (reftex-extract-bib-entries-from-thebibliography): Match bibitem + entries with whitespace after \bibitem. + (reftex-create-bibtex-file): Match entries containing numbers and + symbol constituents. Make sure that entries with whitespace at + various places are found. + +2010-11-05 Christian Millour (tiny change) + + * shell.el (shell-process-popd): Made aware of comint-file-name-prefix. + +2010-11-05 Jan Djärv + + * mouse.el (mouse-yank-primary): Update comment (Bug#6802). + +2010-11-05 Glenn Morris + + * woman.el (woman0-roff-buffer, woman1-roff-buffer) + (woman2-roff-buffer): Give local variable `request' a prefix. + (woman0-macro): Rename argument `request' in the same way. + (woman-request): New name for `request' dynamic variable. + (woman-unquote, woman-forward-arg): Update for above name change. + (woman1-roff-buffer): Give local variable `unquote' a prefix. + (woman1-unquote): New name for `unquote' dynamic variable. + (woman1-B-or-I, woman1-alt-fonts): Update for above name change. + (woman-translations): Rename from `translations'. No longer global. + (woman2-tr, woman-translate): Update for above name change. + (woman-translate): Check for bound variable. + (woman2-roff-buffer): Give local variable `translations' a prefix. + + * play/doctor.el: Give all local variables a prefix. Update callers. + (doc$, doctor-put-meaning): Use backquote. + + * emacs-lisp/cl-macs.el (loop): Give local variable args a prefix. + (cl-parse-loop-clause, cl-loop-handle-accum): Update for above change. + + * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Give local + variables bytes, ptr, op a prefix. + (disassemble-offset): Update for above change. + +2010-11-03 Chong Yidong + + * emacs-lisp/package.el (package-unpack): Remove no-op. + (package--builtins, package--dir): Doc fix. + (package-activate-1, package-activate, package-install) + (package-compute-transaction): Fix error message. + (package-delete): Use delete-directory. Omit system packages. + (package-initialize): Set package-alist to nil first. + (package-menu-mark-delete, package-menu-mark-install): Don't add + symbols that are inconsistent with the package state. + (package-menu-execute): Perform deletions and installations as + single batch operations. + +2010-11-03 Glenn Morris + + * progmodes/idlwave.el (idlwave-pset): Only used on XEmacs. + (props): Remove unnecessary declaration. + + * textmodes/ispell.el (ispell-init-process): On Emacs, always use + set-process-query-on-exit-flag. + + * textmodes/reftex-toc.el (name1, dummy, dummy2): Remove unused decs. + (reftex-toc-do-promote): Remove unused local `mpos'. + (reftex-toc-restore-region): Make `mpos' local to this function. + + * net/dbus.el (dbus-name-owner-changed-handler): Doc fix. + + * play/landmark.el (lm-losing-threshold): Correct spelling. + (lm-human-plays): Use new name. + + * play/gomoku.el (gomoku-loosing-threshold): Correct spelling. + (gomoku-human-plays): Use new name. + + * play/gomoku.el (nil-score, Xscore, XXscore, XXXscore, XXXXscore) + (Oscore, OOscore, OOOscore, OOOOscore): Rename with gomoku- prefix. + (gomoku-score-trans-table, gomoku-winning-threshold) + (gomoku-loosing-threshold, gomoku-init-score-table): Use new names. + +2010-11-03 Chong Yidong + + * emacs-lisp/package.el: Don't put built-in packages in + package-alist, to avoid loading inefficiencies. + (package-built-in-p): Make VERSION optional, and treat it as a + minimum acceptable version. + (package-activate): Search separately for built-in packages. + Emit a warning if a dependency fails. + (define-package): Handle most common case, where there is no + obsolete package, first. + (package-compute-transaction): Print required version in error. + (package--initialized): New variable. + (list-packages): Use it. + (package-initialize): Optional arg NO-ACTIVATE. Don't put + built-in packages in packages-alist; keep it separate. + Set package--initialized. + (describe-package): Avoid activating packages as a side-effect. + Search separately for built-in packages. + (describe-package-1): Handle the case where an elpa package is + simultaneously built-in and available/installed. + (package-installed-p, package--generate-package-list): + Search separately for built-in packages. + (package-load-descriptor): Doc fix. + +2010-11-03 Stefan Monnier + + * progmodes/perl-mode.el (perl-syntax-propertize-function): + Handle __DATA__ and __END__. + +2010-11-02 Noah Friedman + + * emacs-lisp/bytecomp.el (byte-recompile-file): If bytecomp-arg is + nil, do not ask to recompile files that are not already compiled, + and do not recompile them. + +2010-11-02 Chong Yidong + + * emacs-lisp/package.el (package-initialize): Ensure that + obsoleted built-in packages are not in package-activated-list + during activation. + (describe-package-1): Make the "installed" status override + "built-in". + +2010-11-01 Vinicius Jose Latorre + + * subr.el (version-separator, version-regexp-alist): Remove '*' + from docstring. + (version-list-<=, version<=, version=): Doc fix. + +2010-11-01 Kenichi Handa + + * faces.el (glyphless-char): Inherit underline for tty. + +2010-11-01 Kenichi Handa + + Implement various display methods for glyphless characters. + + * international/characters.el (char-acronym-table): New variable. + (glyphless-char-control): New variable. + (update-glyphless-char-display): New function. + + * faces.el (glyphless-char): New face. + +2010-11-01 Glenn Morris + + * calendar/holidays.el (general-holidays, oriental-holidays) + (local-holidays, other-holidays, hebrew-holidays, christian-holidays) + (islamic-holidays, bahai-holidays, solar-holidays): Move aliases before + the definitions of their targets. + + * emacs-lisp/smie.el (smie): New custom group. + (smie-blink-matching-inners, smie-indent-basic): Add :group. + + * faces.el (xw-defined-colors, x-setup-function-keys): + * mouse-sel.el (x-select-text): + * term/w32console.el (x-setup-function-keys): Update declarations. + + * progmodes/ruby-mode.el (ruby-syntax-propertize-heredoc): Declare. + + * textmodes/ispell.el (comment-add): Declare. + + * net/gnutls.el (gnutls-boot, gnutls-errorp, gnutls-error-string): + Declare. + + * info.el (finder-keywords-hash, package-alist): Declare. + +2010-11-01 Chong Yidong + + * finder.el (finder-compile-keywords): Don't use intern-soft, + since package names may not yet exist in the obarray. + +2010-11-01 Chong Yidong + + * vc/vc-arch.el (vc-arch-checkin): + * vc/vc-cvs.el (vc-cvs-checkin): + * vc/vc-mtn.el (vc-mtn-checkin): + * vc/vc-rcs.el (vc-rcs-checkin): + * vc/vc-sccs.el (vc-sccs-checkin): + * vc/vc-svn.el (vc-svn-checkin): Remove optional extra arg, unused + since 2010-04-21 commit by Stefan Monnier. + +2010-11-01 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-recompile-file): Fix previous change. + + * startup.el (package-enable-at-startup, package-initialize): + Silence compiler. + + * progmodes/ada-mode.el (ada-font-lock-syntactic-keywords): + Silence compiler. + +2010-10-31 Julien Danjou + + * emacs-lisp/bytecomp.el (byte-recompile-file): New fun (bug#7297). + (byte-recompile-directory): + * emacs-lisp/lisp-mode.el (emacs-lisp-byte-compile-and-load): + Use `byte-recompile-file'. + +2010-10-31 Glenn Morris + + * cus-start.el: Handle standard values via a keyword. + Only set version property if specified. + (cursor-in-non-selected-windows, menu-bar-mode) + (tool-bar-mode, show-trailing-whitespace): + Do not specify standard values. + (transient-mark-mode, temporary-file-directory): Use :standard. + +2010-10-31 Jan Djärv + + * term/x-win.el (x-get-selection-value): New function that gets + PRIMARY with type as specified in x-select-request-type. (Bug#6802) + +2010-10-31 Michael Albinus + + * net/tramp.el (tramp-handle-insert-file-contents): For root, + preserve owner and group when editing files. (Bug#7289) + +2010-10-31 Glenn Morris + + * speedbar.el (speedbar-mode): + * play/fortune.el (fortune-in-buffer, fortune): + * play/gomoku.el (gomoku-mode): + * play/landmark.el (lm-mode): + * textmodes/bibtex.el (bibtex-validate, bibtex-validate-globally): + Replace inappropriate uses of toggle-read-only. (Bug#7292) + + * select.el (x-selection): Mark it as an obsolete alias. + +2010-10-31 Aaron S. Hawley + + * vc/add-log.el (find-change-log): Use derived-mode-p rather than + major-mode (bug#7284). + +2010-10-31 Glenn Morris + + * menu-bar.el (menu-bar-files-menu): Make it into an actual alias, + rather than just an unused variable that inherits from the real one. + +2010-10-31 Alan Mackenzie + + * progmodes/cc-cmds.el (c-mask-paragraph): Fix an off-by-1 error. + This fixes bug #7185. + +2010-10-30 Chong Yidong + + * startup.el (command-line): Search for package directories, and + don't load package.el if none are found. + + * emacs-lisp/package.el (describe-package, list-packages): + Call package-initialize if it has not been called yet. + +2010-10-30 Alan Mackenzie + + * progmodes/cc-fonts.el (c-font-lock-enum-tail): New function + which fontifies the tail of an enum. + (c-basic-matchers-after): Insert a call to the above new function. + This fixes bug #7264. + +2010-10-30 Glenn Morris + + * cus-start.el: Add :set properties for minor modes menu-bar-mode, + tool-bar-mode, transient-mark-mode. (Bug#7306) + Include the :set property in the dumped Emacs. + +2010-10-29 Stefan Monnier + + SMIE: change indent rules format, improve smie-setup. + * emacs-lisp/smie.el (smie-precs-precedence-table) + (smie-merge-prec2s, smie-bnf-precedence-table, smie-prec2-levels): + Mark them pure so the tables gets built at compile time. + (smie-bnf-precedence-table): Store the closer-alist in the table. + (smie-prec2-levels): Preserve the closer-alist. + (smie-blink-matching-open): Be more forgiving in case of indentation. + (smie-hanging-p): Rename from smie-indent--hanging-p. + (smie-bolp): Rename from smie-indent--bolp. + (smie--parent, smie--after): New dynamic vars. + (smie-parent-p, smie-next-p, smie-prev-p): New funs. + (smie-indent-rules): Remove. + (smie-indent--offset-rule): Remove fun. + (smie-rules-function): New var. + (smie-indent--rule): New fun. + (smie-indent--offset, smie-indent-keyword, smie-indent-after-keyword) + (smie-indent-exps): Use it. + (smie-setup): Setup paren blinking; add keyword args for token + functions; extract closer-alist from op-levels. + (smie-indent-debug-log): Remove var. + (smie-indent-debug): Remove fun. + * progmodes/prolog.el (prolog-smie-indent-rules): Remove. + (prolog-smie-rules): New fun to replace it. + (prolog-mode-variables): Simplify. + * progmodes/octave-mod.el (octave-smie-closer-alist): Remove, now that + it's setup automatically. + (octave-smie-indent-rules): Remove. + (octave-smie-rules): New fun to replace it. + (octave-mode): Simplify. + +2010-10-29 Glenn Morris + + * files.el (temporary-file-directory): Remove (already defined in C). + * cus-start.el: Add temporary-file-directory. + + * abbrev.el (abbrev-mode): + * composite.el (auto-composition-mode): + * menu-bar.el (menu-bar-mode): + * simple.el (transient-mark-mode): + * tool-bar.el (tool-bar-mode): Adjust the define-minor-mode calls so + that they do not define the associated variables twice. + * simple.el (transient-mark-mode): Remove defvar. + * composite.el (auto-composition-mode): Make variable auto-buffer-local. + * cus-start.el: Add transient-mark-mode, menu-bar-mode, tool-bar-mode. + Handle multiple groups, and also custom-delayed-init-variables. + * emacs-lisp/easy-mmode.el (define-minor-mode): Doc fix. + +2010-10-29 Stefan Monnier + + * emacs-lisp/pcase.el (pcase): New `string' and `guard' patterns. + (pcase-if): Add one minor optimization. + (pcase-split-equal): Rename from pcase-split-eq. + (pcase-split-member): Rename from pcase-split-memq. + (pcase-u1): Add strings to the member optimization. + Add `guard' variant of predicates. + (pcase-q1): Add string patterns. + +2010-10-28 Stefan Monnier + + * vc/log-edit.el (log-edit-rewrite-fixes): State its safety pred. + +2010-10-28 Glenn Morris + + * term/ns-win.el (global-map, menu-bar-final-items, menu-bar-help-menu): + Move menu-bar related settings to ../menu-bar.el. + * menu-bar.el (global-map, menu-bar-final-items, menu-bar-help-menu): + Move ns-specific settings here from term/ns-win.el. + + * simple.el (x-selection-owner-p): Remove unused declaration. + +2010-10-28 Stefan Monnier + + * minibuffer.el (completion-cycling): New var (bug#7266). + (minibuffer-complete, completion--do-completion): + Use completion--flush-all-sorted-completions. + (minibuffer-complete): Only cycle if completion-cycling is set. + (completion--flush-all-sorted-completions): Unset completion-cycling. + (minibuffer-force-complete): Set completion-cycling. + (completion-all-sorted-completions): Move declaration before first use. + +2010-10-28 Leo + + * iswitchb.el (iswitchb-kill-buffer): Avoid `iswitchb-make-buflist' + which changes the order of matches seen by users (bug#7231). + +2010-10-28 Jes Bodi Klinke (tiny change) + + * progmodes/compile.el (compilation-mode-font-lock-keywords): + Don't confuse -omega as "-o mega". + +2010-10-27 Stefan Monnier + + * vc/log-edit.el (log-edit-rewrite-fixes): New var. + (log-edit-author): New dynamic var. + (log-edit-changelog-ours-p, log-edit-insert-changelog-entries): Use it + to return the author if different from committer. + (log-edit-insert-changelog): Use them to add Author: and Fixes headers. + + * play/landmark.el: Adjust commenting convention. + (lm-nil-score): Rename from nil-score. + (Xscore, XXscore, XXXscore, XXXXscore, Oscore, OOscore, OOOscore) + (OOOOscore): Move into a let in lm-score-trans-table. + (lm-winning-threshold, lm-loosing-threshold): Use lm-score-trans-table. + + * electric.el (electric-indent-chars): Autoload. + * progmodes/octave-mod.el (octave-mode): + * progmodes/ruby-mode.el (ruby-mode): Take advantage of it. + (ruby-mode-abbrev-table): Merge initialization and declaration. + +2010-10-27 Glenn Morris + + * abbrev.el (abbrev-mode): Remove one of the three definitions of this + variable. + + * server.el (server-host, server-port, server-auth-dir): Autoload risky. + + * term/ns-win.el: Restore require of cl when compiling. + (menu-bar-final-items): Remove non-existent `windows' menu. + (ns-handle-nxopen): Optionally handle the temp-case. + (ns-handle-nxopentemp): Just call ns-handle-nxopen. + (ns-insert-file, ns-find-file): Use `pop'. + +2010-10-26 Glenn Morris + + * term/common-win.el (xw-defined-colors): Simplify the 'ns case. + +2010-10-26 Adrian Robert + + * term/ns-win.el (ns-new-frame, ns-show-prefs): Don't add to + global map. + * term/common-win.el (x-setup-function-keys): Remove most of the + keymappings. Comment on the remaining ones. + +2010-10-26 Peter Oliver (tiny change) + + * server.el (server-port): New option. (Bug#854) + (server-start): Use server-port. + +2010-10-26 Glenn Morris + + * term/ns-win.el (ns-version-string): Remove unused declaration. + (ns-invocation-args): Change to x-invocation-args. + (ns-handle-switch, ns-handle-numeric-switch, ns-handle-iconic) + (ns-handle-name-switch, ns-ignore-2-arg): Remove. + (ns-handle-nxopen, ns-handle-nxopentemp, ns-ignore-1-arg): + Use x-invocation-args instead of ns-invocation-args. + (ns-initialize-window-system, handle-args-function-alist): + Use x-handle-args instead of ns-handle-args. + * term/common-win.el (x-handle-args): Also handle nextstep arguments. + * startup.el (command-line-ns-option-alist): Replace + ns-handle-name-switch, ns-handle-switch, ns-handle-numeric-switch, + ns-handle-iconic with the x- equivalents. + + * term/common-win.el (x-select-enable-clipboard): + * term/pc-win.el (x-select-enable-clipboard): Doc fix. + + * term/ns-win.el: No need to require cl when compiling. + (x-display-name, x-setup-function-keys, x-select-text, x-colors) + (xw-defined-colors): Use the common-win definitions. + (ns-alternatives-map): Make it an obsolete alias for x-alternatives-map. + (ns-handle-iconic): Make it an alias for x-handle-iconic. + * term/common-win.el (x-select-text, x-alternatives-map) + (x-setup-function-keys, x-colors, xw-defined-colors): Handle 'ns case. + * loadup.el [ns]: Load common-win. + +2010-10-26 Daiki Ueno + + * epa-mail.el (epa-mail-encrypt): Handle local-part only + recipients; expand mail aliases (Bug#7280). + +2010-10-25 Glenn Morris + + * term/common-win.el (x-handle-switch): Simplify with pop. + Optionally handle numeric switches. + (x-handle-numeric-switch): Just call x-handle-switch. + (x-handle-initial-switch, x-handle-xrm-switch, x-handle-geometry) + (x-handle-name-switch, x-handle-display, x-handle-args): + Simplify with pop. + + * term/ns-win.el: Do not require easymenu. + (menu-bar-edit-menu) : + : Move adjustments to menu-bar.el. + * menu-bar.el (menu-bar-edit-menu) : + : Move ns-win's adjustments here. + * loadup.el [ns]: Do not load easymenu. + +2010-10-24 Chong Yidong + + * image.el (image-checkbox-checked, image-checkbox-unchecked): + Delete (Bug#7222). + + * startup.el (fancy-startup-tail): Instead of using inline images, + refer to image files from etc/. + + * wid-edit.el (checkbox): Likewise. + (widget-image-find): Center image specs. + +2010-10-24 Glenn Morris + + * term/ns-win.el (x-select-text): Doc fix. + * w32-fns.el (x-alternatives-map, x-setup-function-keys) + (x-select-text): Move to term/common-win. + * term/w32-win.el (xw-defined-colors): Move to common-win. + * term/x-win.el (xw-defined-colors, x-alternatives-map) + (x-setup-function-keys, x-select-text): Move to common-win. + * term/common-win.el (x-select-text, x-alternatives-map) + (x-setup-function-keys, xw-defined-colors): Merge x- and w32- + definitions here. + +2010-10-24 T.V. Raman (tiny change) + + * net/mairix.el (mairix-searches-mode-map): + * mail/mspools.el (mspools-mode-map): Fix 2010-10-10 change. + +2010-10-24 Michael McNamara + + * progmodes/verilog-mode.el (verilog-directive-re): Make this variable + auto-built for efficiency of execution and updating. + (verilog-extended-complete-re): Support 'pure' fucntion & task + declarations (these have no bodies). + (verilog-beg-of-statement): General cleanup to enable support of + 'pure' fucntion & task declarations (these have no bodies). + These efforts together fix Verilog bug210 from veripool; which was also + noticed by Steve Pearlmutter. + (verilog-directive-re, verilog-directive-begin, verilog-indent-re) + (verilog-directive-nest-re, verilog-set-auto-endcomments): + Support `elsif. Reported by Shankar Giri. + (verilog-forward-ws&directives, verilog-in-attribute-p): Fixes for + attribute handling for lining up declarations and assignments. + (verilog-beg-of-statement-1): Fix issue where continued declaration + is indented differently if it is after a begin..end clock. + (verilog-in-attribute-p, verilog-skip-backward-comments) + (verilog-skip-forward-comment-p): Support proper treatment of + attributes by indent code. Reported by Jeff Steele. + (verilog-in-directive-p): Fix comment to correctly describe function. + (verilog-backward-up-list, verilog-in-struct-region-p) + (verilog-backward-token, verilog-in-struct-p) + (verilog-in-coverage-p, verilog-do-indent) + (verilog-pretty-declarations): Use verilog-backward-up-list as + wrapper around backward-up-list inorder to properly skip comments. + Reported by David Rogoff. + (verilog-property-re, verilog-endcomment-reason-re) + (verilog-beg-of-statement, verilog-set-auto-endcomments) + (verilog-calc-1 ): Fix for assert a; else b; indentation (new form + of if). Reported by Max Bjurling and + (verilog-calc-1): Fix for clocking block in modport + declaration. Reported by Brian Hunter. + +2010-10-24 Wilson Snyder + + * progmodes/verilog-mode.el (verilog-auto-inst, verilog-gate-ios) + (verilog-gate-keywords, verilog-read-sub-decls) + (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios) + (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support + AUTOINST for gate primitives, bug284. Reported by Mark Johnson. + (verilog-read-decls): Fix spaces in V2K module parameters causing + mis-identification as interfaces, bug287. + (verilog-read-decls): Fix not treating "parameter string" as a + parameter in AUTOINSTPARAM. + (verilog-read-always-signals-recurse, verilog-read-decls): Fix not + treating `elsif similar to `endif inside AUTOSENSE. + (verilog-do-indent): Implement correct automatic or static task or + function end comment highlight. Reported by Steve Pearlmutter. + (verilog-font-lock-keywords-2): Fix highlighting of single + character pins, bug264. Reported by Michael Laajanen. + (verilog-auto-inst, verilog-read-decls, verilog-read-sub-decls) + (verilog-read-sub-decls-in-interfaced, verilog-read-sub-decls-sig) + (verilog-subdecls-get-interfaced, verilog-subdecls-new): + Support interfaces with AUTOINST, bug270. Reported by Luis Gutierrez. + (verilog-pretty-expr): Fix interactive arguments, bug272. + Reported by Mark Johnson. + (verilog-auto-tieoff, verilog-auto-tieoff-ignore-regexp): + Add 'verilog-auto-tieoff-ignore-regexp' for AUTOTIEOFF, + bug269. Suggested by Gary Delp. + (verilog-mode-map, verilog-preprocess, verilog-preprocess-history) + (verilog-preprocessor, verilog-set-compile-command): + Create verilog-preprocess and verilog-preprocessor to show + preprocessed output. + (verilog-get-beg-of-line, verilog-get-end-of-line) + (verilog-modi-file-or-buffer, verilog-modi-name) + (verilog-modi-point, verilog-within-string): Move defmacro's + before first use to avoid warning. Reported by Steve Pearlmutter. + (verilog-colorize-buffer, verilog-colorize-include-files-buffer) + (verilog-colorize-region, verilog-highlight-buffer) + (verilog-highlight-includes, verilog-highlight-modules) + (verilog-highlight-region, verilog-mode): Rename colorize to + highlight to match other packages. Disable module highlighting, + as received speed complaints, reenable for experimentation only + using new verilog-highlight-modules. + (verilog-read-decls): Fix regexp stack overflow in very large + AUTO_TEMPLATEs, bug250. + (verilog-auto, verilog-delete-auto, verilog-save-buffer-state) + (verilog-scan): Create verilog-save-buffer-state to standardize + making insignificant changes that shouldn't call hooks. + (verilog-save-no-change-functions, verilog-save-scan-cache) + (verilog-scan, verilog-scan-cache-ok-p, verilog-scan-region): + Create verilog-save-no-change-functions to wrap verilog-scan + preservation, and fix to work with nested preserved calls. + (verilog-auto-inst, verilog-auto-inst-dot-name): Support .name + port syntax for AUTOWIRE, and with new verilog-auto-inst-dot-name + generate .name with AUTOINST, bug245. Suggested by David Rogoff. + (verilog-submit-bug-report): Update variable list to be complete. + (verilog-auto, verilog-colorize-region): Fix AUTO expansion + breaking on-the-fly font-locking. + (verilog-colorize-buffer, verilog-colorize-include-files) + (verilog-colorize-include-files-buffer, verilog-colorize-region) + (verilog-load-file-at-mouse, verilog-load-file-at-point) + (verilog-mode, verilog-read-inst-module-matcher): With point on a + AUTOINST cell instance name, middle mouse button now finds-file on + it. Suggested by Brad Dobbie. + (verilog-alw-get-temps, verilog-auto-reset) + (verilog-auto-sense-sigs, verilog-read-always-signals) + (verilog-read-always-signals-recurse): Fix loop indexes being + AUTORESET. AUTORESET now assumes any variables in the + initialization section of a for() should be ignored. + Reported by Dan Dever. + (verilog-error-font-lock-keywords) + (verilog-error-regexp-emacs-alist) + (verilog-error-regexp-xemacs-alist): Fix error detection of + Cadence HAL, reported by David Asher. Repair drift between the + three similar error variables. + (verilog-modi-lookup, verilog-modi-lookup-cache) + (verilog-modi-lookup-last-current, verilog-modi-lookup-last-mod) + (verilog-modi-lookup-last-modi, verilog-modi-lookup-last-tick): + Fix slow verilog-auto expansion on very large files. + (verilog-read-sub-decls-expr, verilog-read-sub-decls-line): + Fix AUTOOUTPUT treating "1*2" as a signal name in submodule connection + "{1*2{...". Broke in last revision. + (verilog-read-sub-decls-expr): Fix AUTOOUTPUT not detecting + submodule connections with replications "{#{a},#{b}}". + +2010-10-24 Juanma Barranquero + + * progmodes/dcl-mode.el (dcl-electric-reindent-regexps): + Fix typo in docstring. + +2010-10-24 Kenichi Handa + + * face-remap.el (text-scale-adjust): Call read-event with a proper + prompt. + +2010-10-24 Chong Yidong + + * emacs-lisp/unsafep.el: Don't mark functions that display + messages as safe. Suggested by Johan Bockgård. + +2010-10-24 Stefan Monnier + + * emacs-lisp/regexp-opt.el (regexp-opt-group, regexp-opt-charset): + Turn comments into docstrings. + + * minibuffer.el (completion--replace): Move point where it belongs + when there's a common suffix (bug#7215). + +2010-10-24 Chong Yidong + + Merge read-color and facemenu-read-color (Bug#7242). + + * faces.el (read-color): Use the completion code from + facemenu-read-color. Require match in completion. Doc fix. + + * facemenu.el (facemenu-read-color): Alias for read-color. + (facemenu-set-foreground, facemenu-set-background): + Use read-color. + + * frame.el (set-background-color, set-foreground-color) + (set-cursor-color, set-mouse-color, set-border-color): + Use read-color. + +2010-10-24 Leo + + * eshell/em-unix.el (eshell-remove-entries): Use the TRASH + argument of delete-file and delete-directory (Bug#7011). + +2010-10-24 Chong Yidong + + * emacs-lisp/package.el (package-menu-mode-map): Inherit from + button-buffer-map. + +2010-10-24 Ralf Angeli + + * emacs-lisp/package.el (package--generate-package-list): Make the + *Packages* buffer read-only. + +2010-10-24 Alan Mackenzie + + * progmodes/cc-fonts.el (c-font-lock-declarations): Cache the + result of `c-beginning-of-decl-1' between invocations of a lambda + function (Bug #7265). + +2010-10-24 Daiki Ueno + + * epg-config.el (epg-gpg-program): Try to use "gpg2" if "gpg" + executable is not available on the system (Bug#7268). + +2010-10-24 Glenn Morris + + * select.el (selection-coding-system, next-selection-coding-system): + Sync doc with C versions. + + * w32-vars.el (x-select-enable-clipboard): + * term/x-win.el (x-select-enable-clipboard): Move to common-win. + * term/common-win.el (x-select-enable-clipboard): Move here. + + * term/tty-colors.el (tty-defined-color-alist): Remove duplicate + definition of C variable. + + * frame.el (show-trailing-whitespace, auto-hscroll-mode) + (display-hourglass, hourglass-delay, cursor-in-non-selected-windows): + Don't redefine things that are defined in C. + * cus-start.el: Also handle :risky, :safe, :set, and :tag. + (show-trailing-whitespace, auto-hscroll-mode) + (display-hourglass, hourglass-delay, cursor-in-non-selected-windows): + Set up the appropriate custom properties. + +2010-10-24 Chong Yidong + + Bind "C-c ]" to ... + * progmodes/f90.el (f90-mode-map): ... f90-insert-end. + * nxml/nxml-mode.el (nxml-mode-map): ... nxml-finish-element. + * textmodes/tex-mode.el (tex-mode-map): ... latex-close-block. + * textmodes/sgml-mode.el (sgml-mode-map): ... sgml-close-tag. + +2010-10-23 Glenn Morris + + * textmodes/flyspell.el (flyspell-mode): If there was an error, + say what it was. + + * frame.el (auto-hscroll-mode, cursor-in-non-selected-windows): + Sync docs with C version. + + * term/ns-win.el (xw-defined-colors): + * term/x-win.el (xw-defined-colors): Make docs identical to w32-win. + + * term/pc-win.el (x-select-enable-clipboard): + * term/x-win.el (x-select-enable-clipboard): + * w32-vars.el (x-select-enable-clipboard): Make doc-strings identical. + + * comint.el (comint-password-prompt-regexp): Make it less vague. + Bump version. + + * help-fns.el (doc-file-to-man, doc-file-to-info): New commands. + + * help.el (finder-by-keyword): Remove unnecessary autoload. + +2010-10-22 Glenn Morris + + * loadup.el: Unconditionally load float-sup. + * paren.el (show-paren-delay): + * emacs-lisp/float-sup.el: + * emulation/cua-base.el (cua-prefix-override-inhibit-delay): + * obsolete/lazy-lock.el (lazy-lock-defer-time, lazy-lock-stealth-nice) + (lazy-lock-stealth-verbose): Assume float support. + * ps-print.el: Assume float support on Emacs. + * emacs-lisp/timer.el (timer-next-integral-multiple-of-time): + Remove non-float branch. + + * emacs-lisp/autoload.el (batch-update-autoloads): Update for + src/Makefile no longer being pre-processed. + +2010-10-22 Stefan Monnier + + * emacs-lisp/find-func.el (find-library): Use test-completion. + +2010-10-21 Lars Magne Ingebrigtsen + + * newcomment.el (comment-dwim): Fix the intentation in the doc string. + +2010-10-21 Michael Albinus + + * net/tramp-sh.el (tramp-do-file-attributes-with-stat): Do not use + space in stat format string. + (tramp-send-command): Unset $PS1 when using here documents, in + order not to get several prompts. + (tramp-get-inline-coding): Return `nil' in case of errors. + +2010-10-21 Daiki Ueno + + * hexl.el (hexl-mode, hexl-mode-exit): + Tweak revert-buffer-function to inhibit auto-mode-alist (Bug#7252). + (hexl-revert-buffer-function): New function. + (hexl-before-revert-hook, hexl-after-revert-hook): Abolish. + +2010-10-19 Alan Mackenzie + + * progmodes/cc-langs.el (c-type-decl-prefix-key): C++ bit: + Move "\(const\|throw\|volatile\)\>" nearer the start of the regexp, so + that these keywords aren't wrongly matched as identifiers. + + * progmodes/cc-mode.el (c-before-change, c-after-change): Move the + setting of c-new-BEG and c-new-END from c-before-change to + c-after-change. (Bug#7181) + +2010-10-19 Chong Yidong + + * cus-face.el (custom-theme-set-faces): Revert 2010-10-18 change. + Don't mark as safe. + + * custom.el (custom-theme-set-variables): Likewise. + (load-theme): Add custom-theme-set-faces and + custom-theme-set-variables to safe-functions while loading. + (custom-enabled-themes): Mark as risky. + +2010-10-18 Julien Danjou + + * bindings.el: Remove end dashes in default mode-line-format. + +2010-10-19 Chong Yidong + + * bindings.el (global-map): Bind C-d to delete-char and deletechar + to delete-forward-char. + + * simple.el (normal-erase-is-backspace-mode): Remap delete to + deletechar, and hence delete-forward-char. + +2010-10-19 Stefan Monnier + + * repeat.el (repeat): Use read-key (bug#6256). + +2010-10-19 Chong Yidong + + * emacs-lisp/unsafep.el: Don't mark functions that display + messages as safe. Suggested by Johan Bockgård. + +2010-10-19 Stefan Monnier + + * minibuffer.el (completion--replace): Move point where it belongs + when there's a common suffix (bug#7215). + +2010-10-19 Kenichi Handa + + * international/characters.el: Add category '|' (word breakable) + to fullwidth characters. + +2010-10-19 Michael Albinus + + * net/tramp-sh.el (tramp-do-file-attributes-with-stat) + (tramp-do-directory-files-and-attributes-with-stat): Use "e0" in + order to make stat results a float. Patch by Andreas Schwab + . + +2010-10-18 Julien Danjou + + * avoid.el (mouse-avoidance-ignore-p): Ignore mouse when it is + hidden by `make-pointer-invisible'. + +2010-10-18 Stefan Monnier + + * files.el (locate-file-completion-table): Strip non-matching elements + before checking length of list (bug#7238). + +2010-10-18 Chong Yidong + + * custom.el (custom-theme-set-variables): Mark as a safe function. + (load-theme): Check forms using unsafep. + + * cus-face.el (custom-theme-set-faces): Mark as a safe function. + +2010-10-17 Agustín Martín + + * textmodes/ispell.el (ispell-aspell-find-dictionary): + Fix aspell data file searching (bug#7230). + +2010-10-16 Chong Yidong + + * cus-theme.el (custom-theme--migrate-settings): New var. + (customize-create-theme): Allow editing the `user' theme. + (custom-theme-add-variable, custom-theme-add-var-1) + (custom-theme-add-face, custom-theme-add-face-1): Add a checkbox + to the front of each variable or face widget. + (custom-theme-write): Save theme settings in the correct order. + Optionally, remove saved settings from user customizations. + (custom-theme-write-variables, custom-theme-write-faces): + Save only the checked widgets. + (customize-themes): Add a link for migrating custom settings. + + * custom.el (custom-declare-theme, provide-theme): + Use custom-theme-name-valid-p. + (custom-theme-name-valid-p): Remove checks that are now + unnecessary since themes no longer obey load-path. + + * cus-edit.el (custom-variable-value-create): For the simple + style, hide documentation string when hidden. + +2010-10-16 Chong Yidong + + * cus-edit.el (custom-variable, custom-face): Combine the + :inhibit-magic and :display-style properties into a single + :custom-style property. + (custom-toggle-hide-variable, custom-toggle-hide-face): + New functions. If hiding an edited value, save it to :shown-value. + (custom-variable-value-create, custom-face-value-create): Use them. + (custom-magic-reset): Allow magic property to be unset. + + * custom.el: Custom themes no longer use load-path. + (custom-theme-load-path): New option. Change built-in theme + directory to etc/. + (custom-enabled-themes): Add custom-theme-load-path dependency. + (custom-theme--load-path): New function. + (load-theme, custom-available-themes): Use it. + + * cus-theme.el (describe-theme-1): Use custom-theme--load-path. + (customize-themes): Link to custom-theme-load-path variable. + (custom-theme-add-var-1, custom-theme-add-face-1): Use the + :custom-style property. + + * themes/*.el: Moved to etc/. + +2010-10-16 Ralf Angeli + + * textmodes/reftex-cite.el + (reftex-extract-bib-entries-from-thebibliography): Do not move + point when searching for \bibitem entries. Match entries with + spaces or tabs in front of arguments. + +2010-10-16 Chong Yidong + + * cus-theme.el (customize-create-theme): Delete overlays after + erasing. If given a THEME arg, display only the faces of that arg + instead of custom-theme--listed-faces. + (custom-theme-variable-menu, custom-theme-variable-action) + (custom-variable-reset-theme, custom-theme-delete-variable): Delete. + (custom-theme-add-variable, custom-theme-add-face): Apply value + from the theme settings, instead of the current value. + (custom-theme-add-var-1, custom-theme-add-face-1): New functions. + (custom-theme-visit-theme): Allow calling outside theme buffers. + (custom-theme-merge-theme): Don't enable the theme when merging. + (custom-theme-write-variables, custom-theme-write-faces): Use the + :shown-value properties to save buffer values, not global ones. + (customize-themes): Display a warning about user customizations. + + * cus-edit.el (custom-variable-value-create) + (custom-face-value-create): Obey new special properties + :shown-value and :inhibit-magic. + +2010-10-15 Michael Albinus + + * net/tramp-sh.el (tramp-open-connection-setup-interactive-shell): + Suppress expansion of tabs to spaces. Reported by Dale Sedivec + . + +2010-10-14 Kenichi Handa + + * mail/rmail.el (rmail-show-message-1): Catch an error of + base64-decode-region and just show an error message (bug#7165). + + * ps-mule.el (ps-mule-font-spec-list): Delete it. Not used anymore. + (ps-mule-begin-job): Fix for the case that only ENCODING is set in + a font-spec (bug#7197). + +2010-10-14 Glenn Morris + + * mail/emacsbug.el (report-emacs-bug): Mention debbugs.gnu.org. + +2010-10-14 Juanma Barranquero + + * international/mule.el (define-coding-system): + * international/titdic-cnv.el (quail-cxterm-package-ext-info): + * composite.el (compose-region): Fix typo in docstring. + +2010-10-14 Chong Yidong + + * cus-face.el (custom-theme-set-faces): Call custom-push-theme + only after checking the theme-face property. + + * faces.el (face-spec-reset-face): Reset all attributes in one + single call to set-face-attribute. + (face-spec-match-p): Make it a defsubst. + (frame-set-background-mode): New arg KEEP-FACE-SPECS. + (x-create-frame-with-faces, tty-create-frame-with-faces) + (tty-set-up-initial-frame-faces): Don't recompute face specs in + frame-set-background-mode, since they are recomputed immediately + afterwards in face-set-after-frame-default. + (face-set-after-frame-default): Minor optimization. + (cursor): Provide non-trivial defface spec. + + * custom.el (custom-theme-recalc-face): Simplify. + +2010-10-14 Jay Belanger + + * calc/calc-alg.el (math-var): Rename from `var'. + (math-is-polynomial, math-is-poly-rec): Replace `var' + with `math-var'. + + * calc/calcalg2.el (math-var): Rename from `var'. + (calcFunc-table, math-scan-for-limits): Replace `var' + with `math-var'. + +2010-10-13 Glenn Morris + + * subr.el (last): Deal with dotted lists (reported in bug#7174). + +2010-10-13 Stephen Berman + + * subr.el (last): Use `safe-length' instead of `length' (bug#7206). + +2010-10-13 Lars Magne Ingebrigtsen + + * net/tls.el (tls-program): Remove spurious %s from openssl. + (tls-starttls-switches): Remove starttls hack. + (open-tls-stream): Ditto. + (tls-find-starttls-argument): Ditto. + +2010-10-13 Juanma Barranquero + + * image.el (image-library-alist): Declare as obsolete alias. + (image-type-available-p): Use `dynamic-library-alist'. + + * term/w32-win.el (dynamic-library-alist): + Use instead of `image-library-alist'. + +2010-10-13 IRIE Shinsuke (tiny change) + + * subr.el (last): Make it faster. (Bug#7174) + +2010-10-13 Rainer Orth (tiny change) + + * Makefile.in (compile-clean): Use `` instead of $(). (Bug#7178) + +2010-10-12 Chong Yidong + + * cus-theme.el (custom-theme--listed-faces): Add cursor face. + (describe-theme-1): Extract doc from unloaded themes. + + * custom.el (custom-theme-name-valid-p): Don't list color-themes. + + * themes/tango-theme.el: + * themes/tango-dark-theme.el: + * themes/wheatgrass-theme.el: New files. + +2010-10-12 Chong Yidong + + * cus-theme.el (describe-theme, customize-themes) + (custom-theme-save): New commands. + (custom-new-theme-mode-map): Bind C-x C-s. + (custom-new-theme-mode): Use custom--initialize-widget-variables. + (customize-create-theme): New optional arg THEME. + (custom-theme-revert): Use it. + (custom-theme-visit-theme): Remove dead code. + (custom-theme-merge-theme): Use custom-available-themes. + (custom-theme-write): Make interactive. + (custom-theme-write): Use custom-theme-name-valid-p. + (describe-theme-1, custom-theme-choose-revert) + (custom-theme-checkbox-toggle, custom-theme-selections-toggle): + New funs. + (custom-theme-allow-multiple-selections): New option. + (custom-theme-choose-mode): New major mode. + + * custom.el (custom-theme-set-variables): Remove dead code. + Obey custom--inhibit-theme-enable. + (custom--inhibit-theme-enable): New var. + (provide-theme): Obey it. + (load-theme): Replace load with manual read/eval, in order to + check for correctness. Use custom-theme-name-valid-p. + (custom-theme-name-valid-p): New function. + (custom-available-themes): Use it. + + * cus-edit.el (custom--initialize-widget-variables): New function. + (Custom-mode): Use it. + + * cus-face.el (custom-theme-set-faces): Remove dead code. + Obey custom--inhibit-theme-enable. + + * help-mode.el (help-theme-def, help-theme-edit): New buttons. + +2010-10-12 Juanma Barranquero + + * net/telnet.el (telnet-mode-map): Fix previous change (bug#7193). + +2010-10-12 Jan Djärv + + * term/ns-win.el (ns-right-alternate-modifier): New defvar. + (ns-right-option-modifier): New alias for ns-right-alternate-modifier. + (mac-right-option-modifier): New alias for ns-right-option-modifier. + + * cus-start.el (all): ns-right-alternate-modifier is new. + +2010-10-12 Stefan Monnier + + * emacs-lisp/lisp.el (lisp-completion-at-point): + Use emacs-lisp-mode-syntax-table for the whole function. + +2010-10-12 David Koppelman + + * hi-lock.el (hi-lock-font-lock-hook): Check font-lock-fontified + instead of font-lock-mode before adding keywords. + Remove hi-lock-mode off code. Remove inhibit hack. + (hi-lock-set-pattern): Only add keywords if font-lock-fontified + non-nil; removed hook inhibit hack. + +2010-10-12 Glenn Morris + + * emacs-lisp/shadow.el (find-emacs-lisp-shadows): Rename it... + (load-path-shadows-find): ... to this. + (list-load-path-shadows): Update for above change. + + * mail/mail-utils.el (mail-mbox-from): Also try return-path. + +2010-10-11 Katsumi Yamaoka + + * mail/hashcash.el, net/imap.el, pgg-parse.el, pgg.el: + Fix comment for declare-function. + +2010-10-11 Chong Yidong + + * custom.el (custom-fix-face-spec): New function; code moved from + custom-face-edit-fix-value. + (custom-push-theme): Use it when checking if a face has been + changed outside customize. + (custom-available-themes): New function. + (load-theme): Use it. + + * cus-edit.el (custom-face-edit-fix-value): Use custom-fix-face-spec. + + * custom.el (custom-push-theme): Cleanup (use cond). + (disable-theme): Recompute the saved-face property. + (custom-theme-recalc-face): Follow face alias before setting prop. + + * image.el (image-checkbox-checked, image-checkbox-unchecked): + New variables, containing checkbox images. + + * startup.el (fancy-startup-tail): + * wid-edit.el (checkbox): Use them. + +2010-10-10 Dan Nicolaescu + + * shell.el (shell-mode-map): + * progmodes/modula2.el (m2-mode-map): + * progmodes/inf-lisp.el (inferior-lisp-mode-map): + * play/mpuz.el (mpuz-mode-map): + * play/landmark.el (lm-mode-map): + * play/decipher.el (decipher-mode-map): + * play/5x5.el (5x5-mode-map): + * net/telnet.el (telnet-mode-map): + * net/quickurl.el (quickurl-list-mode-map): + * net/mairix.el (mairix-searches-mode-map): + * net/eudc-hotlist.el (eudc-hotlist-mode-map): + * net/dig.el (dig-mode-map): + * mail/mspools.el (mspools-mode-map): + * hexl.el (hexl-mode-map): + * emulation/ws-mode.el (wordstar-C-k-map, wordstar-mode-map) + (wordstar-C-o-map, wordstar-C-q-map): + * emacs-lisp/edebug.el (edebug-eval-mode-map): + * emacs-lisp/chart.el (chart-map): + * edmacro.el (edmacro-mode-map): + * erc/erc-list.el (erc-list-menu-mode-map): + * array.el (array-mode-map): Declare and define in one step. + + * vc/log-view.el (log-view-mode-map): Bind revert-buffer. + +2010-10-10 Daiki Ueno + + * epa.el (epa-passphrase-callback-function): Display filename + passed as the 3rd arg. + * epa-file.el (epa-file-passphrase-callback-function): + Pass filename to epa-passphrase-callback-function. + +2010-10-09 Chong Yidong + + * cus-edit.el (custom-face-widget-to-spec) + (custom-face-get-current-spec, custom-face-state): New functions. + (custom-face-set, custom-face-mark-to-save) + (custom-face-value-create, custom-face-state-set): Use them. + + * cus-theme.el (custom-theme--listed-faces): New var. + (customize-create-theme): Use *Custom Theme* as the buffer name. + Set revert-buffer-function. Optional arg BUFFER. Insert all + faces listed in custom-theme--listed-faces. + (custom-theme-revert): New function. + (custom-theme-add-variable, custom-theme-add-face): Insert at the + bottom of the list. + (custom-theme-write): Prompt for theme name if empty. + (custom-theme-write-variables): Use dolist. + (custom-theme-write-faces): Handle hidden (collapsed) widgets. + +2010-10-09 Alan Mackenzie + + Enhance fontification of declarators to take account of the + presence/absence of "typedef". + + * cc-engine.el (c-forward-type): New &optional param + "brace-block-too". + (c-forward-decl-or-cast-1): cdr of return value now indicates the + presence of either or both of a "struct"-like keyword and "typedef". + + * cc-fonts.el (c-complex-decl-matchers): Remove the heuristic + fontification of declarators which follow a "}". + (c-font-lock-declarations): Fontify declarators according to the + presence/absence of "typedef". + + * cc-langs.el (c-typedef-kwds c-typedef-key): New lang variable + for "typedef". + (c-typedef-decl-key): New lang variable built from + c-typedef-decl-kwds. + +2010-10-09 Lars Magne Ingebrigtsen + + * ibuffer.el (ibuffer-mode-map): Don't redefine the cursor keys, + since that's too annoying. Move the filter groups commands to + TAB/backtab. + + * epa.el (epa-passphrase-callback-function): Say what we're + querying the password for. + + * ibuffer.el (ibuffer-visit-buffer): To mimick list-buffers + behaviour, don't bury the ibuffer buffer when visiting other buffers. + +2010-10-08 Chong Yidong + + * cus-edit.el (custom-commands, custom-buffer-create-internal) + (custom-magic-value-create): Pad button tags with spaces. + (custom-face-edit): New variable. + (custom-face-value-create): Determine whether to use the usual + face editor here, instead of using custom-face-selected. + Pass face defaults to custom-face-edit widget. + (custom-face-selected, custom-display-unselected): Delete widgets. + (custom-display-unselected-match): Function removed. + (custom-face-set, custom-face-mark-to-save): + Accept custom-face-edit widgets as the direct widget child. + + * wid-edit.el (widget--completing-widget): New var. + (widget-default-complete): Bind it when doing completion. + (widget-string-complete, widget-file-complete): Use it. + +2010-10-09 Glenn Morris + + * calendar/cal-hebrew.el (holiday-hebrew-rosh-hashanah) + (holiday-hebrew-passover, holiday-hebrew-tisha-b-av) + (holiday-hebrew-misc): Small simplifications. + + * emacs-lisp/authors.el (authors-valid-file-names): Add b2m.c. + + * net/browse-url.el: Don't require thingatpt, term, dired, + executable, or w3-auto when compiling. + (dired-get-filename, term-char-mode, term-send-down, term-send-string): + Declare. + (browse-url-text-emacs): Require term. + +2010-10-08 Andreas Schwab + + * net/browse-url.el (browse-url-xdg-open): Remove use of /bin/sh. + +2010-10-08 Glenn Morris + + * emacs-lisp/cl-compat.el, emacs-lisp/lmenu.el: Move to obsolete/. + + * emacs-lisp/shadow.el (lisp-shadow): Change prefix. + (shadows-compare-text-p): Make it an obsolete alias for... + (load-path-shadows-compare-text): ... new name. + (find-emacs-lisp-shadows): Update for above name change. + (load-path-shadows-same-file-or-nonexistent): New name for the old + shadow-same-file-or-nonexistent. + +2010-10-08 Chong Yidong + + * minibuffer.el (completion--some, completion--do-completion) + (minibuffer-complete-and-exit, minibuffer-completion-help) + (completion-basic-try-completion) + (completion-basic-all-completions) + (completion-pcm--find-all-completions): Use lexical-let to + avoid some false matches in variable completion (Bug#7056) + +2010-10-08 Olof Ohlsson Sax (tiny change) + + * vc-svn.el (vc-svn-merge-news): Use --non-interactive. (Bug#7152) + +2010-10-08 Leo + + * dnd.el (dnd-get-local-file-name): If MUST-EXIST is non-nil, only + return non-nil if the file exists (Bug#7090). + +2010-10-08 Stefan Monnier + + * minibuffer.el (completion--replace): + Better preserve markers (bug#7138). + +2010-10-08 Juanma Barranquero + + * server.el (server-process-filter): Doc fix. + +2010-10-08 Drew Adams + + * dired.el (dired-save-positions): Doc fix. (Bug#7119) + +2010-10-08 Glenn Morris + + * vc/ediff-wind.el (ediff-setup-control-frame): + * vc/ediff-ptch.el (ediff-default-backup-extension): + * vc/ediff-diff.el (ediff-shell, ediff-diff-options) + (ediff-exec-process): Remove system-types emx, windows-95. + + * net/browse-url.el (browse-url-xdg-open): Shell-quote url. (Bug#7166) + +2010-10-07 Chong Yidong + + * cus-edit.el (custom-variable, custom-face): Doc fix. + (custom-face-edit): Add value-create attribute. + (custom-face-edit-value-create) + (custom-face-edit-value-visibility-action): New functions. + Hide unused face attributes by default, and add a visibility toggle. + (custom-face-edit-deactivate): Show empty values with shadow face. + (custom-face-selected): Only use this for face specs with default + attributes. + (custom-face-value-create): Cleanup. + + * wid-edit.el (widget-checklist-value-create): Use dolist. + (widget-checklist-match-find): Make second arg optional. + +2010-10-07 Glenn Morris + + * hilit-chg.el (hilit-chg-get-diff-info, hilit-chg-get-diff-list-hk): + Prefix things. + + * emacs-lisp/shadow.el (shadow-font-lock-keywords) + (load-path-shadows-mode, list-load-path-shadows): Rename shadow-mode to + load-path-shadows-mode, update references. + (load-path-shadows-font-lock-keywords, load-path-shadows-find-file): + Rename variable and button. + (list-load-path-shadows): Update button caller. + +2010-10-07 Stefan Monnier + + * emacs-lisp/smie.el (smie-bnf-classify): New function. + (smie-bnf-precedence-table): Use it to remember the closers/openers. + (smie-merge-prec2s): Handle those new entries. + (smie-prec2-levels): Only set precedence to nil for actual + openers/closers. + * progmodes/octave-mod.el (octave-smie-op-levels): Remove dummy entry + that is now unnecessary. + +2010-10-07 Miles Bader + + * emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode. + +2010-10-07 Glenn Morris + + * mail/rmail.el (mail-sendmail-delimit-header, mail-header-end) + (mail-position-on-field): Remove declarations. + (mail-position-on-field): Autoload it. + (rmail-retry-failure): Replace use of mail-sendmail-delimit-header + and mail-header-end. Don't require sendmail. + + * emacs-lisp/shadow.el (shadow-font-lock-keywords): New variable. + (shadow-mode): New mode. + (shadow-find-file): New button. + (list-load-path-shadows): Use shadow-mode and buttons. + + * iimage.el (iimage-version): Remove. + (iimage-mode-image-search-path, iimage-mode-image-regex-alist): + Turn into defcustoms. + (iimage-mode-map): Give it a doc string. + + * calendar/appt.el (appt-activate): Give a warning rather than an error + if there is no diary-file. + +2010-10-06 Michael Albinus + + * net/tramp-sh.el (tramp-sh-file-name-handler-alist): + Use `tramp-handle-find-backup-file-name'. + +2010-10-06 Glenn Morris + + * font-core.el (font-lock-defaults-alist): Remove variable. + (font-lock-mode): Doc fix. + (font-lock-default-function): Do not consult font-lock-defaults-alist. + * font-lock.el (font-lock-refresh-defaults): Doc fix. + (font-lock-set-defaults): Doc fix. + Do not consult font-lock-defaults-alist. + + * hilit-chg.el (hilit-chg-get-diff-list-hk): Declare `e' for compiler. + + * emacs-lisp/cl.el: No longer provide cl-19. + +2010-10-05 Michael Albinus + + * net/tramp.el (tramp-handle-directory-files-and-attributes) + (tramp-handle-file-exists-p, tramp-handle-file-newer-than-file-p): + New defuns, taken from tramp-smb.el. + (tramp-coding-system-change-eol-conversion) + (tramp-set-process-query-on-exit-flag): Remove. + + * net/tramp-compat.el (top): Do not check for byte-compiler objects. + (tramp-compat-coding-system-change-eol-conversion) + (tramp-compat-set-process-query-on-exit-flag): New defuns, taken + from tramp.el. + + * net/tramp-gvfs.el: + * net/tramp-gw.el: Replace `tramp-set-process-query-on-exit-flag' + by `tramp-compat-set-process-query-on-exit-flag'. + + * net/tramp-imap.el (tramp-imap-file-name-handler-alist): + Use `tramp-handle-directory-files-and-attributes', + `tramp-handle-file-exists-p' and + `tramp-handle-file-newer-than-file-p'. + (tramp-imap-handle-file-exists-p) + (tramp-imap-handle-file-executable-p) + (tramp-imap-handle-file-readable-p) + (tramp-imap-handle-directory-files-and-attributes) + (tramp-imap-handle-file-newer-than-file-p): Remove. + + * net/tramp-sh.el: Replace `tramp-set-process-query-on-exit-flag' + by `tramp-compat-set-process-query-on-exit-flag' and + `tramp-coding-system-change-eol-conversion' by + `tramp-compat-coding-system-change-eol-conversion'. + + * net/tramp-smb.el (tramp-smb-file-name-handler-alist): + Use `tramp-handle-directory-files-and-attributes', + `tramp-handle-file-exists-p' and + `tramp-handle-file-newer-than-file-p'. + (tramp-smb-handle-directory-files-and-attributes) + (tramp-smb-handle-file-exists-p) + (tramp-smb-handle-file-newer-than-file-p): Remove. + (tramp-smb-maybe-open-connection): + Replace `tramp-set-process-query-on-exit-flag' by + `tramp-compat-set-process-query-on-exit-flag'. + +2010-10-05 Glenn Morris + + * obsolete/rnews.el, obsolete/rnewspost.el: Remove files. + +2010-10-04 Michael Albinus + + Continue reorganization of load dependencies. (Bug#7156) + + * net/tramp.el (tramp-handle-file-local-copy-hook) + (tramp-delete-temp-file-function): Move down. + (tramp-exists-file-name-handler): Move up. + (tramp-register-file-name-handlers): Simplify autoload. + (tramp-handle-write-region-hook, tramp-handle-directory-file-name) + (tramp-handle-directory-files, tramp-handle-dired-uncache) + (tramp-handle-file-modes, tramp-handle-file-name-as-directory) + (tramp-handle-file-name-completion) + (tramp-handle-file-name-directory) + (tramp-handle-file-name-nondirectory, tramp-handle-file-regular-p) + (tramp-handle-file-remote-p, tramp-handle-file-symlink-p) + (tramp-handle-find-backup-file-name) + (tramp-handle-insert-file-contents, tramp-handle-load) + (tramp-handle-substitute-in-file-name) + (tramp-handle-unhandled-file-name-directory) + (tramp-mode-string-to-int, tramp-local-host-p) + (tramp-make-tramp-temp-file): Move from tramp-sh.el. + + * net/tramp-gvfs.el (top): + * net/tramp-smb.el (top): Do not require 'tramp-sh. + + * net/tramp-sh.el (all): Move several objects to tramp.el, see + there. Rename `tramp-handle-*' to `tramp-sh-handle-*'. + +2010-10-04 Glenn Morris + + * calendar/appt.el (appt-add): Ensure reminders are enabled. + (appt-activate): Give status messages. + +2010-10-03 Teodor Zlatanov + + * net/gnutls.el: Improve docs. Remove starttls and ssl emulation. + Provide only `open-gnutls-stream' (formerly `open-ssl-stream') and + `gnutls-negotiate' (formerly `starttls-negotiate'). + Remove trivial wrapper `starttls-open-stream'. + +2010-10-03 Dan Nicolaescu + + Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and + log-outgoing commands. + * vc/vc.el (vc-log-internal-common): Add a new argument and use it + to create a buffer local revert-buffer-function variable. + (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a + revert-buffer-function lambda. + +2010-10-03 Teodor Zlatanov + + * net/gnutls.el (starttls-negotiate): Use the plist interface to + `gnutls-boot'. Make TYPE the only required parameter. + Allow TRUSTFILES and KEYFILES to be lists. + (open-ssl-stream): Use it. + +2010-10-03 Glenn Morris + + * subr.el (directory-sep-char): Remove obsolete variable. + * net/tramp-compat.el: Don't mess about with the byte-compiler unless + it is "necessary". + + * vc/vc-hooks.el (vc-header-alist): Remove obsolete variable. + * vc/vc.el (vc-static-header-alist): Doc fix. + * vc/vc-cvs.el (vc-cvs-header): + * vc/vc-rcs.el (vc-rcs-header): + * vc/vc-sccs.el (vc-sccs-header): + * vc/vc-svn.el (vc-svn-header): Do not consult vc-header-alist. + * obsolete/vc-mcvs.el (vc-mcvs-header): + * progmodes/cperl-mode.el (cperl-mode): Only set vc-header-alist + on XEmacs. + +2010-10-03 Chong Yidong + + * emacs-lisp/bytecomp.el (byte-compile-from-buffer): + Remove obsolete use of binary-overwrite-mode (Bug#7001). + +2010-10-03 Glenn Morris + + * obsolete/x-menu.el: Remove file, obsolete since 21.1. + + * textmodes/rst.el (rst-font-lock-keywords-function): + Drop Emacs 20 code. + + * textmodes/artist.el (artist-replace-char): Drop Emacs 20 code. + + * printing.el: Drop Emacs 20 code. + + * calendar/appt.el (appt-delete): Don't autoload it (you can't use it + without having used appt.el already). + + * subr.el (make-local-hook): Remove function obsolete since 21.1. + * progmodes/cc-mode.el (make-local-hook): Don't do cc-bytecomp stuff. + (c-basic-common-init, c-font-lock-init): Only call make-local-hook on + XEmacs. + * progmodes/cc-styles.el (make-local-hook): Don't do cc-bytecomp stuff. + (c-make-styles-buffer-local): Only call make-local-hook on XEmacs. + + * ps-def.el (leading-code-private-22, charset-bytes, charset-id) + (charset-width, find-charset-region, chars-in-region, forward-point) + (encode-coding-string, coding-system-p, ccl-execute-on-string) + (define-ccl-program, multibyte-string-p, string-make-multibyte): + Remove compatibility cruft (none of these are used by ps*.el). + +2010-10-03 Kevin Rodgers + + * subr.el (booleanp): Return t instead of a list (Bug#7086). + +2010-10-03 Chong Yidong + + * server.el (server-process-filter, server-return-error): + Give emacsclient time to shut down after receiving an error string. + +2010-10-02 Michael Albinus + + * files.el (remote-file-name-inhibit-cache): New defcustom. + + * time.el (display-time-file-nonempty-p): + Use `remote-file-name-inhibit-cache'. + + * net/tramp.el (tramp-completion-reread-directory-timeout): + Fix docstring. + + * net/tramp-cache.el (tramp-cache-inhibit-cache): Remove. + (tramp-get-file-property): Replace `tramp-cache-inhibit-cache' by + `remote-file-name-inhibit-cache'. Check also for an integer + value. Add/increase counter when `tramp-verbose' >= 10. + (tramp-set-file-property): Add/increase counter when + `tramp-verbose' >= 10. + + * net/tramp-cmds.el (tramp-cleanup-all-connections) + (tramp-cleanup-all-buffers): Set tramp-autoload cookie. + (tramp-bug): Set tramp-autoload cookie. Report all interned + tramp-* variables. Report also `remote-file-name-inhibit-cache'. + (tramp-reporter-dump-variable): Fix docstring. Mask non-7bit + characters only in strings. + + * net/tramp-compat.el (remote-file-name-inhibit-cache): Define due + to backward compatibility. + + * net/tramp-sh.el (tramp-handle-verify-visited-file-modtime) + (tramp-handle-file-name-all-completions) + (tramp-handle-vc-registered): Use `remote-file-name-inhibit-cache'. + (tramp-open-connection-setup-interactive-shell): + Call `tramp-cleanup-connection' directly. + +2010-10-02 Glenn Morris + + * emacs-lisp/checkdoc.el (checkdoc-minor-keymap): Remove obsolete alias. + + * subr.el (char-bytes): Remove obsolete function. + + * isearch.el (isearch-return-char): Remove obsolete function. + + * mouse.el: No longer provide mldrag. + (mldrag-drag-mode-line, mldrag-drag-vertical-line): + Remove obsolete aliases. + + * comint.el (comint-kill-output): Remove obsolete alias. + + * composite.el (decompose-composite-char): Remove obsolete function. + * ps-def.el (decompose-composite-char): Remove unused function. + + * iswitchb.el (iswitchb-default-keybindings): Remove obsolete function. + + * outline.el (outline-visible): Remove obsolete function. + + * term/pc-win.el (x-frob-font-slant, x-frob-font-weight): + * faces.el (internal-find-face, internal-get-face) + (frame-update-faces, frame-update-face-colors) + (x-frob-font-weight, x-frob-font-slant) + (internal-frob-font-weight, internal-frob-font-slant) + (x-make-font-bold, x-make-font-demibold, x-make-font-unbold) + (x-make-font-italic, x-make-font-oblique, x-make-font-unitalic) + (x-make-font-bold-italic): Remove functions and aliases, obsolete + since Emacs 21.1. + * emulation/viper-util.el (viper-get-face): + * obsolete/lucid.el (find-face, get-face): Use facep. + * vc/ediff-init.el (ediff-valid-color-p, ediff-get-face): + Remove unused functions. + * vc/ediff-util.el (ediff-submit-report): Doc fix. + + * emacs-lisp/bytecomp.el (byte-compile-file): Use kill-emacs-hook to + delete tempfile if interrupted during compilation. + +2010-10-01 Lars Magne Ingebrigtsen + + * net/tls.el (tls-starttls-switches): Give up on using starttls with + gnutls-cli. + (tls-program): Add --insecure to be consistent with the defaults from + openssl s_client. Now all three commands are insecure. + +2010-10-01 Eli Zaretskii + + * makefile.w32-in (DEST, TAGS, TAGS-LISP, TAGS-nmake) + (TAGS-LISP-nmake, TAGS-gmake, TAGS-LISP-gmake, TAGS-SH) + (TAGS-LISP-SH, TAGS-CMD, TAGS-LISP-CMD): New targets. + +2010-10-01 Glenn Morris + + * obsolete/sc.el: Remove file. + + * files.el (temporary-file-directory): On darwin, also try + DARWIN_USER_TEMP_DIR (see discussion in bug#7135). + +2010-10-01 Juanma Barranquero + + * server.el (server-start): Revert part of 2010-09-30T02:53:26Z!lekktu@gmail.com. + Let's not break compatibility gratuitously, shall we? + +2010-09-30 Lars Magne Ingebrigtsen + + * net/tls.el (tls-starttls-switches): New variable. + (tls-find-starttls-argument): Use it. + (open-tls-stream): Ditto. + + * net/netrc.el (netrc-credentials): Return the value of the "default" + entry. + (netrc-machine): Ditto. + +2010-09-30 Eli Zaretskii + + * vc/vc-hooks.el (vc-default-mode-line-string): Doc fix. + +2010-09-30 Juanma Barranquero + + * server.el (server-start): Don't write pid to the authentication file. + (server-create-tty-frame): Don't send pid. + (server-process-filter): Send pid at the start of every connection. + +2010-09-30 Glenn Morris + + * calendar/diary-lib.el (view-diary-entries, list-diary-entries) + (show-all-diary-entries): Remove obsolete function aliases. + + * calendar/appt.el (appt-issue-message, appt-visible, appt-msg-window): + Remove options, obsolete since 22.1. + (appt-display-format, appt-display-message): + Remove backwards-compatibility code. + (appt-check): No longer check appt-issue-message. + (appt-make-list): No longer autoload it. Doc fix. No longer + activate the package. + +2010-09-29 Lars Magne Ingebrigtsen + + * net/gnutls.el (starttls-negotiate): Loop a lot longer. + (starttls-negotiate): Just call boot, and let the handshake be + triggered from the read loop. + +2010-09-29 Glenn Morris + + * calendar/diary-lib.el (diary-list-entries): Use temp buffers when + not displaying the diary. + (diary-add-to-list): If no buffer-file-name, fall back to diary-file. + * calendar/appt.el (appt-check): No longer need to kill diary. + + * calendar/diary-lib.el (diary-list-entries): Move the + "Preparing..." message entirely here. + (diary-simple-display, diary-fancy-display): Move "Preparing..." + messages to diary-list-entries. + (diary-include-other-diary-files): Use LIST-ONLY rather than setting + diary-display-function. + + * calendar/diary-lib.el (diary-include-other-diary-files): + Trap some recursive includes. + + * calendar/appt.el (appt-activate): Check diary file. + +2010-09-29 Katsumi Yamaoka + + * pgg.el (pgg-run-at-time-1): Define it for XEmacs only; fix if/else + construction. + + * calendar/time-date.el: No need to require cl for Emacs 21. + +2010-09-28 Glenn Morris + + * calendar/appt.el (appt-check): Minor simplification. + +2010-09-28 Katsumi Yamaoka + + * mail/sendmail.el (mail-citation-prefix-regexp): Remove "}" from + citation prefix. + +2010-09-27 Andreas Schwab + + * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): + Avoid infinite recursion on erroneous lambda form. (Bug#7114) + +2010-09-27 Kenichi Handa + + * tar-mode.el (tar-header-block-tokenize): Decode filenames in + "ustar" format. + +2010-09-27 Kenichi Handa + + * international/mule.el (define-coding-system): Docstring fixed. + + * international/mule-diag.el (describe-character-set): Use princ + with proper print-length and print-level instead of insert. + +2010-09-27 Juanma Barranquero + + * window.el (walk-windows): Doc fix (bug#7105). + +2010-09-27 Stefan Monnier + + * emacs-lisp/float-sup.el (e): Remove. + +2010-09-27 Teodor Zlatanov + + * net/gnutls.el (gnutls, gnutls-log-level): Add group and custom + variable. + (starttls-negotiate): Use it. + +2010-09-27 Lars Magne Ingebrigtsen + + * net/gnutls.el (starttls-negotiate): Stop looping when we get a t + back. + +2010-09-26 Stefan Monnier + + * emacs-lisp/pcase.el (pcase-let*, pcase-let): plet -> pcase-let. + +2010-09-26 Lars Magne Ingebrigtsen + + * net/gnutls.el (starttls-negotiate): Avoid the cl.el decf function. + + * net/netrc.el (netrc-store-data): New function. + +2010-09-26 Teodor Zlatanov + + * net/gnutls.el: GnuTLS glue code to set up a connection. + +2010-09-25 Julien Danjou + + * notifications.el: Call dbus-register-signal only if it is bound. + +2010-09-25 Glenn Morris + + * eshell/em-alias.el, eshell/em-banner.el, eshell/em-basic.el: + * eshell/em-cmpl.el, eshell/em-dirs.el, eshell/em-glob.el: + * eshell/em-hist.el, eshell/em-ls.el, eshell/em-pred.el: + * eshell/em-prompt.el, eshell/em-rebind.el, eshell/em-script.el: + * eshell/em-smart.el, eshell/em-term.el, eshell/em-unix.el: + * eshell/esh-cmd.el, eshell/esh-ext.el, eshell/esh-io.el: + * eshell/esh-mode.el, eshell/esh-proc.el, eshell/esh-test.el: + * eshell/esh-util.el, eshell/esh-var.el: + Remove leading `*' from docs of faces and defcustoms. + +2010-09-25 Ulrich Mueller + + * eshell/em-ls.el (eshell-ls-archive-regexp): + * eshell/esh-util.el (eshell-tar-regexp): + * ibuffer.el (ibuffer-compressed-file-name-regexp): + * info.el (Info-suffix-list): + * international/mule.el (auto-coding-alist): + * woman.el (woman-file-regexp, woman-file-compression-regexp): + * progmodes/etags.el (tags-compression-info-list): + Support xz compression. + +2010-09-25 Chong Yidong + + * files.el (get-free-disk-space): Don't assume the "df" output + columns line up (Bug#6995). + +2010-09-25 Juanma Barranquero + + * finder.el (finder-unknown-keywords): + * progmodes/gdb-mi.el (gdb-jsonify-buffer, gdb-running-threads-count): + * progmodes/etags.el (tags-table-including): Fix typos in docstrings. + +2010-09-25 Juanma Barranquero + + * server.el (server-start): Revert part of 2010-08-08 change. Using + address 127.0.0.1 for local host is now done in Fmake_network_process. + +2010-09-24 Glenn Morris + + * image-mode.el, progmodes/compile.el, progmodes/gud.el: + * progmodes/mixal-mode.el, textmodes/bibtex-style.el: + * textmodes/css-mode.el, textmodes/dns-mode.el: + Move autoloaded auto-mode-alist entries to files.el. + * files.el (auto-mode-alist): Move entries here. + +2010-09-23 Glenn Morris + + * isearch.el (isearch-lazy-highlight-cleanup) + (isearch-lazy-highlight-initial-delay) + (isearch-lazy-highlight-interval) + (isearch-lazy-highlight-max-at-a-time, isearch-lazy-highlight-face): + * net/net-utils.el (ipconfig-program-options): + Move aliases to options before the associated definitions. + +2010-09-23 Stefan Monnier + + * newcomment.el (comment-normalize-vars): Better test validity of + comment-end-skip. + +2010-09-23 Stefan Monnier + + * emacs-lisp/float-sup.el (float-pi): New name for `pi'. + (float-e): New name for `e'. + (degrees-to-radians, radians-to-degrees): + * calendar/solar.el (solar-longitude): + * calculator.el (calculator-registers, calculator-funcall): + * textmodes/artist.el (artist-spray-random-points): + * play/bubbles.el (bubbles--initialize-images): Use new names. + +2010-09-23 Eric M. Ludlam + + Update to CEDET 1.0's version of EIEIO. + + * emacs-lisp/eieio.el (eieio-specialized-key-to-generic-key): + New function. + (eieio-defmethod, eieio-generic-form, eieio-generic-call): Use it. + (eieio-default-eval-maybe): Eval val instead of unquoting only. + (class-precedence-list): If class is nil, return nil. + (eieio-generic-call): If class of first input arg is nil, don't + look up static methods, and do check for primary methods. + (initialize-instance): See if the default needs to be evaluated + during the constructor. + (eieio-perform-slot-validation-for-default): Don't do the check + for values that will eventually be evaluated. + (eieio-eval-default-p): New function. + (eieio-default-eval-maybe): Use it. + +2010-09-23 Jan Moringen + + * emacs-lisp/eieio.el (eieio-defclass): Allow :c3 + method-invocation-order. + (eieio-c3-candidate, eieio-c3-merge-lists): New functions. + (eieio-class-precedence-dfs): Compute class precedence list using + dfs algorithm. + (eieio-class-precedence-bfs): Compute class precedence list using + bfs algorithm. + (eieio-class-precedence-c3): Compute class precedence list using + c3 algorithm. + (class-precedence-list): New function. + (eieiomt-method-list, eieiomt-sym-optimize): Use it. + (inconsistent-class-hierarchy): New error symbol. + (call-next-method): Stow the replacement argument list for future + call-next-method invocations. + +2010-09-23 Glenn Morris + + * calendar/appt.el (appt-check): If not displaying the diary, + use (diary 1) to only get the entries we need. + (appt-make-list): Sort diary-list-entries, if we cannot guarantee + that it is in day order. (Bug#7019) + + * calendar/appt.el (appt-check): Rather than showing the diary, + just turn off invisible display, and only if needed. + + * calendar/diary-lib.el (diary-list-entries): Doc fix. (Bug#7019) + +2010-09-23 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar): + (byte-compile-defvar, byte-compile-cl-warn): + Start warnings with lower-case, like the majority. + + * files.el (auto-mode-alist): Add .xa, .xw, .xsw for ld-script-mode. + + * files.el (auto-mode-alist): Prefer C-mode for .xs. (Bug#7071) + + * progmodes/ld-script.el (auto-mode-alist): Move to files.el. + * files.el (auto-mode-alist): Move ld-script entries here, further down + the list. + + * vc/add-log.el: Don't require timezone when compiling. + (timezone-make-date-sortable): Autoload it. + (change-log-sortable-date-at): Don't require timezone. + Use `ignore-errors'. + + * comint.el (comint-use-prompt-regexp-instead-of-fields): + Move alias before definition, so it does not need autoloading. + + * emulation/crisp.el, emulation/cua-base.el, emulation/edt.el: + * emulation/pc-select.el, emulation/vip.el, international/iso-ascii.el: + * international/kkc.el, international/ogonek.el, mail/feedmail.el: + * net/browse-url.el, net/eudc-vars.el, net/net-utils.el: + * net/rcompile.el, net/rlogin.el, textmodes/enriched.el: + * textmodes/makeinfo.el, textmodes/page-ext.el, textmodes/picture.el: + * textmodes/refer.el, textmodes/spell.el, textmodes/table.el: + * textmodes/tex-mode.el, textmodes/two-column.el: + Remove leading `*' from docs of defcustoms etc. + +2010-09-23 Teodor Zlatanov + + * net/netrc.el (netrc-parse): Remove encrypt.el mentions. + +2010-09-22 Dan Christensen + + * calendar/time-date.el (date-to-time): Try using parse-time-string + first before using the slower timezone-make-date-arpa-standard. + +2010-09-22 Katsumi Yamaoka + + * calendar/time-date.el (format-seconds): Comment fix. + +2010-09-22 Glenn Morris + + * emacs-lisp/package.el (package-menu-mode): `revert-buffer-function' + is not automatically buffer-local. + +2010-09-21 Stefan Monnier + + * emacs-lisp/smie.el (smie-debug--describe-cycle): Fix typo. + (smie-indent-comment): Be more careful with comment-start-skip. + (smie-indent-comment-close, smie-indent-comment-inside): New funs. + (smie-indent-functions): Use them. + +2010-09-21 Michael Albinus + + * net/ange-ftp.el (ange-ftp-skip-msgs): Add "^504 ..." message. + +2010-09-21 Jan Djärv + + * menu-bar.el (menu-bar-set-tool-bar-position): customize-set-variable + tool-bar-position. Don't modify frame parameters here. + (menu-bar-options-save): Add tool-bar-position. + + * tool-bar.el (tool-bar-position): New defcustom (Bug#7049). + +2010-09-20 Stefan Monnier + + * textmodes/reftex-parse.el (reftex-what-macro) + (reftex-context-substring): Let-bind forward-sexp-function to nil + since we don't need/want to treat \begin...\end as a block (bug#7053). + + * emacs-lisp/lisp.el (up-list): Don't do nothing silently. + + * simple.el (blink-matching-open): Use syntax-class. + + * progmodes/pascal.el (pascal-mode): Use define-derived-mode. + Set invisibility spec for pascal's outline mode. + (pascal-outline-change): Clean up calling convention. + (pascal-show-all, pascal-hide-other-defuns): Update callers. + + * progmodes/prolog.el (prolog-smie-forward-token) + (prolog-smie-backward-token): New functions. + (prolog-mode-variables): Use them to parse "!," correctly. + Set up smie-blink-matching for ".". + + * textmodes/ispell.el (ispell-start, ispell-end): Rename from `start' + and `end'. + (ispell-region, ispell-process-line): Update users. + + * textmodes/reftex-parse.el (reftex-what-macro): Don't hardcode + point-min==1. + + * textmodes/ispell.el: Fix commenting convention. + (ispell-parse-output): Simplify, use push. + (ispell-region): Use match-string-no-properties. + (ispell-begin-skip-region-regexp): Use mapconcat to simplify. + (ispell-minor-mode): Use define-minor-mode. + (ispell-message): Remove unused var `skip-regexp'. + (ispell-add-per-file-word-list): Use dynamic let-binding. + Try and use the proper comment marker. + + * mail/sendmail.el: Fix commenting convention. + (sendmail-send-it): Use line-beginning-position. + + * help-fns.el (describe-variable): Add original value, if applicable. + +2010-09-20 Juanma Barranquero + + * subr.el (y-or-n-p): Remove leftover code from 2010-09-17T13:30:30Z!monnier@iro.umontreal.ca. + + * emacs-lisp/smie.el (smie-indent--hanging-p): Use `smie-indent--bolp'. + +2010-09-19 Stefan Monnier + + * emacs-lisp/smie.el (smie-bnf-precedence-table): Improve error message. + (smie-debug--prec2-cycle, smie-debug--describe-cycle): New functions. + (smie-prec2-levels): Use them to better diagnose precedence cycles. + (smie-blink-matching-check): Don't signal a mismatch if car is t. + (smie-blink-matching-open): Rewrite to remove assumptions, so that + something like "." can also be a closer. + (smie--associative-p, smie-indent--hanging-p, smie-indent--bolp) + (smie-indent--offset, smie-indent--offset-rule, smie-indent--column): + Rename internal functions to use "--". Update callers. + + * frame.el (make-frame-names-alist): Don't list frames on other displays. + + * fringe.el (fringe-styles): New var. + (fringe-mode, fringe-query-style): Use it. + +2010-09-18 Michael R. Mauger + + * progmodes/sql.el: Version 2.8 + (sql-login-params): Update widget structure; changes still needed. + (sql-product-alist): Add :list-all and :list-table features for + SQLite, Postgres and MySQL products. + (sql-redirect): Handle default value. + (sql-execute, sql-execute-feature): New functions. + (sql-read-table-name): New function. + (sql-list-all, sql-list-table): New functions. User API. + (sql-mode-map, sql-interactive-mode-map): Add key definitions + for above functions. + (sql-mode-menu, sql-interactive-mode-menu): Add menu definitions + for above functions. + (sql-postgres-login-params): Add user and database defaults. + (sql-buffer-live-p): Bug fix. + (sql-product-history): New variable. + (sql-read-product): New function. Use it. + (sql-set-product, sql-product-interactive): Use it. + (sql-connection-history): New variable. + (sql-read-connection): New function. Use it. + (sql-connect): New function. + (sql-for-each-login): Redesign function interface. + (sql-make-alternate-buffer-name, sql-save-connection): Use it. + (sql-get-login-ext, sql-get-login): Use it. Handle default values. + (sql-comint): Check for program. Existing live buffer. + (sql-comint-postgres): Add port parameter. + +2010-09-19 Stefan Monnier + + * emacs-lisp/warnings.el: Fix commenting convention. + (display-warning): Use special mode and make the buffer read-only. + +2010-09-18 Jay Belanger + + * calc/calc-prog.el (calc-read-parse-table-part): Don't "fix" the + empty string when it follows a repeated or optional pattern. + +2010-09-18 Stefan Monnier + + * indent.el (indent-according-to-mode): Apply syntax-propertize. + (indent-region): Use indent-according-to-mode. + +2010-09-18 Eli Zaretskii + + * fringe.el (fringe-mode): Doc fix. + +2010-09-14 Kan-Ru Chen (tiny change) + + * textmodes/nroff-mode.el (nroff-view): Kill old buffer before + refreshing the preview buffer. + +2010-09-18 Stefan Monnier + + * textmodes/tex-mode.el (tex-syntax-propertize-rules) + (latex-syntax-propertize-rules): New consts; replace + tex-font-lock-syntactic-keywords. + (tex-env-mark, latex-env-before-change): New functions. + (latex-electric-env-pair-mode): New minor mode. + (tex-font-lock-verb): Change arguments; do move point. + (tex-font-lock-syntactic-face-function): Adjust to new verbatim + representation as a form of comment. + (tex-font-lock-keywords-1): Remove workaround, now unneeded. + (doctex-syntax-propertize-rules): New const; replaces + doctex-font-lock-syntactic-keywords. + (tex-common-initialization, doctex-mode): Use syntax-propertize-rules. + + * progmodes/fortran.el (fortran--font-lock-syntactic-keywords): Remove. + (fortran-make-syntax-propertize-function): New function; replaces + fortran-font-lock-syntactic-keywords. + (fortran-mode): Use it. + (fortran-line-length): Use it. Improve interactive spec. + + * emacs-lisp/syntax.el (syntax-propertize-precompile-rules): New macro. + (syntax-propertize-rules): Add var-ref case. Fix offset computation + when adding surrounding \(..\). + + * progmodes/js.el (js-mode): Fix last change (bug#7054). + +2010-09-17 Stefan Monnier + + * obsolete/old-whitespace.el (whitespace-rescan-files-in-buffers): + Use with-current-buffer. + + * isearch.el (isearch-face): Rename from `isearch'. + (isearch-highlight): Use new name. + +2010-09-17 Eli Zaretskii + + * fringe.el (fringe-mode, fringe-query-style): Use 4 pixels, not + 5, for `half' width fringes. (Bug#6933) + +2010-09-17 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar) + (byte-compile-defvar): "foo/bar" does not lack a prefix. + + * subr.el (y-or-n-p): Add the "(y or n)" that was lost somehow. + +2010-09-17 Stephen Berman + + * dframe.el (dframe-reposition-frame-emacs): Use tool-bar-pixel-width + in calculating new frame position. Add more space between new and + parent on the left (Bug#7048). + +2010-09-17 Michael Albinus + + * net/tramp-compat.el (tramp-compat-with-temp-message): Make it a + defmacro. + +2010-09-16 Chong Yidong + + * mail/sendmail.el: Add "*unsent mail*" to same-window-buffer-names. + + * term/x-win.el (x-cut-buffer-or-selection-value): Define as + obsolete alias for x-selection-value. + + * ido.el (ido-make-buffer-list): Fix error in 2010-08-22 merge. + +2010-09-16 Michael Albinus + + * net/tramp-cmds.el (tramp-cleanup-connection): Set tramp-autoload + cookie. + +2010-09-15 Michael Albinus + + * net/tramp-compat.el (tramp-compat-with-temp-message) + (tramp-compat-font-lock-add-keywords, tramp-compat-process-get) + (tramp-compat-process-put): New defuns. + + * net/tramp.el (top): + * net/tramp-gvfs.el (top): + * net/tramp-cache.el (top): Use `tramp-compat-font-lock-add-keywords'. + + * net/tramp.el (tramp-progress-reporter-update): + Use `tramp-compat-funcall'. + + * net/tramp.el (tramp-process-actions): + * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion): + * net/tramp-sh.el (tramp-handle-vc-registered) + (tramp-get-remote-stat, tramp-get-remote-readlink): + Use `tramp-compat-with-temp-message'. + + * net/tramp-sh.el (top): Require 'cl. + (tramp-handle-start-file-process): Use `tramp-compat-process-get'. + (tramp-open-connection-setup-interactive-shell): + Use `tramp-compat-process-put'. + +2010-09-15 Alan Mackenzie + + * progmodes/cc-engine.el (c-forward-<>-arglist-recur): Correct the + indentation. + (c-forward-<>-arglist-recur): Fix an infinite recursion. + +2010-09-15 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-warning-types): New type + `lexical' for warnings related to lexical scoping. + (byte-compile-file-form-defvar, byte-compile-defvar): Warn about + global vars which don't have a prefix and could hence affect lexical + scoping in unrelated files. + +2010-09-14 Lars Magne Ingebrigtsen + + * net/imap.el: Revert back to version + cb950ed8ff3e0f40dac437a51b269166f9ffb60d, since some of the changes + seem problematic. + +2010-09-14 Juanma Barranquero + + * obsolete/old-whitespace.el (whitespace-unload-function): + Explicitly pass `obarray' to `unintern' to avoid a warning. + +2010-09-14 Stefan Monnier + + * emacs-lisp/byte-run.el (set-advertised-calling-convention): + Add `when' argument. Update callers. + + * subr.el (unintern): Declare the obarray arg mandatory. + +2010-09-14 Glenn Morris + + * calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries): + Doc fixes. + + * calendar/diary-lib.el (diary-included-files): New variable. + (diary-list-entries): Maybe initialize diary-included-files. + (diary-include-other-diary-files): Append to diary-included-files. + * calendar/appt.el (appt-update-list): Also check the members of + diary-included-files. (Bug#6999) + (appt-check): Doc fix. + +2010-09-14 David Reitter + + * simple.el (line-move-visual): Do not truncate goal column to + integer size. (Bug#7020) + +2010-09-14 Stefan Monnier + + * repeat.el (repeat): Allow repeating when the last event is a click. + Suggested by Drew Adams (bug#6256). + +2010-09-14 Sascha Wilde + + * vc/vc-hg.el (vc-hg-state, vc-hg-working-revision): + Replace setting HGRCPATH to "" by some less invasive --config options. + +2010-09-14 Stefan Monnier + + * font-lock.el (font-lock-beginning-of-syntax-function): + Mark as obsolete. + +2010-09-14 Glenn Morris + + * menu-bar.el (menu-bar-options-save): Fix handling of menu-bar + and tool-bar modes. (Bug#6211) + (menu-bar-mode): Move setting of standard-value after the + minor-mode definition, otherwise it seems to have no effect. + +2010-09-14 Masatake YAMATO + + * progmodes/antlr-mode.el (antlr-font-lock-additional-keywords): + Fix typo. (Bug#6976) + +2010-09-14 Vinicius Jose Latorre + + * whitespace.el: Allow cleaning up blanks without blank + visualization (Bug#6651). Adjust help window for + whitespace-toggle-options (Bug#6479). Allow to use fill-column + instead of whitespace-line-column (from EmacsWiki). New version 13.1. + (whitespace-style): Add new value 'face. Adjust docstring. + (whitespace-space, whitespace-hspace, whitespace-tab): + Adjust foreground property face. + (whitespace-line-column): Adjust docstring and type declaration. + (whitespace-style-value-list, whitespace-toggle-option-alist) + (whitespace-help-text): Adjust const initialization. + (whitespace-toggle-options, global-whitespace-toggle-options): + Adjust docstring. + (whitespace-display-window, whitespace-interactive-char) + (whitespace-style-face-p, whitespace-color-on): Adjust code. + (whitespace-help-scroll): New fun. + +2010-09-14 Katsumi Yamaoka + + * calendar/time-date.el (format-seconds): Comment fix. + +2010-09-13 Michael R. Mauger + + * progmodes/sql.el: Version 2.7. + (sql-buffer-live-p): Improve detection. + (sql-find-sqli-buffer, sql-set-sqli-buffer-generally) + (sql-set-sqli-buffer): Use it. + (sql-product-interactive): Run `sql-set-sqli-hook'. + (sql-rename-buffer): Code cleanup. + (sql-redirect, sql-redirect-value): New functions. More to come. + +2010-09-13 Juanma Barranquero + + Port tramp-related Makefile changes of 2010-09-08T14:42:54Z!michael.albinus@gmx.de, 2010-09-13T15:17:01Z!michael.albinus@gmx.de to Windows. + * makefile.w32-in (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el. + (TRAMP_SRC): New macro. + ($(lisp)/net/tramp-loaddefs.el): New target. + +2010-09-13 Michael Albinus + + Major code cleanup. Split tramp.el into tramp.el and tramp-sh.el. + + * Makefile.in (TRAMP_SRC): Remove tramp-fish.el. Add tramp-sh.el. + + * net/tramp.el (top): Don't show loading message. Require just + 'tramp-compat, everything else is required there. + Use `ignore-errors' where appropriate. + (tramp-inline-compress-start-size, tramp-copy-size-limit) + (tramp-terminal-type, tramp-end-of-output) + (tramp-initial-end-of-output, tramp-completion-function-alist-rsh) + (tramp-completion-function-alist-ssh) + (tramp-completion-function-alist-telnet) + (tramp-completion-function-alist-su) + (tramp-completion-function-alist-putty, tramp-remote-path) + (tramp-remote-process-environment, tramp-sh-extra-args) + (tramp-actions-before-shell, tramp-uudecode) + (tramp-perl-file-truename, tramp-perl-file-name-all-completions) + (tramp-perl-file-attributes) + (tramp-perl-directory-files-and-attributes) + (tramp-perl-encode-with-module, tramp-perl-decode-with-module) + (tramp-perl-encode, tramp-perl-decode) + (tramp-vc-registered-read-file-names, tramp-file-mode-type-map) + (tramp-file-name-handler-alist, tramp-make-tramp-temp-file) + (tramp-handle-make-symbolic-link, tramp-handle-load) + (tramp-handle-file-name-as-directory) + (tramp-handle-file-name-directory) + (tramp-handle-file-name-nondirectory, tramp-handle-file-truename) + (tramp-handle-file-exists-p, tramp-handle-file-attributes) + (tramp-do-file-attributes-with-ls) + (tramp-do-file-attributes-with-perl) + (tramp-do-file-attributes-with-stat) + (tramp-handle-set-visited-file-modtime) + (tramp-handle-verify-visited-file-modtime) + (tramp-handle-set-file-modes, tramp-handle-set-file-times) + (tramp-set-file-uid-gid, tramp-remote-selinux-p) + (tramp-handle-file-selinux-context) + (tramp-handle-set-file-selinux-context) + (tramp-handle-file-executable-p, tramp-handle-file-readable-p) + (tramp-handle-file-newer-than-file-p, tramp-handle-file-modes) + (tramp-handle-file-directory-p, tramp-handle-file-regular-p) + (tramp-handle-file-symlink-p, tramp-handle-file-writable-p) + (tramp-handle-file-ownership-preserved-p) + (tramp-handle-directory-file-name, tramp-handle-directory-files) + (tramp-handle-directory-files-and-attributes) + (tramp-do-directory-files-and-attributes-with-perl) + (tramp-do-directory-files-and-attributes-with-stat) + (tramp-handle-file-name-all-completions) + (tramp-handle-file-name-completion, tramp-handle-add-name-to-file) + (tramp-handle-copy-file, tramp-handle-copy-directory) + (tramp-handle-rename-file, tramp-do-copy-or-rename-file) + (tramp-do-copy-or-rename-file-via-buffer) + (tramp-do-copy-or-rename-file-directly) + (tramp-do-copy-or-rename-file-out-of-band) + (tramp-handle-make-directory, tramp-handle-delete-directory) + (tramp-handle-delete-file) + (tramp-handle-dired-recursive-delete-directory) + (tramp-handle-dired-compress-file, tramp-handle-dired-uncache) + (tramp-handle-insert-directory) + (tramp-handle-unhandled-file-name-directory) + (tramp-handle-expand-file-name) + (tramp-handle-substitute-in-file-name) + (tramp-handle-executable-find, tramp-process-sentinel) + (tramp-handle-start-file-process, tramp-handle-process-file) + (tramp-handle-call-process-region, tramp-handle-shell-command) + (tramp-handle-file-local-copy, tramp-handle-file-remote-p) + (tramp-handle-insert-file-contents) + (tramp-handle-insert-file-contents-literally) + (tramp-handle-find-backup-file-name) + (tramp-handle-make-auto-save-file-name, tramp-handle-write-region) + (tramp-vc-registered-file-names, tramp-handle-vc-registered) + (tramp-sh-file-name-handler, tramp-vc-file-name-handler) + (tramp-maybe-send-script, tramp-set-auto-save, tramp-run-test) + (tramp-run-test2, tramp-find-executable, tramp-set-remote-path) + (tramp-find-file-exists-command, tramp-open-shell) + (tramp-find-shell, tramp-barf-if-no-shell-prompt) + (tramp-open-connection-setup-interactive-shell) + (tramp-local-coding-commands, tramp-remote-coding-commands) + (tramp-find-inline-encoding, tramp-call-local-coding-command) + (tramp-inline-compress-commands, tramp-find-inline-compress) + (tramp-compute-multi-hops, tramp-maybe-open-connection) + (tramp-send-command, tramp-wait-for-output) + (tramp-send-command-and-check, tramp-barf-unless-okay) + (tramp-send-command-and-read, tramp-mode-string-to-int) + (tramp-convert-file-attributes, tramp-check-cached-permissions) + (tramp-file-mode-from-int, tramp-file-mode-permissions) + (tramp-shell-case-fold, tramp-make-copy-program-file-name) + (tramp-method-out-of-band-p, tramp-local-host-p) + (tramp-get-remote-path, tramp-get-remote-tmpdir) + (tramp-get-ls-command, tramp-get-ls-command-with-dired) + (tramp-get-test-command, tramp-get-test-nt-command) + (tramp-get-file-exists-command, tramp-get-remote-ln) + (tramp-get-remote-perl, tramp-get-remote-stat) + (tramp-get-remote-readlink, tramp-get-remote-trash) + (tramp-get-remote-id, tramp-get-remote-uid, tramp-get-remote-gid) + (tramp-get-local-uid, tramp-get-local-gid) + (tramp-get-inline-compress, tramp-get-inline-coding): Move to + tramp-sh.el. + (tramp-methods, tramp-default-method-alist) + (tramp-default-user-alist, tramp-foreign-file-name-handler-alist): + Move initialization to tramp-sh.el. + (tramp-temp-name-prefix): Make it a defconst. + (tramp-dissect-file-name): Don't check anymore for multi-hop + methods. + (tramp-debug-outline-regexp): Add a docstring. + (tramp-debug-outline-level): Rename from `tramp-outline-level'. + (tramp-get-debug-buffer): Use it. + + * net/tramp-cache.el (top): Set tramp-autoload cookie for + initialization forms. + (tramp-set-connection-property): Don't protect `tramp-message' + call, it isn't necessary any longer. + (tramp-dump-connection-properties): Use `ignore-errors'. + + * net/tramp-compat.el (top): Require 'advice, 'format-spec, + 'password-cache and 'auth-source. + + * net/tramp-gvfs.el (top): + * net/tramp-smb.el (top): Require 'tramp-sh. + + * net/tramp-gw.el (tramp-gw-open-network-stream): Use `ignore-errors'. + + * net/tramp-sh.el: New file, derived from tramp.el. + (top): Initialize `tramp-methods', `tramp-default-method-alist', + `tramp-default-user-alist', `tramp-foreign-file-name-handler-alist'. + Remove "scp1_old", "scp2_old", "ssh1_old", "ssh2_old". + Use `ignore-errors' where appropriate. + (tramp-sh-file-name-handler-alist): Rename from + `tramp-file-name-handler-alist'. + (tramp-send-command-and-check): Return t or nil. Remove all + `zerop' checks, where called. + (tramp-handle-set-file-modes) + (tramp-do-copy-or-rename-file-directly) + (tramp-handle-delete-directory, tramp-handle-delete-file) + (tramp-maybe-send-script): Use `tramp-barf-unless-okay'. + (tramp-sh-file-name-handler, tramp-send-command-and-check) + (tramp-get-remote-ln): Set tramp-autoload cookie. + + * net/tramp-fish.el: Remove file. + +2010-09-13 Daiki Ueno + + * epa-file.el (epa-file-insert-file-contents): If visiting, bind + buffer-file-name to avoid file-locking. (Bug#7026) + +2010-09-13 Julien Danjou + + * notifications.el (notifications-notify): Add support for + image-path and sound-name. + (notifications-specification-version): Add this variable. + +2010-09-12 Stefan Monnier + + * subr.el (y-or-n-p): New function, moved from src/fns.c; use read-key. + +2010-09-12 Leo + + * net/rcirc.el (rcirc-server-commands, rcirc-client-commands) + (rcirc-completion-start): New variables. + (rcirc-nick-completions): Rename to rcirc-completions. + (rcirc-nick-completion-start-offset): Delete. + (rcirc-completion-at-point): New function for constructing + completion data for both nicks and irc commands. Add to + completion-at-point-functions in rcirc mode. + (rcirc-complete): Rename from rcirc-nick-complete; use + rcirc-completion-at-point. + (defun-rcirc-command): Update rcirc-client-commands. + +2010-09-11 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-file): Create .elc files + atomically, to avoid parallel build errors. (Bug#4196) + +2010-09-11 Michael R. Mauger + + * progmodes/sql.el: Version 2.6 + (sql-dialect): Synonym for "sql-product". + (sql-find-sqli-buffer, sql-set-sqli-buffer-generally) + (sql-set-sqli-buffer, sql-show-sqli-buffer, sql-interactive-mode): + Set "sql-buffer" to buffer name not buffer object so multiple sql + interactive buffers work properly. Reverts misguided changes in + earlier work. + (sql-comint): Make sure different buffer name is used if "*SQL*" + buffer is for a different product. + (sql-make-alternate-buffer-name): Fix bug with "sql-database" + login param. + (sql-oracle, sql-sybase, sql-informix, sql-sqlite, sql-mysql) + (sql-solid, sql-ingres, sql-ms, sql-postgres, sql-interbase) + (sql-db2, sql-linter, sql-product-interactive, sql-rename-buffer): + Accept new buffer name or prompt for one. + (sql-port): Default to zero. + (sql-comint-mysql): Handle "sql-port" as a numeric. + (sql-port-history): Delete unused variable. + (sql-get-login): Default "sql-port" to a number. + (sql-product-alist): Correct Postgres prompt and terminator regexp. + (sql-sqlite-program): Dynamically detect presence of "sqlite" or + "sqlite3" executables. + (sql-sqlite-login-params): Add "*.sqlite[23]?" database name pattern. + (sql-buffer-live-p): New function. + (sql-mode-menu, sql-send-string): Use it. + (sql-mode-oracle-font-lock-keywords): Improve SQL*Plus REMARK + syntax pattern. + (sql-mode-postgres-font-lock-keywords): Support Postgres V9. + (sql-mode-sqlite-font-lock-keywords): Hilight sqlite commands. + +2010-09-10 Lars Magne Ingebrigtsen + + * net/netrc.el (netrc-credentials): New convenience function. + +2010-09-10 Stefan Monnier + + * textmodes/texinfo.el (texinfo-syntax-propertize-function): New fun + to replace texinfo-font-lock-syntactic-keywords. + (texinfo-mode): Use it. + + * textmodes/tex-mode.el (tex-common-initialization, doctex-mode): + Use syntax-propertize-function. + + * textmodes/sgml-mode.el (sgml-syntax-propertize-function): New var to + replace sgml-font-lock-syntactic-keywords. + (sgml-mode): Use it. + + * textmodes/reftex.el (font-lock-syntactic-keywords): Don't declare + since we don't use it. + + * textmodes/bibtex.el (bibtex-mode): Use syntax-propertize-function. + + * progmodes/vhdl-mode.el (vhdl-mode): Use syntax-propertize-function + if available. + (vhdl-fontify-buffer): Adjust. + + * progmodes/tcl.el (tcl-syntax-propertize-function): New var to + replace tcl-font-lock-syntactic-keywords. + (tcl-mode): Use it. + + * progmodes/simula.el (simula-syntax-propertize-function): New var to + replace simula-font-lock-syntactic-keywords. + (simula-mode): Use it. + + * progmodes/sh-script.el (sh-st-symbol): Remove. + (sh-font-lock-close-heredoc, sh-font-lock-open-heredoc): Add eol arg. + (sh-font-lock-flush-syntax-ppss-cache, sh-font-lock-here-doc): Remove. + (sh-font-lock-quoted-subshell): Assume we've already matched $(. + (sh-font-lock-paren): Set syntax-multiline. + (sh-font-lock-syntactic-keywords): Remove. + (sh-syntax-propertize-function): New function to replace it. + (sh-mode): Use it. + + * progmodes/ruby-mode.el (ruby-here-doc-beg-re): + Define while compiling. + (ruby-here-doc-end-re, ruby-here-doc-beg-match) + (ruby-font-lock-syntactic-keywords, ruby-comment-beg-syntax) + (syntax-ppss, ruby-in-ppss-context-p, ruby-in-here-doc-p) + (ruby-here-doc-find-end, ruby-here-doc-beg-syntax) + (ruby-here-doc-end-syntax): Only define when + syntax-propertize is not available. + (ruby-syntax-propertize-function, ruby-syntax-propertize-heredoc): + New functions. + (ruby-in-ppss-context-p): Update to new syntax of heredocs. + (electric-indent-chars): Silence bytecompiler. + (ruby-mode): Use prog-mode, syntax-propertize-function, and + electric-indent-chars. + + * progmodes/python.el (python-syntax-propertize-function): New var to + replace python-font-lock-syntactic-keywords. + (python-mode): Use it. + (python-quote-syntax): Simplify and adjust to new use. + + * progmodes/perl-mode.el (perl-syntax-propertize-function): New fun to + replace perl-font-lock-syntactic-keywords. + (perl-syntax-propertize-special-constructs): New fun to replace + perl-font-lock-special-syntactic-constructs. + (perl-font-lock-syntactic-face-function): New fun. + (perl-mode): Use it. + + * progmodes/octave-mod.el (octave-syntax-propertize-sqs): New function + to replace octave-font-lock-close-quotes. + (octave-syntax-propertize-function): New function to replace + octave-font-lock-syntactic-keywords. + (octave-mode): Use it. + + * progmodes/mixal-mode.el (mixal-syntax-propertize-function): New var; + replaces mixal-font-lock-syntactic-keywords. + (mixal-mode): Use it. + + * progmodes/make-mode.el (makefile-syntax-propertize-function): + New var; replaces makefile-font-lock-syntactic-keywords. + (makefile-mode): Use it. + (makefile-imake-mode): Adjust. + + * progmodes/js.el (js--regexp-literal): Define while compiling. + (js-syntax-propertize-function): New var; replaces + js-font-lock-syntactic-keywords. + (js-mode): Use it. + + * progmodes/gud.el (gdb-script-syntax-propertize-function): New var; + replaces gdb-script-font-lock-syntactic-keywords. + (gdb-script-mode): Use it. + + * progmodes/fortran.el (fortran-mode): Use syntax-propertize-function. + (fortran--font-lock-syntactic-keywords): New var. + (fortran-line-length): Update syntax-propertize-function and + fortran--font-lock-syntactic-keywords. + + * progmodes/cperl-mode.el (cperl-mode): Use syntax-propertize-function. + + * progmodes/cfengine.el (cfengine-mode): + Use syntax-propertize-function. + (cfengine-font-lock-syntactic-keywords): Remove. + + * progmodes/autoconf.el (autoconf-mode): + Use syntax-propertize-function. + (autoconf-font-lock-syntactic-keywords): Remove. + + * progmodes/ada-mode.el (ada-set-syntax-table-properties) + (ada-after-change-function, ada-initialize-syntax-table-properties) + (ada-handle-syntax-table-properties): Only define when + syntax-propertize is not available. + (ada-mode): Use syntax-propertize-function. + + * font-lock.el (font-lock-syntactic-keywords): Make obsolete. + (font-lock-fontify-syntactic-keywords-region): Move handling of + font-lock-syntactically-fontified to... + (font-lock-default-fontify-region): ...here. + Let syntax-propertize-function take precedence. + (font-lock-fontify-syntactically-region): Cal syntax-propertize. + + * emacs-lisp/syntax.el (syntax-propertize-function) + (syntax-propertize-chunk-size, syntax-propertize--done) + (syntax-propertize-extend-region-functions): New vars. + (syntax-propertize-wholelines, syntax-propertize-multiline) + (syntax-propertize--shift-groups, syntax-propertize-via-font-lock) + (syntax-propertize): New functions. + (syntax-propertize-rules): New macro. + (syntax-ppss-flush-cache): Set syntax-propertize--done. + (syntax-ppss): Call syntax-propertize. + + * emacs-lisp/regexp-opt.el (regexp-opt-depth): Skip named groups. + +2010-09-10 Agustín Martín + + * textmodes/ispell.el (ispell-init-process): Improve comments. + XEmacs compatibility changes regarding (add-hook) 'local option + and (set-process-query-on-exit-flag). + +2010-09-09 Michael Albinus + + * net/tramp-cache.el (tramp-parse-connection-properties): + Set tramp-autoload cookie. + +2010-09-09 Glenn Morris + + * image.el (imagemagick-types-inhibit): Add :type, :version, :group. + (imagemagick-register-types): Doc fix. + +2010-09-08 Stefan Monnier + + * progmodes/octave-mod.el (electric-indent-chars): Silence bytecomp. + + * progmodes/js.el (require): Require is already "eval-and-compile". + (js--re-search-forward): Avoid `eval'. Preserve the error data. + (js--re-search-backward): Use js--re-search-forward. + + * progmodes/fortran.el (fortran-line-length): Don't recompute + syntactic keywords redundantly a second time. + + * progmodes/ada-mode.el: Replace "(set '" with setq. + (ada-mode): Simplify. + (ada-create-case-exception, ada-adjust-case-interactive) + (ada-adjust-case-region, ada-format-paramlist, ada-indent-current) + (ada-search-ignore-string-comment, ada-move-to-start) + (ada-move-to-end): Use with-syntax-table. + + * font-lock.el (save-buffer-state): Remove `varlist' arg. + (font-lock-unfontify-region, font-lock-default-fontify-region): + Update usage correspondingly. + (font-lock-fontify-syntactic-keywords-region): + Set parse-sexp-lookup-properties buffer-locally here. + (font-lock-fontify-syntactically-region): Remove unused `ppss' arg. + + * simple.el (blink-matching-open): Don't burp if we can't find a match. + +2010-09-08 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-report-ops): + Error if not compiled with -DBYTE_CODE_METER. + + * emacs-lisp/bytecomp.el (byte-recompile-directory): + Ignore dir-locals-file. + +2010-09-08 Stefan Monnier + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Not a const. + (compilation-error-regexp-alist-alist): Rule out ": " in file names + for the `gnu' messages. + (compilation-set-skip-threshold): New command. + (compilation-start): Use \' rather than $. + (compilation-forget-errors): Use clrhash. + +2010-09-08 Agustín Martín + + * textmodes/ispell.el (ispell-valid-dictionary-list): + Simplify logic. + +2010-09-08 Michael Albinus + + Migrate to Tramp 2.2. Rearrange load dependencies. + (Bug#1529, Bug#5448, Bug#5705) + + * Makefile.in (TRAMP_DIR, TRAMP_SRC): New variables. + ($(TRAMP_DIR)/tramp-loaddefs.el): New target. + (LOADDEFS): Add $(lisp)/net/tramp-loaddefs.el. + + * net/tramp.el (top): Remove all other tramp-* loads except + tramp-compat.el. Remove all changes to tramp-unload-hook for + other tramp-* packages. Rearrange defun order. Change calls of + `tramp-compat-call-process', `tramp-compat-decimal-to-octal', + `tramp-compat-octal-to-decimal' to new function names. + (tramp-terminal-type, tramp-initial-end-of-output) + (tramp-methods, tramp-foreign-file-name-handler-alist) + (tramp-tramp-file-p, tramp-completion-mode-p) + (tramp-send-command-and-check, tramp-get-remote-path) + (tramp-get-remote-tmpdir, tramp-get-remote-ln) + (tramp-shell-quote-argument): Set tramp-autoload cookie. + (with-file-property, with-connection-property): Move to + tramp-cache.el. + (tramp-local-call-process, tramp-decimal-to-octal) + (tramp-octal-to-decimal): Move to tramp-compat.el. + (tramp-handle-shell-command): Do not require 'shell. + (tramp-compute-multi-hops): No special handling for tramp-gw-* + symbols. + (tramp-unload-tramp): Do not call `tramp-unload-file-name-handlers'. + + * net/tramp-cache.el (top): Require 'tramp. Add to + `tramp-unload-hook'. + (tramp-cache-data, tramp-get-file-property) + (tramp-set-file-property, tramp-flush-file-property) + (tramp-flush-directory-property, tramp-get-connection-property) + (tramp-set-connection-property, tramp-flush-connection-property) + (tramp-cache-print, tramp-list-connections): Set tramp-autoload + cookie. + (with-file-property, with-connection-property): New defuns, moved + from tramp.el. + (tramp-flush-file-function): Use `with-parsed-tramp-file-name' + macro. + + * net/tramp-cmds.el (top): Add to `tramp-unload-hook'. + (tramp-version): Set tramp-autoload cookie. + + * net/tramp-compat.el (top): Require 'tramp-loaddefs. Remove all + changes to tramp-unload-hook for other tramp-* packages. Add to + `tramp-unload-hook'. + (tramp-compat-decimal-to-octal, tramp-compat-octal-to-decimal) + (tramp-compat-call-process): New defuns, moved from tramp.el. + + * net/tramp-fish.el (top) Require just 'tramp. Add objects to + `tramp-methods' and `tramp-foreign-file-name-handler-alist'. + Add to `tramp-unload-hook'. Change call of + `tramp-compat-decimal-to-octal' to new function name. + (tramp-fish-method): Make it a defconst. + (tramp-fish-file-name-p): Make it a defsubst. + (tramp-fish-method, tramp-fish-file-name-handler) + (tramp-fish-file-name-p): Set tramp-autoload cookie. + + * net/tramp-ftp.el (top) Add objects to `tramp-methods' and + `tramp-foreign-file-name-handler-alist'. Add to + `tramp-unload-hook'. + (tramp-ftp-method): Make it a defconst. + (tramp-ftp-file-name-p): Make it a defsubst. + (tramp-ftp-method, tramp-ftp-file-name-handler) + (tramp-ftp-file-name-p): Set tramp-autoload cookie. + + * net/tramp-gvfs.el (top) Add objects to `tramp-methods' and + `tramp-foreign-file-name-handler-alist'. Add to + `tramp-unload-hook'. Change checks, whether package can be + loaded. + (tramp-gvfs-file-name-p): Make it a defsubst. + (tramp-gvfs-methods, tramp-gvfs-file-name-handler) + (tramp-gvfs-file-name-p): Set tramp-autoload cookie. + (tramp-gvfs-handle-file-directory-p): New defun. + (tramp-gvfs-file-name-handler-alist): Use it. + + * net/tramp-gw.el (top) Add objects to `tramp-methods' and + `tramp-foreign-file-name-handler-alist'. Add to + `tramp-unload-hook'. + (tramp-gw-tunnel-method, tramp-gw-default-tunnel-port) + (tramp-gw-socks-method, tramp-gw-default-socks-port): Make it a + defconst. + (tramp-gw-tunnel-method, tramp-gw-socks-method) + (tramp-gw-open-connection): Set tramp-autoload cookie. + + * net/tramp-imap.el (top) Require just 'tramp. Add objects to + `tramp-methods' and `tramp-foreign-file-name-handler-alist'. + Add to `tramp-unload-hook'. Change checks, whether package can be + loaded. + (tramp-imap-file-name-p): Make it a defsubst. + (tramp-imap-method, tramp-imaps-method) + (tramp-imap-file-name-handler) + (tramp-imap-file-name-p): Set tramp-autoload cookie. + + * net/tramp-smb.el (top) Require just 'tramp. Add objects to + `tramp-methods' and `tramp-foreign-file-name-handler-alist'. + Add to `tramp-unload-hook'. Change checks, whether package can be + loaded. Change call of `tramp-compat-decimal-to-octal' to new + function name. + (tramp-smb-tunnel-method): Make it a defconst. + (tramp-smb-file-name-p): Make it a defsubst. + (tramp-smb-method, tramp-smb-file-name-handler) + (tramp-smb-file-name-p): Set tramp-autoload cookie. + + * net/tramp-uu.el (top) Add to `tramp-unload-hook'. + (tramp-uuencode-region): Set tramp-autoload cookie. + + * net/trampver.el (top) Add to `tramp-unload-hook'. + (tramp-version, tramp-bug-report-address): Set tramp-autoload + cookie. Update release number. + +2010-09-07 Agustín Martín + + * textmodes/ispell.el (ispell-start-process): Make sure original + arg list is properly initialized (Bug#6993, Bug#6994). + +2010-09-06 Alexander Klimov (tiny change) + + * files.el (directory-abbrev-alist): Use \` as default regexp. + + * emacs-lisp/rx.el (rx-any): Don't explode ranges that end in special + chars like - or ] (bug#6984). + (rx-any-condense-range): Explode 2-char ranges. + +2010-09-06 Glenn Morris + + * desktop.el (desktop-path): Bump :version after 2009-09-15 change. + +2010-09-06 Stefan Monnier + + * textmodes/bibtex.el: + * proced.el: Update to new email for Roland Winkler . + +2010-09-05 Lars Magne Ingebrigtsen + + * net/imap.el (imap-message-map): Remove optional buffer parameter, + since no callers use it. + (imap-message-get): Ditto. + (imap-message-put): Ditto. + (imap-mailbox-map): Ditto. + (imap-mailbox-put): Ditto. + (imap-mailbox-get): Ditto. + (imap-mailbox-get): Revert last change for this function. + +2010-09-05 Lars Magne Ingebrigtsen + + * net/imap.el (imap-fetch-safe): Remove function, and alter all + callers to use `imap-fetch' instead. According to the comments, this + should be safe, since all other IMAP clients use the 1:* syntax. + (imap-enable-exchange-bug-workaround): Remove. + (imap-debug): Remove -- doesn't seem very useful. + +2010-09-05 Lars Magne Ingebrigtsen + + * net/imap.el (imap-log): New convenience function used throughout + instead of repeating the same code all over the place. + +2010-09-05 David De La Harpe Golden + + * mouse.el (mouse-save-then-kill): Save region to kill-ring + when mouse-drag-copy-region is non-nil (Bug#6956). + +2010-09-05 Chong Yidong + + * dired.el (dired-ls-sorting-switches, dired-sort-by-name-regexp): + Improve regexps (Bug#6987). + (dired-sort-toggle): Search more robustly for -t flag. + + * files.el (get-free-disk-space): Search more robustly for + "available" column. Suggested by Ehud Karni + . + +2010-09-05 Juanma Barranquero + + * international/uni-bidi.el: + * international/uni-category.el: + * international/uni-combining.el: + * international/uni-decimal.el: + * international/uni-mirrored.el: + * international/uni-name.el: Regenerate. + +2010-09-04 Stefan Monnier + + * electric.el (electric-indent-post-self-insert-function): + Don't reindent with a sloppy indentation function. + + * emacs-lisp/syntax.el (syntax-ppss): More sanity check to catch + border case in change-log-mode. + +2010-09-04 Chong Yidong + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Remove ruby regexp; handle Ruby errors with gcc-include and gnu. + Recognize leading tab in gcc-include regexp. Ignore names with + leading "from" or "in" in gnu regexp (Bug#6937). + +2010-09-04 Stefan Monnier + + Avoid global recursive calls to kill-buffer-hooks; fit into 80 cols. + * textmodes/ispell.el (ispell-process-buffer-name): Remove. + (ispell-start-process): Avoid setq and simplify logic. + (ispell-init-process): Setup kill-buffer-hook locally when needed. + (kill-buffer-hook): Don't use it globally with code that uses + expand-file-name since that may call kill-buffer via + code_conversion_restore. + +2010-09-04 Noorul Islam K M (tiny change) + + * emacs-lisp/package.el (package-directory-list): Only call + file-name-nondirectory on a string. + +2010-09-02 Chong Yidong + + * emacs-lisp/package.el (package--download-one-archive): + Ensure that archive-contents is valid before saving it. + (package-activate-1, package-mark-obsolete, define-package) + (package-compute-transaction, package-list-maybe-add): Use push. + +2010-09-03 Stefan Monnier + + Use SMIE's blink-paren for octave-mode. + * progmodes/octave-mod.el (octave-font-lock-close-quotes): + Backslashes do not escape single-quotes, single-quotes do. + (octave-block-else-regexp, octave-block-end-regexp) + (octave-block-match-alist): Remove. + (octave-smie-bnf-table): New var, with old content. + (octave-smie-op-levels): Use it. + (octave-smie-closer-alist): New var. + (octave-mode): Use it. Setup smie-blink-matching and electric-indent. + (octave-blink-matching-block-open): Remove. + (octave-reindent-then-newline-and-indent, octave-electric-semi) + (octave-electric-space): Let self-insert-command run expand-abbrev and + blink parens. + + * electric.el (electricity): New group. + (electric-indent-chars): New var. + (electric-indent-post-self-insert-function): New fun. + (electric-indent-mode): New minor mode. + (electric-pair-skip-self): New custom. + (electric-pair-post-self-insert-function): New function. + (electric-pair-mode): New minor mode. + + * calc/calc-aent.el (calcAlg-blink-matching-check): New fun, to replace + calcAlg-blink-matching-open. + (calc-alg-ent-map, calc-alg-ent-esc-map): Initialize in the declaration. + (calc-do-alg-entry): Only touch the part of the keymap that varies. + Use the new blink-matching-check-function. + + Provide blink-matching support to SMIE. + * emacs-lisp/smie.el (smie-bnf-closer-alist): New function. + (smie-blink-matching-triggers, smie-blink-matching-inners): New vars. + (smie-blink-matching-check, smie-blink-matching-open): New functions. + + * simple.el (newline): Fix last change to properly remove itself from + the hook. + +2010-09-02 Stefan Monnier + + * simple.el (newline): Eliminate optimization. + Use post-self-insert-hook to set hard-newline and things before + running post-self-insert-hook. + (blink-matching-check-mismatch): New function. + (blink-matching-check-function): New variable. + (blink-matching-open): Use them. + Skip back forward over prefix chars skipped by forward-sexp. + Don't check if the parens are backslash escaped. + (blink-paren-post-self-insert-function): Check backslash escaping here. + +2010-09-02 Chong Yidong + + * emacs-lisp/package.el (package-menu-mode-map): + Change package-menu-revert bindings to revert-buffer. + (package-menu-mode): Set revert-buffer-function. + (package-menu-revert): Doc fix. + +2010-09-02 Agustín Martín + + * textmodes/ispell.el (ispell-init-process): Use "~/" as + `default-directory' unless using Ispell per-directory personal + dictionaries and not in a mini-buffer under XEmacs. + (kill-buffer-hook): Do not kill ispell process on exit when + `ispell-process-directory' is "~/". (Bug#6143) + +2010-09-02 Jan Djärv + + * simple.el (kill-new): Call interprogram-cut-function with only + one argument. + + * term.el (term-mouse-paste): Don't call x-get-cutbuffer. + Remove cut buffer from error message. + + * term/x-win.el (x-select-text): + * term/pc-win.el (x-selection-value): + * term/ns-win.el (x-selection-value): + * eshell/em-term.el: + * w32-fns.el (x-get-selection-value): + * mouse-sel.el (mouse-sel-set-selection-function): + * frame.el (display-selections-p): Remove cut-buffer in documentation. + + * term/x-win.el: Update documentation for x-last-selected-text-*. + (x-last-selected-text-cut, x-last-selected-text-cut-encoded) + (x-last-cut-buffer-coding, x-cut-buffer-max): Remove. + (x-select-text): Remove argument PUSH, update documentation. + Remove cut-buffer code. + (x-selection-value-internal): Was previously x-selection-value. + (x-selection-value): Rename from x-cut-buffer-or-selection-value. + Update documentation, remove cut-buffer code. + Call x-selection-value-internal. + (x-clipboard-yank): Call x-selection-value-internal. + (x-initialize-window-system): Remove setting of x-cut-buffer-max. + + * term/pc-win.el (x-last-selected-text): + x-cut-buffer-or-selection-value renamed to x-selection-value + (x-select-text): Remove argument PUSH, update documentation. + + * term/ns-win.el (x-setup-function-keys, ns-last-selected-text): + x-cut-buffer-or-selection-value renamed to x-selection-value + (x-selection-value): Rename from x-cut-buffer-or-selection-value. + (x-select-text): Remove argument PUSH, update documentation. + + * emacs-lisp/cl-macs.el (x-get-cutbuffer, x-get-cut-buffer): Remove. + + * w32-fns.el (x-last-selected-text): + x-cut-buffer-or-selection-value renamed to x-selection-value. + (x-cut-buffer-max): Remove. + (x-select-text): Remove argument PUSH, update documentation. + + * simple.el (interprogram-cut-function): Remove mention of PUSH. + + * select.el (x-get-cut-buffer, x-set-cut-buffer): Remove. + + * mouse-sel.el (mouse-sel-get-selection-function): + x-cut-buffer-or-selection-value renamed to x-selection-value. + (x-select-text): Remove optional push. + +2010-09-01 Stefan Monnier + + * simple.el (blink-paren-function): Move from C to here. + (blink-paren-post-self-insert-function): New function. + (post-self-insert-hook): Use it. + + * emacs-lisp/pcase.el (pcase-split-memq): + Fix overenthusiastic optimisation. + (pcase-u1): Handle the case of a lambda pred. + +2010-08-31 Kenichi Handa + + * international/mule-cmds.el (standard-display-european-internal): + Setup standard-display-table for 8-bit characters by storing 8-bit + characters in the element vector. + + * disp-table.el (standard-display-8bit): + Setup standard-display-table for 8-bit characters by storing 8-bit + characters in the element vector. + (standard-display-european): Likewise. + +2010-08-31 Masatake YAMATO + + * textmodes/nroff-mode.el (nroff-view): New command. + (nroff-mode-map): Bind it to C-c C-c. + +2010-08-31 Stefan Monnier + + * emacs-lisp/smie.el (smie-down-list): New command. + + Remove old indentation and navigation code on octave-mode. + * progmodes/octave-mod.el (octave-mode-map): Remap down-list to + smie-down-list rather than add a binding for octave-down-block. + (octave-mark-block, octave-blink-matching-block-open): + Rely on forward-sexp-function. + (octave-fill-paragraph): Don't narrow, so you can use + indent-according-to-mode. + (octave-block-begin-regexp, octave-block-begin-or-end-regexp): Remove. + (octave-in-block-p, octave-re-search-forward-kw) + (octave-re-search-backward-kw, octave-indent-calculate) + (octave-end-as-array-index-p, octave-block-end-offset) + (octave-scan-blocks, octave-forward-block, octave-backward-block) + (octave-down-block, octave-backward-up-block, octave-up-block) + (octave-before-magic-comment-p, octave-indent-line): Remove. + +2010-08-31 Chong Yidong + + * emacs-lisp/package.el (package--read-archive-file): Just use + `read', to avoid copying an additional string. + (package-menu-mode): Set header-line-format here. + (package-menu-refresh, package-menu-revert): Signal an error if + not in the Package Menu. + (package-menu-package-list): New var. + (package--generate-package-list): Operate on the current buffer; + don't assume that it is *Packages*, since the user may rename it. + Allow persistent package listings and sort keys using + package-menu-package-list and package-menu-package-sort-key. + (package-menu--version-predicate): Fix version calculation. + (package-menu-sort-by-column): Don't select the window. + (package--list-packages): Create the *Packages* buffer. + Set package-menu-package-list-key. + (list-packages): Sorting by status is now the default. + (package-buffer-info): Use match-string-no-properties. + (define-package): Add a &rest argument for future proofing, but + don't use it yet. + (package-install-from-buffer, package-install-buffer-internal): + Merge into a single function, package-install-from-buffer. + (package-install-file): Change caller. + + * finder.el: Load finder-inf using `require'. + (finder-list-matches): Sorting by status is now the default. + (finder-compile-keywords): Simpify printing. + +2010-08-30 Stefan Monnier + + * progmodes/octave-mod.el (octave-font-lock-keywords): Use regexp-opt. + (octave-mode-map): Remove special bindings for forward/backward-block + and octave-backward-up-block. Use smie-close-block. + (octave-continuation-marker-regexp): New var. + (octave-continuation-regexp): Use it. + (octave-operator-table, octave-smie-op-levels) + (octave-operator-regexp, octave-smie-indent-rules): New vars. + (octave-smie-backward-token, octave-smie-forward-token): New funs. + (octave-mode): Use SMIE. + (octave-close-block): Delete. + +2010-08-30 Eli Zaretskii + + * menu-bar.el (menu-bar-edit-menu) <"Paste">: Check selection in + CLIPBOARD, not in PRIMARY. (Bug#6944) + +2010-08-30 Stefan Monnier + + * emacs-lisp/smie.el (smie-indent-offset-rule): Let :parent take + a list of parents. + (smie-indent-column): Allow indirection through variables. + + * composite.el (save-buffer-state): Delete, unused. + * font-lock.el (save-buffer-state): Use with-silent-modifications. + (font-lock-default-fontify-region): Use with-syntax-table. + * jit-lock.el (with-buffer-unmodified): Remove. + (with-buffer-prepared-for-jit-lock): Use with-silent-modifications. + + Use `declare' in defmacros. + * window.el (save-selected-window): + * subr.el (with-temp-file, with-temp-message, with-syntax-table): + * progmodes/python.el (def-python-skeleton): + * net/dbus.el (dbus-ignore-errors): + * jka-cmpr-hook.el (with-auto-compression-mode): + * international/mule.el (with-category-table): + * emacs-lisp/timer.el (with-timeout): + * emacs-lisp/lisp-mnt.el (lm-with-file): + * emacs-lisp/eieio.el (with-slots): + * emacs-lisp/easymenu.el (easy-menu-define): + * emacs-lisp/debug.el (debugger-env-macro): + * emacs-lisp/cl-compat.el (Multiple-value-bind, Multiple-value-setq) + (Multiple-value-call, Multiple-value-prog1): + * emacs-lisp/cl-seq.el (cl-parsing-keywords, cl-check-key) + (cl-check-test-nokey, cl-check-test, cl-check-match): Move indent and + edebug rule to definition. + * emacs-lisp/lisp-mode.el (save-selected-window) + (with-current-buffer, combine-after-change-calls) + (with-output-to-string, with-temp-file, with-temp-buffer) + (with-temp-message, with-syntax-table, read-if, eval-after-load) + (dolist, dotimes, when, unless): + * emacs-lisp/byte-run.el (inline): Remove indent rule, redundant. + +2010-08-29 Chong Yidong + + * finder.el: Require `package'. + (finder-known-keywords): Tweak descriptions. Retire `oop' keyword. + (finder-package-info): Var deleted. + (finder-keywords-hash, finder--builtins-alist): New vars. + (finder-compile-keywords): Compute package--builtins and + finder-keywords-hash instead of finder-keywords-hash, respecting + the "Package" header. + (finder-unknown-keywords, finder-list-matches): + Use finder-keywords-hash and package--list-packages. + (finder-mode): Don't set font-lock-defaults. + (finder-exit): We don't use "*Finder-package*" and "*Finder + Category*" buffers anymore. + + * emacs-lisp/package.el (package--builtins-base): Var deleted. + (package--builtins): Set default value to nil. + (package-initialize): Load precomputed value of package--builtins + from finder-inf.el. + (package-alist, package-compute-transaction) + (package-download-transaction): Improve docstring. + (package-read-all-archive-contents): Do not change + package--builtins here. + (list-packages): Make package-list-packages an alias for this. + Sort by status by default. + (package--list-packages): Add optional PACKAGES arg. + (describe-package-1): Use font-lock-face property. For built-in + packages, insert file commentary. + (package--generate-package-list): Rename from + package-list-packages-internal; all callers changed. Add optional + PACKAGES arg. Add alphabetical sort fallbacks. + (package-menu--version-predicate, package-menu--status-predicate) + (package-menu--description-predicate) + (package-menu--name-predicate): New functions. + + * info.el (Info-finder-find-node): Search package-alist instead of + finder-package-info. + +2010-08-29 Chong Yidong + + * subr.el (version-regexp-alist): Don't use "a" and "b" for + "alpha" and "beta". + (version-to-list): Handle versions like "10.3d". + +2010-08-28 Stefan Monnier + + * emacs-lisp/macroexp.el (macroexpand-all-1): Use pcase. + (macroexp-accumulate): Use `declare'. + +2010-08-27 Vinicius Jose Latorre + + * whitespace.el (whitespace-style): Adjust type declaration. + +2010-08-26 Łukasz Stelmach (tiny change) + + * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921). + +2010-08-26 Chong Yidong + + * simple.el (beginning-of-buffer, end-of-buffer): Doc fix + (Bug#6907). + +2010-08-26 Nathan Weizenbaum (tiny change) + + * progmodes/js.el: Make indentation more customizable (Bug#6914). + (js-paren-indent-offset, js-square-indent-offset) + (js-curly-indent-offset): New options. + (js--proper-indentation): Use them. + +2010-08-26 Daniel Colascione + + * progmodes/sh-script.el (sh-get-indent-info): Use syntax-ppss + instead of inspecting font-lock properties (Bug#6916). + +2010-08-26 David Reitter + + * server.el (server-visit-files): Run pre-command-hook and + post-command-hook for each buffer while it is current (Bug#6910). + (server-execute): Do not run hooks here. + +2010-08-26 Michael Albinus + + Sync with Tramp 2.1.19. + + * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Protect + deleting tmpfile. + (tramp-gvfs-maybe-open-connection): Use `tramp-compat-funcall'. + + * net/tramp.el (tramp-handle-expand-file-name) + (tramp-completion-handle-file-name-all-completions) + (tramp-completion-handle-file-name-completion): + Use `tramp-connectable-p'. + + * net/trampver.el: Update release number. + +2010-08-26 Chong Yidong + + * help.el (help-map): Bind `C-h P' to describe-package. + + * menu-bar.el (menu-bar-describe-menu): Add describe-package. + + * emacs-lisp/package.el (package-refresh-contents): Catch errors + when downloading archives. + (describe-package-1): Add package commentary. + (package-install-button-action): New function. + (package-menu-mode-map): Bind ? to package-menu-describe-package. + (package-menu-view-commentary): Function removed. + (package-list-packages-internal): Hide the `package' package too. + +2010-08-25 Kenichi Handa + + * language/misc-lang.el ("Arabic"): New language environment. + Setup composition-function-table for Arabic characters. + + * international/fontset.el (setup-default-fontset): Fix typo for + arabic OTF spec (fini->fina). + +2010-08-25 Jan Djärv + + * menu-bar.el (menu-bar-set-tool-bar-position): Set frame parameter + on all frames. + +2010-08-24 Vinicius Jose Latorre + + * whitespace.el: Allow cleaning up blanks without blank + visualization (Bug#6651). Adjust help window for + whitespace-toggle-options (Bug#6479). Allow to use fill-column + instead of whitespace-line-column (from EmacsWiki). New version + 13.1. + (whitespace-style): Add new value 'face. Adjust docstring. + (whitespace-space, whitespace-hspace, whitespace-tab): + Adjust foreground property face. + (whitespace-line-column): Adjust docstring and type declaration. + (whitespace-style-value-list, whitespace-toggle-option-alist) + (whitespace-help-text): Adjust const initialization. + (whitespace-toggle-options, global-whitespace-toggle-options): Adjust docstring. (whitespace-display-window, whitespace-interactive-char) (whitespace-style-face-p, whitespace-color-on): Adjust code. diff --cc lisp/vc/emerge.el index 601b6b1e597,00000000000..5435a840ac9 mode 100644,000000..100644 --- a/lisp/vc/emerge.el +++ b/lisp/vc/emerge.el @@@ -1,3197 -1,0 +1,3202 @@@ +;;; emerge.el --- merge diffs under Emacs control + +;;; The author has placed this file in the public domain. + +;; This file is part of GNU Emacs. + +;; Author: Dale R. Worley +;; Keywords: unix, vc, tools + +;; This software was created by Dale R. Worley and is +;; distributed free of charge. It is placed in the public domain and +;; permission is granted to anyone to use, duplicate, modify and redistribute +;; it provided that this notice is attached. + +;; Dale R. Worley provides absolutely NO WARRANTY OF ANY KIND +;; with respect to this software. The entire risk as to the quality and +;; performance of this software is with the user. IN NO EVENT WILL DALE +;; R. WORLEY BE LIABLE TO ANYONE FOR ANY DAMAGES ARISING OUT THE +;; USE OF THIS SOFTWARE, INCLUDING, WITHOUT LIMITATION, DAMAGES RESULTING FROM +;; LOST DATA OR LOST PROFITS, OR FOR ANY SPECIAL, INCIDENTAL OR CONSEQUENTIAL +;; DAMAGES. + +;;; Commentary: + +;;; Code: + +;; There aren't really global variables, just dynamic bindings +(defvar A-begin) +(defvar A-end) +(defvar B-begin) +(defvar B-end) +(defvar diff-vector) +(defvar merge-begin) +(defvar merge-end) +(defvar valid-diff) + +;;; Macros + +(defmacro emerge-defvar-local (var value doc) + "Defines SYMBOL as an advertised variable. +Performs a defvar, then executes `make-variable-buffer-local' on +the variable. Also sets the `preserved' property, so that +`kill-all-local-variables' (called by major-mode setting commands) +won't destroy Emerge control variables." + `(progn + (defvar ,var ,value ,doc) + (make-variable-buffer-local ',var) + (put ',var 'preserved t))) + +;; Add entries to minor-mode-alist so that emerge modes show correctly +(defvar emerge-minor-modes-list + '((emerge-mode " Emerge") + (emerge-fast-mode " F") + (emerge-edit-mode " E") + (emerge-auto-advance " A") + (emerge-skip-prefers " S"))) +(if (not (assq 'emerge-mode minor-mode-alist)) + (setq minor-mode-alist (append emerge-minor-modes-list + minor-mode-alist))) + +;; We need to define this function so describe-mode can describe Emerge mode. +(defun emerge-mode () + "Emerge mode is used by the Emerge file-merging package. +It is entered only through one of the functions: + `emerge-files' + `emerge-files-with-ancestor' + `emerge-buffers' + `emerge-buffers-with-ancestor' + `emerge-files-command' + `emerge-files-with-ancestor-command' + `emerge-files-remote' + `emerge-files-with-ancestor-remote' + +Commands: +\\{emerge-basic-keymap} +Commands must be prefixed by \\\\[emerge-basic-keymap] in `edit' mode, +but can be invoked directly in `fast' mode.") + +(define-obsolete-variable-alias 'emerge-version 'emacs-version "23.2") + +(defun emerge-version () + "Return string describing the version of Emerge. +When called interactively, displays the version." + (interactive) + (if (called-interactively-p 'interactive) + (message "Emerge version %s" emacs-version) + emacs-version)) + +(make-obsolete 'emerge-version 'emacs-version "23.2") + +;;; Emerge configuration variables + +(defgroup emerge nil + "Merge diffs under Emacs control." + :group 'tools) + +;; Commands that produce difference files +;; All that can be configured is the name of the programs to execute +;; (emerge-diff-program and emerge-diff3-program) and the options +;; to be provided (emerge-diff-options). The order in which the file names +;; are given is fixed. +;; The file names are always expanded (see expand-file-name) before being +;; passed to diff, thus they need not be invoked under a shell that +;; understands `~'. +;; The code which processes the diff/diff3 output depends on all the +;; finicky details of their output, including the somewhat strange +;; way they number lines of a file. +(defcustom emerge-diff-program "diff" + "Name of the program which compares two files." + :type 'string + :group 'emerge) +(defcustom emerge-diff3-program "diff3" + "Name of the program which compares three files. +Its arguments are the ancestor file and the two variant files." + :type 'string + :group 'emerge) +(defcustom emerge-diff-options "" + "Options to pass to `emerge-diff-program' and `emerge-diff3-program'." + :type 'string + :group 'emerge) +(defcustom emerge-match-diff-line + (let ((x "\\([0-9]+\\)\\(\\|,\\([0-9]+\\)\\)")) + (concat "^" x "\\([acd]\\)" x "$")) + "Pattern to match lines produced by diff that describe differences. +This is as opposed to lines from the source files." + :type 'regexp + :group 'emerge) +(defcustom emerge-diff-ok-lines-regexp + "^\\([0-9,]+[acd][0-9,]+$\\|[<>] \\|---\\)" + "Regexp that matches normal output lines from `emerge-diff-program'. +Lines that do not match are assumed to be error messages." + :type 'regexp + :group 'emerge) +(defcustom emerge-diff3-ok-lines-regexp + "^\\([1-3]:\\|====\\| \\)" + "Regexp that matches normal output lines from `emerge-diff3-program'. +Lines that do not match are assumed to be error messages." + :type 'regexp + :group 'emerge) + +(defcustom emerge-rcs-ci-program "ci" + "Name of the program that checks in RCS revisions." + :type 'string + :group 'emerge) +(defcustom emerge-rcs-co-program "co" + "Name of the program that checks out RCS revisions." + :type 'string + :group 'emerge) + +(defcustom emerge-process-local-variables nil + "Non-nil if Emerge should process local-variables lists in merge buffers. +\(You can explicitly request processing the local-variables +by executing `(hack-local-variables)'.)" + :type 'boolean + :group 'emerge) +(defcustom emerge-execute-line-deletions nil + "If non-nil: `emerge-execute-line' makes no output if an input was deleted. +It concludes that an input version has been deleted when an ancestor entry +is present, only one A or B entry is present, and an output entry is present. +If nil: In such circumstances, the A or B file that is present will be +copied to the designated output file." + :type 'boolean + :group 'emerge) + +(defcustom emerge-before-flag "vvvvvvvvvvvvvvvvvvvv\n" + "Flag placed above the highlighted block of code. Must end with newline. +Must be set before Emerge is loaded, or emerge-new-flags must be run +after setting." + :type 'string + :group 'emerge) +(defcustom emerge-after-flag "^^^^^^^^^^^^^^^^^^^^\n" + "Flag placed below the highlighted block of code. Must end with newline. +Must be set before Emerge is loaded, or emerge-new-flags must be run +after setting." + :type 'string + :group 'emerge) + +;; Hook variables + +(defcustom emerge-startup-hook nil + "Hook to run in the merge buffer after the merge has been set up." + :type 'hook + :group 'emerge) +(defcustom emerge-select-hook nil + "Hook to run after a difference has been selected. +The variable `n' holds the (internal) number of the difference." + :type 'hook + :group 'emerge) +(defcustom emerge-unselect-hook nil + "Hook to run after a difference has been unselected. +The variable `n' holds the (internal) number of the difference." + :type 'hook + :group 'emerge) + +;; Variables to control the default directories of the arguments to +;; Emerge commands. + +(defcustom emerge-default-last-directories nil + "If nil, default dir for filenames in emerge is `default-directory'. +If non-nil, filenames complete in the directory of the last argument of the +same type to an `emerge-files...' command." + :type 'boolean + :group 'emerge) + +(defvar emerge-last-dir-A nil + "Last directory for the first file of an `emerge-files...' command.") +(defvar emerge-last-dir-B nil + "Last directory for the second file of an `emerge-files...' command.") +(defvar emerge-last-dir-ancestor nil + "Last directory for the ancestor file of an `emerge-files...' command.") +(defvar emerge-last-dir-output nil + "Last directory for the output file of an `emerge-files...' command.") +(defvar emerge-last-revision-A nil + "Last RCS revision used for first file of an `emerge-revisions...' command.") +(defvar emerge-last-revision-B nil + "Last RCS revision used for second file of an `emerge-revisions...' command.") +(defvar emerge-last-revision-ancestor nil + "Last RCS revision used for ancestor file of an `emerge-revisions...' command.") + +(defvar emerge-before-flag-length) +(defvar emerge-before-flag-lines) +(defvar emerge-before-flag-match) +(defvar emerge-after-flag-length) +(defvar emerge-after-flag-lines) +(defvar emerge-after-flag-match) +(defvar emerge-diff-buffer) +(defvar emerge-diff-error-buffer) +(defvar emerge-prefix-argument) +(defvar emerge-file-out) +(defvar emerge-exit-func) +(defvar emerge-globalized-difference-list) +(defvar emerge-globalized-number-of-differences) + +;; The flags used to mark differences in the buffers. + +;; These function definitions need to be up here, because they are used +;; during loading. +(defun emerge-new-flags () + "Function to be called after `emerge-{before,after}-flag'. +This is called after these functions are changed to compute values that +depend on the flags." + (setq emerge-before-flag-length (length emerge-before-flag)) + (setq emerge-before-flag-lines + (emerge-count-matches-string emerge-before-flag "\n")) + (setq emerge-before-flag-match (regexp-quote emerge-before-flag)) + (setq emerge-after-flag-length (length emerge-after-flag)) + (setq emerge-after-flag-lines + (emerge-count-matches-string emerge-after-flag "\n")) + (setq emerge-after-flag-match (regexp-quote emerge-after-flag))) + +(defun emerge-count-matches-string (string regexp) + "Return the number of matches in STRING for REGEXP." + (let ((i 0) + (count 0)) + (while (string-match regexp string i) + (setq count (1+ count)) + (setq i (match-end 0))) + count)) + +;; Calculate dependent variables +(emerge-new-flags) + +(defcustom emerge-min-visible-lines 3 + "Number of lines that we want to show above and below the flags when we are +displaying a difference." + :type 'integer + :group 'emerge) + +(defcustom emerge-temp-file-prefix + (expand-file-name "emerge" temporary-file-directory) + "Prefix to put on Emerge temporary file names. +Do not start with `~/' or `~USERNAME/'." + :type 'string + :group 'emerge) + +(defcustom emerge-temp-file-mode 384 ; u=rw only + "Mode for Emerge temporary files." + :type 'integer + :group 'emerge) + +(defcustom emerge-combine-versions-template + "#ifdef NEW\n%b#else /* not NEW */\n%a#endif /* not NEW */\n" + "Template for `emerge-combine-versions' to combine the two versions. +The template is inserted as a string, with the following interpolations: + %a the A version of the difference + %b the B version of the difference + %% the character `%' +Don't forget to end the template with a newline. +Note that this variable can be made local to a particular merge buffer by +giving a prefix argument to `emerge-set-combine-versions-template'." + :type 'string + :group 'emerge) + +;; Build keymaps + +(defvar emerge-basic-keymap nil + "Keymap of Emerge commands. +Directly available in `fast' mode; +must be prefixed by \\\\[emerge-basic-keymap] in `edit' mode.") + +(defvar emerge-fast-keymap nil + "Local keymap used in Emerge `fast' mode. +Makes Emerge commands directly available.") + +(defvar emerge-options-menu + (make-sparse-keymap "Options")) + +(defvar emerge-merge-menu + (make-sparse-keymap "Merge")) + +(defvar emerge-move-menu + (make-sparse-keymap "Move")) + +(defcustom emerge-command-prefix "\C-c\C-c" + "Command prefix for Emerge commands in `edit' mode. +Must be set before Emerge is loaded." + :type 'string + :group 'emerge) + +;; This function sets up the fixed keymaps. It is executed when the first +;; Emerge is done to allow the user maximum time to set up the global keymap. +(defun emerge-setup-fixed-keymaps () + ;; Set up the basic keymap + (setq emerge-basic-keymap (make-keymap)) + (suppress-keymap emerge-basic-keymap) ; this sets 0..9 to digit-argument and + ; - to negative-argument + (define-key emerge-basic-keymap "p" 'emerge-previous-difference) + (define-key emerge-basic-keymap "n" 'emerge-next-difference) + (define-key emerge-basic-keymap "a" 'emerge-select-A) + (define-key emerge-basic-keymap "b" 'emerge-select-B) + (define-key emerge-basic-keymap "j" 'emerge-jump-to-difference) + (define-key emerge-basic-keymap "." 'emerge-find-difference) + (define-key emerge-basic-keymap "q" 'emerge-quit) + (define-key emerge-basic-keymap "\C-]" 'emerge-abort) + (define-key emerge-basic-keymap "f" 'emerge-fast-mode) + (define-key emerge-basic-keymap "e" 'emerge-edit-mode) + (define-key emerge-basic-keymap "s" nil) + (define-key emerge-basic-keymap "sa" 'emerge-auto-advance) + (define-key emerge-basic-keymap "ss" 'emerge-skip-prefers) + (define-key emerge-basic-keymap "l" 'emerge-recenter) + (define-key emerge-basic-keymap "d" nil) + (define-key emerge-basic-keymap "da" 'emerge-default-A) + (define-key emerge-basic-keymap "db" 'emerge-default-B) + (define-key emerge-basic-keymap "c" nil) + (define-key emerge-basic-keymap "ca" 'emerge-copy-as-kill-A) + (define-key emerge-basic-keymap "cb" 'emerge-copy-as-kill-B) + (define-key emerge-basic-keymap "i" nil) + (define-key emerge-basic-keymap "ia" 'emerge-insert-A) + (define-key emerge-basic-keymap "ib" 'emerge-insert-B) + (define-key emerge-basic-keymap "m" 'emerge-mark-difference) + (define-key emerge-basic-keymap "v" 'emerge-scroll-up) + (define-key emerge-basic-keymap "^" 'emerge-scroll-down) + (define-key emerge-basic-keymap "<" 'emerge-scroll-left) + (define-key emerge-basic-keymap ">" 'emerge-scroll-right) + (define-key emerge-basic-keymap "|" 'emerge-scroll-reset) + (define-key emerge-basic-keymap "x" nil) + (define-key emerge-basic-keymap "x1" 'emerge-one-line-window) + (define-key emerge-basic-keymap "xc" 'emerge-combine-versions) + (define-key emerge-basic-keymap "xC" 'emerge-combine-versions-register) + (define-key emerge-basic-keymap "xf" 'emerge-file-names) + (define-key emerge-basic-keymap "xj" 'emerge-join-differences) + (define-key emerge-basic-keymap "xl" 'emerge-line-numbers) + (define-key emerge-basic-keymap "xm" 'emerge-set-merge-mode) + (define-key emerge-basic-keymap "xs" 'emerge-split-difference) + (define-key emerge-basic-keymap "xt" 'emerge-trim-difference) + (define-key emerge-basic-keymap "xx" 'emerge-set-combine-versions-template) + ;; Allow emerge-basic-keymap to be referenced indirectly + (fset 'emerge-basic-keymap emerge-basic-keymap) + ;; Set up the fast mode keymap + (setq emerge-fast-keymap (copy-keymap emerge-basic-keymap)) + ;; Allow prefixed commands to work in fast mode + (define-key emerge-fast-keymap emerge-command-prefix 'emerge-basic-keymap) + ;; Allow emerge-fast-keymap to be referenced indirectly + (fset 'emerge-fast-keymap emerge-fast-keymap) + ;; Suppress write-file and save-buffer + (define-key emerge-fast-keymap [remap write-file] 'emerge-query-write-file) + (define-key emerge-fast-keymap [remap save-buffer] 'emerge-query-save-buffer) + + (define-key emerge-basic-keymap [menu-bar] (make-sparse-keymap)) + + (define-key emerge-fast-keymap [menu-bar emerge-options] + (cons "Merge-Options" emerge-options-menu)) + (define-key emerge-fast-keymap [menu-bar merge] + (cons "Merge" emerge-merge-menu)) + (define-key emerge-fast-keymap [menu-bar move] + (cons "Move" emerge-move-menu)) + + (define-key emerge-move-menu [emerge-scroll-reset] + '("Scroll Reset" . emerge-scroll-reset)) + (define-key emerge-move-menu [emerge-scroll-right] + '("Scroll Right" . emerge-scroll-right)) + (define-key emerge-move-menu [emerge-scroll-left] + '("Scroll Left" . emerge-scroll-left)) + (define-key emerge-move-menu [emerge-scroll-down] + '("Scroll Down" . emerge-scroll-down)) + (define-key emerge-move-menu [emerge-scroll-up] + '("Scroll Up" . emerge-scroll-up)) + (define-key emerge-move-menu [emerge-recenter] + '("Recenter" . emerge-recenter)) + (define-key emerge-move-menu [emerge-mark-difference] + '("Mark Difference" . emerge-mark-difference)) + (define-key emerge-move-menu [emerge-jump-to-difference] + '("Jump To Difference" . emerge-jump-to-difference)) + (define-key emerge-move-menu [emerge-find-difference] + '("Find Difference" . emerge-find-difference)) + (define-key emerge-move-menu [emerge-previous-difference] + '("Previous Difference" . emerge-previous-difference)) + (define-key emerge-move-menu [emerge-next-difference] + '("Next Difference" . emerge-next-difference)) + + + (define-key emerge-options-menu [emerge-one-line-window] + '("One Line Window" . emerge-one-line-window)) + (define-key emerge-options-menu [emerge-set-merge-mode] + '("Set Merge Mode..." . emerge-set-merge-mode)) + (define-key emerge-options-menu [emerge-set-combine-template] + '("Set Combine Template..." . emerge-set-combine-template)) + (define-key emerge-options-menu [emerge-default-B] + '("Default B" . emerge-default-B)) + (define-key emerge-options-menu [emerge-default-A] + '("Default A" . emerge-default-A)) + (define-key emerge-options-menu [emerge-skip-prefers] + '(menu-item "Skip Prefers" emerge-skip-prefers + :button (:toggle . emerge-skip-prefers))) + (define-key emerge-options-menu [emerge-auto-advance] + '(menu-item "Auto Advance" emerge-auto-advance + :button (:toggle . emerge-auto-advance))) + (define-key emerge-options-menu [emerge-edit-mode] + '(menu-item "Edit Mode" emerge-edit-mode :enable (not emerge-edit-mode))) + (define-key emerge-options-menu [emerge-fast-mode] + '(menu-item "Fast Mode" emerge-fast-mode :enable (not emerge-fast-mode))) + + (define-key emerge-merge-menu [emerge-abort] '("Abort" . emerge-abort)) + (define-key emerge-merge-menu [emerge-quit] '("Quit" . emerge-quit)) + (define-key emerge-merge-menu [emerge-split-difference] + '("Split Difference" . emerge-split-difference)) + (define-key emerge-merge-menu [emerge-join-differences] + '("Join Differences" . emerge-join-differences)) + (define-key emerge-merge-menu [emerge-trim-difference] + '("Trim Difference" . emerge-trim-difference)) + (define-key emerge-merge-menu [emerge-combine-versions] + '("Combine Versions" . emerge-combine-versions)) + (define-key emerge-merge-menu [emerge-copy-as-kill-B] + '("Copy B as Kill" . emerge-copy-as-kill-B)) + (define-key emerge-merge-menu [emerge-copy-as-kill-A] + '("Copy A as Kill" . emerge-copy-as-kill-A)) + (define-key emerge-merge-menu [emerge-insert-B] + '("Insert B" . emerge-insert-B)) + (define-key emerge-merge-menu [emerge-insert-A] + '("Insert A" . emerge-insert-A)) + (define-key emerge-merge-menu [emerge-select-B] + '("Select B" . emerge-select-B)) + (define-key emerge-merge-menu [emerge-select-A] + '("Select A" . emerge-select-A))) + + +;; Variables which control each merge. They are local to the merge buffer. + +;; Mode variables +(emerge-defvar-local emerge-mode nil + "Indicator for emerge-mode.") +(emerge-defvar-local emerge-fast-mode nil + "Indicator for emerge-mode fast submode.") +(emerge-defvar-local emerge-edit-mode nil + "Indicator for emerge-mode edit submode.") +(emerge-defvar-local emerge-A-buffer nil + "The buffer in which the A variant is stored.") +(emerge-defvar-local emerge-B-buffer nil + "The buffer in which the B variant is stored.") +(emerge-defvar-local emerge-merge-buffer nil + "The buffer in which the merged file is manipulated.") +(emerge-defvar-local emerge-ancestor-buffer nil + "The buffer in which the ancestor variant is stored, +or nil if there is none.") + +(defconst emerge-saved-variables + '((buffer-modified-p set-buffer-modified-p) + buffer-read-only + buffer-auto-save-file-name) + "Variables and properties of a buffer which are saved, modified and restored +during a merge.") +(defconst emerge-merging-values '(nil t nil) + "Values to be assigned to emerge-saved-variables during a merge.") + +(emerge-defvar-local emerge-A-buffer-values nil + "Remembers emerge-saved-variables for emerge-A-buffer.") +(emerge-defvar-local emerge-B-buffer-values nil + "Remembers emerge-saved-variables for emerge-B-buffer.") + +(emerge-defvar-local emerge-difference-list nil + "Vector of differences between the variants, and markers in the buffers to +show where they are. Each difference is represented by a vector of seven +elements. The first two are markers to the beginning and end of the difference +section in the A buffer, the second two are markers for the B buffer, the third +two are markers for the merge buffer, and the last element is the \"state\" of +that difference in the merge buffer. + A section of a buffer is described by two markers, one to the beginning of +the first line of the section, and one to the beginning of the first line +after the section. (If the section is empty, both markers point to the same +point.) If the section is part of the selected difference, then the markers +are moved into the flags, so the user can edit the section without disturbing +the markers. + The \"states\" are: + A the merge buffer currently contains the A variant + B the merge buffer currently contains the B variant + default-A the merge buffer contains the A variant by default, + but this difference hasn't been selected yet, so + change-default commands can alter it + default-B the merge buffer contains the B variant by default, + but this difference hasn't been selected yet, so + change-default commands can alter it + prefer-A in a three-file merge, the A variant is the preferred + choice + prefer-B in a three-file merge, the B variant is the preferred + choice") +(emerge-defvar-local emerge-current-difference -1 + "The difference that is currently selected.") +(emerge-defvar-local emerge-number-of-differences nil + "Number of differences found.") +(emerge-defvar-local emerge-edit-keymap nil + "The local keymap for the merge buffer, with the emerge commands defined in +it. Used to save the local keymap during fast mode, when the local keymap is +replaced by emerge-fast-keymap.") +(emerge-defvar-local emerge-old-keymap nil + "The original local keymap for the merge buffer.") +(emerge-defvar-local emerge-auto-advance nil + "*If non-nil, emerge-select-A and emerge-select-B automatically advance to +the next difference.") +(emerge-defvar-local emerge-skip-prefers nil + "*If non-nil, differences for which there is a preference are automatically +skipped.") +(emerge-defvar-local emerge-quit-hook nil + "Hooks to run in the merge buffer after the merge has been finished. +`emerge-prefix-argument' will hold the prefix argument of the `emerge-quit' +command. +This is *not* a user option, since Emerge uses it for its own processing.") +(emerge-defvar-local emerge-output-description nil + "Describes output destination of emerge, for `emerge-file-names'.") + +;;; Setup functions for two-file mode. + +(defun emerge-files-internal (file-A file-B &optional startup-hooks quit-hooks + output-file) + (if (not (file-readable-p file-A)) + (error "File `%s' does not exist or is not readable" file-A)) + (if (not (file-readable-p file-B)) + (error "File `%s' does not exist or is not readable" file-B)) + (let ((buffer-A (find-file-noselect file-A)) + (buffer-B (find-file-noselect file-B))) + ;; Record the directories of the files + (setq emerge-last-dir-A (file-name-directory file-A)) + (setq emerge-last-dir-B (file-name-directory file-B)) + (if output-file + (setq emerge-last-dir-output (file-name-directory output-file))) + ;; Make sure the entire files are seen, and they reflect what is on disk + (with-current-buffer + buffer-A + (widen) + (let ((temp (file-local-copy file-A))) + (if temp + (setq file-A temp + startup-hooks + (cons `(lambda () (delete-file ,file-A)) + startup-hooks)) + ;; Verify that the file matches the buffer + (emerge-verify-file-buffer)))) + (with-current-buffer + buffer-B + (widen) + (let ((temp (file-local-copy file-B))) + (if temp + (setq file-B temp + startup-hooks + (cons `(lambda () (delete-file ,file-B)) + startup-hooks)) + ;; Verify that the file matches the buffer + (emerge-verify-file-buffer)))) + (emerge-setup buffer-A file-A buffer-B file-B startup-hooks quit-hooks + output-file))) + +;; Start up Emerge on two files +(defun emerge-setup (buffer-A file-A buffer-B file-B startup-hooks quit-hooks + output-file) + (setq file-A (expand-file-name file-A)) + (setq file-B (expand-file-name file-B)) + (setq output-file (and output-file (expand-file-name output-file))) + (let* ((merge-buffer-name (emerge-unique-buffer-name "*merge" "*")) + ;; create the merge buffer from buffer A, so it inherits buffer A's + ;; default directory, etc. + (merge-buffer (with-current-buffer + buffer-A + (get-buffer-create merge-buffer-name)))) + (with-current-buffer + merge-buffer + (emerge-copy-modes buffer-A) + (setq buffer-read-only nil) + (auto-save-mode 1) + (setq emerge-mode t) + (setq emerge-A-buffer buffer-A) + (setq emerge-B-buffer buffer-B) + (setq emerge-ancestor-buffer nil) + (setq emerge-merge-buffer merge-buffer) + (setq emerge-output-description + (if output-file + (concat "Output to file: " output-file) + (concat "Output to buffer: " (buffer-name merge-buffer)))) + (save-excursion (insert-buffer-substring emerge-A-buffer)) + (emerge-set-keys) + (setq emerge-difference-list (emerge-make-diff-list file-A file-B)) + (setq emerge-number-of-differences (length emerge-difference-list)) + (setq emerge-current-difference -1) + (setq emerge-quit-hook quit-hooks) + (emerge-remember-buffer-characteristics) + (emerge-handle-local-variables)) + (emerge-setup-windows buffer-A buffer-B merge-buffer t) + (with-current-buffer merge-buffer + (run-hooks 'startup-hooks 'emerge-startup-hook) + (setq buffer-read-only t)))) + +;; Generate the Emerge difference list between two files +(defun emerge-make-diff-list (file-A file-B) + (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*")) + (with-current-buffer + emerge-diff-buffer + (erase-buffer) + (shell-command + (format "%s %s %s %s" + emerge-diff-program emerge-diff-options + (emerge-protect-metachars file-A) + (emerge-protect-metachars file-B)) + t)) + (emerge-prepare-error-list emerge-diff-ok-lines-regexp) + (emerge-convert-diffs-to-markers + emerge-A-buffer emerge-B-buffer emerge-merge-buffer + (emerge-extract-diffs emerge-diff-buffer))) + +(defun emerge-extract-diffs (diff-buffer) + (let (list) + (with-current-buffer + diff-buffer + (goto-char (point-min)) + (while (re-search-forward emerge-match-diff-line nil t) + (let* ((a-begin (string-to-number (buffer-substring (match-beginning 1) + (match-end 1)))) + (a-end (let ((b (match-beginning 3)) + (e (match-end 3))) + (if b + (string-to-number (buffer-substring b e)) + a-begin))) + (diff-type (buffer-substring (match-beginning 4) (match-end 4))) + (b-begin (string-to-number (buffer-substring (match-beginning 5) + (match-end 5)))) + (b-end (let ((b (match-beginning 7)) + (e (match-end 7))) + (if b + (string-to-number (buffer-substring b e)) + b-begin)))) + ;; fix the beginning and end numbers, because diff is somewhat + ;; strange about how it numbers lines + (if (string-equal diff-type "a") + (progn + (setq b-end (1+ b-end)) + (setq a-begin (1+ a-begin)) + (setq a-end a-begin)) + (if (string-equal diff-type "d") + (progn + (setq a-end (1+ a-end)) + (setq b-begin (1+ b-begin)) + (setq b-end b-begin)) + ;; (string-equal diff-type "c") + (progn + (setq a-end (1+ a-end)) + (setq b-end (1+ b-end))))) + (setq list (cons (vector a-begin a-end + b-begin b-end + 'default-A) + list))))) + (nreverse list))) + +;; Set up buffer of diff/diff3 error messages. +(defun emerge-prepare-error-list (ok-regexp) + (setq emerge-diff-error-buffer (get-buffer-create "*emerge-diff-errors*")) + (with-current-buffer + emerge-diff-error-buffer + (erase-buffer) + (save-excursion (insert-buffer-substring emerge-diff-buffer)) + (delete-matching-lines ok-regexp))) + +;;; Top-level and setup functions for three-file mode. + +(defun emerge-files-with-ancestor-internal (file-A file-B file-ancestor + &optional startup-hooks quit-hooks + output-file) + (if (not (file-readable-p file-A)) + (error "File `%s' does not exist or is not readable" file-A)) + (if (not (file-readable-p file-B)) + (error "File `%s' does not exist or is not readable" file-B)) + (if (not (file-readable-p file-ancestor)) + (error "File `%s' does not exist or is not readable" file-ancestor)) + (let ((buffer-A (find-file-noselect file-A)) + (buffer-B (find-file-noselect file-B)) + (buffer-ancestor (find-file-noselect file-ancestor))) + ;; Record the directories of the files + (setq emerge-last-dir-A (file-name-directory file-A)) + (setq emerge-last-dir-B (file-name-directory file-B)) + (setq emerge-last-dir-ancestor (file-name-directory file-ancestor)) + (if output-file + (setq emerge-last-dir-output (file-name-directory output-file))) + ;; Make sure the entire files are seen, and they reflect what is on disk + (with-current-buffer + buffer-A + (widen) + (let ((temp (file-local-copy file-A))) + (if temp + (setq file-A temp + startup-hooks + (cons `(lambda () (delete-file ,file-A)) + startup-hooks)) + ;; Verify that the file matches the buffer + (emerge-verify-file-buffer)))) + (with-current-buffer + buffer-B + (widen) + (let ((temp (file-local-copy file-B))) + (if temp + (setq file-B temp + startup-hooks + (cons `(lambda () (delete-file ,file-B)) + startup-hooks)) + ;; Verify that the file matches the buffer + (emerge-verify-file-buffer)))) + (with-current-buffer + buffer-ancestor + (widen) + (let ((temp (file-local-copy file-ancestor))) + (if temp + (setq file-ancestor temp + startup-hooks + (cons `(lambda () (delete-file ,file-ancestor)) + startup-hooks)) + ;; Verify that the file matches the buffer + (emerge-verify-file-buffer)))) + (emerge-setup-with-ancestor buffer-A file-A buffer-B file-B + buffer-ancestor file-ancestor + startup-hooks quit-hooks output-file))) + +;; Start up Emerge on two files with an ancestor +(defun emerge-setup-with-ancestor (buffer-A file-A buffer-B file-B + buffer-ancestor file-ancestor + &optional startup-hooks quit-hooks + output-file) + (setq file-A (expand-file-name file-A)) + (setq file-B (expand-file-name file-B)) + (setq file-ancestor (expand-file-name file-ancestor)) + (setq output-file (and output-file (expand-file-name output-file))) + (let* ((merge-buffer-name (emerge-unique-buffer-name "*merge" "*")) + ;; create the merge buffer from buffer A, so it inherits buffer A's + ;; default directory, etc. + (merge-buffer (with-current-buffer + buffer-A + (get-buffer-create merge-buffer-name)))) + (with-current-buffer + merge-buffer + (emerge-copy-modes buffer-A) + (setq buffer-read-only nil) + (auto-save-mode 1) + (setq emerge-mode t) + (setq emerge-A-buffer buffer-A) + (setq emerge-B-buffer buffer-B) + (setq emerge-ancestor-buffer buffer-ancestor) + (setq emerge-merge-buffer merge-buffer) + (setq emerge-output-description + (if output-file + (concat "Output to file: " output-file) + (concat "Output to buffer: " (buffer-name merge-buffer)))) + (save-excursion (insert-buffer-substring emerge-A-buffer)) + (emerge-set-keys) + (setq emerge-difference-list + (emerge-make-diff3-list file-A file-B file-ancestor)) + (setq emerge-number-of-differences (length emerge-difference-list)) + (setq emerge-current-difference -1) + (setq emerge-quit-hook quit-hooks) + (emerge-remember-buffer-characteristics) + (emerge-select-prefer-Bs) + (emerge-handle-local-variables)) + (emerge-setup-windows buffer-A buffer-B merge-buffer t) + (with-current-buffer merge-buffer + (run-hooks 'startup-hooks 'emerge-startup-hook) + (setq buffer-read-only t)))) + +;; Generate the Emerge difference list between two files with an ancestor +(defun emerge-make-diff3-list (file-A file-B file-ancestor) + (setq emerge-diff-buffer (get-buffer-create "*emerge-diff*")) + (with-current-buffer + emerge-diff-buffer + (erase-buffer) + (shell-command + (format "%s %s %s %s %s" + emerge-diff3-program emerge-diff-options + (emerge-protect-metachars file-A) + (emerge-protect-metachars file-ancestor) + (emerge-protect-metachars file-B)) + t)) + (emerge-prepare-error-list emerge-diff3-ok-lines-regexp) + (emerge-convert-diffs-to-markers + emerge-A-buffer emerge-B-buffer emerge-merge-buffer + (emerge-extract-diffs3 emerge-diff-buffer))) + +(defun emerge-extract-diffs3 (diff-buffer) + (let (list) + (with-current-buffer + diff-buffer + (while (re-search-forward "^====\\(.?\\)$" nil t) + ;; leave point after matched line + (beginning-of-line 2) + (let ((agreement (buffer-substring (match-beginning 1) (match-end 1)))) + ;; if the A and B files are the same, ignore the difference + (if (not (string-equal agreement "2")) + (setq list + (cons + (let (group-1 group-3 pos) + (setq pos (point)) + (setq group-1 (emerge-get-diff3-group "1")) + (goto-char pos) + (setq group-3 (emerge-get-diff3-group "3")) + (vector (car group-1) (car (cdr group-1)) + (car group-3) (car (cdr group-3)) + (cond ((string-equal agreement "1") 'prefer-A) + ((string-equal agreement "3") 'prefer-B) + (t 'default-A)))) + list)))))) + (nreverse list))) + +(defun emerge-get-diff3-group (file) + ;; This save-excursion allows emerge-get-diff3-group to be called for the + ;; various groups of lines (1, 2, 3) in any order, and for the lines to + ;; appear in any order. The reason this is necessary is that Gnu diff3 + ;; can produce the groups in the order 1, 2, 3 or 1, 3, 2. + (save-excursion + (re-search-forward + (concat "^" file ":\\([0-9]+\\)\\(,\\([0-9]+\\)\\)?\\([ac]\\)$")) + (beginning-of-line 2) + ;; treatment depends on whether it is an "a" group or a "c" group + (if (string-equal (buffer-substring (match-beginning 4) (match-end 4)) "c") + ;; it is a "c" group + (if (match-beginning 2) + ;; it has two numbers + (list (string-to-number + (buffer-substring (match-beginning 1) (match-end 1))) + (1+ (string-to-number + (buffer-substring (match-beginning 3) (match-end 3))))) + ;; it has one number + (let ((x (string-to-number + (buffer-substring (match-beginning 1) (match-end 1))))) + (list x (1+ x)))) + ;; it is an "a" group + (let ((x (1+ (string-to-number + (buffer-substring (match-beginning 1) (match-end 1)))))) + (list x x))))) + +;;; Functions to start Emerge on files + +;;;###autoload +(defun emerge-files (arg file-A file-B file-out &optional startup-hooks + quit-hooks) + "Run Emerge on two files." + (interactive + (let (f) + (list current-prefix-arg + (setq f (emerge-read-file-name "File A to merge" emerge-last-dir-A + nil nil t)) + (emerge-read-file-name "File B to merge" emerge-last-dir-B nil f t) + (and current-prefix-arg + (emerge-read-file-name "Output file" emerge-last-dir-output + f f nil))))) + (if file-out + (add-hook 'quit-hooks `(lambda () (emerge-files-exit ,file-out)))) + (emerge-files-internal + file-A file-B startup-hooks + quit-hooks + file-out)) + +;;;###autoload +(defun emerge-files-with-ancestor (arg file-A file-B file-ancestor file-out + &optional startup-hooks quit-hooks) + "Run Emerge on two files, giving another file as the ancestor." + (interactive + (let (f) + (list current-prefix-arg + (setq f (emerge-read-file-name "File A to merge" emerge-last-dir-A + nil nil t)) + (emerge-read-file-name "File B to merge" emerge-last-dir-B nil f t) + (emerge-read-file-name "Ancestor file" emerge-last-dir-ancestor + nil f t) + (and current-prefix-arg + (emerge-read-file-name "Output file" emerge-last-dir-output + f f nil))))) + (if file-out + (add-hook 'quit-hooks `(lambda () (emerge-files-exit ,file-out)))) + (emerge-files-with-ancestor-internal + file-A file-B file-ancestor startup-hooks + quit-hooks + file-out)) + +;; Write the merge buffer out in place of the file the A buffer is visiting. +(defun emerge-files-exit (file-out) + ;; if merge was successful was given, save to disk + (if (not emerge-prefix-argument) + (emerge-write-and-delete file-out))) + +;;; Functions to start Emerge on buffers + +;;;###autoload +(defun emerge-buffers (buffer-A buffer-B &optional startup-hooks quit-hooks) + "Run Emerge on two buffers." + (interactive "bBuffer A to merge: \nbBuffer B to merge: ") + (let ((emerge-file-A (emerge-make-temp-file "A")) + (emerge-file-B (emerge-make-temp-file "B"))) + (with-current-buffer + buffer-A + (write-region (point-min) (point-max) emerge-file-A nil 'no-message)) + (with-current-buffer + buffer-B + (write-region (point-min) (point-max) emerge-file-B nil 'no-message)) + (emerge-setup (get-buffer buffer-A) emerge-file-A + (get-buffer buffer-B) emerge-file-B + (cons `(lambda () + (delete-file ,emerge-file-A) + (delete-file ,emerge-file-B)) + startup-hooks) + quit-hooks + nil))) + +;;;###autoload +(defun emerge-buffers-with-ancestor (buffer-A buffer-B buffer-ancestor + &optional startup-hooks + quit-hooks) + "Run Emerge on two buffers, giving another buffer as the ancestor." + (interactive + "bBuffer A to merge: \nbBuffer B to merge: \nbAncestor buffer: ") + (let ((emerge-file-A (emerge-make-temp-file "A")) + (emerge-file-B (emerge-make-temp-file "B")) + (emerge-file-ancestor (emerge-make-temp-file "anc"))) + (with-current-buffer + buffer-A + (write-region (point-min) (point-max) emerge-file-A nil 'no-message)) + (with-current-buffer + buffer-B + (write-region (point-min) (point-max) emerge-file-B nil 'no-message)) + (with-current-buffer + buffer-ancestor + (write-region (point-min) (point-max) emerge-file-ancestor nil + 'no-message)) + (emerge-setup-with-ancestor (get-buffer buffer-A) emerge-file-A + (get-buffer buffer-B) emerge-file-B + (get-buffer buffer-ancestor) + emerge-file-ancestor + (cons `(lambda () + (delete-file ,emerge-file-A) + (delete-file ,emerge-file-B) + (delete-file + ,emerge-file-ancestor)) + startup-hooks) + quit-hooks + nil))) + +;;; Functions to start Emerge from the command line + +;;;###autoload +(defun emerge-files-command () + (let ((file-a (nth 0 command-line-args-left)) + (file-b (nth 1 command-line-args-left)) + (file-out (nth 2 command-line-args-left))) + (setq command-line-args-left (nthcdr 3 command-line-args-left)) + (emerge-files-internal + file-a file-b nil + (list `(lambda () (emerge-command-exit ,file-out)))))) + +;;;###autoload +(defun emerge-files-with-ancestor-command () + (let (file-a file-b file-anc file-out) + ;; check for a -a flag, for filemerge compatibility + (if (string= (car command-line-args-left) "-a") + ;; arguments are "-a ancestor file-a file-b file-out" + (progn + (setq file-a (nth 2 command-line-args-left)) + (setq file-b (nth 3 command-line-args-left)) + (setq file-anc (nth 1 command-line-args-left)) + (setq file-out (nth 4 command-line-args-left)) + (setq command-line-args-left (nthcdr 5 command-line-args-left))) + ;; arguments are "file-a file-b ancestor file-out" + (setq file-a (nth 0 command-line-args-left)) + (setq file-b (nth 1 command-line-args-left)) + (setq file-anc (nth 2 command-line-args-left)) + (setq file-out (nth 3 command-line-args-left)) + (setq command-line-args-left (nthcdr 4 command-line-args-left))) + (emerge-files-with-ancestor-internal + file-a file-b file-anc nil + (list `(lambda () (emerge-command-exit ,file-out)))))) + +(defun emerge-command-exit (file-out) + (emerge-write-and-delete file-out) + (kill-emacs (if emerge-prefix-argument 1 0))) + +;;; Functions to start Emerge via remote request + +;;;###autoload +(defun emerge-files-remote (file-a file-b file-out) + (setq emerge-file-out file-out) + (emerge-files-internal + file-a file-b nil + (list `(lambda () (emerge-remote-exit ,file-out ',emerge-exit-func))) + file-out) + (throw 'client-wait nil)) + +;;;###autoload +(defun emerge-files-with-ancestor-remote (file-a file-b file-anc file-out) + (setq emerge-file-out file-out) + (emerge-files-with-ancestor-internal + file-a file-b file-anc nil + (list `(lambda () (emerge-remote-exit ,file-out ',emerge-exit-func))) + file-out) + (throw 'client-wait nil)) + +(defun emerge-remote-exit (file-out emerge-exit-func) + (emerge-write-and-delete file-out) + (kill-buffer emerge-merge-buffer) + (funcall emerge-exit-func (if emerge-prefix-argument 1 0))) + +;;; Functions to start Emerge on RCS versions + +;;;###autoload +(defun emerge-revisions (arg file revision-A revision-B + &optional startup-hooks quit-hooks) + "Emerge two RCS revisions of a file." + (interactive + (list current-prefix-arg + (read-file-name "File to merge: " nil nil 'confirm) + (read-string "Revision A to merge: " emerge-last-revision-A) + (read-string "Revision B to merge: " emerge-last-revision-B))) + (setq emerge-last-revision-A revision-A + emerge-last-revision-B revision-B) + (emerge-revisions-internal + file revision-A revision-B startup-hooks + (if arg + (cons `(lambda () + (shell-command + ,(format "%s %s" emerge-rcs-ci-program file))) + quit-hooks) + quit-hooks))) + +;;;###autoload +(defun emerge-revisions-with-ancestor (arg file revision-A + revision-B ancestor + &optional + startup-hooks quit-hooks) + "Emerge two RCS revisions of a file, with another revision as ancestor." + (interactive + (list current-prefix-arg + (read-file-name "File to merge: " nil nil 'confirm) + (read-string "Revision A to merge: " emerge-last-revision-A) + (read-string "Revision B to merge: " emerge-last-revision-B) + (read-string "Ancestor: " emerge-last-revision-ancestor))) + (setq emerge-last-revision-A revision-A + emerge-last-revision-B revision-B + emerge-last-revision-ancestor ancestor) + (emerge-revision-with-ancestor-internal + file revision-A revision-B ancestor startup-hooks + (if arg + (let ((cmd )) + (cons `(lambda () + (shell-command + ,(format "%s %s" emerge-rcs-ci-program file))) + quit-hooks)) + quit-hooks))) + +(defun emerge-revisions-internal (file revision-A revision-B &optional + startup-hooks quit-hooks output-file) + (let ((buffer-A (get-buffer-create (format "%s,%s" file revision-A))) + (buffer-B (get-buffer-create (format "%s,%s" file revision-B))) + (emerge-file-A (emerge-make-temp-file "A")) + (emerge-file-B (emerge-make-temp-file "B"))) + ;; Get the revisions into buffers + (with-current-buffer + buffer-A + (erase-buffer) + (shell-command + (format "%s -q -p%s %s" emerge-rcs-co-program revision-A file) + t) + (write-region (point-min) (point-max) emerge-file-A nil 'no-message) + (set-buffer-modified-p nil)) + (with-current-buffer + buffer-B + (erase-buffer) + (shell-command + (format "%s -q -p%s %s" emerge-rcs-co-program revision-B file) + t) + (write-region (point-min) (point-max) emerge-file-B nil 'no-message) + (set-buffer-modified-p nil)) + ;; Do the merge + (emerge-setup buffer-A emerge-file-A + buffer-B emerge-file-B + (cons `(lambda () + (delete-file ,emerge-file-A) + (delete-file ,emerge-file-B)) + startup-hooks) + (cons `(lambda () (emerge-files-exit ,file)) + quit-hooks) + nil))) + +(defun emerge-revision-with-ancestor-internal (file revision-A revision-B + ancestor + &optional startup-hooks + quit-hooks output-file) + (let ((buffer-A (get-buffer-create (format "%s,%s" file revision-A))) + (buffer-B (get-buffer-create (format "%s,%s" file revision-B))) + (buffer-ancestor (get-buffer-create (format "%s,%s" file ancestor))) + (emerge-file-A (emerge-make-temp-file "A")) + (emerge-file-B (emerge-make-temp-file "B")) + (emerge-ancestor (emerge-make-temp-file "ancestor"))) + ;; Get the revisions into buffers + (with-current-buffer + buffer-A + (erase-buffer) + (shell-command + (format "%s -q -p%s %s" emerge-rcs-co-program + revision-A file) + t) + (write-region (point-min) (point-max) emerge-file-A nil 'no-message) + (set-buffer-modified-p nil)) + (with-current-buffer + buffer-B + (erase-buffer) + (shell-command + (format "%s -q -p%s %s" emerge-rcs-co-program revision-B file) + t) + (write-region (point-min) (point-max) emerge-file-B nil 'no-message) + (set-buffer-modified-p nil)) + (with-current-buffer + buffer-ancestor + (erase-buffer) + (shell-command + (format "%s -q -p%s %s" emerge-rcs-co-program ancestor file) + t) + (write-region (point-min) (point-max) emerge-ancestor nil 'no-message) + (set-buffer-modified-p nil)) + ;; Do the merge + (emerge-setup-with-ancestor + buffer-A emerge-file-A buffer-B emerge-file-B + buffer-ancestor emerge-ancestor + (cons `(lambda () + (delete-file ,emerge-file-A) + (delete-file ,emerge-file-B) + (delete-file ,emerge-ancestor)) + startup-hooks) + (cons `(lambda () (emerge-files-exit ,file)) + quit-hooks) + output-file))) + +;;; Function to start Emerge based on a line in a file + +(defun emerge-execute-line () + "Run Emerge using files named in current text line. +Looks in that line for whitespace-separated entries of these forms: + a=file1 + b=file2 + ancestor=file3 + output=file4 +to specify the files to use in Emerge. + +In addition, if only one of `a=file' or `b=file' is present, and `output=file' +is present: +If `emerge-execute-line-deletions' is non-nil and `ancestor=file' is present, +it is assumed that the file in question has been deleted, and it is +not copied to the output file. +Otherwise, the A or B file present is copied to the output file." + (interactive) + (let (file-A file-B file-ancestor file-out + (case-fold-search t)) + ;; Stop if at end of buffer (even though we might be in a line, if + ;; the line does not end with newline) + (if (eobp) + (error "At end of buffer")) + ;; Go to the beginning of the line + (beginning-of-line) + ;; Skip any initial whitespace + (if (looking-at "[ \t]*") + (goto-char (match-end 0))) + ;; Process the entire line + (while (not (eolp)) + ;; Get the next entry + (if (looking-at "\\([a-z]+\\)=\\([^ \t\n]+\\)[ \t]*") + ;; Break apart the tab (before =) and the filename (after =) + (let ((tag (downcase + (buffer-substring (match-beginning 1) (match-end 1)))) + (file (buffer-substring (match-beginning 2) (match-end 2)))) + ;; Move point after the entry + (goto-char (match-end 0)) + ;; Store the filename in the right variable + (cond + ((string-equal tag "a") + (if file-A + (error "This line has two `A' entries")) + (setq file-A file)) + ((string-equal tag "b") + (if file-B + (error "This line has two `B' entries")) + (setq file-B file)) + ((or (string-equal tag "anc") (string-equal tag "ancestor")) + (if file-ancestor + (error "This line has two `ancestor' entries")) + (setq file-ancestor file)) + ((or (string-equal tag "out") (string-equal tag "output")) + (if file-out + (error "This line has two `output' entries")) + (setq file-out file)) + (t + (error "Unrecognized entry")))) + ;; If the match on the entry pattern failed + (error "Unparsable entry"))) + ;; Make sure that file-A and file-B are present + (if (not (or (and file-A file-B) file-out)) + (error "Must have both `A' and `B' entries")) + (if (not (or file-A file-B)) + (error "Must have `A' or `B' entry")) + ;; Go to the beginning of the next line, so next execution will use + ;; next line in buffer. + (beginning-of-line 2) + ;; Execute the correct command + (cond + ;; Merge of two files with ancestor + ((and file-A file-B file-ancestor) + (message "Merging %s and %s..." file-A file-B) + (emerge-files-with-ancestor (not (not file-out)) file-A file-B + file-ancestor file-out + nil + ;; When done, return to this buffer. + (list + `(lambda () + (switch-to-buffer ,(current-buffer)) + (message "Merge done."))))) + ;; Merge of two files without ancestor + ((and file-A file-B) + (message "Merging %s and %s..." file-A file-B) + (emerge-files (not (not file-out)) file-A file-B file-out + nil + ;; When done, return to this buffer. + (list + `(lambda () + (switch-to-buffer ,(current-buffer)) + (message "Merge done."))))) + ;; There is an output file (or there would have been an error above), + ;; but only one input file. + ;; The file appears to have been deleted in one version; do nothing. + ((and file-ancestor emerge-execute-line-deletions) + (message "No action.")) + ;; The file should be copied from the version that contains it + (t (let ((input-file (or file-A file-B))) + (message "Copying...") + (copy-file input-file file-out) + (message "%s copied to %s." input-file file-out)))))) + +;;; Sample function for creating information for emerge-execute-line + +(defcustom emerge-merge-directories-filename-regexp "[^.]" + "Regexp describing files to be processed by `emerge-merge-directories'." + :type 'regexp + :group 'emerge) + +;;;###autoload +(defun emerge-merge-directories (a-dir b-dir ancestor-dir output-dir) + (interactive + (list + (read-directory-name "A directory: " nil nil 'confirm) + (read-directory-name "B directory: " nil nil 'confirm) + (read-directory-name "Ancestor directory (null for none): " nil nil 'confirm) + (read-directory-name "Output directory (null for none): " nil nil 'confirm))) + ;; Check that we're not on a line + (if (not (and (bolp) (eolp))) + (error "There is text on this line")) + ;; Turn null strings into nil to indicate directories not used. + (if (and ancestor-dir (string-equal ancestor-dir "")) + (setq ancestor-dir nil)) + (if (and output-dir (string-equal output-dir "")) + (setq output-dir nil)) + ;; Canonicalize the directory names + (setq a-dir (expand-file-name a-dir)) + (if (not (string-equal (substring a-dir -1) "/")) + (setq a-dir (concat a-dir "/"))) + (setq b-dir (expand-file-name b-dir)) + (if (not (string-equal (substring b-dir -1) "/")) + (setq b-dir (concat b-dir "/"))) + (if ancestor-dir + (progn + (setq ancestor-dir (expand-file-name ancestor-dir)) + (if (not (string-equal (substring ancestor-dir -1) "/")) + (setq ancestor-dir (concat ancestor-dir "/"))))) + (if output-dir + (progn + (setq output-dir (expand-file-name output-dir)) + (if (not (string-equal (substring output-dir -1) "/")) + (setq output-dir (concat output-dir "/"))))) + ;; Set the mark to where we start + (push-mark) + ;; Find out what files are in the directories. + (let* ((a-dir-files + (directory-files a-dir nil emerge-merge-directories-filename-regexp)) + (b-dir-files + (directory-files b-dir nil emerge-merge-directories-filename-regexp)) + (ancestor-dir-files + (and ancestor-dir + (directory-files ancestor-dir nil + emerge-merge-directories-filename-regexp))) + (all-files (sort (nconc (copy-sequence a-dir-files) + (copy-sequence b-dir-files) + (copy-sequence ancestor-dir-files)) + (function string-lessp)))) + ;; Remove duplicates from all-files. + (let ((p all-files)) + (while p + (if (and (cdr p) (string-equal (car p) (car (cdr p)))) + (setcdr p (cdr (cdr p))) + (setq p (cdr p))))) + ;; Generate the control lines for the various files. + (while all-files + (let ((f (car all-files))) + (setq all-files (cdr all-files)) + (if (and a-dir-files (string-equal (car a-dir-files) f)) + (progn + (insert "A=" a-dir f "\t") + (setq a-dir-files (cdr a-dir-files)))) + (if (and b-dir-files (string-equal (car b-dir-files) f)) + (progn + (insert "B=" b-dir f "\t") + (setq b-dir-files (cdr b-dir-files)))) + (if (and ancestor-dir-files (string-equal (car ancestor-dir-files) f)) + (progn + (insert "ancestor=" ancestor-dir f "\t") + (setq ancestor-dir-files (cdr ancestor-dir-files)))) + (if output-dir + (insert "output=" output-dir f "\t")) + (backward-delete-char 1) + (insert "\n"))))) + +;;; Common setup routines + +;; Set up the window configuration. If POS is given, set the points to +;; the beginnings of the buffers. +(defun emerge-setup-windows (buffer-A buffer-B merge-buffer &optional pos) + ;; Make sure we are not in the minibuffer window when we try to delete + ;; all other windows. + (if (eq (selected-window) (minibuffer-window)) + (other-window 1)) + (delete-other-windows) + (switch-to-buffer merge-buffer) + (emerge-refresh-mode-line) + (split-window-vertically) + (split-window-horizontally) + (switch-to-buffer buffer-A) + (if pos + (goto-char (point-min))) + (other-window 1) + (switch-to-buffer buffer-B) + (if pos + (goto-char (point-min))) + (other-window 1) + (if pos + (goto-char (point-min))) + ;; If diff/diff3 reports errors, display them rather than the merge buffer. + (if (/= 0 (with-current-buffer emerge-diff-error-buffer (buffer-size))) + (progn + (ding) + (message "Errors found in diff/diff3 output. Merge buffer is %s." + (buffer-name emerge-merge-buffer)) + (switch-to-buffer emerge-diff-error-buffer)))) + +;; Set up the keymap in the merge buffer +(defun emerge-set-keys () + ;; Set up fixed keymaps if necessary + (if (not emerge-basic-keymap) + (emerge-setup-fixed-keymaps)) + ;; Save the old local map + (setq emerge-old-keymap (current-local-map)) + ;; Construct the edit keymap + (setq emerge-edit-keymap (if emerge-old-keymap + (copy-keymap emerge-old-keymap) + (make-sparse-keymap))) + ;; Install the Emerge commands + (emerge-force-define-key emerge-edit-keymap emerge-command-prefix + 'emerge-basic-keymap) + (define-key emerge-edit-keymap [menu-bar] (make-sparse-keymap)) + + ;; Create the additional menu bar items. + (define-key emerge-edit-keymap [menu-bar emerge-options] + (cons "Merge-Options" emerge-options-menu)) + (define-key emerge-edit-keymap [menu-bar merge] + (cons "Merge" emerge-merge-menu)) + (define-key emerge-edit-keymap [menu-bar move] + (cons "Move" emerge-move-menu)) + + ;; Suppress write-file and save-buffer + (substitute-key-definition 'write-file + 'emerge-query-write-file + emerge-edit-keymap) + (substitute-key-definition 'save-buffer + 'emerge-query-save-buffer + emerge-edit-keymap) + (define-key emerge-edit-keymap [remap write-file] 'emerge-query-write-file) + (define-key emerge-edit-keymap [remap save-buffer] 'emerge-query-save-buffer) + (use-local-map emerge-fast-keymap) + (setq emerge-edit-mode nil) + (setq emerge-fast-mode t)) + +(defun emerge-remember-buffer-characteristics () + "Record certain properties of the buffers being merged. +Must be called in the merge buffer. Remembers read-only, modified, +auto-save, and saves them in buffer local variables. Sets the buffers +read-only and turns off `auto-save-mode'. +These characteristics are restored by `emerge-restore-buffer-characteristics'." + ;; force auto-save, because we will turn off auto-saving in buffers for the + ;; duration + (do-auto-save) + ;; remember and alter buffer characteristics + (setq emerge-A-buffer-values + (with-current-buffer + emerge-A-buffer + (prog1 + (emerge-save-variables emerge-saved-variables) + (emerge-restore-variables emerge-saved-variables + emerge-merging-values)))) + (setq emerge-B-buffer-values + (with-current-buffer + emerge-B-buffer + (prog1 + (emerge-save-variables emerge-saved-variables) + (emerge-restore-variables emerge-saved-variables + emerge-merging-values))))) + +(defun emerge-restore-buffer-characteristics () + "Restore characteristics saved by `emerge-remember-buffer-characteristics'." + (let ((A-values emerge-A-buffer-values) + (B-values emerge-B-buffer-values)) + (with-current-buffer emerge-A-buffer + (emerge-restore-variables emerge-saved-variables + A-values)) + (with-current-buffer emerge-B-buffer + (emerge-restore-variables emerge-saved-variables + B-values)))) + +;; Move to line DESIRED-LINE assuming we are at line CURRENT-LINE. +;; Return DESIRED-LINE. +(defun emerge-goto-line (desired-line current-line) + (forward-line (- desired-line current-line)) + desired-line) + +(defun emerge-convert-diffs-to-markers (A-buffer + B-buffer + merge-buffer + lineno-list) + (let* (marker-list + (A-point-min (with-current-buffer A-buffer (point-min))) + (offset (1- A-point-min)) + (B-point-min (with-current-buffer B-buffer (point-min))) + ;; Record current line number in each buffer + ;; so we don't have to count from the beginning. + (a-line 1) + (b-line 1)) + (with-current-buffer A-buffer (goto-char (point-min))) + (with-current-buffer B-buffer (goto-char (point-min))) + (while lineno-list + (let* ((list-element (car lineno-list)) + a-begin-marker + a-end-marker + b-begin-marker + b-end-marker + merge-begin-marker + merge-end-marker + (a-begin (aref list-element 0)) + (a-end (aref list-element 1)) + (b-begin (aref list-element 2)) + (b-end (aref list-element 3)) + (state (aref list-element 4))) + ;; place markers at the appropriate places in the buffers + (with-current-buffer + A-buffer + (setq a-line (emerge-goto-line a-begin a-line)) + (setq a-begin-marker (point-marker)) + (setq a-line (emerge-goto-line a-end a-line)) + (setq a-end-marker (point-marker))) + (with-current-buffer + B-buffer + (setq b-line (emerge-goto-line b-begin b-line)) + (setq b-begin-marker (point-marker)) + (setq b-line (emerge-goto-line b-end b-line)) + (setq b-end-marker (point-marker))) + (setq merge-begin-marker (set-marker + (make-marker) + (- (marker-position a-begin-marker) + offset) + merge-buffer)) + (setq merge-end-marker (set-marker + (make-marker) + (- (marker-position a-end-marker) + offset) + merge-buffer)) + ;; record all the markers for this difference + (setq marker-list (cons (vector a-begin-marker a-end-marker + b-begin-marker b-end-marker + merge-begin-marker merge-end-marker + state) + marker-list))) + (setq lineno-list (cdr lineno-list))) + ;; convert the list of difference information into a vector for + ;; fast access + (setq emerge-difference-list (apply 'vector (nreverse marker-list))))) + +;; If we have an ancestor, select all B variants that we prefer +(defun emerge-select-prefer-Bs () + (let ((n 0)) + (while (< n emerge-number-of-differences) + (if (eq (aref (aref emerge-difference-list n) 6) 'prefer-B) + (progn + (emerge-unselect-and-select-difference n t) + (emerge-select-B) + (aset (aref emerge-difference-list n) 6 'prefer-B))) + (setq n (1+ n)))) + (emerge-unselect-and-select-difference -1)) + +;; Process the local-variables list at the end of the merged file, if +;; requested. +(defun emerge-handle-local-variables () + (if emerge-process-local-variables + (condition-case err + (hack-local-variables) + (error (message "Local-variables error in merge buffer: %s" + (prin1-to-string err)))))) + +;;; Common exit routines + +(defun emerge-write-and-delete (file-out) + ;; clear screen format + (delete-other-windows) + ;; delete A, B, and ancestor buffers, if they haven't been changed + (if (not (buffer-modified-p emerge-A-buffer)) + (kill-buffer emerge-A-buffer)) + (if (not (buffer-modified-p emerge-B-buffer)) + (kill-buffer emerge-B-buffer)) + (if (and emerge-ancestor-buffer + (not (buffer-modified-p emerge-ancestor-buffer))) + (kill-buffer emerge-ancestor-buffer)) + ;; Write merge buffer to file + (and file-out + (write-file file-out))) + +;;; Commands + +(defun emerge-recenter (&optional arg) + "Bring the highlighted region of all three merge buffers into view. +This brings the buffers into view if they are in windows. +With an argument, reestablish the default three-window display." + (interactive "P") + ;; If there is an argument, rebuild the window structure + (if arg + (emerge-setup-windows emerge-A-buffer emerge-B-buffer + emerge-merge-buffer)) + ;; Redisplay whatever buffers are showing, if there is a selected difference + (if (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences)) + (let* ((merge-buffer emerge-merge-buffer) + (buffer-A emerge-A-buffer) + (buffer-B emerge-B-buffer) + (window-A (get-buffer-window buffer-A 'visible)) + (window-B (get-buffer-window buffer-B 'visible)) + (merge-window (get-buffer-window merge-buffer)) + (diff-vector + (aref emerge-difference-list emerge-current-difference))) + (if window-A (progn + (select-window window-A) + (emerge-position-region + (- (aref diff-vector 0) + (1- emerge-before-flag-length)) + (+ (aref diff-vector 1) + (1- emerge-after-flag-length)) + (1+ (aref diff-vector 0))))) + (if window-B (progn + (select-window window-B) + (emerge-position-region + (- (aref diff-vector 2) + (1- emerge-before-flag-length)) + (+ (aref diff-vector 3) + (1- emerge-after-flag-length)) + (1+ (aref diff-vector 2))))) + (if merge-window (progn + (select-window merge-window) + (emerge-position-region + (- (aref diff-vector 4) + (1- emerge-before-flag-length)) + (+ (aref diff-vector 5) + (1- emerge-after-flag-length)) + (1+ (aref diff-vector 4)))))))) + +;;; Window scrolling operations +;; These operations are designed to scroll all three windows the same amount, +;; so as to keep the text in them aligned. + +;; Perform some operation on all three windows (if they are showing). +;; Catches all errors on the operation in the A and B windows, but not +;; in the merge window. Usually, errors come from scrolling off the +;; beginning or end of the buffer, and this gives a nice error message: +;; End of buffer is reported in the merge buffer, but if the scroll was +;; possible in the A or B windows, it is performed there before the error +;; is reported. +(defun emerge-operate-on-windows (operation arg) + (let* ((merge-buffer emerge-merge-buffer) + (buffer-A emerge-A-buffer) + (buffer-B emerge-B-buffer) + (window-A (get-buffer-window buffer-A 'visible)) + (window-B (get-buffer-window buffer-B 'visible)) + (merge-window (get-buffer-window merge-buffer))) + (if window-A (progn + (select-window window-A) + (condition-case nil + (funcall operation arg) + (error)))) + (if window-B (progn + (select-window window-B) + (condition-case nil + (funcall operation arg) + (error)))) + (if merge-window (progn + (select-window merge-window) + (funcall operation arg))))) + +(defun emerge-scroll-up (&optional arg) + "Scroll up all three merge buffers, if they are in windows. +With argument N, scroll N lines; otherwise scroll by nearly +the height of the merge window. +`C-u -' alone as argument scrolls half the height of the merge window." + (interactive "P") + (emerge-operate-on-windows + 'scroll-up + ;; calculate argument to scroll-up + ;; if there is an explicit argument + (if (and arg (not (equal arg '-))) + ;; use it + (prefix-numeric-value arg) + ;; if not, see if we can determine a default amount (the window height) + (let ((merge-window (get-buffer-window emerge-merge-buffer))) + (if (null merge-window) + ;; no window, use nil + nil + (let ((default-amount + (- (window-height merge-window) 1 next-screen-context-lines))) + ;; the window was found + (if arg + ;; C-u as argument means half of default amount + (/ default-amount 2) + ;; no argument means default amount + default-amount))))))) + +(defun emerge-scroll-down (&optional arg) + "Scroll down all three merge buffers, if they are in windows. +With argument N, scroll N lines; otherwise scroll by nearly +the height of the merge window. +`C-u -' alone as argument scrolls half the height of the merge window." + (interactive "P") + (emerge-operate-on-windows + 'scroll-down + ;; calculate argument to scroll-down + ;; if there is an explicit argument + (if (and arg (not (equal arg '-))) + ;; use it + (prefix-numeric-value arg) + ;; if not, see if we can determine a default amount (the window height) + (let ((merge-window (get-buffer-window emerge-merge-buffer))) + (if (null merge-window) + ;; no window, use nil + nil + (let ((default-amount + (- (window-height merge-window) 1 next-screen-context-lines))) + ;; the window was found + (if arg + ;; C-u as argument means half of default amount + (/ default-amount 2) + ;; no argument means default amount + default-amount))))))) + +(defun emerge-scroll-left (&optional arg) + "Scroll left all three merge buffers, if they are in windows. +If an argument is given, that is how many columns are scrolled, else nearly +the width of the A and B windows. `C-u -' alone as argument scrolls half the +width of the A and B windows." + (interactive "P") + (emerge-operate-on-windows + 'scroll-left + ;; calculate argument to scroll-left + ;; if there is an explicit argument + (if (and arg (not (equal arg '-))) + ;; use it + (prefix-numeric-value arg) + ;; if not, see if we can determine a default amount + ;; (half the window width) + (let ((merge-window (get-buffer-window emerge-merge-buffer))) + (if (null merge-window) + ;; no window, use nil + nil + (let ((default-amount + (- (/ (window-width merge-window) 2) 3))) + ;; the window was found + (if arg + ;; C-u as argument means half of default amount + (/ default-amount 2) + ;; no argument means default amount + default-amount))))))) + +(defun emerge-scroll-right (&optional arg) + "Scroll right all three merge buffers, if they are in windows. +If an argument is given, that is how many columns are scrolled, else nearly +the width of the A and B windows. `C-u -' alone as argument scrolls half the +width of the A and B windows." + (interactive "P") + (emerge-operate-on-windows + 'scroll-right + ;; calculate argument to scroll-right + ;; if there is an explicit argument + (if (and arg (not (equal arg '-))) + ;; use it + (prefix-numeric-value arg) + ;; if not, see if we can determine a default amount + ;; (half the window width) + (let ((merge-window (get-buffer-window emerge-merge-buffer))) + (if (null merge-window) + ;; no window, use nil + nil + (let ((default-amount + (- (/ (window-width merge-window) 2) 3))) + ;; the window was found + (if arg + ;; C-u as argument means half of default amount + (/ default-amount 2) + ;; no argument means default amount + default-amount))))))) + +(defun emerge-scroll-reset () + "Reset horizontal scrolling in Emerge. +This resets the horizontal scrolling of all three merge buffers +to the left margin, if they are in windows." + (interactive) + (emerge-operate-on-windows + (lambda (x) (set-window-hscroll (selected-window) 0)) + nil)) + +;; Attempt to show the region nicely. +;; If there are min-lines lines above and below the region, then don't do +;; anything. +;; If not, recenter the region to make it so. +;; If that isn't possible, remove context lines balancedly from top and bottom +;; so the entire region shows. +;; If that isn't possible, show the top of the region. +;; BEG must be at the beginning of a line. +(defun emerge-position-region (beg end pos) + ;; First test whether the entire region is visible with + ;; emerge-min-visible-lines above and below it + (if (not (and (<= (progn + (move-to-window-line emerge-min-visible-lines) + (point)) + beg) + (<= end (progn + (move-to-window-line + (- (1+ emerge-min-visible-lines))) + (point))))) + ;; We failed that test, see if it fits at all + ;; Meanwhile positioning it correctly in case it doesn't fit + (progn + (set-window-start (selected-window) beg) + (if (pos-visible-in-window-p end) + ;; Determine the number of lines that the region occupies + (let ((lines 0)) + (while (> end (progn + (move-to-window-line lines) + (point))) + (setq lines (1+ lines))) + ;; And position the beginning on the right line + (goto-char beg) + (recenter (/ (1+ (- (1- (window-height (selected-window))) + lines)) + 2)))))) + (goto-char pos)) + +(defun emerge-next-difference () + "Advance to the next difference." + (interactive) + (if (< emerge-current-difference emerge-number-of-differences) + (let ((n (1+ emerge-current-difference))) + (while (and emerge-skip-prefers + (< n emerge-number-of-differences) + (memq (aref (aref emerge-difference-list n) 6) + '(prefer-A prefer-B))) + (setq n (1+ n))) + (let ((buffer-read-only nil)) + (emerge-unselect-and-select-difference n))) + (error "At end"))) + +(defun emerge-previous-difference () + "Go to the previous difference." + (interactive) + (if (> emerge-current-difference -1) + (let ((n (1- emerge-current-difference))) + (while (and emerge-skip-prefers + (> n -1) + (memq (aref (aref emerge-difference-list n) 6) + '(prefer-A prefer-B))) + (setq n (1- n))) + (let ((buffer-read-only nil)) + (emerge-unselect-and-select-difference n))) + (error "At beginning"))) + +(defun emerge-jump-to-difference (difference-number) + "Go to the N-th difference." + (interactive "p") + (let ((buffer-read-only nil)) + (setq difference-number (1- difference-number)) + (if (and (>= difference-number -1) + (< difference-number (1+ emerge-number-of-differences))) + (emerge-unselect-and-select-difference difference-number) + (error "Bad difference number")))) + +(defun emerge-abort () + "Abort the Emerge session." + (interactive) + (emerge-quit t)) + +(defun emerge-quit (arg) + "Finish the Emerge session and exit Emerge. +Prefix argument means to abort rather than successfully finish. +The difference depends on how the merge was started, +but usually means to not write over one of the original files, or to signal +to some process which invoked Emerge a failure code. + +Unselects the selected difference, if any, restores the read-only and modified +flags of the merged file buffers, restores the local keymap of the merge +buffer, and sets off various emerge flags. Using Emerge commands in this +buffer after this will cause serious problems." + (interactive "P") + (if (prog1 + (y-or-n-p + (if (not arg) + "Do you really want to successfully finish this merge? " + "Do you really want to abort this merge? ")) + (message "")) + (emerge-really-quit arg))) + +;; Perform the quit operations. +(defun emerge-really-quit (arg) + (setq buffer-read-only nil) + (emerge-unselect-and-select-difference -1) + (emerge-restore-buffer-characteristics) + ;; null out the difference markers so they don't slow down future editing + ;; operations + (mapc (lambda (d) + (set-marker (aref d 0) nil) + (set-marker (aref d 1) nil) + (set-marker (aref d 2) nil) + (set-marker (aref d 3) nil) + (set-marker (aref d 4) nil) + (set-marker (aref d 5) nil)) + emerge-difference-list) + ;; allow them to be garbage collected + (setq emerge-difference-list nil) + ;; restore the local map + (use-local-map emerge-old-keymap) + ;; turn off all the emerge modes + (setq emerge-mode nil) + (setq emerge-fast-mode nil) + (setq emerge-edit-mode nil) + (setq emerge-auto-advance nil) + (setq emerge-skip-prefers nil) + ;; restore mode line + (kill-local-variable 'mode-line-buffer-identification) + (let ((emerge-prefix-argument arg)) + (run-hooks 'emerge-quit-hook))) + +(defun emerge-select-A (&optional force) + "Select the A variant of this difference. +Refuses to function if this difference has been edited, i.e., if it +is neither the A nor the B variant. +A prefix argument forces the variant to be selected +even if the difference has been edited." + (interactive "P") + (let ((operate + (lambda () + (emerge-select-A-edit merge-begin merge-end A-begin A-end) + (if emerge-auto-advance + (emerge-next-difference)))) + (operate-no-change + (lambda () (if emerge-auto-advance + (emerge-next-difference))))) + (emerge-select-version force operate-no-change operate operate))) + +;; Actually select the A variant +(defun emerge-select-A-edit (merge-begin merge-end A-begin A-end) + (with-current-buffer + emerge-merge-buffer + (delete-region merge-begin merge-end) + (goto-char merge-begin) + (insert-buffer-substring emerge-A-buffer A-begin A-end) + (goto-char merge-begin) + (aset diff-vector 6 'A) + (emerge-refresh-mode-line))) + +(defun emerge-select-B (&optional force) + "Select the B variant of this difference. +Refuses to function if this difference has been edited, i.e., if it +is neither the A nor the B variant. +A prefix argument forces the variant to be selected +even if the difference has been edited." + (interactive "P") + (let ((operate + (lambda () + (emerge-select-B-edit merge-begin merge-end B-begin B-end) + (if emerge-auto-advance + (emerge-next-difference)))) + (operate-no-change + (lambda () (if emerge-auto-advance + (emerge-next-difference))))) + (emerge-select-version force operate operate-no-change operate))) + +;; Actually select the B variant +(defun emerge-select-B-edit (merge-begin merge-end B-begin B-end) + (with-current-buffer + emerge-merge-buffer + (delete-region merge-begin merge-end) + (goto-char merge-begin) + (insert-buffer-substring emerge-B-buffer B-begin B-end) + (goto-char merge-begin) + (aset diff-vector 6 'B) + (emerge-refresh-mode-line))) + +(defun emerge-default-A () + "Make the A variant the default from here down. +This selects the A variant for all differences from here down in the buffer +which are still defaulted, i.e., which the user has not selected and for +which there is no preference." + (interactive) + (let ((buffer-read-only nil)) + (let ((selected-difference emerge-current-difference) + (n (max emerge-current-difference 0))) + (while (< n emerge-number-of-differences) + (let ((diff-vector (aref emerge-difference-list n))) + (if (eq (aref diff-vector 6) 'default-B) + (progn + (emerge-unselect-and-select-difference n t) + (emerge-select-A) + (aset diff-vector 6 'default-A)))) + (setq n (1+ n)) + (if (zerop (% n 10)) + (message "Setting default to A...%d" n))) + (emerge-unselect-and-select-difference selected-difference))) + (message "Default choice is now A")) + +(defun emerge-default-B () + "Make the B variant the default from here down. +This selects the B variant for all differences from here down in the buffer +which are still defaulted, i.e., which the user has not selected and for +which there is no preference." + (interactive) + (let ((buffer-read-only nil)) + (let ((selected-difference emerge-current-difference) + (n (max emerge-current-difference 0))) + (while (< n emerge-number-of-differences) + (let ((diff-vector (aref emerge-difference-list n))) + (if (eq (aref diff-vector 6) 'default-A) + (progn + (emerge-unselect-and-select-difference n t) + (emerge-select-B) + (aset diff-vector 6 'default-B)))) + (setq n (1+ n)) + (if (zerop (% n 10)) + (message "Setting default to B...%d" n))) + (emerge-unselect-and-select-difference selected-difference))) + (message "Default choice is now B")) + +(defun emerge-fast-mode () + "Set fast mode, for Emerge. +In this mode ordinary Emacs commands are disabled, and Emerge commands +need not be prefixed with \\\\[emerge-basic-keymap]." + (interactive) + (setq buffer-read-only t) + (use-local-map emerge-fast-keymap) + (setq emerge-mode t) + (setq emerge-fast-mode t) + (setq emerge-edit-mode nil) + (message "Fast mode set") + (force-mode-line-update)) + +(defun emerge-edit-mode () + "Set edit mode, for Emerge. +In this mode ordinary Emacs commands are available, and Emerge commands +must be prefixed with \\\\[emerge-basic-keymap]." + (interactive) + (setq buffer-read-only nil) + (use-local-map emerge-edit-keymap) + (setq emerge-mode t) + (setq emerge-fast-mode nil) + (setq emerge-edit-mode t) + (message "Edit mode set") + (force-mode-line-update)) + +(defun emerge-auto-advance (arg) + "Toggle Auto-Advance mode, for Emerge. +This mode causes `emerge-select-A' and `emerge-select-B' to automatically +advance to the next difference. +With a positive argument, turn on Auto-Advance mode. +With a negative argument, turn off Auto-Advance mode." + (interactive "P") + (setq emerge-auto-advance (if (null arg) + (not emerge-auto-advance) + (> (prefix-numeric-value arg) 0))) + (message (if emerge-auto-advance + "Auto-advance set" + "Auto-advance cleared")) + (force-mode-line-update)) + +(defun emerge-skip-prefers (arg) + "Toggle Skip-Prefers mode, for Emerge. +This mode causes `emerge-next-difference' and `emerge-previous-difference' +to automatically skip over differences for which there is a preference. +With a positive argument, turn on Skip-Prefers mode. +With a negative argument, turn off Skip-Prefers mode." + (interactive "P") + (setq emerge-skip-prefers (if (null arg) + (not emerge-skip-prefers) + (> (prefix-numeric-value arg) 0))) + (message (if emerge-skip-prefers + "Skip-prefers set" + "Skip-prefers cleared")) + (force-mode-line-update)) + +(defun emerge-copy-as-kill-A () + "Put the A variant of this difference in the kill ring." + (interactive) + (emerge-validate-difference) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (A-begin (1+ (aref diff-vector 0))) + (A-end (1- (aref diff-vector 1))) + ;; so further kills don't append + this-command) + (with-current-buffer emerge-A-buffer + (copy-region-as-kill A-begin A-end)))) + +(defun emerge-copy-as-kill-B () + "Put the B variant of this difference in the kill ring." + (interactive) + (emerge-validate-difference) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (B-begin (1+ (aref diff-vector 2))) + (B-end (1- (aref diff-vector 3))) + ;; so further kills don't append + this-command) + (with-current-buffer emerge-B-buffer + (copy-region-as-kill B-begin B-end)))) + +(defun emerge-insert-A (arg) + "Insert the A variant of this difference at the point. +Leaves point after text, mark before. +With prefix argument, puts point before, mark after." + (interactive "P") + (emerge-validate-difference) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (A-begin (1+ (aref diff-vector 0))) + (A-end (1- (aref diff-vector 1))) + (opoint (point)) + (buffer-read-only nil)) + (insert-buffer-substring emerge-A-buffer A-begin A-end) + (if (not arg) + (set-mark opoint) + (set-mark (point)) + (goto-char opoint)))) + +(defun emerge-insert-B (arg) + "Insert the B variant of this difference at the point. +Leaves point after text, mark before. +With prefix argument, puts point before, mark after." + (interactive "P") + (emerge-validate-difference) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (B-begin (1+ (aref diff-vector 2))) + (B-end (1- (aref diff-vector 3))) + (opoint (point)) + (buffer-read-only nil)) + (insert-buffer-substring emerge-B-buffer B-begin B-end) + (if (not arg) + (set-mark opoint) + (set-mark (point)) + (goto-char opoint)))) + +(defun emerge-mark-difference (arg) + "Leaves the point before this difference and the mark after it. +With prefix argument, puts mark before, point after." + (interactive "P") + (emerge-validate-difference) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (merge-begin (1+ (aref diff-vector 4))) + (merge-end (1- (aref diff-vector 5)))) + (if (not arg) + (progn + (goto-char merge-begin) + (set-mark merge-end)) + (goto-char merge-end) + (set-mark merge-begin)))) + +(defun emerge-file-names () + "Show the names of the buffers or files being operated on by Emerge. +Use C-u l to reset the windows afterward." + (interactive) + (delete-other-windows) + (let ((temp-buffer-show-function + (lambda (buf) + (split-window-vertically) + (switch-to-buffer buf) + (other-window 1)))) + (with-output-to-temp-buffer "*Help*" + (with-current-buffer emerge-A-buffer + (if buffer-file-name + (progn + (princ "File A is: ") + (princ buffer-file-name)) + (progn + (princ "Buffer A is: ") + (princ (buffer-name)))) + (princ "\n")) + (with-current-buffer emerge-B-buffer + (if buffer-file-name + (progn + (princ "File B is: ") + (princ buffer-file-name)) + (progn + (princ "Buffer B is: ") + (princ (buffer-name)))) + (princ "\n")) + (if emerge-ancestor-buffer + (with-current-buffer emerge-ancestor-buffer + (if buffer-file-name + (progn + (princ "Ancestor file is: ") + (princ buffer-file-name)) + (progn + (princ "Ancestor buffer is: ") + (princ (buffer-name)))) + (princ "\n"))) + (princ emerge-output-description) + (with-current-buffer standard-output + (help-mode))))) + +(defun emerge-join-differences (arg) + "Join the selected difference with the following one. +With a prefix argument, join with the preceding one." + (interactive "P") + (let ((n emerge-current-difference)) + ;; adjust n to be first difference to join + (if arg + (setq n (1- n))) + ;; n and n+1 are the differences to join + ;; check that they are both differences + (if (or (< n 0) (>= n (1- emerge-number-of-differences))) + (error "Incorrect differences to join")) + ;; remove the flags + (emerge-unselect-difference emerge-current-difference) + ;; decrement total number of differences + (setq emerge-number-of-differences (1- emerge-number-of-differences)) + ;; build new differences vector + (let ((i 0) + (new-differences (make-vector emerge-number-of-differences nil))) + (while (< i emerge-number-of-differences) + (aset new-differences i + (cond + ((< i n) (aref emerge-difference-list i)) + ((> i n) (aref emerge-difference-list (1+ i))) + (t (let ((prev (aref emerge-difference-list i)) + (next (aref emerge-difference-list (1+ i)))) + (vector (aref prev 0) + (aref next 1) + (aref prev 2) + (aref next 3) + (aref prev 4) + (aref next 5) + (let ((ps (aref prev 6)) + (ns (aref next 6))) + (cond + ((eq ps ns) + ps) + ((and (or (eq ps 'B) (eq ps 'prefer-B)) + (or (eq ns 'B) (eq ns 'prefer-B))) + 'B) + (t 'A)))))))) + (setq i (1+ i))) + (setq emerge-difference-list new-differences)) + ;; set the current difference correctly + (setq emerge-current-difference n) + ;; fix the mode line + (emerge-refresh-mode-line) + ;; reinsert the flags + (emerge-select-difference emerge-current-difference) + (emerge-recenter))) + +(defun emerge-split-difference () + "Split the current difference where the points are in the three windows." + (interactive) + (let ((n emerge-current-difference)) + ;; check that this is a valid difference + (emerge-validate-difference) + ;; get the point values and old difference + (let ((A-point (with-current-buffer emerge-A-buffer + (point-marker))) + (B-point (with-current-buffer emerge-B-buffer + (point-marker))) + (merge-point (point-marker)) + (old-diff (aref emerge-difference-list n))) + ;; check location of the points, give error if they aren't in the + ;; differences + (if (or (< A-point (aref old-diff 0)) + (> A-point (aref old-diff 1))) + (error "Point outside of difference in A buffer")) + (if (or (< B-point (aref old-diff 2)) + (> B-point (aref old-diff 3))) + (error "Point outside of difference in B buffer")) + (if (or (< merge-point (aref old-diff 4)) + (> merge-point (aref old-diff 5))) + (error "Point outside of difference in merge buffer")) + ;; remove the flags + (emerge-unselect-difference emerge-current-difference) + ;; increment total number of differences + (setq emerge-number-of-differences (1+ emerge-number-of-differences)) + ;; build new differences vector + (let ((i 0) + (new-differences (make-vector emerge-number-of-differences nil))) + (while (< i emerge-number-of-differences) + (aset new-differences i + (cond + ((< i n) + (aref emerge-difference-list i)) + ((> i (1+ n)) + (aref emerge-difference-list (1- i))) + ((= i n) + (vector (aref old-diff 0) + A-point + (aref old-diff 2) + B-point + (aref old-diff 4) + merge-point + (aref old-diff 6))) + (t + (vector (copy-marker A-point) + (aref old-diff 1) + (copy-marker B-point) + (aref old-diff 3) + (copy-marker merge-point) + (aref old-diff 5) + (aref old-diff 6))))) + (setq i (1+ i))) + (setq emerge-difference-list new-differences)) + ;; set the current difference correctly + (setq emerge-current-difference n) + ;; fix the mode line + (emerge-refresh-mode-line) + ;; reinsert the flags + (emerge-select-difference emerge-current-difference) + (emerge-recenter)))) + +(defun emerge-trim-difference () + "Trim lines off top and bottom of difference that are the same. +If lines are the same in both the A and the B versions, strip them off. +\(This can happen when the A and B versions have common lines that the +ancestor version does not share.)" + (interactive) + ;; make sure we are in a real difference + (emerge-validate-difference) + ;; remove the flags + (emerge-unselect-difference emerge-current-difference) + (let* ((diff (aref emerge-difference-list emerge-current-difference)) + (top-a (marker-position (aref diff 0))) + (bottom-a (marker-position (aref diff 1))) + (top-b (marker-position (aref diff 2))) + (bottom-b (marker-position (aref diff 3))) + (top-m (marker-position (aref diff 4))) + (bottom-m (marker-position (aref diff 5))) + size success sa sb sm) + ;; move down the tops of the difference regions as much as possible + ;; Try advancing comparing 1000 chars at a time. + ;; When that fails, go 500 chars at a time, and so on. + (setq size 1000) + (while (> size 0) + (setq success t) + (while success + (setq size (min size (- bottom-a top-a) (- bottom-b top-b) + (- bottom-m top-m))) + (setq sa (with-current-buffer emerge-A-buffer + (buffer-substring top-a + (+ size top-a)))) + (setq sb (with-current-buffer emerge-B-buffer + (buffer-substring top-b + (+ size top-b)))) + (setq sm (buffer-substring top-m (+ size top-m))) + (setq success (and (> size 0) (equal sa sb) (equal sb sm))) + (if success + (setq top-a (+ top-a size) + top-b (+ top-b size) + top-m (+ top-m size)))) + (setq size (/ size 2))) + ;; move up the bottoms of the difference regions as much as possible + ;; Try advancing comparing 1000 chars at a time. + ;; When that fails, go 500 chars at a time, and so on. + (setq size 1000) + (while (> size 0) + (setq success t) + (while success + (setq size (min size (- bottom-a top-a) (- bottom-b top-b) + (- bottom-m top-m))) + (setq sa (with-current-buffer emerge-A-buffer + (buffer-substring (- bottom-a size) + bottom-a))) + (setq sb (with-current-buffer emerge-B-buffer + (buffer-substring (- bottom-b size) + bottom-b))) + (setq sm (buffer-substring (- bottom-m size) bottom-m)) + (setq success (and (> size 0) (equal sa sb) (equal sb sm))) + (if success + (setq bottom-a (- bottom-a size) + bottom-b (- bottom-b size) + bottom-m (- bottom-m size)))) + (setq size (/ size 2))) + ;; {top,bottom}-{a,b,m} are now set at the new beginnings and ends + ;; of the difference regions. Move them to the beginning of lines, as + ;; appropriate. + (with-current-buffer emerge-A-buffer + (goto-char top-a) + (beginning-of-line) + (aset diff 0 (point-marker)) + (goto-char bottom-a) + (beginning-of-line 2) + (aset diff 1 (point-marker))) + (with-current-buffer emerge-B-buffer + (goto-char top-b) + (beginning-of-line) + (aset diff 2 (point-marker)) + (goto-char bottom-b) + (beginning-of-line 2) + (aset diff 3 (point-marker))) + (goto-char top-m) + (beginning-of-line) + (aset diff 4 (point-marker)) + (goto-char bottom-m) + (beginning-of-line 2) + (aset diff 5 (point-marker)) + ;; put the flags back in, recenter the display + (emerge-select-difference emerge-current-difference) + (emerge-recenter))) + +;; FIXME the manual advertised this as working in the A or B buffers, +;; but it does not, because all the buffer locals are nil there. +;; It would work to call it from the merge buffer and specify that one +;; wants to use the value of point in the A or B buffer. +;; But with the prefix argument already in use, there is no easy way +;; to have it ask for a buffer. +(defun emerge-find-difference (arg) + "Find the difference containing the current position of the point. +If there is no containing difference and the prefix argument is positive, +it finds the nearest following difference. A negative prefix argument finds +the nearest previous difference." + (interactive "P") + (cond ((eq (current-buffer) emerge-A-buffer) + (emerge-find-difference-A arg)) + ((eq (current-buffer) emerge-B-buffer) + (emerge-find-difference-B arg)) + (t (emerge-find-difference-merge arg)))) + +(defun emerge-find-difference-merge (arg) + "Find the difference containing point, in the merge buffer. +If there is no containing difference and the prefix argument is positive, +it finds the nearest following difference. A negative prefix argument finds +the nearest previous difference." + (interactive "P") + ;; search for the point in the merge buffer, using the markers + ;; for the beginning and end of the differences in the merge buffer + (emerge-find-difference1 arg (point) 4 5)) + +(defun emerge-find-difference-A (arg) + "Find the difference containing point, in the A buffer. +This command must be executed in the merge buffer. +If there is no containing difference and the prefix argument is positive, +it finds the nearest following difference. A negative prefix argument finds +the nearest previous difference." + (interactive "P") + ;; search for the point in the A buffer, using the markers + ;; for the beginning and end of the differences in the A buffer + (emerge-find-difference1 arg + (with-current-buffer emerge-A-buffer (point)) + 0 1)) + +(defun emerge-find-difference-B (arg) + "Find the difference containing point, in the B buffer. +This command must be executed in the merge buffer. +If there is no containing difference and the prefix argument is positive, +it finds the nearest following difference. A negative prefix argument finds +the nearest previous difference." + (interactive "P") + ;; search for the point in the B buffer, using the markers + ;; for the beginning and end of the differences in the B buffer + (emerge-find-difference1 arg + (with-current-buffer emerge-B-buffer (point)) + 2 3)) + +(defun emerge-find-difference1 (arg location begin end) + (let* ((index + ;; find first difference containing or after the current position + (catch 'search + (let ((n 0)) + (while (< n emerge-number-of-differences) + (let ((diff-vector (aref emerge-difference-list n))) + (if (<= location (marker-position (aref diff-vector end))) + (throw 'search n))) + (setq n (1+ n)))) + emerge-number-of-differences)) + (contains + ;; whether the found difference contains the current position + (and (< index emerge-number-of-differences) + (<= (marker-position (aref (aref emerge-difference-list index) + begin)) + location))) + (arg-value + ;; numeric value of prefix argument + (prefix-numeric-value arg))) + (emerge-unselect-and-select-difference + (cond + ;; if the point is in a difference, select it + (contains index) + ;; if the arg is nil and the point is not in a difference, error + ((null arg) (error "No difference contains point")) + ;; if the arg is positive, select the following difference + ((> arg-value 0) + (if (< index emerge-number-of-differences) + index + (error "No difference contains or follows point"))) + ;; if the arg is negative, select the preceding difference + (t + (if (> index 0) + (1- index) + (error "No difference contains or precedes point"))))))) + +(defun emerge-line-numbers () + "Display the current line numbers. +This function displays the line numbers of the points in the A, B, and +merge buffers." + (interactive) + (let* ((valid-diff + (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences))) + (emerge-line-diff (and valid-diff + (aref emerge-difference-list + emerge-current-difference))) + (merge-line (emerge-line-number-in-buf 4 5)) + (A-line (with-current-buffer emerge-A-buffer + (emerge-line-number-in-buf 0 1))) + (B-line (with-current-buffer emerge-B-buffer + (emerge-line-number-in-buf 2 3)))) + (message "At lines: merge = %d, A = %d, B = %d" + merge-line A-line B-line))) + +(defvar emerge-line-diff) + +(defun emerge-line-number-in-buf (begin-marker end-marker) + ;; FIXME point-min rather than 1? widen? + (let ((temp (1+ (count-lines 1 (line-beginning-position))))) + (if valid-diff + (progn + (if (> (point) (aref emerge-line-diff begin-marker)) + (setq temp (- temp emerge-before-flag-lines))) + (if (> (point) (aref emerge-line-diff end-marker)) + (setq temp (- temp emerge-after-flag-lines))))) + temp)) + +(defun emerge-set-combine-template (string &optional localize) + "Set `emerge-combine-versions-template' to STRING. +This value controls how `emerge-combine-versions' combines the two versions. +With prefix argument, `emerge-combine-versions-template' is made local to this +merge buffer. Localization is permanent for any particular merge buffer." + (interactive "s\nP") + (if localize + (make-local-variable 'emerge-combine-versions-template)) + (setq emerge-combine-versions-template string) + (message + (if (assq 'emerge-combine-versions-template (buffer-local-variables)) + "emerge-set-combine-versions-template set locally" + "emerge-set-combine-versions-template set"))) + +(defun emerge-set-combine-versions-template (start end &optional localize) + "Copy region into `emerge-combine-versions-template'. +This controls how `emerge-combine-versions' will combine the two versions. +With prefix argument, `emerge-combine-versions-template' is made local to this +merge buffer. Localization is permanent for any particular merge buffer." + (interactive "r\nP") + (if localize + (make-local-variable 'emerge-combine-versions-template)) + (setq emerge-combine-versions-template (buffer-substring start end)) + (message + (if (assq 'emerge-combine-versions-template (buffer-local-variables)) + "emerge-set-combine-versions-template set locally." + "emerge-set-combine-versions-template set."))) + +(defun emerge-combine-versions (&optional force) + "Combine versions using the template in `emerge-combine-versions-template'. +Refuses to function if this difference has been edited, i.e., if it is +neither the A nor the B variant. +An argument forces the variant to be selected even if the difference has +been edited." + (interactive "P") + (emerge-combine-versions-internal emerge-combine-versions-template force)) + +(defun emerge-combine-versions-register (char &optional force) + "Combine the two versions using the template in register REG. +See documentation of the variable `emerge-combine-versions-template' +for how the template is interpreted. +Refuses to function if this difference has been edited, i.e., if it is +neither the A nor the B variant. +An argument forces the variant to be selected even if the difference has +been edited." + (interactive "cRegister containing template: \nP") + (let ((template (get-register char))) + (if (not (stringp template)) + (error "Register does not contain text")) + (emerge-combine-versions-internal template force))) + +(defun emerge-combine-versions-internal (emerge-combine-template force) + (let ((operate + (lambda () + (emerge-combine-versions-edit merge-begin merge-end + A-begin A-end B-begin B-end) + (if emerge-auto-advance + (emerge-next-difference))))) + (emerge-select-version force operate operate operate))) + +(defvar emerge-combine-template) + +(defun emerge-combine-versions-edit (merge-begin merge-end + A-begin A-end B-begin B-end) + (with-current-buffer + emerge-merge-buffer + (delete-region merge-begin merge-end) + (goto-char merge-begin) + (let ((i 0)) + (while (< i (length emerge-combine-template)) + (let ((c (aref emerge-combine-template i))) + (if (= c ?%) + (progn + (setq i (1+ i)) + (setq c + (condition-case nil + (aref emerge-combine-template i) + (error ?%))) + (cond ((= c ?a) + (insert-buffer-substring emerge-A-buffer A-begin A-end)) + ((= c ?b) + (insert-buffer-substring emerge-B-buffer B-begin B-end)) + ((= c ?%) + (insert ?%)) + (t + (insert c)))) + (insert c))) + (setq i (1+ i)))) + (goto-char merge-begin) + (aset diff-vector 6 'combined) + (emerge-refresh-mode-line))) + +(defun emerge-set-merge-mode (mode) + "Set the major mode in a merge buffer. +Overrides any change that the mode might make to the mode line or local +keymap. Leaves merge in fast mode." + (interactive + (list (intern (completing-read "New major mode for merge buffer: " + obarray 'commandp t nil)))) + (funcall mode) + (emerge-refresh-mode-line) + (if emerge-fast-mode + (emerge-fast-mode) + (emerge-edit-mode))) + +(defun emerge-one-line-window () + (interactive) + (let ((window-min-height 1)) + (shrink-window (- (window-height) 2)))) + +;;; Support routines + +;; Select a difference by placing the visual flags around the appropriate +;; group of lines in the A, B, and merge buffers +(defun emerge-select-difference (n) + (let ((emerge-globalized-difference-list emerge-difference-list) + (emerge-globalized-number-of-differences emerge-number-of-differences)) + (emerge-place-flags-in-buffer emerge-A-buffer n 0 1) + (emerge-place-flags-in-buffer emerge-B-buffer n 2 3) + (emerge-place-flags-in-buffer nil n 4 5)) + (run-hooks 'emerge-select-hook)) + +(defun emerge-place-flags-in-buffer (buffer difference before-index + after-index) + (if buffer + (with-current-buffer + buffer + (emerge-place-flags-in-buffer1 difference before-index after-index)) + (emerge-place-flags-in-buffer1 difference before-index after-index))) + +(defun emerge-place-flags-in-buffer1 (difference before-index after-index) + (let ((buffer-read-only nil)) + ;; insert the flag before the difference + (let ((before (aref (aref emerge-globalized-difference-list difference) + before-index)) + here) + (goto-char before) + ;; insert the flag itself + (insert-before-markers emerge-before-flag) + (setq here (point)) + ;; Put the marker(s) referring to this position 1 character before the + ;; end of the flag, so it won't be damaged by the user. + ;; This gets a bit tricky, as there could be a number of markers + ;; that have to be moved. + (set-marker before (1- before)) + (let ((n (1- difference)) after-marker before-marker diff-list) + (while (and + (>= n 0) + (progn + (setq diff-list (aref emerge-globalized-difference-list n) + after-marker (aref diff-list after-index)) + (= after-marker here))) + (set-marker after-marker (1- after-marker)) + (setq before-marker (aref diff-list before-index)) + (if (= before-marker here) + (setq before-marker (1- before-marker))) + (setq n (1- n))))) + ;; insert the flag after the difference + (let* ((after (aref (aref emerge-globalized-difference-list difference) + after-index)) + (here (marker-position after))) + (goto-char here) + ;; insert the flag itself + (insert emerge-after-flag) + ;; Put the marker(s) referring to this position 1 character after the + ;; beginning of the flag, so it won't be damaged by the user. + ;; This gets a bit tricky, as there could be a number of markers + ;; that have to be moved. + (set-marker after (1+ after)) + (let ((n (1+ difference)) before-marker after-marker diff-list) + (while (and + (< n emerge-globalized-number-of-differences) + (progn + (setq diff-list (aref emerge-globalized-difference-list n) + before-marker (aref diff-list before-index)) + (= before-marker here))) + (set-marker before-marker (1+ before-marker)) + (setq after-marker (aref diff-list after-index)) + (if (= after-marker here) + (setq after-marker (1+ after-marker))) + (setq n (1+ n))))))) + +;; Unselect a difference by removing the visual flags in the buffers. +(defun emerge-unselect-difference (n) + (let ((diff-vector (aref emerge-difference-list n))) + (emerge-remove-flags-in-buffer emerge-A-buffer + (aref diff-vector 0) (aref diff-vector 1)) + (emerge-remove-flags-in-buffer emerge-B-buffer + (aref diff-vector 2) (aref diff-vector 3)) + (emerge-remove-flags-in-buffer emerge-merge-buffer + (aref diff-vector 4) (aref diff-vector 5))) + (run-hooks 'emerge-unselect-hook)) + +(defun emerge-remove-flags-in-buffer (buffer before after) + (with-current-buffer + buffer + (let ((buffer-read-only nil)) + ;; remove the flags, if they're there + (goto-char (- before (1- emerge-before-flag-length))) + (if (looking-at emerge-before-flag-match) + (delete-char emerge-before-flag-length) + ;; the flag isn't there + (ding) + (message "Trouble removing flag")) + (goto-char (1- after)) + (if (looking-at emerge-after-flag-match) + (delete-char emerge-after-flag-length) + ;; the flag isn't there + (ding) + (message "Trouble removing flag"))))) + +;; Select a difference, removing any flags that exist now. +(defun emerge-unselect-and-select-difference (n &optional suppress-display) + (if (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences)) + (emerge-unselect-difference emerge-current-difference)) + (if (and (>= n 0) (< n emerge-number-of-differences)) + (progn + (emerge-select-difference n) + (let* ((diff-vector (aref emerge-difference-list n)) + (selection-type (aref diff-vector 6))) + (if (eq selection-type 'default-A) + (aset diff-vector 6 'A) + (if (eq selection-type 'default-B) + (aset diff-vector 6 'B)))))) + (setq emerge-current-difference n) + (if (not suppress-display) + (progn + (emerge-recenter) + (emerge-refresh-mode-line)))) + +;; Perform tests to see whether user should be allowed to select a version +;; of this difference: +;; a valid difference has been selected; and +;; the difference text in the merge buffer is: +;; the A version (execute a-version), or +;; the B version (execute b-version), or +;; empty (execute neither-version), or +;; argument FORCE is true (execute neither-version) +;; Otherwise, signal an error. +(defun emerge-select-version (force a-version b-version neither-version) + (emerge-validate-difference) + (let ((buffer-read-only nil)) + (let* ((diff-vector + (aref emerge-difference-list emerge-current-difference)) + (A-begin (1+ (aref diff-vector 0))) + (A-end (1- (aref diff-vector 1))) + (B-begin (1+ (aref diff-vector 2))) + (B-end (1- (aref diff-vector 3))) + (merge-begin (1+ (aref diff-vector 4))) + (merge-end (1- (aref diff-vector 5)))) + (if (emerge-compare-buffers emerge-A-buffer A-begin A-end + emerge-merge-buffer merge-begin + merge-end) + (funcall a-version) + (if (emerge-compare-buffers emerge-B-buffer B-begin B-end + emerge-merge-buffer merge-begin + merge-end) + (funcall b-version) + (if (or force (= merge-begin merge-end)) + (funcall neither-version) + (error "This difference region has been edited"))))))) + +;; Read a file name, handling all of the various defaulting rules. + +(defun emerge-read-file-name (prompt alternative-default-dir default-file + A-file must-match) + ;; `prompt' should not have trailing ": ", so that it can be modified + ;; according to context. + ;; If alternative-default-dir is non-nil, it should be used as the default + ;; directory instead if default-directory, if emerge-default-last-directories + ;; is set. + ;; If default-file is set, it should be used as the default value. + ;; If A-file is set, and its directory is different from + ;; alternative-default-dir, and if emerge-default-last-directories is set, + ;; the default file should be the last part of A-file in the default + ;; directory. (Overriding default-file.) + (cond + ;; If this is not the A-file argument (shown by non-nil A-file), and + ;; if emerge-default-last-directories is set, and + ;; the default directory exists but is not the same as the directory of the + ;; A-file, + ;; then make the default file have the same name as the A-file, but in + ;; the default directory. + ((and emerge-default-last-directories + A-file + alternative-default-dir + (not (string-equal alternative-default-dir + (file-name-directory A-file)))) + (read-file-name (format "%s (default %s): " + prompt (file-name-nondirectory A-file)) + alternative-default-dir + (concat alternative-default-dir + (file-name-nondirectory A-file)) + (and must-match 'confirm))) + ;; If there is a default file, use it. + (default-file + (read-file-name (format "%s (default %s): " prompt default-file) + ;; If emerge-default-last-directories is set, use the + ;; directory from the same argument of the last call of + ;; Emerge as the default for this argument. + (and emerge-default-last-directories + alternative-default-dir) + default-file (and must-match 'confirm))) + (t + (read-file-name (concat prompt ": ") + ;; If emerge-default-last-directories is set, use the + ;; directory from the same argument of the last call of + ;; Emerge as the default for this argument. + (and emerge-default-last-directories + alternative-default-dir) + nil (and must-match 'confirm))))) + +;; Revise the mode line to display which difference we have selected + +(defun emerge-refresh-mode-line () + (setq mode-line-buffer-identification + (list (format "Emerge: %%b diff %d of %d%s" + (1+ emerge-current-difference) + emerge-number-of-differences + (if (and (>= emerge-current-difference 0) + (< emerge-current-difference + emerge-number-of-differences)) + (cdr (assq (aref (aref emerge-difference-list + emerge-current-difference) + 6) + '((A . " - A") + (B . " - B") + (prefer-A . " - A*") + (prefer-B . " - B*") + (combined . " - comb")))) + "")))) + (force-mode-line-update)) + +;; compare two regions in two buffers for containing the same text +(defun emerge-compare-buffers (buffer-x x-begin x-end buffer-y y-begin y-end) + ;; first check that the two regions are the same length + (if (not (and (= (- x-end x-begin) (- y-end y-begin)))) + nil + (catch 'exit + (while (< x-begin x-end) + ;; bite off and compare no more than 1000 characters at a time + (let* ((compare-length (min (- x-end x-begin) 1000)) + (x-string (with-current-buffer + buffer-x + (buffer-substring x-begin + (+ x-begin compare-length)))) + (y-string (with-current-buffer + buffer-y + (buffer-substring y-begin + (+ y-begin compare-length))))) + (if (not (string-equal x-string y-string)) + (throw 'exit nil) + (setq x-begin (+ x-begin compare-length)) + (setq y-begin (+ y-begin compare-length))))) + t))) + +;; Construct a unique buffer name. +;; The first one tried is prefixsuffix, then prefix<2>suffix, +;; prefix<3>suffix, etc. +(defun emerge-unique-buffer-name (prefix suffix) + (if (null (get-buffer (concat prefix suffix))) + (concat prefix suffix) + (let ((n 2)) + (while (get-buffer (format "%s<%d>%s" prefix n suffix)) + (setq n (1+ n))) + (format "%s<%d>%s" prefix n suffix)))) + +;; Verify that we have a difference selected. +(defun emerge-validate-difference () + (if (not (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences))) + (error "No difference selected"))) + +;;; Functions for saving and restoring a batch of variables + +;; These functions save (get the values of) and restore (set the values of) +;; a list of variables. The argument is a list of symbols (the names of +;; the variables). A list element can also be a list of two functions, +;; the first of which (when called with no arguments) gets the value, and +;; the second (when called with a value as an argument) sets the value. +;; A "function" is anything that funcall can handle as an argument. + +(defun emerge-save-variables (vars) + (mapcar (lambda (v) (if (symbolp v) + (symbol-value v) + (funcall (car v)))) + vars)) + +(defun emerge-restore-variables (vars values) + (while vars + (let ((var (car vars)) + (value (car values))) + (if (symbolp var) + (set var value) + (funcall (car (cdr var)) value))) + (setq vars (cdr vars)) + (setq values (cdr values)))) + +;; Make a temporary file that only we have access to. +;; PREFIX is appended to emerge-temp-file-prefix to make the filename prefix. +(defun emerge-make-temp-file (prefix) + (let (f (old-modes (default-file-modes))) + (unwind-protect + (progn + (set-default-file-modes emerge-temp-file-mode) + (setq f (make-temp-file (concat emerge-temp-file-prefix prefix)))) + (set-default-file-modes old-modes)) + f)) + +;;; Functions that query the user before he can write out the current buffer. + +(defun emerge-query-write-file () + "Ask the user whether to write out an incomplete merge. +If answer is yes, call `write-file' to do so. See `emerge-query-and-call' +for details of the querying process." + (interactive) + (emerge-query-and-call 'write-file)) + +(defun emerge-query-save-buffer () + "Ask the user whether to save an incomplete merge. +If answer is yes, call `save-buffer' to do so. See `emerge-query-and-call' +for details of the querying process." + (interactive) + (emerge-query-and-call 'save-buffer)) + +(defun emerge-query-and-call (command) + "Ask the user whether to save or write out the incomplete merge. +If answer is yes, call COMMAND interactively. During the call, the flags +around the current difference are removed." + (if (yes-or-no-p "Do you really write to write out this unfinished merge? ") + ;; He really wants to do it -- unselect the difference for the duration + (progn + (if (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences)) + (emerge-unselect-difference emerge-current-difference)) + ;; call-interactively takes the value of current-prefix-arg as the + ;; prefix argument value to be passed to the command. Thus, we have + ;; to do nothing special to make sure the prefix argument is + ;; transmitted to the command. + (call-interactively command) + (if (and (>= emerge-current-difference 0) + (< emerge-current-difference emerge-number-of-differences)) + (progn + (emerge-select-difference emerge-current-difference) + (emerge-recenter)))) + ;; He's being smart and not doing it + (message "Not written"))) + +;; Make sure the current buffer (for a file) has the same contents as the +;; file on disk, and attempt to remedy the situation if not. +;; Signal an error if we can't make them the same, or the user doesn't want +;; to do what is necessary to make them the same. +(defun emerge-verify-file-buffer () + ;; First check if the file has been modified since the buffer visited it. + (if (verify-visited-file-modtime (current-buffer)) + (if (buffer-modified-p) + ;; If buffer is not obsolete and is modified, offer to save + (if (yes-or-no-p (format "Save file %s? " buffer-file-name)) + (save-buffer) + (error "Buffer out of sync for file %s" buffer-file-name)) + ;; If buffer is not obsolete and is not modified, do nothing + nil) + (if (buffer-modified-p) + ;; If buffer is obsolete and is modified, give error + (error "Buffer out of sync for file %s" buffer-file-name) + ;; If buffer is obsolete and is not modified, offer to revert + (if (yes-or-no-p (format "Revert file %s? " buffer-file-name)) + (revert-buffer t t) + (error "Buffer out of sync for file %s" buffer-file-name))))) + +;; Utilities that might have value outside of Emerge. + +;; Set up the mode in the current buffer to duplicate the mode in another +;; buffer. +(defun emerge-copy-modes (buffer) + ;; Set the major mode + (funcall (with-current-buffer buffer major-mode))) + +;; Define a key, even if a prefix of it is defined +(defun emerge-force-define-key (keymap key definition) + "Like `define-key', but forcibly creates prefix characters as needed. +If some prefix of KEY has a non-prefix definition, it is redefined." + ;; Find out if a prefix of key is defined + (let ((v (lookup-key keymap key))) + ;; If so, undefine it + (if (integerp v) + (define-key keymap (substring key 0 v) nil))) + ;; Now define the key + (define-key keymap key definition)) + +;;;;; Improvements to describe-mode, so that it describes minor modes as well +;;;;; as the major mode +;;(defun describe-mode (&optional minor) +;; "Display documentation of current major mode. +;;If optional arg MINOR is non-nil (or prefix argument is given if interactive), +;;display documentation of active minor modes as well. +;;For this to work correctly for a minor mode, the mode's indicator variable +;;\(listed in `minor-mode-alist') must also be a function whose documentation +;;describes the minor mode." +;; (interactive) +;; (with-output-to-temp-buffer "*Help*" +;; (princ mode-name) +;; (princ " Mode:\n") +;; (princ (documentation major-mode)) +;; (let ((minor-modes minor-mode-alist) +;; (locals (buffer-local-variables))) +;; (while minor-modes +;; (let* ((minor-mode (car (car minor-modes))) +;; (indicator (car (cdr (car minor-modes)))) +;; (local-binding (assq minor-mode locals))) +;; ;; Document a minor mode if it is listed in minor-mode-alist, +;; ;; bound locally in this buffer, non-nil, and has a function +;; ;; definition. +;; (if (and local-binding +;; (cdr local-binding) +;; (fboundp minor-mode)) +;; (progn +;; (princ (format "\n\n\n%s minor mode (indicator%s):\n" +;; minor-mode indicator)) +;; (princ (documentation minor-mode))))) +;; (setq minor-modes (cdr minor-modes)))) +;; (with-current-buffer standard-output +;; (help-mode)) +;; (help-print-return-message))) + +;; This goes with the redefinition of describe-mode. +;;;; Adjust things so that keyboard macro definitions are documented correctly. +;;(fset 'defining-kbd-macro (symbol-function 'start-kbd-macro)) + +;; substitute-key-definition should work now. +;;;; Function to shadow a definition in a keymap with definitions in another. +;;(defun emerge-shadow-key-definition (olddef newdef keymap shadowmap) +;; "Shadow OLDDEF with NEWDEF for any keys in KEYMAP with entries in SHADOWMAP. +;;In other words, SHADOWMAP will now shadow all definitions of OLDDEF in KEYMAP +;;with NEWDEF. Does not affect keys that are already defined in SHADOWMAP, +;;including those whose definition is OLDDEF." +;; ;; loop through all keymaps accessible from keymap +;; (let ((maps (accessible-keymaps keymap))) +;; (while maps +;; (let ((prefix (car (car maps))) +;; (map (cdr (car maps)))) +;; ;; examine a keymap +;; (if (arrayp map) +;; ;; array keymap +;; (let ((len (length map)) +;; (i 0)) +;; (while (< i len) +;; (if (eq (aref map i) olddef) +;; ;; set the shadowing definition +;; (let ((key (concat prefix (char-to-string i)))) +;; (emerge-define-key-if-possible shadowmap key newdef))) +;; (setq i (1+ i)))) +;; ;; sparse keymap +;; (while map +;; (if (eq (cdr-safe (car-safe map)) olddef) +;; ;; set the shadowing definition +;; (let ((key +;; (concat prefix (char-to-string (car (car map)))))) +;; (emerge-define-key-if-possible shadowmap key newdef))) +;; (setq map (cdr map))))) +;; (setq maps (cdr maps))))) + +;; Define a key if it (or a prefix) is not already defined in the map. +(defun emerge-define-key-if-possible (keymap key definition) + ;; look up the present definition of the key + (let ((present (lookup-key keymap key))) + (if (integerp present) + ;; if it is "too long", look up the valid prefix + (if (not (lookup-key keymap (substring key 0 present))) + ;; if the prefix isn't defined, define it + (define-key keymap key definition)) + ;; if there is no present definition, define it + (if (not present) + (define-key keymap key definition))))) + +;; Ordinary substitute-key-definition should do this now. +;;(defun emerge-recursively-substitute-key-definition (olddef newdef keymap) +;; "Like `substitute-key-definition', but act recursively on subkeymaps. +;;Make sure that subordinate keymaps aren't shared with other keymaps! +;;\(`copy-keymap' will suffice.)" +;; ;; Loop through all keymaps accessible from keymap +;; (let ((maps (accessible-keymaps keymap))) +;; (while maps +;; ;; Substitute in this keymap +;; (substitute-key-definition olddef newdef (cdr (car maps))) +;; (setq maps (cdr maps))))) + +;; Show the name of the file in the buffer. +(defun emerge-show-file-name () + "Displays the name of the file loaded into the current buffer. +If the name won't fit on one line, the minibuffer is expanded to hold it, +and the command waits for a keystroke from the user. If the keystroke is +SPC, it is ignored; if it is anything else, it is processed as a command." + (interactive) + (let ((name (buffer-file-name))) + (or name + (setq name "Buffer has no file name.")) + (save-window-excursion + (select-window (minibuffer-window)) + (unwind-protect + (progn + (erase-buffer) + (insert name) + (while (and (not (pos-visible-in-window-p)) + (not (window-full-height-p))) + (enlarge-window 1)) + (let* ((echo-keystrokes 0) + (c (read-event))) + (if (not (eq c 32)) + (setq unread-command-events (list c))))) + (erase-buffer))))) + +;; Improved auto-save file names. +;; This function fixes many problems with the standard auto-save file names: +;; Auto-save files for non-file buffers get put in the default directory +;; for the buffer, whether that makes sense or not. +;; Auto-save files for file buffers get put in the directory of the file, +;; regardless of whether we can write into it or not. +;; Auto-save files for non-file buffers don't use the process id, so if a +;; user runs more than on Emacs, they can make auto-save files that overwrite +;; each other. +;; To use this function, do: +;; (fset 'make-auto-save-file-name +;; (symbol-function 'emerge-make-auto-save-file-name)) +(defun emerge-make-auto-save-file-name () + "Return file name to use for auto-saves of current buffer. +Does not consider `auto-save-visited-file-name'; +that is checked before calling this function. +You can redefine this for customization. +See also `auto-save-file-name-p'." + (if buffer-file-name + ;; if buffer has a file, try the format /## + (let ((f (concat (file-name-directory buffer-file-name) + "#" + (file-name-nondirectory buffer-file-name) + "#"))) + (if (file-writable-p f) + ;; the file is writable, so use it + f + ;; the file isn't writable, so use the format + ;; ~/#&&# + (concat (getenv "HOME") + "/#&" + (file-name-nondirectory buffer-file-name) + "&" + (emerge-hash-string-into-string + (file-name-directory buffer-file-name)) + "#"))) + ;; if buffer has no file, use the format ~/#%%# + (expand-file-name (concat (getenv "HOME") + "/#%" + ;; quote / into \! and \ into \\ + (emerge-unslashify-name (buffer-name)) + "%" + (make-temp-name "") + "#")))) + +;; Hash a string into five characters more-or-less suitable for use in a file +;; name. (Allowed characters are ! through ~, except /.) +(defun emerge-hash-string-into-string (s) + (let ((bins (vector 0 0 0 0 0)) + (i 0)) + (while (< i (length s)) + (aset bins (% i 5) (% (+ (* (aref bins (% i 5)) 35) + (aref s i)) + 65536)) + (setq i (1+ i))) + (mapconcat (lambda (b) + (setq b (+ (% b 93) ?!)) + (if (>= b ?/) + (setq b (1+ b))) + (char-to-string b)) + bins ""))) + +;; Quote any /s in a string by replacing them with \!. +;; Also, replace any \s by \\, to make it one-to-one. +(defun emerge-unslashify-name (s) + (let ((limit 0)) + (while (string-match "[/\\]" s limit) + (setq s (concat (substring s 0 (match-beginning 0)) + (if (string= (substring s (match-beginning 0) + (match-end 0)) + "/") + "\\!" + "\\\\") + (substring s (match-end 0)))) + (setq limit (1+ (match-end 0))))) + s) + +;; Metacharacters that have to be protected from the shell when executing +;; a diff/diff3 command. - (defcustom emerge-metachars "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]" - "Characters that must be quoted with \\ when used in a shell command line. ++(defcustom emerge-metachars ++ (if (memq system-type '(ms-dos windows-nt)) ++ "[ \t\"<>|?*^&=]" ++ "[ \t\n!\"#$&'()*;<=>?[\\^`{|~]") ++ "Characters that must be quoted when used in a shell command line. +More precisely, a [...] regexp to match any one such character." + :type 'regexp + :group 'emerge) + +;; Quote metacharacters (using \) when executing a diff/diff3 command. +(defun emerge-protect-metachars (s) - (let ((limit 0)) - (while (string-match emerge-metachars s limit) - (setq s (concat (substring s 0 (match-beginning 0)) - "\\" - (substring s (match-beginning 0)))) - (setq limit (1+ (match-end 0))))) - s) ++ (if (memq system-type '(ms-dos windows-nt)) ++ (shell-quote-argument s) ++ (let ((limit 0)) ++ (while (string-match emerge-metachars s limit) ++ (setq s (concat (substring s 0 (match-beginning 0)) ++ "\\" ++ (substring s (match-beginning 0)))) ++ (setq limit (1+ (match-end 0))))) ++ s)) + +(provide 'emerge) + +;;; emerge.el ends here diff --cc src/ChangeLog index 8cbcaf4afbc,be81dd27584..5aee468d933 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,372 -1,4 +1,377 @@@ -2011-03-19 Chong Yidong ++2011-03-19 Juanma Barranquero ++ ++ * xfaces.c (Fx_load_color_file): ++ Read color file from absolute filename (bug#8250). ++ +2011-03-19 Juanma Barranquero + + * makefile.w32-in: Update dependencies. + +2011-03-17 Eli Zaretskii + + * makefile.w32-in ($(BLD)/unexw32.$(O)): Depend on $(SRC)/unexec.h. + +2011-03-17 Paul Eggert + + Fix more problems found by GCC 4.5.2's static checks. + + * process.c (make_serial_process_unwind, send_process_trap): + (sigchld_handler): Now static. + + * process.c (allocate_pty): Let PTY_ITERATION declare iteration vars. + That way, the code declares only the vars that it needs. + * s/aix4-2.h (PTY_ITERATION): Declare iteration vars. + * s/cygwin.h (PTY_ITERATION): Likewise. + * s/darwin.h (PTY_ITERATION): Likewise. + * s/gnu-linux.h (PTY_ITERATION): Likewise. + + * s/irix6-5.h (PTY_OPEN): Declare stb, to loosen coupling. + * process.c (allocate_pty): Don't declare stb unless it's needed. + + * bytecode.c (MAYBE_GC): Rewrite so as not to use empty "else". + (CONSTANTLIM): Remove; unused. + (METER_CODE, Bscan_buffer, Bread_char, Bset_mark): + Define only if needed. + + * unexelf.c (unexec): Name an expression, + to avoid gcc -Wbad-function-cast warning. + Use a different way to cause a compilation error if anyone uses + n rather than nn, a way that does not involve shadowing. + (ELF_BSS_SECTION_NAME, OLD_PROGRAM_H): Remove; unused. + + * deps.mk (unexalpha.o): Remove; unused. + + New file unexec.h, the (simple) interface for unexec (Bug#8267). + * unexec.h: New file. + * deps.mk (emacs.o, unexaix.o, unexcw.o, unexcoff.o, unexelf.o): + (unexhp9k800.o, unexmacosx.o, unexsol.o, unexw32.o): + Depend on unexec.h. + * emacs.c [!defined CANNOT_DUMP]: Include unexec.h. + * unexaix.c, unexcoff.c, unexcw.c, unexelf.c, unexhp9k800.c: + * unexmacosx.c, unexsol.c, unexw32.c: Include unexec.h. + Change as necessary to match prototype in unexec.h. + + * syntax.c (Fforward_comment, scan_lists): Rename locals to avoid + shadowing. + (back_comment, skip_chars): Mark vars as initialized. + + * character.h (FETCH_STRING_CHAR_ADVANCE_NO_CHECK, BUF_INC_POS): + Rename locals to avoid shadowing. + + * lread.c (read1): Rewrite so as not to use empty "else". + (Fload, readevalloop, read1): Rename locals to avoid shadowing. + + * print.c (Fredirect_debugging_output): Fix pointer signedess. + + * lisp.h (debug_output_compilation_hack): Add decl here, to avoid + warning when compiling print.c. + + * font.c (font_unparse_fcname): Abort in an "impossible" situation + instead of using an uninitialized var. + (font_sort_entities): Mark var as initialized. + + * character.h (FETCH_CHAR_ADVANCE): Rename locals to avoid shadowing. + + * font.c (font_unparse_xlfd): Don't mix pointers to variables with + pointers to constants. + (font_parse_fcname): Remove unused vars. + (font_delete_unmatched): Now static. + (font_get_spec): Remove; unused. + (font_style_to_value, font_prop_validate_style, font_unparse_fcname): + (font_update_drivers, Ffont_get_glyphs, font_add_log): + Rename or move locals to avoid shadowing. + + * fns.c (require_nesting_list, require_unwind): Now static. + (Ffillarray): Rename locals to avoid shadowing. + + * floatfns.c (domain_error2): Define only if needed. + (Ffrexp, Fldexp): Rename locals to avoid shadowing. + + * alloc.c (mark_backtrace): Move decl from here ... + * lisp.h: ... to here, so that it can be checked. + + * eval.c (call_debugger, do_debug_on_call, grow_specpdl): Now static. + (Fdefvar): Rewrite so as not to use empty "else". + (lisp_indirect_variable): Name an expression, + to avoid gcc -Wbad-function-cast warning. + (Fdefvar): Rename locals to avoid shadowing. + + * callint.c (quotify_arg, quotify_args): Now static. + (Fcall_interactively): Rename locals to avoid shadowing. + Use const pointer when appropriate. + + * lisp.h (get_system_name, get_operating_system_release): + Move decls here, to check interfaces. + * process.c (get_operating_system_release): Move decl to lisp.h. + * xrdb.c (get_system_name): Likewise. + * editfns.c (init_editfns, Fuser_login_name, Fuser_uid): + (Fuser_real_uid, Fuser_full_name): Remove unnecessary casts, + some of which prompt warnings from gcc -Wbad-function-cast. + (Fformat_time_string, Fencode_time, Finsert_char): + (Ftranslate_region_internal, Fformat): + Rename or remove local vars to avoid shadowing. + (Ftranslate_region_internal): Mark var as initialized. + + * doc.c (Fdocumentation, Fsnarf_documentation): Move locals to + avoid shadowing. + + * lisp.h (eassert): Check that the argument compiles, even if + ENABLE_CHECKING is not defined. + + * data.c (Findirect_variable): Name an expression, to avoid + gcc -Wbad-function-cast warning. + (default_value, arithcompare, arith_driver, arith_error): Now static. + (store_symval_forwarding): Rename local to avoid shadowing. + (Fmake_variable_buffer_local, Fmake_local_variable): Mark + variables as initialized. + (do_blv_forwarding, do_symval_forwarding): Remove; unused. + + * alloc.c (check_cons_list): Do not define unless GC_CHECK_CONS_LIST. + (Fmake_vector, Fvector, Fmake_byte_code, Fgarbage_collect): + Rename locals to avoid shadowing. + (mark_stack): Move local variables into the #ifdef region where + they're used. + (BLOCK_INPUT_ALLOC, UNBLOCK_INPUT_ALLOC): Define only if + ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT, as they are not + needed otherwise. + (CHECK_ALLOCATED): Define only if GC_CHECK_MARKED_OBJECTS. + (GC_STRING_CHARS): Remove; not used. + (Fmemory_limit): Cast sbrk's returned value to char *. + + * lisp.h (check_cons_list): Declare if GC_CHECK_CONS_LIST; this + avoids undefined behavior in theory. + + * regex.c (IF_LINT): Add defn, for benefit of ../lib-src. + + Use functions, not macros, for up- and down-casing (Bug#8254). + * buffer.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP): + (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Remove. All callers changed + to use the following functions instead of these macros. + (downcase): Adjust to lack of DOWNCASE_TABLE. Return int, not + EMACS_INT, since callers assume the returned value fits in int. + (upcase1): Likewise, for UPCASE_TABLE. + (uppercasep, lowercasep, upcase): New static inline functions. + * editfns.c (Fchar_equal): Remove no-longer-needed workaround for + the race-condition problem in the old DOWNCASE. + + * regex.c (CHARSET_LOOKUP_RANGE_TABLE_RAW, POP_FAILURE_REG_OR_COUNT): + Rename locals to avoid shadowing. + (regex_compile, re_match_2_internal): Move locals to avoid shadowing. + (regex_compile, re_search_2, re_match_2_internal): + Remove unused local vars. + (FREE_VAR): Rewrite so as not to use empty "else", + which gcc can warn about. + (regex_compile, re_match_2_internal): Mark locals as initialized. + (RETALLOC_IF): Define only if needed. + (WORDCHAR_P): Likewise. This one is never needed, but is used + only in a comment talking about a compiler bug, so put inside + the #if 0 of that comment. + (CHARSET_LOOKUP_BITMAP, FAIL_STACK_FULL, RESET_FAIL_STACK): + (PUSH_FAILURE_ELT, BUF_PUSH_3, STOP_ADDR_VSTRING): + Remove; unused. + + * search.c (boyer_moore): Rename locals to avoid shadowing. + * character.h (FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE): + (PREV_CHAR_BOUNDARY): Likewise. + + * search.c (simple_search): Remove unused var. + + * dired.c (compile_pattern): Move decl from here ... + * lisp.h: ... to here, so that it can be checked. + (struct re_registers): New forward decl. + + * character.h (INC_POS, DEC_POS): Rename locals to avoid shadowing. + + * indent.c (MULTIBYTE_BYTES_WIDTH): New args bytes, width. + All uses changed. + (MULTIBYTE_BYTES_WIDTH, scan_for_column, compute_motion): + Rename locals to avoid shadowing. + (Fvertical_motion): Mark locals as initialized. + + * casefiddle.c (casify_object, casify_region): Now static. + (casify_region): Mark local as initialized. + + * cmds.c (internal_self_insert): Rename local to avoid shadowing. + + * lisp.h (GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR, GCPRO5_VAR, GCPRO6_VAR): + New macros, so that the caller can use some names other than + gcpro1, gcpro2, etc. + (GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6): Reimplement in terms + of the new macros. + (GCPRO1_VAR, UNGCPRO_VAR): Change the meaning of the second + argument, for consistency with GCPRO2_VAR, etc: it is now the + prefix of the variable, not the variable itself. All uses + changed. + * dired.c (directory_files_internal, file_name_completion): + Rename locals to avoid shadowing. + + Fix a race condition diagnosed by gcc -Wsequence-point (Bug#8254). + An expression of the form (DOWNCASE (x) == DOWNCASE (y)), found in + dired.c's scmp function, had undefined behavior. + * lisp.h (DOWNCASE_TABLE, UPCASE_TABLE, DOWNCASE, UPPERCASEP): + (NOCASEP, LOWERCASEP, UPCASE, UPCASE1): Move from here ... + * buffer.h: ... to here, because these macros use current_buffer, + and the new implementation with inline functions needs to have + current_buffer in scope now, rather than later when the macros + are used. + (downcase, upcase1): New static inline functions. + (DOWNCASE, UPCASE1): Reimplement using these functions. + This avoids undefined behavior in expressions like + DOWNCASE (x) == DOWNCASE (y), which previously suffered + from race conditions in accessing the global variables + case_temp1 and case_temp2. + * casetab.c (case_temp1, case_temp2): Remove; no longer needed. + * lisp.h (case_temp1, case_temp2): Remove their decls. + * character.h (ASCII_CHAR_P): Move from here ... + * lisp.h: ... to here, so that the inline functions mentioned + above can use them. + + * dired.c (directory_files_internal_unwind): Now static. + + * fileio.c (file_name_as_directory, directory_file_name): + (barf_or_query_if_file_exists, auto_save_error, auto_save_1): + Now static. + (file_name_as_directory): Use const pointers when appropriate. + (Fexpand_file_name): Likewise. In particular, newdir might + point at constant storage, so make it a const pointer. + (Fmake_directory_internal, Fread_file_name): Remove unused vars. + (Ffile_selinux_context, Fset_file_selinux_context): Fix pointer + signedness issues. + (Fset_file_times, Finsert_file_contents, auto_save_error): + Rename locals to avoid shadowing. + + * minibuf.c (choose_minibuf_frame_1): Now static. + (Ftry_completion, Fall_completions): Rename or remove locals + to avoid shadowing. + + * marker.c (bytepos_to_charpos): Remove; unused. + + * lisp.h (verify_bytepos, count_markers): New decls, + so that gcc does not warn that these functions aren't declared. + + * insdel.c (check_markers, make_gap_larger, make_gap_smaller): + (reset_var_on_error, Fcombine_after_change_execute_1): Now static. + (CHECK_MARKERS): Redo to avoid gcc -Wempty-body diagnostic. + (copy_text): Remove unused local var. + + * filelock.c (within_one_second): Now static. + (lock_file_1): Rename local to avoid shadowing. + + * buffer.c (fix_overlays_before): Mark locals as initialized. + (fix_start_end_in_overlays): Likewise. This function should be + simplified by using pointers-to-pointers, but that's a different + matter. + (switch_to_buffer_1): Now static. + (Fkill_buffer, record_buffer, Fbury_buffer, Fset_buffer_multibyte): + (report_overlay_modification): Rename locals to avoid shadowing. + + * sysdep.c (system_process_attributes): Rename vars to avoid shadowing. + Fix pointer signedness issue. + (sys_subshell): Mark local as volatile if checking for lint, + to suppress a gcc -Wclobbered warning that does not seem to be right. + (MAXPATHLEN): Define only if needed. + + * process.c (serial_open, serial_configure): Move decls from here ... + * systty.h: ... to here, so that they can be checked. + + * fns.c (get_random, seed_random): Move extern decls from here ... + * lisp.h: ... to here, so that they can be checked. + + * sysdep.c (reset_io): Now static. + (wait_for_termination_signal): Remove; unused. + + * keymap.c (keymap_parent, keymap_memberp, map_keymap_internal): + (copy_keymap_item, append_key, push_text_char_description): + Now static. + (Fwhere_is_internal): Don't test CONSP (sequences) unnecessarily. + (DENSE_TABLE_SIZE): Remove; unused. + (get_keymap, access_keymap, Fdefine_key, Fwhere_is_internal): + (describe_map_tree): + Rename locals to avoid shadowing. + + * keyboard.c: Declare functions static if they are not used elsewhere. + (echo_char, echo_dash, cmd_error, top_level_2): + (poll_for_input, handle_async_input): Now static. + (read_char, kbd_buffer_get_event, make_lispy_position): + (make_lispy_event, make_lispy_movement, apply_modifiers): + (decode_keyboard_code, tty_read_avail_input, menu_bar_items): + (parse_tool_bar_item, read_key_sequence, Fread_key_sequence): + (Fread_key_sequence_vector): Rename locals to avoid shadowing. + (read_key_sequence, read_char): Mark locals as initialized. + (Fexit_recursive_edit, Fabort_recursive_edit): Mark with NO_RETURN. + + * keyboard.h (make_ctrl_char): New decl. + (mark_kboards): Move decl here ... + * alloc.c (mark_kboards): ... from here. + + * lisp.h (force_auto_save_soon): New decl. + + * emacs.c (init_cmdargs): Rename local to avoid shadowing. + (DEFINE_DUMMY_FUNCTION): New macro. + (__do_global_ctors, __do_global_ctors_aux, __do_global_dtors, __main): + Use it. + (main): Add casts to avoid warnings + if GCC considers string literals to be constants. + + * lisp.h (fatal_error_signal): Add decl, since it's exported. + + * dbusbind.c: Pointer signedness fixes. + (xd_signature, xd_append_arg, xd_initialize): + (Fdbus_call_method, Fdbus_call_method_asynchronously): + (Fdbus_method_return_internal, Fdbus_method_error_internal): + (Fdbus_send_signal, xd_read_message_1, Fdbus_register_service): + (Fdbus_register_signal): Use SSDATA when the context wants char *. + + * dbusbind.c (Fdbus_init_bus): Add cast to avoid warning + if GCC considers string literals to be constants. + (Fdbus_register_service, Fdbus_register_method): Remove unused vars. + +2011-03-16 Stefan Monnier + + * print.c (PRINT_CIRCLE_CANDIDATE_P): New macro. + (print_preprocess, print_object): New macro to fix last change. + + * print.c (print_preprocess): Don't forget font objects. + +2011-03-16 Juanma Barranquero + + * emacs.c (USAGE3): Doc fixes. + +2011-03-15 Andreas Schwab + + * coding.c (detect_coding_iso_2022): Reorganize code to clarify + structure. + +2011-03-14 Juanma Barranquero + + * lisp.h (VWindow_system, Qfile_name_history): + * keyboard.h (lispy_function_keys) [WINDOWSNT]: + * w32term.h (w32_system_caret_hwnd, w32_system_caret_height) + (w32_system_caret_x, w32_system_caret_y): Declare extern. + + * w32select.c: Don't #include "keyboard.h". + (run_protected): Add extern declaration for waiting_for_input. + + * w32.c (Qlocal, noninteractive1, inhibit_window_system): + * w32console.c (detect_input_pending, read_input_pending) + (encode_terminal_code): + * w32fns.c (quit_char, lispy_function_keys, Qtooltip) + (w32_system_caret_hwnd, w32_system_caret_height, w32_system_caret_x) + (w32_system_caret_y, Qfile_name_history): + * w32font.c (w32font_driver, QCantialias, QCotf, QClang): + * w32inevt.c (reinvoke_input_signal, lispy_function_keys): + * w32menu.c (Qmenu_bar, QCtoggle, QCradio, Qoverriding_local_map) + (Qoverriding_terminal_local_map, Qmenu_bar_update_hook): + * w32proc.c (Qlocal, report_file_error): + * w32term.c (Vwindow_system, updating_frame): + * w32uniscribe.c (initialized, uniscribe_font_driver): + Remove unneeded extern declarations. + +2011-03-14 Chong Yidong + + * buffer.c (Fmake_indirect_buffer): Fix incorrect assertions. + +2011-03-13 Chong Yidong * buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT) (BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219).