Stefan Kangas [Sat, 9 Jul 2022 09:29:25 +0000 (11:29 +0200)]
New command emacs-news-toggle-tag
* lisp/textmodes/emacs-news-mode.el (emacs-news-toggle-tag): New
command.
(emacs-news-mode-map): Bind above new command to "C-c C-t".
* test/lisp/textmodes/emacs-news-mode-resources/toggle-tag.erts:
* test/lisp/textmodes/emacs-news-mode-tests.el: New files.
Po Lu [Sat, 9 Jul 2022 08:18:35 +0000 (16:18 +0800)]
Improve drag-and-drop emulation time handling
* src/xselect.c (x_handle_selection_request): Use
display-specific pending DND time.
(x_set_pending_dnd_time): Delete function.
* src/xterm.c (x_dnd_do_unsupported_drop, handle_one_xevent):
Set dpyinfo->pending_dnd_time instead.
* src/xterm.h (struct x_display_info): New field
`pending_dnd_time'. Make handling pending drops
display-specific to avoid interference when there are multiple
displays.
Po Lu [Sat, 9 Jul 2022 04:50:06 +0000 (04:50 +0000)]
Fix race conditions handling selection clear events on Haiku
* src/haiku_select.cc (be_handle_clipboard_changed_message):
Include current clipboard count.
(be_selection_outdated_p): New function.
* src/haikuselect.c (haiku_handle_selection_clear): Ignore
outdated events.
(haiku_selection_disowned): New argument `count'. Include it in
the timestamp field of the selection clear event.
* src/haikuselect.h: Update prototypes.
* src/systime.h: Define `Time' to an appropriate value on Haiku.
Po Lu [Sat, 9 Jul 2022 01:07:07 +0000 (09:07 +0800)]
Add new minor mode to deactivate the region once PRIMARY is lost
* doc/emacs/killing.texi (Primary Selection): Document new minor
mode `lost-selection-mode'.
* etc/NEWS: Announce new minor mode.
* lisp/select.el (lost-selection-function): New function.
(lost-selection-mode): New global minor mode.
Po Lu [Sat, 9 Jul 2022 00:05:30 +0000 (08:05 +0800)]
Speed up querying for window manager support
* src/xterm.c (handle_one_xevent): Clear net_supported_window if
it is destroyed.
(x_get_wm_check_window): New function.
(x_wm_supports_1): First try net_supported_window. If it still
exists, don't ask for _NET_SUPPORTING_WM_CHECK.
Juri Linkov [Fri, 8 Jul 2022 17:58:33 +0000 (20:58 +0300)]
* lisp/isearch.el (isearch-search-fun-in-noncontiguous-region): New function.
(isearch-search-fun-in-text-property): Refactor body to
'search-within-boundaries', then call it (bug#14013).
(search-within-boundaries): New function refactored from
isearch-search-fun-in-text-property.
* test/lisp/isearch-tests.el: Add tests for new search functions.
(isearch--test-search-within-boundaries): New function.
(isearch--test-search-fun-in-text-property)
(isearch--test-search-fun-in-noncontiguous-region): New tests.
Juri Linkov [Fri, 8 Jul 2022 17:47:11 +0000 (20:47 +0300)]
Display the number of invisible matches for isearch-lazy-count (bug#40808)
* lisp/isearch.el (lazy-count-invisible-format): New variable.
(isearch-mode): Set isearch-lazy-count-invisible to nil.
(isearch-lazy-count-format): Use lazy-count-invisible-format and
isearch-lazy-count-invisible.
(isearch-range-invisible): Handle the value 'can-be-opened' of
'search-invisible' and don't open overlays for it, just check
if these overlays can be opened.
(isearch-lazy-count-invisible): New variable.
(isearch-lazy-highlight-new-loop): Set isearch-lazy-count-invisible to nil.
(isearch-lazy-highlight-search): Let-bind search-invisible either to t
for non-nil isearch-lazy-count, or to 'can-be-opened'.
(isearch-lazy-highlight-match): Don't highlight matches intended
to be counted only, not highlighted.
(isearch-lazy-highlight-buffer-update): Separately count invisible
matches by isearch-lazy-count-invisible.
* lisp/info.el (Info-isearch-filter): Check if search-invisible is t.
Fix file-name-case-insensitive-p in ffap (bug#56443)
Don't crash if the file name argument to file-name-case-insensitive-p,
after expansion, doesn't have a parent directory. This occurs
when calling ffap on something that looks like an email address.
* src/fileio.c (Ffile_name_case_insensitive_p): Return nil if no file
or parent directory could be found.
* test/src/fileio-tests.el (fileio-tests--identity-expand-handler)
(fileio--file-name-case-insensitive-p): New test.
Stefan Kangas [Fri, 8 Jul 2022 10:04:17 +0000 (12:04 +0200)]
Stop ffap-machine-at-point from pinging random hosts
Having this on by default is highly problematic from a security and
privacy standpoint, as it risks having outgoing traffic that could
potentially reveal sensitive data (passwords, names, etc.).
It also seems to be causing issues for users, see e.g.
https://github.com/emacs-helm/helm/issues/648
* lisp/ffap.el (ffap-machine-p-known): Change default to 'accept'.
Po Lu [Fri, 8 Jul 2022 05:41:50 +0000 (13:41 +0800)]
Reduce synchronization setting frame alpha
* src/xterm.c (x_set_frame_alpha): Don't synchronize while
setting alpha property, and don't ask for the current value of
the opacity property, which is much more expensive than changing
it.
Alan Mackenzie [Thu, 7 Jul 2022 15:38:09 +0000 (15:38 +0000)]
Remove obscure, obsolete code from do_switch_frame
This is relevant for bug #56305, and might solve that bug. The code being
removed went into Emacs between 1992 and 1994, and looks to have been a
workaround for switching frames, before the command 'other-frame' had been
written. Nowadays, that code has harmful effects, causing frames' focus to be
redirected at random, sometimes back to the frame itself.
* src/frame.c (do_switch_frame): Remove 53 lines of code.
Stefan Kangas [Thu, 7 Jul 2022 12:54:16 +0000 (14:54 +0200)]
Make net-utils-url at point funs obsolete in favor of ffap
* lisp/net/net-utils.el (net-utils-machine-at-point)
(net-utils-url-at-point): Redefine as obsolete function alias for
'ffap-machine-at-point' and 'ffap-url-at-point'. Update callers.
* lisp/ffap.el (ffap-machine-at-point, ffap-url-at-point): Autoload.
Stefan Kangas [Thu, 7 Jul 2022 11:18:01 +0000 (13:18 +0200)]
Make two XEmacs related variables obsolete
* lisp/net/browse-url.el (browse-url-gnudoit-program)
(browse-url-gnudoit-args): Make obsolete. The corresponding command
'browse-url-w3-gnudoit' is already obsolete since 25.1.
Po Lu [Thu, 7 Jul 2022 10:36:56 +0000 (18:36 +0800)]
Fix quitting out of selection converters during drag and drop
* src/xterm.c (x_dnd_process_quit): New function.
(x_dnd_begin_drag_and_drop): Use it instead. Also quit if
quit-flag is true immediately after a selection converter is
run.
Stefan Kangas [Thu, 7 Jul 2022 09:11:34 +0000 (11:11 +0200)]
Make 'run-dig' command obsolete in favor of 'dig'
* lisp/net/net-utils.el (run-dig): Redefine in terms of `dig' and make
obsolete. (Bug#56432).
(dig-program): Delete duplicate defcustom; it is also in dig.el.
(dig-program-options): Move from here...
* lisp/net/dig.el (dig-program-options): ...to here.
(dig-invoke): Respect 'dig-program-options'.
(dig): Prompt for DNS server when given double prefix argument.
Eli Zaretskii [Thu, 7 Jul 2022 08:56:31 +0000 (11:56 +0300)]
Fix undo of changes in cloned indirect buffers
* lisp/simple.el (primitive-undo): If the visited-modtime of the
indirect buffer's file is bogus, use the modtime of the file
visited by its base buffer.
* src/undo.c (record_first_change): Call
'buffer_visited_file_modtime' with the correct buffer, instead of
always calling 'Fvisited_file_modtime', which returns possibly
bogus values for indirect buffers.
* src/fileio.c (Fset_visited_file_modtime): Signal a meaningful
error for indirect buffers.
(buffer_visited_file_modtime): New function, with implementation
taken from 'Fvisited_file_modtime'.
(Fvisited_file_modtime): Call 'buffer_visited_file_modtime'.
* src/lisp.h: Add prototype for 'buffer_visited_file_modtime'.
(Bug#56397)
The characters ऋ and ॠ are pronunced as ru in languages such as
Marathi, Gujarati, Telugu, etc. so add new translation rules that
reflects this sound. (bug#56414)
* lisp/language/ind-util.el (indian-itrans-v5-table): Add new
translation rules to make the input method more phonetic.
(indian-tml-base-table, indian-tml-base-digits-table): Fix typo.
Juri Linkov [Thu, 7 Jul 2022 06:31:02 +0000 (09:31 +0300)]
Don't accumulate trailing newlines on every save of .dir-locals.el
* lisp/files-x.el (modify-dir-local-variable): Insert a newline
only after creating a new file.
(dir-locals-to-string): Remove newline to not add more newlines
on every save.
* src/haiku_support.h (enum haiku_event_type): New event
`CLIPBOARD_CHANGED_EVENT'.
(struct haiku_clipboard_changed_event): New struct.
* src/haikuselect.c (haiku_handle_selection_clear)
(haiku_selection_disowned, haiku_start_watching_selections): New
functions.
(syms_of_haikuselect): New defsym and defvar.
Stefan Kangas [Thu, 7 Jul 2022 00:09:30 +0000 (02:09 +0200)]
End new .dir-locals.el files with a newline
* lisp/files-x.el (dir-locals-to-string): Add newline at the end of
newly created .dir-locals.el files. This avoids git complaining about
"No newline at end of file".
* lisp/emacs-lisp/backtrace.el (backtrace-line-length):
* lisp/doc-view.el (doc-view-conversion-refresh-interval):
Use defcustom :type natnum and allow the nil value.
* lisp/gnus/spam-stat.el (spam-stat-process-directory-age):
Use defcustom :type integer.
Manuel Giraud [Wed, 6 Jul 2022 11:18:09 +0000 (13:18 +0200)]
Remove soft newlines in longlines-mode
* lisp/longlines.el (longlines-mode, longlines-encode-string): Update
from `buffer-substring-filters' to `filter-buffer-substring-function'.
Remove soft newlines in substring (bug#56335).
Martin Rudalics [Wed, 6 Jul 2022 07:25:43 +0000 (09:25 +0200)]
Fix 'fit-frame-to-buffer' (Bug#56102)
* lisp/window.el (fit-frame-to-buffer-sizes): Fix doc-string.
Give calls to 'max' a second argument so they do something
useful. If ONLY equals 'vertically', call
'window-text-pixel-size' with X-LIMIT nil (Bug#56102). For
minimum sizes of the window to fit, use 'window-safe-min-size' by
default.
* doc/lispref/windows.texi (Resizing Windows): Fix descriptions of
'fit-frame-to-buffer' and 'fit-frame-to-buffer-sizes'.
Po Lu [Wed, 6 Jul 2022 06:09:51 +0000 (14:09 +0800)]
Fix the MS-DOS build
* msdos/sedlibmk.inp: Define GL_GNULIB_RAWMEMCHR.
* src/process.c (Fsignal_names): Disable on MS-DOS and use
SIGNUM_BOUND, which is always provided by gnulib.
Po Lu [Wed, 6 Jul 2022 02:42:12 +0000 (10:42 +0800)]
Reduce duplicate code cleaning up DND processes
* src/xterm.c (x_restore_events_after_dnd): New function.
(x_dnd_cleanup_drag_and_drop, x_dnd_begin_drag_and_drop): Use
that instead of manually cleaning up properties and events.
Po Lu [Tue, 5 Jul 2022 13:56:50 +0000 (21:56 +0800)]
Fix announcements of XDND mouse rectangles
* lisp/x-dnd.el (x-dnd-handle-xdnd): Use correct meaning of "2",
which isn't well documented.
* src/xterm.c (handle_one_xevent): Likewise. Also fix unpacking
of mouse rects.