1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-30 02:02:38 -07:00
Commit graph

178922 commits

Author SHA1 Message Date
Sean Whitton
e4ea991ed9 vc-resynch-window: Check whether auto-revert-mode is bound
* lisp/vc/vc-dispatcher.el (auto-revert-mode): Delete
declaration.
(vc-resynch-window): Check whether auto-revert-mode is bound.
2025-07-15 10:18:52 +01:00
Pengji Zhang
5d9a67e4bd Move some RefTeX 'setq's to major mode definition
Move two 'setq' expressions from the RefTeX label selection loop
to the body of the major mode definition, so to make it easier
to adjust the settings of the buffer via the mode hook.

* lisp/textmodes/reftex-ref.el (reftex-offer-label-menu): Move
two 'setq' expressions from here...
* lisp/textmodes/reftex-sel.el (reftex-select-label-mode): ...to
here.  (bug#77335)
2025-07-14 21:24:45 +02:00
Stefan Monnier
7f1cae9637 (cl--class-allparents): Fix bug#78989
Give more control over ordering when linearizing the
parent graph and avoid pathological misbehavior (such as
placing `t` in the middle of the linearization instead of the
end) when we can't "do it right".

* lisp/subr.el (merge-ordered-lists): Degrade more gracefully in case
of inconsistent hierarchies and don't do it silently.

* lisp/emacs-lisp/cl-preloaded.el (cl--class-allparents): Use the local
ordering to break ties, as in the C3 algorithm.
2025-07-14 12:37:11 -04:00
Paul Nelson
c8b6e90b4e Improve prettification of (La)TeX symbols
* lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist): Remove
entry for "\\newline", which resulted in an invisible display.
Prettify "\\ " with OPEN BOX instead of BOTTOM SQUARE BRACKET.
(tex--prettify-symbols-compose-p): Skip composition when the
control backslash is itself escaped (bug#78752).
2025-07-14 12:25:45 -04:00
Stefan Monnier
f01fc3d614 lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist): Use \
This is the "standard" way to avoid those indentation problems
without relying on funny numbers.
2025-07-14 12:25:32 -04:00
Po Lu
b2d5e4fe40 Fix the Android port
* src/fileio.c (emacs_full_read): Retype FD param to `emacs_fd'.
(Fcopy_file): Label newsize MAYBE_UNUSED.
2025-07-14 21:41:18 +08:00
Eli Zaretskii
d0f96de277 ; Fix 'threads-join-error' test
* test/src/thread-tests.el (threads-thread-sleeps): New helper
function.
(threads-join-error): Fix to work as intended, and remove the
'unstable' tag.  (Bug#40823)
2025-07-14 15:48:45 +03:00
Juri Linkov
817f7829f9 * src/xdisp.c (tab-bar-truncate): New variable (bug#78953).
(tab_bar_height): Use it.
2025-07-14 09:43:18 +03:00
Paul Eggert
a8b65860a5 ; Fix indentation. 2025-07-13 21:39:54 -07:00
Paul Eggert
5bce6753e2 Speed up insert-file-contents reads
This change makes insert-file-contents-literally 30% faster on my
platform, when inserting xdisp.c.
* src/fileio.c (READ_BUF_SIZE): Remove, replacing with ...
(IO_BUFSIZE): ... this new constant from Coreutils.
All uses of READ_BUF_SIZE changed to either MAX_ALLOCA or
IO_BUFSIZE.
2025-07-13 21:09:40 -07:00
Paul Eggert
c3f96d20ee Avoid some tiny /proc file reads
* src/fileio.c (union read_non_regular):
New members buf and bufsize replace inserted and trytry.
(read_non_regular): Adjust to this new, simpler interface.
(Finsert_file_contents): If the gap is smaller than read_buf
and we want to read more than the gap, read into read_buf
first, to avoid lots of tiny reads from /proc files.
2025-07-13 21:09:40 -07:00
Paul Eggert
55f41ca3aa insert-file-contents file shrinkage in scanback
* src/fileio.c (emacs_full_read): New function.
(Fcopy_file, Finsert_file_contents): Use it.
(Finsert_file_contents): Check for partial reads when scanning
backwards through the file’s tail, as this indicates the file
shrank while we read it.  Also, use emacs_full_read in other
situations where it’s simpler and should be a bit faster.
2025-07-13 21:09:39 -07:00
Paul Eggert
8ac78986ff int → ptrdiff_t for read results
* src/fileio.c (Finsert_file_contents): Use ptrdiff_t, not int, to
store results returned by emacs_fd_read, which return ptrdiff_t.
This doesn’t fix any bugs since the values happen to fit in int,
but is a bit clearer and may simplify future changes.
2025-07-13 21:09:39 -07:00
Paul Eggert
f4adb56c9a insert-file-contents unexpected end shrinkage
* src/fileio.c (Finsert_file_contents): If the file unexpectedly
shrinks while reading its tail backwards, give up searching for
the match end.
2025-07-13 21:09:39 -07:00
Paul Eggert
c35d09edcf fileio.c comment spelling fix 2025-07-13 21:09:39 -07:00
Paul Eggert
4c4f68be4b insert-file-contents byte vs char confusion
* src/fileio.c (Finsert_file_contents): Use del_range_byte,
not del_range_1, since we are passing byte counts, not
character counts.  Problem reported by Pip Cet (Bug#77315).
2025-07-13 21:09:39 -07:00
Paul Eggert
61a8ce0280 Fix insert-file-contents overlap calculation
* src/fileio.c (Finsert_file_contents): Overlap is impossible, so
omit incorrect overflow adjustments that caused later index
calculations to go off the rails (Bug#77315).  Change a ‘ZV_BYTE’
to ‘same_at_end’ for clarity; they have the same value here.
2025-07-13 21:09:39 -07:00
Paul Eggert
e98da5cc3f insert-file-contents do not rely on st_size
This fix was prompted by Bug#77315.
* src/fileio.c (Finsert_file_contents): Do not rely on st_size for
anything other than a hint about the file size.  Trust only the
file size as revealed by a read that returns 0.
2025-07-13 21:09:39 -07:00
Paul Eggert
de0bb2e059 insert-file-contents file size hint improvement
* src/fileio.c (Finsert_file_contents): When reading yields 0,
update the file size hint to match.  This should improve its
accuracy.
2025-07-13 21:09:39 -07:00
Paul Eggert
aee9b59831 insert-file-contents file end EOF fixes
* src/fileio.c (Finsert_file_contents):
When counting bytes at file end, don’t trust lseek to seek
to the end of the file.  Instead, read a bit after lseeking,
to make sure we get to the end, give up if we don’t get to EOF.
This works around problems on /proc filesystems
where lseek pretends the file is empty.
Update file_size_hint when reaching EOF.
2025-07-13 21:09:39 -07:00
Paul Eggert
56091b6d5c Fix insert-file-contents integer overflows
* src/fileio.c (Finsert_file_contents): Change ‘total’ from
ptrdiff_t to off_t since it might not fit in ptrdiff_t.
Check for overflow when estimating the insertion size.
2025-07-13 21:09:39 -07:00
Paul Eggert
e6c6847973 Remove ineffective overflow check
* src/fileio.c (Finsert_file_contents): Remove check for overflow.
The overflow is not possible, and the check was incorrectly
written and would not have caught it anyway.
2025-07-13 21:09:39 -07:00
Paul Eggert
535ab2d116 insert-file-contents END enforcement
* src/fileio.c (Finsert_file_contents): When matching text
at buffer start, don’t go past END if specified.
2025-07-13 21:09:39 -07:00
Paul Eggert
e6c1f46fb1 insert-file-contents initial offset fix
* src/fileio.c (Finsert_file_contents): Don’t assume that a
newly-opened file is at offset 0, even if it is a regular file.
This might not be true for files like /dev/stdin.
2025-07-13 21:09:39 -07:00
Paul Eggert
73ab98a8a2 insert-file-contents end offset infinity
* src/fileio.c (Finsert_file_contents): Simplify end_offset
calculation by defaulting to effectively infinity.
2025-07-13 21:09:39 -07:00
Paul Eggert
aa172be7d0 Refactor negative file size checking
* src/fileio.c (Finsert_file_contents): Check for negative file
sizes earlier, as it’s easy, avoids some unnecessary work, and
will simplify later changes.
2025-07-13 21:09:39 -07:00
Paul Eggert
b1ada33b5d Non-nil orig_filename in insert-file-contents
* src/fileio.c (Finsert_file_contents): Don’t let orig_filename be
nil, as that might mess up later diagnostics.
2025-07-13 21:09:39 -07:00
Paul Eggert
6a9dbed40c Improve inserted file coding system finding
* src/fileio.c (Finsert_file_contents): When inserting a file into
a nonempty buffer, improve the heuristic for determining the
file’s coding system by not trusting lseek+SEEK_END, which is
unreliable in /proc or when the file is mutating.
2025-07-13 21:09:39 -07:00
Paul Eggert
6d09a339ce Improve insert-file-contents on non-regular files
This is part of a fix for Bug#77315,
and improves on the fix for Bug#71258.
* src/fileio.c (Finsert_file_contents): Do not pretend that
directories are regular files.  Instead, signal an error when
attempting to read from them in the usual case where the OS
prohibits that; and otherwise read from them.  However, when
visiting a directory report an error right away rather than
waiting until later, as this function is documented to not allow
visiting non-regular files.  Nest the struct stat into a small
code block, to keep the code simpler and so that the compiler can
see what parts are used and can issue better diagnostics if
uninitialized storage is accessed.  Be more skeptical of st_size,
when the file is not regular.
2025-07-13 21:09:39 -07:00
Paul Eggert
b911029f96 Fix (find-file "/dev/null")
* lisp/files.el (find-file-noselect-1): When the file exists,
propagate any errors signaled by insert-file-contents,
instead of propagating them only when the file is unreadable.
This way, (find-file "/dev/null") gives a sensible diagnostic
"not a regular file" instead of the nonsense
"Maximum buffer size exceeded".
2025-07-13 21:09:39 -07:00
Paul Eggert
0a3c8a4df3 Don’t trust st_size when scanning file head+tail
* src/fileio.c (Finsert_file_contents): Do not look at st_size
when scanning the file’s head and tail for a coding system comment.
Instead, just use read and SEEK_END and don’t worry if the latter fails.
st_size and lseek might not work in a /proc file system.
2025-07-13 21:09:38 -07:00
Paul Eggert
ffd65be227 copy-file no longer trusts st_size
In copy-file, do not trust st_size, since it might change as we run,
or we might be in a /proc system where it is unreliable anyway.
Also, fix some other unlikely copy-file bugs while we’re here.
* src/fileio.c (Fcopy_file): Use O_TRUNC when opening a
destination that already exists.  This saves us the trouble
of having to call ftruncate with a possibly-bogus st_size;
the old motivation for using ftruncate is no longer compelling.
Do not assume ptrdiff_t is as wide as ssize_t; although this is
true on all known platforms, it’s easy to not assume it.
Don’t trust st_size.  Prefer SSIZE_MAX to TYPE_MAXIMUM (ssize_t).
Always read+write, regardless of whether copy_file_range failed.
2025-07-13 21:09:38 -07:00
Paul Eggert
ae30a61c74 READ_BUF_SIZE → sizeof read_buf
* src/fileio.c (Finsert_file_contents): Minor refactoring.
This should help future patches which distinguish read_buf’s size
from other uses of READ_BUF_SIZE which may change.
2025-07-13 21:09:38 -07:00
Paul Eggert
490311f86a insert-file-contents errno confusion
* src/fileio.c (read_non_regular): Return negation of
errno on failure, instead of -1.
(Finsert_file_contents): Signal with correct errno when a read fails.
2025-07-13 21:09:38 -07:00
Stefan Monnier
3998242664 org-persist.el: Silence fewer warnings and fix found warning
* lisp/org/org-persist.el: Minor cleanup.
(org-persist-directory, org-persist-remote-files)
(org-persist-default-expiry): Remove redundant `:group` arg.
(org-persist-collection-let): Document lack of hygiene.
Remove `with-no-warnings`.
(org-persist--find-index): Reindent, and simplify initialization of `r`.
(org-persist-associated-files:generic): Move before first use.
2025-07-13 23:14:53 -04:00
Paul Eggert
f3d3a5803e Work around GCC bug 121030
* configure.ac: Disable -Wanalyzer-use-of-uninitialized-value.
2025-07-13 15:26:46 -07:00
Alan Mackenzie
c44903b011 Preserve source position of macro calls in macro expansions
This allows the byte compiler to give correct positions, those
of the invoking forms, when an error or warning is caused by
the innards of the invoked macros.

This fixes bug#73725 and bug#73746.

* lisp/emacs-lisp/macroexp.el (macroexp--posify-form-1)
(macroexp--posify-form): New functions.
(macroexp-preserve-posification): New macro.
(macroexp--compiler-macro, macroexp-macroexpand): Use the new
macro to preserve a calling form's position.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-form): Use the new
macro to preserve source positions.

* test/lisp/emacs-lisp/bytecomp-resources/bad-error-position.el
* test/lisp/emacs-lisp/bytecomp-resources/bad-error-position-2.el:
New test files.
* test/lisp/emacs-lisp/bytecomp-tests.el: Two new tests using
the new test files.
2025-07-13 20:28:51 +00:00
Eli Zaretskii
1e3d76af5a ; Fix documentation of a recent change
* doc/emacs/vc1-xtra.texi (VC Auto-Reverting): Fix wording and
cross-references.
* doc/emacs/emacs.texi (Top): Update @detailmenu.
2025-07-13 19:51:23 +03:00
Sean Whitton
85159f1dd0 ; Fixes to last change. 2025-07-13 15:24:55 +01:00
Michael Albinus
f1aa9482d1 tramp-file-name-with-method can be set connection-local
* doc/misc/tramp.texi (Ad-hoc multi-hops):
tramp-file-name-with-method can be set connection-local.

* etc/NEWS: tramp-file-name-with-method can be set connection-local.
Presentational fixes and improvements.

* lisp/net/tramp-cmds.el (tramp-get-file-name-with-method): New defun.
(with-tramp-file-name-with-method, tramp-file-name-with-sudo): Use it.
(tramp-dired-find-file-with-sudo): Fix docstring.
2025-07-13 15:48:54 +02:00
Sean Whitton
9d750c7e80 New global minor mode vc-auto-revert-mode
* lisp/vc/vc-hooks.el (auto-revert-mode): Declare.
(vc-auto-revert-mode): New global minor mode.
(vc-turn-on-auto-revert-mode-for-tracked-files): New function.
* lisp/vc/vc-dispatcher.el (auto-revert-mode)
(auto-revert-buffers): Declare.
(vc-resynch-window): Don't call vc-revert-buffer-internal when
auto-revert-mode will revert the buffer.  Call
auto-revert-buffers to ensure that this reversion happens in a
timely manner.
* lisp/vc/vc.el (vc-register): Apply vc-auto-revert-mode to
buffers visiting newly registered files.
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Improve the generated docstring.
* doc/emacs/vc1-xtra.texi (VC Auto-Reverting):
* etc/NEWS: Document the new minor mode.
2025-07-13 12:51:04 +01:00
Sean Whitton
24bd93b35b vc-register: Fix setting backup-inhibited
* lisp/vc/vc.el (vc-register): Delete unreachable code trying to
use 'buffer-file-name' as one of the file names.  Properly set
'backup-inhibited' in any file-visiting buffers.
2025-07-13 12:51:04 +01:00
Sean Whitton
0c97e6aeca ; * etc/NEWS (log-edit-maybe-show-diff): Undo recent change.
'log-edit-maybe-show-diff' is one of the options presented for
the 'log-edit-hook' user option.  The use of "option" does not
mean that 'log-edit-maybe-show-diff' is itself a user option.
2025-07-13 12:51:04 +01:00
Sean Whitton
ce3d4cd6b3 ; * etc/NEWS: Grammar fixes. 2025-07-13 12:51:04 +01:00
Eli Zaretskii
6418099ad9 ; * lisp/dired-aux.el (dired-vc-deduce-fileset): Fix last change. 2025-07-13 10:53:21 +03:00
Drew Adams
1abc54ffe1 Allow duplicate menu entries in Imenu
* lisp/imenu.el (imenu-allow-duplicate-menu-items): New user
option.
(imenu--create-keymap): Allow duplicate imenu items if
'imenu-allow-duplicate-menu-items' is non-nil.

* etc/NEWS: Announce the change.
(Bug#78935)
2025-07-13 08:41:38 +03:00
Stephen Berman
d63746d519 ; Fix spurious email address in ChangeLog
* ChangeLog.3: Replace spurious email address.
2025-07-12 17:11:28 +02:00
Sean Whitton
423c6a4dc0 ; Delete unnecessary global autoload from last change. 2025-07-12 14:07:58 +01:00
Stephen Berman
b406c44c82 dired-vc-deduce-fileset: Call vc-backend-for-registration
* lisp/vc/vc.el (vc-backend-for-registration):
* lisp/dired-aux.el (vc-backend-for-registration): Autoload.
(dired-vc-deduce-fileset): Call vc-backend-for-registration when
vc-responsible-backend returns nil (bug#78987).
2025-07-12 11:34:31 +01:00
Pip Cet
fce86c7e95 Avoid crashes when profiling multi-threaded Lisp (bug#76970)
* src/eval.c (backtrace_p): Check 'current_thread' before
dereferencing it.
2025-07-12 10:24:11 +00:00