The following changes make the changes for bug#79275 less
radical, closer to their previous shape, while still fixing
that bug.
* src/xdisp.c (push_prefix_prop, get_it_property): Restore
original code that determined the object and position on it.
(get_line_prefix_it_property): Take FROM_BUFFER from the actual
object of the prefix property.
* lisp/progmodes/bug-reference.el (bug-reference-setup-from-vc-alist):
Add comment explaining the meaning of the nil argument when calling
vc-call-backend. Even though "origin" and nil are equivalent when using
the git backend, it is more intelligible to see "upstream" and "origin"
passed explicitly (bug#79276).
* lisp/erc/erc-status-sidebar.el (erc-status-sidebar-get-window): Set
`cursor-type' in `erc-status-sidebar-mode' buffer instead. This bug was
introduced along with the bufbar module for bug#63595 in ERC 5.6. It's
a regression because it also affects the status-sidebar module.
* lisp/erc/erc.el (erc-bug): On Emacs 30 and later, search for and
ideally use an existing "X-Debbugs-CC" header instead of inserting a new
one at the top. Section 4.5 Obsolete Header Fields of RFC 5322 says,
"except for destination address fields (described in section 4.5.3), the
interpretation of multiple occurrences of fields is unspecified."
Anecdotal fiddling suggests the Savannah servers aren't confused by the
second "empty" header field, so this change is probably just cosmetic.
Only allow string mutation that is certain not to require string data to
be resized and reallocated: writing bytes into a unibyte string, and
changing ASCII to ASCII in a multibyte string.
This ensures that mutation will never transform a unibyte string to
multibyte, that the size of a string in bytes never changes, and that
the byte offsets of characters remain the same. Most importantly, it
removes a long-standing obstacle to reform of string representation and
allow for future performance improvements.
* src/data.c (Faset): Disallow resizing string mutation.
* src/fns.c (clear_string_char_byte_cache):
* src/alloc.c (resize_string_data): Remove.
* test/src/data-tests.el (data-aset-string): New test.
* test/lisp/subr-tests.el (subr--subst-char-in-string):
Skip error cases.
* test/src/alloc-tests.el (aset-nbytes-change):
Remove test that is no longer relevant.
* doc/lispref/strings.texi (Modifying Strings):
* doc/lispref/sequences.texi (Array Functions):
* doc/lispref/text.texi (Substitution): Update manual.
* etc/NEWS: Announce.
* etc/NEWS: Mention the change.
* lisp/minibuffer.el (completion-category-defaults):
Add an entry for it.
* lisp/progmodes/project.el (project--buffers-completion-table):
Return category 'project-buffer'.
* lisp/progmodes/project.el (project--buffers-completion-table):
New function, use it to implement the no-internal/internal
fallback logic from 'internal-complete-buffer', apply the
category and cycle-sort-function (bug#77312).
(project--read-project-buffer): Use it. Skip 'read-buffer' in
favor of 'completing-read'. But make sure to honor
read-buffer-completion-ignore-case and use format-prompt when
the function is available. Unify two execution paths.
* lisp/files.el (basic-save-buffer-2): Use a more meaningful
temporary file name under 'file-precious-flag'. (Bug#79252)
* etc/NEWS: Announce the change in behavior.
* lisp/mail/rmail.el (rmail--remote-password-host)
(rmail--remote-password-user): New variables.
(rmail-get-remote-password): Use them to ask for the password
whenever we need to fetch email from an inbox whose user or host
are different from the last ones. (Bug#79214)
The code to automatically fallback to margins is not correct: it
relies implicitly on the buffer being displayed in a window
while flymake-mode is running. If the buffer is created while
not displayed, we will always automatically fallback to margins,
which is incorrect.
Avoid the regression by simply disabling this code. I'll try
again to fall back automatically in the future. (Bug#79244)
* doc/misc/flymake.texi (Customizable variables): Remove section
about automatic fallback to margins.
* etc/NEWS: Un-announce removed feature.
* lisp/progmodes/flymake.el (flymake-indicator-type)
(flymake-mode): Stop automatically falling back to
margins. (bug#77313)
* src/xdisp.c (push_it): Reset the 'string_from_prefix_prop_p' flag.
(try_window_id): Disable this optimization if the last unchanged
at-beg row begins with a display or overlay string and there;s a
line/wrap-prefix property on the row.
(push_prefix_prop): Accept an additional argument FROM_BUFFER to
indicate that the prefix property was found on buffer text
underlying a display or overlay property, and set up the position
to pop to accordingly. Reset the 'string_from_display_prop_p' flag
of the iterator after pushing IT to set up for iterating the
prefix string.
(get_it_property): Use it->string, not it->object, as indication
that prefix property is on a string.
(get_line_prefix_it_property): Accept an additional argument:
pointer to a flag indicating that the prefix property was found on
buffer text underlying a display or overlay property. Callers
adjusted.
(handle_line_prefix): Use the FROM_BUFFER flag to correctly handle
prefix properties on buffer text at the same position as a display
string. (Bug#79275)
See https://github.com/emacs-mirror/emacs/pull/41. This is a
one-liner, safely exempt from copyright paperwork.
* lisp/progmodes/cperl-mode.el (cperl-find-pods-heres): delete
valid character escapes from the list which causes warning-face
to be applied