* doc/lispref/processes.texi (Subprocess Creation): Improve
wording of documentation for the function 'exec-path'.
* etc/NEWS: Improve wording and formatting of recently added
entries.
* lisp/files.el (exec-path): Doc fix.
Naively passing `null-device' as stderr creates a buffer named
"/dev/null" instead. Pass a hidden buffer name instead. (Bug#31902).
* lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile): Pass
hidden buffer as make-process :stderr instead of null-device.
This commit partially reverts
edb1f85a27, which results in dabbev
expansion failing due to trying to switch to the null buffer.
* lisp/dabbrev.el (dabbrev--progress-reporter): Restore variable.
(dabbrev--find-expansion): Restore original code.
cc-mode.el-based major-modes with stricter syntax for invalid
NL-terminated strings might choose to have electric-pair-mode skip
some of whitespace into non-string-syntax regions, for the sake of
letting electric-pair-mode chomp that whitespace and make the string
valid again.
* lisp/elec-pair.el (electric-pair-post-self-insert-function): Call it.
(electric-pair-skip-whitespace-function): New buffer-local variable.
* admin/gitmerge.el (gitmerge-maybe-resume): Use 'git rev-parse
--git-dir' to find the git directory rather than assuming it is
.git/ (that assumption fails for separated worktrees).
* lisp/obsolete/tls.el: Moved from lisp/net/tls.el.
* lisp/gnus/nnimap.el:
* lisp/url/url-http.el: Don't require tls, since it's obsolete.
* lisp/net/network-stream.el: Only require tls if we actually try to
use it (i.e., when (gnutls-available-p) returns nil). Declare some
functions to fix compilation warnings.
* lisp/obsolete/starttls.el: Moved from lisp/net/starttls.el.
* lisp/net/sieve-manage.el:
* lisp/net/network-stream.el: Don't require `starttls' at the
top-level, declare the variables and functions used instead.
(network-stream-open-starttls): Only require `starttls' if
needed (i.e., gnutls-available-p fails).
* etc/NEWS: Announce obsoletion.
* lisp/comint.el (comint-insert-previous-argument)
(comint-arguments, comint-insert-previous-argument-from-end):
Doc fixes.
(comint-insert-previous-argument-from-end): Add :version.
* doc/emacs/misc.texi (Shell Ring): Fix a typo in the name of
'comint-insert-previous-argument'. Document
'comint-insert-previous-argument-from-end'. (Bug#25271)
* etc/NEWS: Reformat and rephrase the entry for recent Comint
changes.
This function is invoked in shell-mode by the user, and is meant to
emulate what M-. does in zsh and bash: it inserts an argument from a
previous command. Neither zsh nor bash treat a trailing & specially:
M-. simply inserts it if it is encountered. Emacs DID have extra
logic to detect and discard trailing &, but this logic was buggy, and
a && anywhere in the sequence would confuse it. This patch simply
removes that logic to fix the bug and to emulate zsh and bash more
closely
* lisp/comint.el (comint-insert-previous-argument): don't detect and
ignore trailing &
(Bug#25271)
* etc/NEWS: Document this.
This function is invoked in shell-mode by the user, and is meant to
emulate what M-. does in zsh and bash: it inserts an argument from a
previous command. Without a prefix argument, it inserts the last arg
from the previous command; with an argument INDEX, it inserts the
INDEX-th argument. bash counts from the start, while zsh counts from
the end. This patch adds a variable
`comint-insert-previous-argument-from-end' that emulates the zsh
behavior if non-nil.
* lisp/comint.el (comint-arguments): can take in negative arguments to count
from the end, same as indexing in python.
(comint-insert-previous-argument): if
comint-insert-previous-argument-from-end is non-nil, INDEX counts
arguments from the end; if nil, from the beginning
(Bug#25271)
* etc/NEWS: Document this.
* lisp/emacs-lisp/pcase.el (\`): Extend semantics of QPATS to all
numbers. Add a comment explaining why we disallow some atoms as
QPATS.
* doc/lispref/control.texi (Backquote Patterns): Update the paragraph
explaining QPATS. Remove a sentence suggesting an analogy between
QPATS to self-quoting objects.
* src/nsterm.m (ns_mouse_position): Use correct frame when determining
mouse position.
* lisp/mouse.el (mouse-drag-track): Only account for mode-line height
if `mode-line-format' is non-nil.
* lisp/subr.el (dolist-with-progress-reporter): New macro (Bug#31697).
* lisp/cus-edit.el (custom-group-value-create): Use it.
* lisp/dabbrev.el (dabbrev--progress-reporter): Delete variable.
(dabbrev--find-expansion): Use dotimes-with-progress-reporter.
* doc/lispref/display.texi: Document the macro.
; * etc/NEWS: Announce it.
* lisp/subr.el (dotimes-with-progress-reporter): Allow 2nd arg to be
a string or a progress reporter (Bug#31696).
* doc/lispref/display.texi (node Progress): Update manual.
Theme settings now generally aren't actually applied until a call to
`enable-theme-, either one made explicitly or implicitly through
`load-theme' with NO-ENABLE nil. This change has the effect of not
applying theme changes just because we load a lisp file containing a
theme specification. The previous behavior is preserved for the
special case of the `user' theme, which is frequently used for
ad-hoc customization.
* lisp/cus-face.el (custom-theme-set-faces): Call
`custom--should-apply-setting' to decide whether to apply
a setting.
* lisp/custom.el (custom--should-apply-setting): New function.
(custom--inhibit-theme-enable): Add `apply-only-user' option;
default to it.
(custom-push-theme, custom-theme-set-variables): Call
`custom--should-apply-setting' to decide whether to apply
a setting.
* lisp/emacs-lisp/cconv.el (cconv--convert-funcbody): New function.
(cconv--convert-function): Extracted from here.
(cconv-convert): Also use it here, in the lambda lifted case, so that
mutated args are properly accounted for.
* test/lisp/emacs-lisp/cconv-tests.el: New test.
* lisp/progmodes/python.el (python-nav-end-of-statement): Don't assert
that string-start is strictly greater than last-string-end, because
the string end is a position outside of the string and may therefore
be the same as the following string's start.
* test/lisp/progmodes/python-tests.el (python-nav-end-of-statement-2):
New test.
* src/lisp.h (compile_pattern): Remove prototype of
now-internal function.
* src/regex.c (POS_AS_IN_BUFFER): Consult gl_state instead of
re_match_object: the latter can change in Lisp.
(re_match_2_internal): Switch back to UPDATE_SYNTAX_* FROM
UPDATE_SYNTAX_FAST*, allowing calls into Lisp.
* src/regex.h (re_match_object): Uncomment declaration.
* src/search.c (struct regexp_cache): Add `busy' field.
(thaw_buffer_relocation): Delete; rely on unbind.
(compile_pattern_1): Assert pattern isn't busy.
(shrink_regexp_cache): Don't shrink busy patterns.
(clear_regexp_cache): Don't nuke busy patterns.
(unfreeze_pattern, freeze_pattern): New functions.
(compile_pattern): Return a regexp_cache pointer instead of the
re_pattern_buffer, allowing callers to use `freeze_pattern' if
needed. Do not consider busy patterns as cache hit candidates;
error if we run out of non-busy cache entries.
(looking_at_1, fast_looking_at): Snapshot
Vinhibit_changing_match_data; mark pattern busy while we're
matching it; unbind.
(string_match_1, fast_string_match_internal)
(fast_c_string_match_ignore_case): Adjust for compile_pattern
return type.
(search_buffer_re): Regex code from old search_buffer moved here;
snapshot Vinhibit_changing_match_data; mark pattern busy while
we're matching it; unbind.
(search_buffer_non_re): Non-regex code from old search_buffer
moved here.
(search_buffer): Split into search_buffer_re,
search_buffer_non_re.
(syms_of_search): Staticpro re_match_object, even though we really
shouldn't have to.
* src/syntax.h (UPDATE_SYNTAX_TABLE_FORWARD_FAST):
(UPDATE_SYNTAX_TABLE_FAST): Remove.
* src/thread.h (struct thread_state): Remove m_re_match_object,
which is global again. (It never needs to be preserved across
thread switch.)