Tries to guess suitable bug-reference-bug-regexp and
bug-reference-url-format values based on version control URL (in file
buffers) and mail information (in Gnus summary and article buffers).
* lisp/progmodes/bug-reference.el
(bug-reference--maybe-setup-from-vc): New defun.
(bug-reference-setup-from-vc-alist): New defvar defining setup rules
based on version control URL.
(bug-reference-try-setup-from-vc): New defun using above defvar.
(bug-reference--maybe-setup-from-mail): New defun.
(bug-reference-setup-from-mail-alist): New defvar defining setup rules
based on mail/newsgroups and header values.
(bug-reference-try-setup-from-gnus): New defun using above defvar.
(bug-reference--try-setup-gnus-article): New defun.
(bug-reference--run-auto-setup): New defun.
(bug-reference-mode): Call bug-reference--run-auto-setup as
:after-hook.
(bug-reference-prog-mode): Call bug-reference--run-auto-setup as
:after-hook.
* doc/misc/gnus-faq.texi (FAQ 3-11):
* doc/emacs/frames.texi (Tab Bars): Consistently use @var with
lower-case metasyntactic variables and @minus instead of a dash.
(Text-Only Mouse):
* doc/emacs/files.texi (Auto Revert):
* doc/emacs/misc.texi (emacsclient Options)
(Embedded WebKit Widgets):
* doc/lispref/control.texi (pcase Macro):
* doc/lispref/debugging.texi (Backtraces):
* doc/lispref/files.texi (Truenames):
* doc/lispref/frames.texi (Management Parameters):
* doc/lispref/os.texi (Time Calculations):
* doc/lispref/text.texi (Parsing JSON):
* doc/misc/efaq-w32.texi (Other versions of Emacs, Debugging)
(Swap Caps NT, Printing, Bash, Developing with Emacs):
* doc/misc/efaq.texi (New in Emacs 25):
* doc/misc/emacs-gnutls.texi (Help For Users):
* doc/misc/message.texi (Using S/MIME, Passphrase caching):
* test/manual/etags/tex-src/gzip.texi (Overview): Use @. when a
sentence in the middle of a paragraph ends with an upper-case letter
as per "(texinfo) Ending a Sentence".
* lisp/simple.el (next-error-find-buffer-function): Rename default function
from next-error-no-navigation-try-current
to next-error-buffer-unnavigated-current.
After replaying a set of actions downloaded by gnus-cloud, persist the
highest sequence number seen as the local `gnus-cloud-sequence'
number, in order that a future download will not unnecessarily replay
previously seen actions and any future uploads from this emacs
instance use a higher sequence number than that downloaded.
Remove the test on whether individual newsrc entries are older than
the current time, as that is always going to be the case.
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
Add `access-file'.
(tramp-crypt-file-name-for-operation): Rewrite. Take second
argument into account.
(tramp-crypt-file-name-handler): Use it.
(tramp-crypt-send-command): Set buffer multibyte (but utf8 files
still don't work).
(tramp-crypt-handle-access-file): New defun.
(tramp-crypt-do-copy-or-rename-file): Short track if both files
are on a crypted remote dir.
* lisp/net/tramp.el (file-notify-rm-watch): Declare.
(tramp-inhibit-progress-reporter): New defvar.
(tramp-message): Display message only if not suppressed by
progress reporter.
(with-tramp-progress-reporter): Suppress concurrent progress
reporter messages.
(tramp-file-notify-process-sentinel): Simplify.
* lisp/vc/vc.el: Document new remote-name argument of VC
repository-url command.
* lisp/vc/vc-git.el (vc-git-repository-url): Add and use new arg.
* lisp/vc/vc-hg.el (vc-hg-repository-url): Add and use new arg.
* lisp/vc/vc-bzr.el (vc-bzr-repository-url): Add new arg but ignore
it.
* lisp/vc/vc-svn.el (vc-svn-repository-url): Add new arg but ignore
it.
Edebug doesn't support them well. Rather than trying to fix Edebug,
disable instrumentation for now to prevent annoying bugs.
* lisp/emacs-lisp/generator.el (iter-defun, iter-lambda, iter-make)
(iter-do): Don't attempt to instrument bodies that are mangled by the
CPS transformer.
* test/lisp/emacs-lisp/generator-tests.el
(generator-tests-edebug): New regression test.
It's necessary to add a name suffix to setters defined with
'gv-define-setter' so that Edebug can distinguish between the getter
and the setter (Bug#41853).
* lisp/emacs-lisp/gv.el (gv-define-setter): Add a name suffix to
setter definitions.
* test/lisp/emacs-lisp/gv-tests.el (gv-setter-edebug): New regression
test.
* lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist):
* lisp/net/tramp-archive.el (tramp-archive-file-name-handler-alist):
* lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist):
* lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist):
Add `tramp-get-remote-gid' and 'tramp-get-remote-uid'.
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
Add `file-ownership-preserved-p'.
(tramp-crypt-add-directory): Check, that NAME is not quoted.
(tramp-crypt-handle-file-ownership-preserved-p): New defun.
(tramp-crypt-handle-insert-directory): Fix docstring.
* lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
Add `tramp-get-remote-gid' and 'tramp-get-remote-uid'.
(tramp-gvfs-handle-file-readable-p): Call `tramp-get-remote-uid'.
(tramp-gvfs-handle-get-remote-uid)
(tramp-gvfs-handle-get-remote-gid): Rename from
`tramp-gvfs-get-remote-{uid,gid}'. Do not cache result.
(tramp-gvfs-maybe-open-connection): No special handling for remote
uid and gid.
* lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist):
Add `tramp-get-remote-gid' and 'tramp-get-remote-uid'.
(tramp-sh-handle-get-remote-uid, tramp-sh-handle-get-remote-gid):
Rename from `tramp-get-remote-{uid,gid}'. Do not cache result.
(tramp-sh-handle-file-ownership-preserved-p): Distinguish by GROUP
when caching.
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist):
Add `tramp-get-remote-gid' and 'tramp-get-remote-uid'.
(tramp-sudoedit-handle-get-remote-uid)
(tramp-sudoedit-handle-get-remote-gid): Rename from
`tramp-sudoedit-get-remote-{uid,gid}'. Do not cache result.
(tramp-sudoedit-handle-set-file-uid-gid)
(tramp-sudoedit-handle-write-region): Call `tramp-get-remote-uid'
and `tramp-get-remote-gid'.
(tramp-sudoedit-maybe-open-connection): No special handling for
remote uid and gid.
* lisp/net/tramp.el (tramp-file-name-for-operation):
Add `tramp-get-remote-gid' and 'tramp-get-remote-uid'.
(tramp-handle-write-region, tramp-check-cached-permissions):
Call `tramp-get-remote-uid' and `tramp-get-remote-gid'.
(tramp-get-remote-uid, tramp-get-remote-gid): New defuns.
(tramp-local-host-p): Simplify `tramp-get-remote-uid' call.
* test/lisp/net/tramp-tests.el (tramp-test17-dired-with-wildcards)
Skip if needed.
* lisp/progmodes/sql.el (sql-add-product): Re-correct argument
spec. Previous change was due to my mistake; I have
resolved back to the prior behavior (Bug#39960).
* test/lisp/progmodes/sql-tests.el (sql-test-add-product): Added
test to insure I don't make the same mistake again.
Reported by: Andrew Schwartzmeyer <andrew@schwartzmeyer.com>
* lisp/icomplete.el (icomplete-fido-backward-updir): Don't save
dir fragments to kill ring.
Implement the backend side of 'maybe_gc_or_quit' so that every time a
call to it is emitted we render it accordingly. This allow GC to
kicks in during long loops in Lisp code.
* src/comp.c (comp_t): Add 'maybe_gc_or_quit' field.
(helper_link_table): Add 'maybe_gc', 'maybe_quit'.
(emit_maybe_gc_or_quit): New function.
(declare_runtime_imported_funcs): Import 'maybe_gc', 'maybe_quit'
functions.
(define_maybe_gc_or_quit): New function.
(Fcomp__init_ctxt): Register emitter.
(Fcomp__compile_ctxt_to_file): Call 'define_maybe_gc_or_quit'.
(syms_of_comp): Define Qcomp_maybe_gc_or_quit.
Define a new kind of basic block 'latch' to close over loops. Its
purpose is for now to emit calls to `comp-maybe-gc-or-quit' but in
future will be usefull for the loop optimizer to exploit unboxes.
* lisp/emacs-lisp/comp.el (comp-block): New base class.
(comp-block-lap): New class for LAP derived basic blocks.
(comp-latch): New class.
(comp-bb-maybe-add, comp-make-curr-block, comp-emit-handler)
(comp-emit-switch, comp-emit-switch, comp-limplify-top-level)
(comp-addr-to-bb-name, comp-limplify-block)
(comp-limplify-function): Update logic for new bb objects
arrangment.
(comp-latch-make-fill): New function.
(comp-emit-uncond-jump, comp-emit-cond-jump): Update to emit
latches.
(comp-new-block-sym): Add a postfix paramenter.
* doc/misc/tramp.texi (External methods): Remove experimental note
for rclone.
(Keeping files encrypted): Mark file encryption as experimental.
* lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist):
Use `tramp-handle-file-truename'.
(tramp-adb-handle-file-truename): Remove.
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
Add `file-writable-p'.
(tramp-crypt-send-command): Return t if no error.
(tramp-crypt-do-encrypt-or-decrypt-file-name)
(tramp-crypt-do-encrypt-or-decrypt-file): Raise an error if it fails.
(tramp-crypt-do-copy-or-rename-file): Flush file properties also
when copying a directory.
(tramp-crypt-handle-file-writable-p): New defun.
(tramp-crypt-handle-insert-directory): Check for library
`text-property-search'.
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-set-file-uid-gid):
Rename from `tramp-gvfs-set-file-uid-gid'.
* lisp/net/tramp-sh.el (tramp-sh-handle-file-truename):
Use `tramp-handle-file-truename' as fallback.
* lisp/net/tramp.el (tramp-handle-file-truename):
Let-bind `tramp-crypt-enabled' to nil.
(tramp-handle-write-region): Set also file ownership.
* test/lisp/net/tramp-tests.el (tramp-test17-insert-directory):
Skip if needed.
* lisp/gnus/gnus-eform.el (gnus-edit-form-mode): Derive from
lisp-data-mode, which can be handy for users who have turned on things
like paredit for lisp-data-mode.
(gnus-edit-form-mode-map): Put creation of the map inside the defvar.
Removing `Vcomp_sym_subr_c_name_h' all c_name functions are GC
markable only through 'data_ephemeral_vec'. A recursive load must not
overide its content otherwise a previously activated load will have
the original content collected before it's used.
* src/comp.h (struct Lisp_Native_Comp_Unit): Add 'load_ongoing'
field.
* src/comp.c (unset_cu_load_ongoing): New function.
(load_comp_unit): Update logic to detect and handle recursive
loads.
Given there's no more unique relation symbol-name -> c-name remove
`Vcomp_sym_subr_c_name_h' and store the c_name directly in struct
Lisp_Subr. The old approach would have failed dumping two functions
with the same symbol-name.
* src/lisp.h (struct Lisp_Subr): Add 'native_c_name' field.
* src/pdumper.c (dump_subr): Update hash + dump 'native_c_name'.
(dump_cold_native_subr): dump 'native_c_name'.
(dump_do_dump_relocation): Update logic for reviving using
'native_c_name'.
* src/comp.c (make_subr): Update for 'native_c_name' field.
(Fcomp__register_lambda, Fcomp__register_subr): Clean-up code for
'Vcomp_sym_subr_c_name_h' removal.
(syms_of_comp): Remove 'Vcomp_sym_subr_c_name_h'.
Add a predicate, color-dark-p, for deciding whether a colour is more
readable with black or white as contrast. It has experimentally been
shown to be more accurate and robust than the various methods
currently employed.
The new predicate compares the relative luminance of the colour to an
empirically determined cut-off value, and it seems to get it right in
almost all cases, with no value leading to outright bad results.
* lisp/faces.el (readable-foreground-color): Use color-dark-p.
(color-dark-p): New function.
* lisp/facemenu.el (list-colors-print): Use readable-foreground-color,
improving readability of list-colors-display.
* lisp/textmodes/css-mode.el (css--contrasty-color): Remove.
(css--fontify-region): Use readable-foreground-color.
* lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1)
(cl-macro-list, cl-macro-list1): Use exactly the same specification as
for &optional (sans the third optional list element).
In openp_add_middle_dir_to_suffixes we build a heap-based list from
the passed suffixes. It is crucial that we don't create a heap-based
cons that points to a stack-based list.
* src/lread.c (openp_add_middle_dir_to_suffixes): Copy suffixes when
building a list of middle-dirs and suffixes.
Save the project list file as lisp data instead of line separated
strings to make it more extendable in the future.
* lisp/progmodes/project.el (project--read-project-list)
(project--write-project-list, project--add-to-project-list-front)
(project--remove-from-project-list): Adjust to `project--list' now
being an alist.
* etc/NEWS: Correct the spelling of CC Mode.
* lisp/progmodes/cc-fonts.el (doxygen-font-lock-doc-comments): Replace curly
quotes in comments by ASCII ones.