* lisp/info-xref.el (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.
Fixes: debbugs:7611
* lisp/files.el (backup-buffer): Make last-resort backup file in
.emacs.d.
* lisp/subr.el (locate-user-emacs-file): If .emacs.d does not exist,
make it with permission 700.
* doc/emacs/files.texi (Backup Names): Document the new location of the
last-resort backup file.
(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.
(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.
Fixes: debbugs:7846
(smerge-resolve--normalize-re): New var.
(smerge-resolve--extract-comment, smerge-resolve--normalize): New funs.
(smerge-resolve): Use them.
* lisp/newcomment.el (comment-only-p): New function.
(comment-or-uncomment-region): Use it.
(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.
Fixes: debbugs:7754
(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.
* lisp/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.
* lisp/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.
* lisp/gnus/gnus-msg.el (gnus-msg-mail): New arg RETURN-ACTION. Pass it to
message-mail.
* lisp/gnus/message.el (message-mail): New arg RETURN-ACTION.
(message-return-action): New var.
(message-bury): Use it.
(message-mode): Make it buffer-local.
(message-send-and-exit): Always call message-bury.
(message-tool-bar-gnome): Tweak tool-bar items. Add :vert-only tags.
* lisp/mail/rmail.el (rmail-mail-return): New function.
(rmail-start-mail): Pass it to compose-mail.
* lisp/mh-e/mh-comp.el (mh-user-agent-compose): New arg RETURN-ACTION.
* Makefile.in, configure.in, doc/misc/Makefile.in, doc/misc/makefile.w32-in:
Add ERT. Make "make check" run tests in test/automated.
* doc/misc/ert.texi, lisp/emacs-lisp/ert.el, lisp/emacs-lisp/ert-x.el:
New files.
* test/automated: New directory.
gnus-sum.el (gnus-summary-next-article): Remove hack to reselect group window, because it does the wrong thing when a separate frame displays the group buffer.
gnus-int.el (gnus-request-accept-article): Don't try to update marks and stuff if the backend didn't return the article number. This fixes an Exchange-related nnimap bug.
mm-decode.el (mm-preferred-alternative-precedence): Discourage showing empty parts.
nnimap.el (nnimap-convert-partial-article): Protect against zero-length body parts.
(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.