This fixes log-view-modify-change-comment in those buffers.
* lisp/vc/vc.el (vc-incoming-outgoing-internal): Pass the VC
root to vc-log-internal-common.
* lisp/vc/add-log.el (log-edit-fill-entry): Delete unused
declaration.
* lisp/vc/log-edit.el (log-edit-generate-changelog-from-diff):
Special-case inserting a single line into the Summary field.
This relies on how vc--incoming-revision now caches incoming
revisions.
* lisp/vc/vc.el (vc--count-outgoing): New function.
* lisp/vc/vc-dir.el (vc-dir-header-urgent-value): New face.
(vc-dir-outgoing-revisions-map): New keymap.
(vc-dir-headers): Use them.
* etc/NEWS: Document the change.
* lisp/net/goto-addr.el (goto-address-fontify): Set overlay property
'button' to 'this-overlay', and 'category' to 'goto-address'.
* lisp/progmodes/bug-reference.el (bug-reference-fontify):
Set overlay property 'button' to 'ov' (bug#74792).
* lisp/vc/vc-hooks.el (vc-file-setprop): Use cl-pushnew.
(vc--repo-setprop, vc--repo-getprop, vc--repo-clearprops): New
functions.
* lisp/vc/vc.el (vc--incoming-revision): Cache incoming
revisions.
* src/fns.c (Fput): State that VALUE is returned.
* lisp/treesit.el (treesit-auto-install-grammar): Use the first
writable directory from 'treesit-extra-load-path' for values
'always', 'ask', 'ask-dir' (bug#79862).
* src/treesit.c (syms_of_treesit): Extend docstring.
* lisp/progmodes/project.el (project-compile): Handle ignoring
compile-command from a vc-compilation-mode buffer in a way that
does not involve let-binding compile-command.
After some weeks of testing, I've changed by mind on this. Having the
current name appear passed the INITIAL-VALUE to read-from-minibuffer is
a jarring backward-incompatible change. There is no evidence that the
majority of renames are simple tweaks to the existing names, and even
less evidence that these tweaks happen frequently at the end of the
symbol.
Therefore it's better for the ergonomics of this commonly used command
to leave the code as it was and simply rely on C-n to bring in the
default value (which is the current symbol name), instead of forcing
users accustomed to the previous behaviour remember to press sth like
M-DEL to clean the input.
* lisp/progmodes/eglot.el (eglot-rename): Tweak.
Fix bug in semantic linefeed filling related to wide characters and
`sentence-end-without-space'.
* lisp/textmodes/fill.el (fill-region-as-paragraph-semlf): Fix the
calculation of the maximum column. Do not depend on where
`fill-region-as-paragraph-default' leaves point after being called.
(Bug#79575)
* lisp/time-stamp.el (time-stamp-once): Do not look for additional
templates once we have displayed the warning about being disabled.
Move earlier the check for arguments being the correct type.
* test/lisp/time-stamp-tests.el (time-stamp-custom-messages): New test.
* lisp/vc/diff-mode.el (diff-file-kill): New optional DELETE
parameter.
(diff-kill-creations-deletions):
* lisp/vc/vc.el (vc--fileset-by-state): New functions.
(diff-kill-creations-deletions, diff-filename-drop-dir)
(diff-hunk-file-names, diff-file-next, diff-hunk-header-re)
(vc-dir-resynch-file): Declare.
(vc--apply-to-other-working-tree): Handle copying and moving
files in the added, removed, missing and unregistered states.
* test/lisp/vc/vc-tests/vc-tests.el
(vc-test--apply-to-other-working-tree): New test.
* lisp/gnus/message.el (message-change-subject): Read the new subject
with the old subject in the "future history".
* etc/NEWS (minutes): Announce the feature. (Bug#79815)
* lisp/face-remap.el (face-remap-add-relative)
(face-remap-set-base, buffer-face-set, buffer-face-toggle)
(buffer-face-mode-invoke): Clarify how to use ':font' in face
attribute lists. (Bug#79906)
After a week of intense testing, found out there were various insidious
bugs related to out-of-date requests that rear their heads in different
typing patterns. One way to sort this out and still minimize the number
of requests is to have Eglot's semtok code be aware of the states a
request for tokens can be in: inexistent/invalid, unsent, sent, valid.
The needs and optimization opportunities for servers that support "full"
and "full/delta" requests are considerably different from the ones of
servers which only support "full" and "range". The latter seem to be in
the minority, so for now I've removed the range requests. These servers
should still work with "full" requests.
In a further bug, at least two servers (clangd and lean) were found to
plainly abuse the semanticTokens/refresh server request. This confuses
the state logic. The solution is to simply no-op this request handler,
it doesn't seem to do anything useful.
Finally, when auto-reverting with preserve-modes (as done by vc-revert
and auto-revert-mode), the font-lock state needs to be reinitialized.
Fixed this in eglot--after-revert-hook.
* lisp/progmodes/eglot.el (eglot-client-capabilities): Don't announce
ranged request support.
(eglot--docver): Rename from eglot--versioned-identifier.
(eglot--diagnostics)
(eglot--flymake-diagnostics)
(eglot-handle-notification)
(eglot--signal-textDocument/didOpen)
(eglot--report-to-flymake)
(eglot--apply-text-edits)
(eglot--VersionedTextDocumentIdentifier): Use eglot--docver.
(eglot--send-changes-hook): Rename from eglot--document-changed-hook.
(eglot--after-change): Don't run eglot--send-changes-hook here.
(eglot--signal-textDocument/didChange): Run it here.
(eglot--semtok-state): Rename from eglot--semtok-cache.
(eglot--semtok-inflight): Delete.
(eglot--handle-request semanticTokens/refresh): Nullify.
(eglot-semantic-tokens-mode): Tweak.
(eglot--semtok-after-send-changes): New hook.
(eglot--semtok-request)
(eglot--semtok-font-lock): Rewrite.
(eglot--after-revert-hook): Reinitialize semtok state.
Co-authored-by: Lua Viana Reis <me@lua.blog.br>
According to the commit msg of:
commit 0816da8e78
Author: João Távora <joaotavora@gmail.com>
Date: Mon Oct 21 16:07:38 2019 +0100
This is needed because M-x vc-revert preserves (or used to
preserve) major modes on revert.
* lisp/progmodes/eglot.el (eglot--after-revert-hook): Remove FIXME
comment.
Problem reported by David Caldwell (bug#79879).
* configure.ac: When configuring for GNUstep and the
Objective C compiler does not support even C99 features,
use the first flag of -std=gnu23, -std=gnu17, -std=gnu11, -std=gnu99
that works, instead of insisting on -std=c99 which (a) is too
strict and (b) can override another -std= option in an
undesirable way.
* lisp/treesit.el (treesit-auto-install-grammar): Add the value 'ask-dir'.
(treesit-ensure-installed): When 'treesit-auto-install-grammar' is
'ask' or 'ask-dir', ask for the directory to install the grammar library
using the first writable directory of 'treesit-extra-load-path' as default.
Also add the provided directory to 'treesit-extra-load-path' afterwards.
* src/treesit.c (treesit-extra-load-path): In the docstring
mention the fact that the first directory is special (bug#79862).
Problem reported by John Paul Adrian Glaubitz (bug#79876).
* src/data.c (Fash): Don’t assume stdc_leading_zeros, which
returns an unsigned integer of unspecified width, returns
a value narrower than EMACS_INT. Also, don’t munge the code to
worry about stdc_leading_zeros (0); unlike GCC’s __builtin_clz,
stdc_leading_zeros works fine on 0. And use a temporary to
avoid a cast.
Make completing-read-multiple do eager display of *Completions*
when the table requests it.
As a side-effect of the implementation, we now check again if
eager-display is enabled if we have to retry doing eager-display
due to being interrupted by user input. This is mildly nicer
since it gives the completion table a little more control: for
example, maybe the table only wants to do eager-display if the
minibuffer is empty; this change makes that work better.
* lisp/minibuffer.el (completions--start-eager-display)
(completing-read-default): Move the code for checking whether to
do eager-display into completions--start-eager-display.
* lisp/emacs-lisp/crm.el (completing-read-multiple): Call
completions--start-eager-display (bug#79858).
This patch adds tests for the following scenarios:
- Every element is handled (basic functionality)
- Result specified in SPEC is returned
- Bindings named "tail" are not shadowed by 'dolist'
* test/lisp/subr-tests.el (subr-tests--dolist--every-element-is-handled)
(subr-tests--dolist--returns-spec-result)
(subr-tests--dolist--does-not-shadow-tail-binding): New tests.
(Bug#79778)
Problem reported by Helmut Eller (bug#79886).
* src/lisp.h (USE_LSB_TAG): Adjust to alignas changes.
(alignas): For GCC and Clang, prefer __attribute__ ((__aligned__ (A)))
to alignas (A) even if the compiler claims to support the latter.
This works around a bug in GCC 14 i386 C23 alignas.
No need to worry about whether __alignas_is_defined is defined.