1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-15 19:31:29 -07:00
Commit graph

47962 commits

Author SHA1 Message Date
Stefan Monnier
6ab183a0f9 * src/keyboard.c (safe_run_hook_funcall): Fix thinko 2022-09-08 16:15:04 -04:00
Stefan Monnier
15e0990805 * src/keyboard.c (safe_run_hook_funcall): Fix recent regression
The mutation of `args` was unsafe because that array was
later reused (and assumed unchanged) by the caller.
https://lists.gnu.org/archive/html/emacs-devel/2022-09/msg00329.html
2022-09-08 16:12:01 -04:00
Yuan Fu
1d3234988a
Add node-only parameter to treesit-query-capture
* doc/lispref/parsing.texi (Pattern Matching): Mention the new
parameter.
* lisp/treesit.el (treesit-query-in): Add node-only.
* src/treesit.c (Ftreesit_query_capture): Add node-only.
2022-09-08 12:52:25 -07:00
Eli Zaretskii
048b0fd0db ; * src/editfns.c (syms_of_editfns) <restrictions-locked>: Doc fix. 2022-09-08 22:50:41 +03:00
Stefan Kangas
e90a457c46 * src/xrdb.c (main) [TESTRM]: Replace gets with fgets. 2022-09-08 12:46:43 +02:00
Po Lu
56f3cdef6b Avoid selecting for excessive output configuration events
* src/xterm.c (x_term_init): Only select for
RROutputPropertyNotify if GTK is in use.  Emacs doesn't need it
itself, and output property changes will otherwise lead to 2
second freezes over connections with high network latency.
2022-09-08 13:20:33 +08:00
Eli Zaretskii
579eefda36 Don't follow symlinks in w32notify file watches
* src/w32notify.c (add_watch): On filesystems that support
symlinks, don't follow symlinks.  (Bug#57536)
* src/w32.c (symlinks_supported): New function.
* src/w32.h (symlinks_supported): Add prototype.
2022-09-07 15:18:54 +03:00
Po Lu
473313d2a8 Fix nsfont breakage since 6b1ed2f2c9
* nsfont.m (ns_spec_to_descriptor): Fix coding style, also
handle `monospace' special family.
(ns_descriptor_to_entity): Fix reporting of spacing on fonts.
(ns_findfonts): Fix coding style.
2022-09-07 09:52:35 +08:00
Po Lu
976965eb5e Reenable reporting of frame movement on NS
* src/nsterm.m ([EmacsView windowDidMove:]): Restore code to
generate MOVE_FRAME_EVENTS, and use kbd_buffer_store_event
instead.
2022-09-07 09:52:35 +08:00
Po Lu
a3d7332d75 Correctly handle frame synchronization on fullscreen KWin
* src/xfns.c (x_set_use_frame_synchronization): Announce that we
do not want the compositor to unredirect the frame while
fullscreen.
* src/xterm.c (x_atom_refs): New atom
`_NET_WM_BYPASS_COMPOSITOR'.
* src/xterm.h (struct x_display_info): Likewise.
2022-09-06 19:39:24 +08:00
Po Lu
21c8a9d944 Fix crash while converting empty vector to X data
* src/xselect.c (lisp_data_to_selection_data): Assume an empty
vector represents INTEGER data, instead of blindly trying to
aref it's first element.
2022-09-05 09:51:22 +08:00
Po Lu
55ff36485f Fix earlier change to xterm.c
* src/xterm.c (x_detect_focus_change): Finally figure out what
the call to x_new_focus_frame does with the core focus, and do
the equivalent with the XInput 2 focus.
2022-09-04 21:04:19 +08:00
Jeff Walsh
22bee93d92 Update error message to reflect variable rename
* src/comp.c (Fcomp_el_to_eln_filename): Update error message.  (Bug#55861)

[ According to the Git metadata, this commit 8436e0bee9 was already
  merged from `emacs-28`, yet the code says it was not.  :-(  ]
2022-09-03 12:55:27 -04:00
Po Lu
b861adce06 ; * character.c (Fmax_char): Fix build with type checking. 2022-09-03 21:45:46 +08:00
Po Lu
ab5ca80e74 Work around another X server bug in crossing event dispatch
* src/xterm.c (xi_focus_handle_for_device): Clear implicit focus
along with FocusOut.  (bug#57468)
(x_mouse_leave): Avoid invalid reads of
dpyinfo->x_focus_event_frame on input extension builds.
2022-09-03 21:44:48 +08:00
Po Lu
91ba20fff1 Work around potential X server bug
* src/xterm.c (handle_one_xevent): Ignore core crossing events
on input extension builds.  The X server is not actually
supposed to deliver them to us, and it messes up MPX focus
tracking.  (bug#57468)
2022-09-03 19:57:12 +08:00
Eli Zaretskii
dcfe3314cd Teach 'max-char' about the Unicode code range
* src/character.c (Fmax_char): Accept an optional argument
UNICODE, and, if non-nil, return the maximum codepoint defined by
Unicode.

* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Update the
signature of 'max-char'.

* etc/NEWS:
* doc/lispref/nonascii.texi (Character Codes): Update the
documentation of 'max-char'.
2022-09-03 13:45:53 +03:00
Gregory Heytings
d0a66f3e0e Display a warning for some uses of nil in face attributes.
* src/xfaces.c (HANDLE_INVALID_NIL_VALUE): New macro, which displays
a warning for invalid uses of nil as a face attribute value.
(Finternal_set_lisp_face_attribute): Use the macro for the attributes
:foreground, :distant-foreground and :background.
2022-09-02 22:30:25 +02:00
Po Lu
2ff5763836 Prevent crashes when embedding Emacs in a nonexistent parent
* src/xfns.c (x_window, Fx_create_frame): Handle X errors while
trying to reparent the frame onto an explicitly specified
parent.
* src/xterm.c (handle_one_xevent): Handle unparenting embedded
windows correctly.  This only works if the embedder is aware of
the fixes extension and has put the window into the right save
set.
(x_embed_frame): New function.
* src/xterm.h (FRAME_X_EMBEDDED_P): Fix coding style.
2022-09-02 17:19:51 +08:00
Po Lu
177811ac0c Fix bug#57476 for Xt builds
* src/xterm.c (handle_one_xevent): Add similar event mode check
to code under USE_X_TOOLKIT conditional.  (bug#57476)
2022-09-01 21:22:28 +08:00
Mattias Engdegård
e7193902b2 Better take and ntake bignum argument handling
* src/fns.c (Ftake, Fntake): Treat positive bignum arguments
as most-positive-fixnum which results in better error checking
of improper lists.
2022-09-01 10:11:53 +02:00
Eli Zaretskii
67b85decc7 ; * src/xdisp.c (lookup_glyphless_char_display): Fix last merge. 2022-09-01 08:56:30 +03:00
Stefan Kangas
0bd860cc2e Merge from origin/emacs-28
8807a4f532 Enable 256 colors in fbterm.
bbc23ca8ab One more fix for find-file.el
0cbcaf5119 ; Yet another doc fix for 'ff-other-file-alist' (bug#57325)
2d9a391727 Recommend using fbterm in the Linux console.
a5a92e577c ; * src/window.c (syms_of_window) <window-point-insertion-...
4d52fe6b96 * lisp/find-file.el (ff-other-file-alist): Doc fix.  (Bug#...
d111b5b651 * lisp/info.el (Info-mode): Support the Linux console better.
cc945ec0ed ; Fix doc strings in latin1-disp.el
195fcc932e Improve the documentation of glyphless-character display
72ae02377e ; * lisp/jit-lock.el (jit-lock-chunk-size): Doc fix.
3fb69fad49 Fix documentation of 'glyphless-char-display'

# Conflicts:
#	lisp/international/characters.el
#	src/xdisp.c
2022-09-01 06:17:37 +02:00
Po Lu
136495f178 Gently nudge Xt into always setting size hints
* src/widget.c (update_wm_hints): Force a resource to change
every time this function is called.  (bug#57475)
(EmacsFrameInitialize): Initialize new field.
* src/widgetprv.h (EmacsFramePart): New field `size_switch'.
* src/xterm.c (x_wm_set_size_hint): Don't change flags if flags
is 0.
2022-08-31 10:17:43 +08:00
Po Lu
5bedef8f87 Fix bug#57476
* src/xterm.c (handle_one_xevent): Don't reset valuators on certain
crossing events, for the benefit of xfwm4.  (bug#57476)
2022-08-31 09:44:13 +08:00
Mattias Engdegård
e1e60e51bf Accept bignum arguments in take and ntake
* src/fns.c (Ftake, Fntake): Accept any integer as first argument, for
completeness.
* test/src/fns-tests.el (fns--take-ntake): Add test cases.
2022-08-30 16:48:25 +02:00
Mattias Engdegård
5cf7b1ada9 ; * src/lread.c (invalid_radix_integer): Use a local buffer. 2022-08-30 16:24:21 +02:00
Po Lu
0bf5463f81 Fix junk data being returned with incremental selection transfers
* src/xselect.c (receive_incremental_selection): New arg
REAL_BYTES_RET.  Set it to the actual size instead of using the
size of the array after it was grown by xpalloc.
(x_get_window_property_as_lisp_data): Adjust call to
receive_incremental_selection.
2022-08-30 19:28:03 +08:00
Mattias Engdegård
8954fcb93b ; * src/lread.c (read0): Fix specpdl off-by-one bug in last change. 2022-08-30 11:26:40 +02:00
Yuan Fu
77d5a0cf9f Merge remote-tracking branch 'origin/master' into feature/tree-sitter 2022-08-29 11:41:10 -07:00
Mattias Engdegård
c0bb1aac10 Fix reader memory leak upon error (bug#56623)
Reported by Tom Gillespie; error found by Greg Hendershott.

* src/lread.c (read_stack_reset): New.
(read0): Reset read stack when unwinding from an error.
2022-08-29 17:48:47 +02:00
Eli Zaretskii
a5a92e577c ; * src/window.c (syms_of_window) <window-point-insertion-type>: Doc fix. 2022-08-29 17:09:02 +03:00
Stefan Monnier
5cae71834b * src/keyboard.c (safe_run_hooks*): Simplify and generalize
(safe_run_hooks_1, safe_run_hook_funcall): Simplify and generalize to
arbitrary `nargs`.
(safe_run_hooks_error): Remove unneeded assertion.
2022-08-29 09:03:34 -04:00
Po Lu
18d5eadf2c Unify floating point handling when reading XI motion events
* src/xterm.c (handle_one_xevent): Always round values as
recommended, instead of just truncating them.  Also fixes
weird "jitter" during drag-and-drop on some clients.
2022-08-29 17:23:28 +08:00
Eli Zaretskii
195fcc932e Improve the documentation of glyphless-character display
* lisp/international/characters.el (glyphless-char-display-control):
* src/xdisp.c (syms_of_xdisp) <glyphless-char-display>: Mention
the 'glyphless-char' face in the doc string.

* doc/lispref/display.texi (Glyphless Chars): Index
'glyphless-char' face.
2022-08-28 08:40:25 +03:00
Po Lu
d704c61e25 Fix two issues in xterm.c
* src/xterm.c (x_atom_refs): Make EMACS_SERVER_TIME_PROP atom
have a vendor-specific prefix.
(x_query_pointer_1): Fix leak of button mask.
2022-08-28 12:02:43 +08:00
Juri Linkov
3f076a8e44 Use truncated-partial-width-window-p in more places (bug#56815)
* lisp/simple.el (line-move, line-move-finish):
Use truncated-partial-width-window-p.

* lisp/window.el (count-screen-lines, scroll-command--goto-goal-column):
Use truncated-partial-width-window-p.
(truncated-partial-width-window-p): Replace window-width with
window-total-width.

* src/indent.c (scan_for_column): Bring the logic of using
truncated-partial-width-window-p closer to what the display engine does.
2022-08-27 22:52:03 +03:00
Eli Zaretskii
6b1ed2f2c9 Fix antialias face attribute when text is scaled
This restores the code we had in realize_gui_face before commit bf0d3f7.
The problem described in bug#17973, which led to that commit, only
happens if one uses a specific (misc-fixed) font family, not for
the usual default fonts used by Emacs, and I'm not sure what's
described there is a bug at all.  At least for the purposes of
text-scale-adjust, it makes no sense to ignore the
foundry/family/adstyle of the original font, because we _want_ the
same (or very similar) font, just of a different size.

And likely in other use cases: if the :font attribute of a face
specifies some font properties, we want to keep them all, not
arbitrarily to ignore some of them.  And definitely catering to an
obscure use case such as the one cited in bug#17973 is NOT a good
reason to make such radical changes in face-realization behavior.

So I think backing out that part of commit bf0d3f7 is TRT, and if
we decide that this causes bug#17973 in too many situations we care
about, I'd rather find a kludge for that specific case than do that
for every face realization.
* src/xfaces.c (realize_gui_face): Preserve face attributes when
text is scaled.  This reverts part of the changes installed in
commit bf0d3f7.  (Bug#37473)
2022-08-27 13:13:48 +03:00
Eli Zaretskii
56aa52c346 Support "replacement characters" on TTY frames
* src/nsterm.m (ns_draw_glyphless_glyph_string_foreground):
* src/pgtkterm.c (pgtk_draw_glyphless_glyph_string_foreground):
* src/haikuterm.c (haiku_draw_glyphless_glyph_string_foreground):
* src/xterm.c (x_draw_glyphless_glyph_string_foreground):
* src/w32term.c (w32_draw_glyphless_glyph_string_foreground):
* src/xdisp.c (lookup_glyphless_char_display): Handle extra-slot
of 'glyphless-char-display' that is a cons cell.
(syms_of_xdisp) <glyphless-char-display>: Update doc string.

* etc/NEWS:
* doc/lispref/display.texi (Glyphless Chars): Document the new
feature.

* lisp/faces.el (glyphless-char): Make the face stand out on TTY
frames that don't support the underline attribute.
2022-08-27 11:56:00 +03:00
Eli Zaretskii
3fb69fad49 Fix documentation of 'glyphless-char-display'
* src/xdisp.c (syms_of_xdisp)<glyphless-char-display>: Doc fix.
(gui_produce_glyphs, lookup_glyphless_char_display): Fix
indentation.
2022-08-27 10:50:57 +03:00
Po Lu
4015d561c3 Fix crash when handling "swallowed" generic events
* src/xmenu.c (x_menu_translate_generic_event, x_menu_show):
Pass through more events, correctly.
* src/xterm.c (handle_one_xevent): Don't abort if must_free_data
and xi_event is NULL; this is an Xlib bug.
2022-08-27 09:54:19 +08:00
Po Lu
8cad97e3db Restore old code in x_sync_trigger_fence
* src/xterm.c (x_sync_trigger_fence): Restore old code, since that
makes it easier to adapt to more than 2 sync fences (which might be
necessary in the future, if we ever decide to do frame handling
asynchronously), and is much more recognizable for people coming from
other programs.
2022-08-26 09:42:35 +08:00
Po Lu
7ffac97f49 ; * src/xterm.h (struct x_display_info): Update comment. 2022-08-26 09:37:47 +08:00
Paul Eggert
9bd91a3751 Fix overflows in HAVE_XSYNC timestamp handling
Also, port to platforms lacking CLOCK_MONOTONIC and int64_t, and
use 0 more consistently to represent missing timestamps.
* src/xterm.h (struct x_display_info):
Omit server_time_monotonic_p and server_time_offset if
!HAVE_CLOCK_GETTIME since they are unused in that case.
* src/xterm.h (struct x_display_info, struct x_output):
* src/xterm.c (x_sync_get_monotonic_time)
(x_sync_current_monotonic_time, x_sync_note_frame_times):
Use int_fast64_t instead of int64_t as POSIX doesn't
guarantee the latter.  Similarly for uint_fast64_t.
(x_sync_get_monotonic_time, x_sync_current_monotonic_time)
(x_sync_note_frame_times, x_display_set_last_user_time):
Check for integer overflow in time arithmetic.
(CLOCK_MONOTONIC): Define to CLOCK_REALTIME if absent.
(x_sync_current_monotonic_time): Check for clock_gettime failure
and fall back on CLOCK_REALTIME if CLOCK_MONOTONIC does not work,
which POSIX allows.
(x_sync_current_monotonic_time, x_sync_note_frame_times)
(x_display_set_last_user_time):
Use 0 more consistently to represent missing timestamps.
2022-08-25 18:30:11 -07:00
Kien Nguyen
34e0a232cd Allow symlink creation on MS-Windows without Administrator privileges
* src/w32.c (symlink): Use the
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag when available.
(Bug#57386)
2022-08-25 16:18:58 +03:00
Po Lu
34686263b7 Fix various problems with mouse highlight on XI2 builds
* src/dispextern.h (reset_mouse_highlight): Fix coding style.
* src/xterm.c (xi_position_changed): New functions.
(xi_report_motion_window_clear, handle_one_xevent): Don't report
motion events if the pixel position did not actually change.

* src/xterm.h (struct xi_device_t): New fields
`last_motion_window', `last_motion_x' and `last_motion_y'.
2022-08-25 12:24:34 +08:00
Po Lu
e518146a30 Fix input extension focus tracking with some window managers
* src/xterm.c (handle_one_xevent): If a window manager sends us
FocusIn and FocusOut with XSendEvent (they do that), don't
detect focus changes when XInput 2 is enabled.  The X server
will tell us the actual truth if the focus really did change.
2022-08-24 19:12:16 +08:00
Eli Zaretskii
b48bf42fc2 ; * src/buffer.h (struct buffer_text): Improve commentary. 2022-08-23 19:30:18 +03:00
Gregory Heytings
3bf19c417f Merge master into feature/improved-locked-narrowing. 2022-08-23 17:50:41 +02:00
Gregory Heytings
1c837c42c2 Improve detection of long lines.
* src/buffer.h (struct buffer_text): New field.
(BUF_CHARS_UNCHANGED_MODIFIED, CHARS_UNCHANGED_MODIFIED): New macros.

* src/buffer.c (Fget_buffer_create): Initialize the new field.

* src/xdisp.c (mark_window_display_accurate_1): Set the new field.
(redisplay_window): Use it, together with CHARS_MODIFF, instead of
MODIFF and UNCHANGED_MODIFIED to decide whether to check for long
lines.

* src/pdumper.c (dump_buffer): Dump the new field.
2022-08-23 17:48:51 +02:00