1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-03 02:31:03 -08:00
Commit graph

50659 commits

Author SHA1 Message Date
Eli Zaretskii
aef2d807e7 ; * src/emacs.c (default_PATH) [DOS_NT]: Add commentary. 2025-07-27 18:45:03 +03:00
Paul Eggert
64c93e188e Better default PATH on MS-Windows
* src/emacs.c (default_PATH): Use a more-reasonable default
for MS-Windows and DOS.  Problem reported by Eli Zaretskii in:
https://lists.gnu.org/r/emacs-devel/2025-07/msg00384.html
2025-07-27 08:17:25 -07:00
Po Lu
9d2c7bed66 Update Android frame param handlers
* src/androidfns.c (android_frame_parm_handlers): Add
gui_set_borders_respect_alpha_background for consistency with X.
2025-07-27 09:36:10 +08:00
Paul Eggert
547525176f Add readlink, realpath startup comments
This does not change behavior.
* src/emacs.c (follow_if_symlink): New static function, as a
vehicle for commentary explaining the deal with readlink and realpath.
(find_emacs_executable): Use it.
2025-07-26 12:52:55 -07:00
Eli Zaretskii
05dca1f51f ; * src/w32fns.c (Fx_create_frame): Fix copy/paste errors in last change. 2025-07-26 18:08:37 +03:00
Garklein
1bc338075d Add frame parameter which allows border transparency
The new 'borders-respect-alpha-background' frame parameter, when
set to 't', will make window dividers and internal borders
respect the 'alpha-background' frame parameter. This allows
transparent gaps between windows.
* doc/lispref/frames.texi (Font and Color Parameters):
Document the change.
* src/frame.c (frame_parm_table, syms_of_frame)
(gui_set_borders_respect_alpha_background):
* src/frame.h (struct frame): Add frame parameter.
* src/androidfns.c (x_create_frame, android_create_tip_frame)
(android_frame_parm_handlers):
* src/haikufns.c (haiku_create_frame, haiku_create_tip_frame)
(haiku_frame_parm_handlers):
* src/nsfns.m (ns_frame_parm_handlers, x_create_frame):
* src/w32fns.c (x_create_frame, w32_create_tip_frame)
(w32_frame_parm_handlers): Add dummy parameters for backends
that don't support opacity.
* src/pgtkfns.c (pgtk_frame_parm_handlers, x_create_frame)
(pgtk_create_tip_frame):
* src/pgtkterm.c (pgtk_draw_window_divider):
* src/xfns.c (x_create_frame, x_create_tip_frame)
(x_frame_parm_handlers)
* src/xterm.c (x_draw_window_divider)
(x_clear_under_internal_border): Implement parameter on backends
that support opacity.
2025-07-26 18:02:18 +03:00
Po Lu
aa2a83d783 ; * src/nsterm.m (ns_define_fringe_bitmap): Stylistic corrections. 2025-07-26 22:03:37 +08:00
Alan Third
5bc75585d5 Fix last commit
* src/nsterm.m (ns_draw_fringe_bitmap): Rename clearRect to bmpRect
where missed previously.
2025-07-26 12:59:10 +01:00
Alan Third
e3380669ed Fix incorrectly nested ns_focus/ns_unfocus calls
* src/nsterm.m (ns_draw_fringe_bitmap): Move the call to ns_focus out of
the if for overlay_p and rename the rect from clearRect to bmpRect to
make it's purpose clearer.
2025-07-26 12:00:02 +01:00
Alan Third
8c5378b2c2 Simplify NS fringe vectors (bug#73563)
* src/nsterm.m (ns_define_fringe_bitmap): Replace the fringe bitmap
"tracing" method to a true tracing method.  This should make the
resulting vector simpler and therefore faster to draw.
2025-07-26 12:00:02 +01:00
Alvaro Ramirez
6e64e0bd26 Enabled macOS dictation post NSTextInputClient migration in v30
* src/nsterm.m (selectedRange): Implement to fix dictation.
* etc/NEWS: Announce regression fix.
* etc/PROBLEMS: Help users recover from rejected permission.
2025-07-26 12:09:56 +02:00
Mattias Engdegård
33161e51e5 Check for end-of-file when reading character escapes (bug#79097)
* src/lread.c (read_char_escape): Add check.
* test/src/lread-tests.el (lread-char-escape-eof): New test.
2025-07-25 21:54:59 +02:00
Paul Eggert
c403bc4d51 Streamline init_callproc a bit
* src/callproc.c (init_callproc): Don’t bother testing for the
existence of ../src/ and NEWS if installation-directory is
non-nil, because in that case we will test for ../etc/NEWS anyway.
Simplify by using AUTO_STR.
2025-07-24 22:13:47 -07:00
Paul Eggert
d7e8186080 Refactor to allow nameless auto strings
* src/lisp.h (AUTO_STR, AUTO_STR_WITH_LEN): New macros.
Long ago this sort of thing would have been a no-no
because we needed to GCPRO the strings.
However, GCPRO went away a decade ago.
2025-07-24 22:13:47 -07:00
Paul Eggert
eb9ec79c13 PATH defaults now act more like GNU and POSIX
When PATH is unset or empty, use the system default,
to be consistent with GNU/Linux and with POSIX.
If there is no system default do not default to "."
as that can be dangerous.
* src/callproc.c (init_callproc_1, init_callproc):
Default PATH to the null pointer, not the empty string.
* src/emacs.c (default_PATH): New function.
(find_emacs_executable, decode_env_path): Be consistent with POSIX
and with glibc about what to do when PATH is unset or empty.
2025-07-24 22:13:47 -07:00
Paul Eggert
d59fe6dad5 Treat ‘.../emacs’ like ‘emacs’ in realpath startup
* src/emacs.c (find_emacs_executable): If the executable name
contains a slash, use the same optimization for symlink resolution
that we already use when the executable name has no slash.
2025-07-24 22:13:47 -07:00
Paul Eggert
67ea9485a6 Prefer readlink to lstat in find_emacs_executable
* src/emacs.c (find_emacs_executable): Prefer readlink to lstat
when testing whether a file is a symlink.  This avoids EOVERFLOW
issues.
2025-07-24 22:13:47 -07:00
Paul Eggert
670603533c Fix minor memory leak in find_emacs_executable
* src/emacs.c (find_emacs_executable): Free candidate if unused.
2025-07-24 22:13:47 -07:00
Paul Eggert
e026b57f07 Don’t read before BEG in insert-file-contents
* src/fileio.c (Finsert_file_contents): Don’t sample bytes before BEG.
Give up optimizing if the file size shrinks to less than BEG.
2025-07-23 17:55:15 -07:00
Paul Eggert
4c79154949 Simplify file end finding in insert-file-contents
* src/fileio.c (Finsert_file_contents): Don’t give up finding the
file’s end merely because SEEK_END fails.  Try a small test read
anyway.  This might work in non-POSIX file systems where SEEK_END
is not allowed, and trying is easy and simplifies the code.
2025-07-23 17:55:15 -07:00
Gerd Möllmann
2d1d1f31df NS: Fix build with NSTRACE_ENABLED
* src/nsterm.h (NSTRACE_MSG_NO_DASHES): Use
nstrace_enabled_global.
* src/nsterm.m: ([EmacsView performDragOperation:]): Don't use
an NSString.
2025-07-23 11:59:23 +02:00
Gerd Möllmann
f177537f70 NS: Use different window collection behavior for tooltips (bug#73037)
* src/nsterm.m ([EmacsView updateCollectionBehavior]):
Use NSWindowCollectionBehaviorFullScreenAuxiliary for non-native
tooltips which are not child frames.
2025-07-23 06:26:45 +02:00
Paul Eggert
eb488e1bba insert-file-contents respect END better
This fixes some longstanding bugs, along with bugs recently
introduced as part of fixes for Bug#77315.
* src/fileio.c (Finsert_file_contents): Arrange for END_OFFSET
to never be less than BEG_OFFSET, to simplify the code.
Do not go past END_OFFSET when sampling or optimizing reading.
Avoid a few unnecessary lseeks.
2025-07-21 16:23:18 -07:00
Paul Eggert
8393e469e7 insert-file-contents shrinking Solaris file fix
This is related to recent fixes for Bug#77315.
* src/fileio.c (Finsert_file_contents): Defend against
a file shrinking to be smaller than its initial offset.
This can happen only on platforms like Solaris where
the initial offset can be positive.
2025-07-21 16:23:18 -07:00
Paul Eggert
e879533f4b Refactor insert-file-contents overlap check
* src/fileio.c (Finsert_file_contents):
Simplify and clarify file overlap check.
2025-07-21 16:23:18 -07:00
Paul Eggert
adbae4f92f insert-file-contents refactor xlseek
* src/fileio.c (xlseek): New arg WHENCE.  All uses changed.
This generalizes xlseek and should simplify future changes.
2025-07-21 16:23:18 -07:00
Paul Eggert
d04182d52a Say why quit is captured in insert-file-contents
* src/fileio.c (Finsert_file_contents): Add comment.
2025-07-21 16:23:18 -07:00
Paul Eggert
a8e46f11a8 insert-file-contents read size increase
This increases the max read size from 0.25 to 1 MiB, which is a
bit better for Emacs in my measurements.  The old value was taken
from coreutils, but was for a different purpose.
* src/fileio.c (INSERT_READ_SIZE_MAX): New constant, replacing
IO_BUFSIZE.  All uses changed.
(Finsert_file_contents): Do not use a read buffer that is larger
than INSERT_READ_SIZE_MAX.
2025-07-21 16:23:18 -07:00
Paul Eggert
27e0f0f79b Fix insert-file-contents infloop with unlucky END
This partially reverts 55f41ca3aa,
which was a partial fix for Bug#77315.
* src/fileio.c (Finsert_file_contents): Go back to accepting
partial reads when doing the optimized way when code conversion is
not needed.  This avoids an unlikely bug when END happens to lie
at a buffer boundary, causing an infloop.  For consistency, do the
same when doing code conversion (though there’s no bug in then),
as there’s not a real need for emacs_full_read there either.
2025-07-21 16:23:18 -07:00
Paul Eggert
46314aef87 Refactor by coalescing MAX_RW_COUNT definitions
* src/emacs.c (read_full):
Simplify by assuming MAX_RW_COUNT is defined.
* src/lisp.h (MAX_RW_COUNT): Move here from src/sysdep.c.
* src/pdumper.c (dump_read_all):
Use MAX_RW_COUNT rather than defining our own equivalent.
2025-07-21 16:23:18 -07:00
Paul Eggert
aaf9c5213f insert-file-contents from seekable non-regular
* src/fileio.c (Finsert_file_contents): Be more conservative
when reading from seekable non-regular files when END is given.
The code assumed that in this case, reads would succeed or fail
quickly so there was no need to call internal_condition_case_1.
However, in some cases, e.g., /dev/random, it could take a while.
This fixes a glitch introduced in commit
cb4579ed6b dated 2022-06-11.
2025-07-21 16:23:18 -07:00
Paul Eggert
49ca3a2151 insert-file-contents beware buffer relocation
This fixes a potential (albeit quite unlikely) bug
introduced during recent fixes to Bug#77315.
* src/fileio.c (union read_non_regular.s.inserted):
Bring back this member.
(read_non_regular, Finsert_file_contents): Work in the unlikely
case when internal_condition_case_1 relocates the buffer before
calling read_non_regular.
2025-07-21 16:23:18 -07:00
Paul Eggert
2903b0b92c insert-file-contents 1 KiB seek fix
This improves on recent fixes to Bug#77315.
When sampling the first 1 KiB and last 3 KiB, do not seek before
BEG if given.  Instead, sample starting at BEG, to be consistent
with the non-optimized version.
* src/fileio.c (xlseek): Return POS, for convenience.
(Finsert_file_contents): Sample the first 1 KiB correctly when BEG.
In a CURPOS local, keep track of the input file offset, or for
nonseekable files the number of bytes read, while this value is
important.  This lets us avoid some unnecessary seeks.  Report an
error earlier if the file is not seekable and BEG is nonzero,
to save work and simplify the code.  When sampling, discard less
data, as this is simpler and there’s little point to discarding it.
2025-07-21 16:23:18 -07:00
Paul Eggert
ffe6d33ef4 insert-file-contents seek refactoring
* src/fileio.c (xlseek): New function.
(Finsert_file_contents): Use it instead of doing things by hand.
(write_region): Match diagnostic wording to xlseek’s.
2025-07-21 16:23:17 -07:00
Paul Eggert
5f4b71b0c4 Fix insert-file-contents optimization glitch
This improves on recent fixes to Bug#77315.
* src/fileio.c (Finsert_file_contents): When optimizing
do not seek to 0 if the initial file offset is positive,
as that causes the optimized code to behave differently
from the nonoptimized.
2025-07-21 16:23:17 -07:00
Paul Eggert
1b517a4fe0 insert-file-contents SEEK_END optimization
This improves on recent fixes to Bug#77315.
* src/fileio.c (Finsert_file_contents):
Do not give up on seeking merely because SEEK_END fails.
On some files (/proc/cpuinfo, say) SEEK_END can fail
even though SEEK_SET and SEEK_CUR succeed, and the
code still works in this case.
2025-07-21 16:23:17 -07:00
Paul Eggert
8d83402edc insert-file-contents st_size cleanup
* src/fileio.c (Finsert_file_contents): Store st_size,
not file_size_hint, into current_buffer->modtime_size,
since modtime_size is compared to a later st_size, not
to the actual file size.  Simplify buffer overflow detection
from file size, since this occurred only on regular files.
2025-07-21 16:23:17 -07:00
Mattias Engdegård
f4a9673f61 Speed up unintern, and fix symbol shorthand edge case (bug#79035)
Don't do a full lookup if the argument is a symbol, and only compute the
hash index once.  Fix a bug that occurred when there is another symbol
whose shorthand is equal to the true name of the symbol being removed.

* src/lread.c (Funintern): Rewrite for speed and correctness.
(oblookup_last_bucket_number, oblookup): Remove now unused variable.
* test/src/lread-tests.el (lread-unintern): New test.
2025-07-19 16:48:11 +02:00
Mattias Engdegård
e9deec70da Remove the variable load-convert-to-unibyte
It has been ineffective since 2002.
Suggested by Lynn Winebarger.

* src/lread.c (Fload, readevalloop_1, readevalloop, Feval_buffer)
(Feval_region, syms_of_lread): Remove the variable and its propagation.
* etc/NEWS: Announce.
2025-07-19 15:12:52 +02:00
Alvaro Ramirez
813013691a Add "Send to..." context menu item to mouse.el
* lisp/send-to.el: New package implements sending files/region.

* lisp/mouse.el (context-menu-send-to): Add "Send to..." context menu.

* lisp/term/ns-win.el (ns-send-items): Expose native macOS send API.

* src/nsfns.m (ns-send-items): Implement native macOS sending.

* etc/NEWS: Announce the new feature.
2025-07-19 14:15:55 +02:00
Stefan Monnier
f8b9d80ec6 comp.el: Fix minor corner-case annoyances
* lisp/emacs-lisp/comp.el (comp--native-compile): Avoid `%s`
on objects that may not have names.
* src/data.c (Ffset): Don't compute trampoline for no-op `fset`.
2025-07-17 12:36:57 -04:00
Paul Eggert
15570b7b95 Don’t optimize insert-file-contents for GNU
* src/fileio.c (Finsert_file_contents):
Remove a microoptimization for GNU/Linux and Android.
2025-07-16 23:21:23 -07:00
Paul Eggert
e450a7802c insert-file-contents small gap bug
Problem reported by Zhengyi Fu (Bug#79031).
* src/fileio.c (Finsert_file_contents): Do not read more than
requested, even when the gap is so small that we use a local buffer.
2025-07-16 11:45:23 -07:00
Paul Eggert
92dee45c5e insert-file-contents likely-end memory objects
* src/fileio.c (Finsert_file_contents): Treat memory objects like
regular files when inferring likely end.  Simplify likely end
computation.
2025-07-16 11:45:23 -07:00
Paul Eggert
8a1d368b62 Port insert-file-contents dir behavior to Unix
* src/fileio.c (Finsert_file_contents): Port better to traditional
Unix platforms like Solaris, where in some cases 'read' can
succeed on directories.
2025-07-16 11:45:23 -07:00
Michael Albinus
e4db6aa545 ; * src/xdisp.c: Fix typo. 2025-07-16 08:47:23 +02:00
Paul Eggert
42548c25f7 Fix insert-file-contents overlap check
In commit 61a8ce0280 I mistakenly
focused on overlap in the buffer.  The code also needs to check
for overlap in the inserted file data.
Problem reported by Gerd Möllmann (Bug#79020).
* src/fileio.c (Finsert_file_contents): Prevent overlap in both
the buffer head and tail, and in the inserted file’s head and tail.
Also, shrink the file’s head if the file shrank to be smaller
than its head.
2025-07-15 22:47:16 -07:00
Sean Whitton
a30372f42b ; Fix wording. 2025-07-15 21:58:59 +01:00
Sean Whitton
6ee0093b21 ; Fix recently introduced "ELisp". 2025-07-15 21:57:59 +01:00
Stefan Monnier
c3f3fe136c Add redisplay_counter to catch nested redisplays and abort outer one
The redisplay code is not re-entrant.  To allow running ELisp code
from within redisplay, we have some hacks (e.g. `inhibit-redisplay`)
that try to avoid the resulting breakage.
This commit adds another one of those hacks, which tries
to get closer to the core of the problem, thereby making it "safe"
to override `inhibit-redisplay`, e.g. to debug jit-lock code.

* src/dispextern.h (redisplay_counter): Declare.
* src/xdisp.c (redisplay_counter): Define.
(redisplay_internal) Increment it.
(dsafe__call): Use it, in case `inhibit-redisplay` is overridden.
* src/eval.c (call_debugger): Use it as well to refine the test
we already had.
2025-07-15 13:49:29 -04:00