Po Lu [Tue, 22 Aug 2023 08:44:53 +0000 (16:44 +0800)]
Optimize format 12 cmap table lookup
* src/sfnt.c (sfnt_compare_char): New function.
(sfnt_lookup_glyph_12): Detect ``large'' cmap tables of format
12 and perform a binary search. Such tables are frequently
provided by CJK fonts.
Po Lu [Tue, 22 Aug 2023 07:28:38 +0000 (15:28 +0800)]
Take precautions against NULL returns from getPrimaryClip
* java/org/gnu/emacs/EmacsSdk11Clipboard.java (getClipboardData):
Return null if the clip data is not set. Also delete superfluous
debugging code. (bug#65445)
(getClipboard): Don't dereference NULL clip data.
Po Lu [Tue, 22 Aug 2023 02:01:22 +0000 (10:01 +0800)]
Correct invalid Texinfo markup
* doc/emacs/files.texi (Visiting): Don't enclose an entire form
within @var, use @code for the whole form and @var for
individual variables within instead.
* doc/lispref/commands.texi (Key Sequence Input): @xref must be
followed by either , or ..
* doc/lispref/processes.texi (Filter Functions): Introduce
punctuation absent from the last sentence of a paragraph.
Jim Porter [Tue, 22 Aug 2023 01:23:11 +0000 (18:23 -0700)]
Merge from origin/emacs-29
3296031ad74 ; Another improvement for documentation of pixelwise scro... baeb2d71ae7 Support defun navigation for DEFUN in c-ts-mode (bug#64442) 781ddd7e7d8 Fix touchpad scrolling on MS-Windows c125bd060e2 Fix order in which package-vc dependencies are resolved 500ced133ad Fix building of VC package manuals with relative org link... 456ecabe9e8 Fix the documentation of 'cl-flet' f6ebd1ef0d0 ; * src/treesit.c (Ftreesit_node_parent): Improve comment... fac0e2d5334 Avoid false "wrong passphrase" messages in EPA 8f683b51d8b Fix jsx font-lock in older tree-sitter-js grammars d9af79ae39d Fix cloning 'face-remapping-alist' for indirect buffers 636fb267c46 Improve documentation of case transfer in replacement com... 7856d51436b Fix horizontal scrolling of images with C-f 8cf5659ec2f ; Fix defcustom in completion.el a8c8a4e3680 ; * src/fns.c (Fcopy_sequence): Doc fix. (Bug#64960) 205d87cdca0 Fix unpacking ZIP archives on MS-Windows 3712e8bc385 ; Fix typos in lisp/keymap.el doc strings (bug#65329). 21b2ecee661 Fix command example in Eshell manual 26949819df0 ; lisp/progmodes/csharp-mode.el (treesit-query-capture): ... 221ed70b90a ; Improve documentation of 'define-alternatives' 32280205e27 Add user options mentioned in the Eshell manual to the va... cf3145a486b * Add missing alias to `native-comp-enable-subr-trampolin... 922b6490286 * Add missing alias to `native-comp-enable-subr-trampolin... 6962823c83c ; * etc/PROBLEMS: Fix typo and clarify wording.
Po Lu [Tue, 22 Aug 2023 00:04:16 +0000 (08:04 +0800)]
Repair desktop notification on Android 31
* java/org/gnu/emacs/EmacsDesktopNotification.java (display1):
Provide FLAG_IMMUTABLE under Android S and later, not just
versions of Android after S. (bug#65433)
Jim Porter [Sun, 12 Mar 2023 02:44:43 +0000 (18:44 -0800)]
Use generics to define Eshell output targets
This is more flexible than before, since third-party code can add new
output target types without advising these functions. It also
resolves an issue where redirecting to a symbol that has a value in
its function slot doesn't work.
* lisp/eshell/esh-io.el (eshell-virtual-target): New struct.
(eshell-get-target, eshell-output-object-to-target): Reimplement via
'cl-defgeneric'.
(eshell-close-target): Reimplement via 'cl-defgeneric' and simplify
'process' method.
Jim Porter [Thu, 17 Aug 2023 19:23:26 +0000 (12:23 -0700)]
Allow splicing Eshell globs in-place
This means that Eshell globs can now expand the same way as if the
user had typed each matching file individually.
* lisp/eshell/em-glob.el (eshell-glob-splice-results): New option.
(eshell-no-command-globbing, eshell-add-glob-modifier): Handle spliced
globs.
(eshell-extended-glob): Always return a list when splicing.
* lisp/eshell/em-pred.el (eshell-parse-arg-modifier): Ensure
'eshell-splice-args' is always at the end of the list of modifiers if
present.
* test/lisp/eshell/em-glob-tests.el
(em-glob-test/expand/splice-results)
(em-glob-test/expand/no-splice-results)
(em-glob-test/expand/explicitly-splice-results)
(em-glob-test/expand/explicitly-listify-results): New tests.
(em-glob-test/no-matches): Check result when
'eshell-glob-splice-results' is nil/non-nil.
* doc/misc/eshell.texi (Arguments): Expand explanation about argument
flattening.
(Globbing): Document splicing behavior of globs.
Don't describe lexbound uncompiled function as 'closures'
* lisp/help-fns.el (help-fns-function-description-header):
Describe lexbound uncompiled functions as functions.
Whether they technically close over any lexical variables isn't of
interest here.
Po Lu [Mon, 21 Aug 2023 12:44:23 +0000 (20:44 +0800)]
Properly enumerate GX fonts of the same family with divergent styles
* doc/emacs/android.texi (Android Fonts): Revise explanation of
GX font replacement during font enumeration.
* src/sfntfont.c (sfnt_replace_fonts_p): If PREV and DESC are of
the same family and both are GX fonts, restrict actions taken to
removing duplicate styles from PREV. Reported by a user who
tried to install GX versions of Cascadia Mono, which are
distributed as two files providing the bold and italic variation
axes respectively.
Explicitly disallow named-let in code using dynamic binding
There is no point in permitting named-let to be used in dynbound code;
our code transforms are simply not valid in that context, and it's not
worth the trouble to make it work (to the extent that it is at all
possible). (Bug#59576)
* lisp/emacs-lisp/subr-x.el (named-let):
Error if used with dynamic binding.
* doc/lispref/variables.texi (Local Variables): Amend manual.
Gerd Möllmann [Mon, 21 Aug 2023 07:16:17 +0000 (09:16 +0200)]
Fix debug spec of cl-flet (bug#65344)
* lisp/emacs-lisp/cl-macs.el (cl-flet): Fix debug spec.
(cl-defun): Allow only symbols as function names in debug spec.
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-flet/edebug): New test
case.
Po Lu [Mon, 21 Aug 2023 01:36:52 +0000 (09:36 +0800)]
Enable providing icons for Android desktop notifications
* doc/lispref/os.texi (Desktop Notifications)
<android-notifications-notify>: Mention the :icon parameter.
* java/org/gnu/emacs/EmacsDesktopNotification.java
(EmacsDesktopNotification) <icon>: New field.
(<init>): New argument ICON. Set this.icon to its value.
(display1): Use provided icon and always supply a pending intent
to open Emacs once the notification is clicked.
* java/res/layout/sdk8_notifications_view.xml
(sdk8_notifications_title, sdk8_notifications_content): Set
foreground color to #000000.
* src/androidselect.c (android_init_emacs_desktop_notification):
Update signature of <init>.
(android_locate_icon): New function.
(android_notifications_notify_1): New arg ICON.
(Fandroid_notifications_notify): New parameter icon.
(syms_of_androidselect): <QCicon>: New symbol.
Po Lu [Sun, 20 Aug 2023 13:40:08 +0000 (21:40 +0800)]
Repair desktop notification display on Android 2.3 and 2.2
* java/org/gnu/emacs/EmacsDesktopNotification.java (display1):
Create a pending intent and set it as the contentIntent when
building a notification by hand.
* java/org/gnu/emacs/EmacsDesktopNotification.java: New file.
* java/res/layout/sdk8_notifications_view.xml: New file holding
substitute notification widget definitions for Android versions
prior to 3.0.
* java/res/values/strings.xml: Remove inadvertently introduced
tag attribute.
* lisp/org/org-clock.el (haiku-notifications-notify): Correct
file name in function declaration.
(android-notifications-notify): New declaration.
(org-show-notification): Use `android-notifications-notify'.
* src/androidselect.c (android_init_emacs_desktop_notification)
(android_notifications_notify_1, Fandroid_notifications_notify):
New functions.
(init_androidselect, syms_of_androidselect): Initialize new
class and define new subr.
Eli Zaretskii [Sun, 20 Aug 2023 08:48:03 +0000 (11:48 +0300)]
; Fix documentation of last change
* lisp/net/eww.el (eww--open-url-in-new-buffer)
(eww-open-in-new-buffer):
* etc/NEWS:
* doc/misc/eww.texi (Basics): Improve the documentation of this
new feature. (Bug#65346)
Po Lu [Sun, 20 Aug 2023 04:44:38 +0000 (12:44 +0800)]
Update Android port
* src/sfnt.c (sfnt_decompose_compound_glyph): New argument
GET_METRICS. Call this function to retrieve glyph metrics used
to compute phantom points when a component glyph's anchor point
is one.
(sfnt_decompose_glyph, sfnt_build_glyph_outline): Plumb
GET_METRICS these two functions.
(sfnt_interpret_shc): Don't shift the provided reference point.
(sfnt_transform_f26dot6): Eschew looping through X and Y if no
offsets are provided.
(sfnt_interpret_compound_glyph_2): Discontinue initializing
phantom points here.
(sfnt_interpret_compound_glyph_1): Do not incorporate phantom
points into the ultimately produced glyph outline. Correctly
provide for phantom childanchor points.
(sfnt_test_get_metrics, main): Update tests.
* src/sfnt.h: Update prototypes.
* src/sfntfont.c (struct sfntfont_get_glyph_outline_dcontext):
New fields `hmtx', `hhea' and `maxp'.
(sfntfont_get_metrics): New function.
(sfntfont_get_glyph_outline): Provide new tables and the new
callback function.
Yuan Fu [Thu, 10 Aug 2023 21:27:29 +0000 (14:27 -0700)]
Support defun navigation for DEFUN in c-ts-mode (bug#64442)
Before this change, beginning/end-of-defun just ignores DEFUN in
c-ts-mode. After this change, beginning/end-of-defun can recognize
DEFUN, but a DEFUN definition is considered two defuns. Eg,
beginning/end-of-defun will stop at (1) (2) and (3) in the following
snippet:
(1)DEFUN ("treesit-node-parser",
Ftreesit_node_parser, Streesit_node_parser,
1, 1, 0,
doc: /* Return the parser to which NODE belongs. */)
(Lisp_Object node)
(2){
CHECK_TS_NODE (node);
return XTS_NODE (node)->parser;
}
(3)
Ideally we want point to only stop at (1) and (3), but that'll be a
lot harder to do.
* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--defun-valid-p): Refactor to take in account of DEFUN body.
(c-ts-mode--emacs-defun-body-p): New function.
(c-ts-base-mode): Add DEFUN and DEFUN body to recognized types.
(c-ts-mode--emacs-defun-at-point): Now that we recognize both parts of
a DEFUN as defun, c-ts-mode--emacs-defun-at-point needs to be updated
to adapt to it.
Ken Brown [Sat, 19 Aug 2023 18:18:57 +0000 (14:18 -0400)]
Skip hanging tests on Cygwin (bug#65325)
* test/lisp/server-tests.el (server-tests/can-create-frames-p):
Define to be nil on Cygwin unless Emacs has at least one of the
features gfilenotify, dbus, or threads. This causes three tests
to be skipped.
* test/src/keyboard-tests.el (keyboard-unread-command-events):
Skip on Cygwin unless Emacs has at least one of the features
gfilenotify, dbus, or threads.
Eli Zaretskii [Sat, 19 Aug 2023 14:01:18 +0000 (17:01 +0300)]
Fix touchpad scrolling on MS-Windows
* src/w32term.c (w32_construct_mouse_wheel): The number of lines
to scroll should always be positive in wheel-scroll events.
Whether to scroll up or down is encoded in the modifiers, which
produce either wheel-up or wheel-down event. (Bug#65070)
* doc/lispref/commands.texi (Misc Events): Clarify the
documentation of 'wheel-up' and 'wheel-down' events.
Stefan Kangas [Sat, 19 Aug 2023 10:25:25 +0000 (12:25 +0200)]
Remove Emacs 24 compat code from reftex
* lisp/textmodes/reftex-index.el (reftex-display-index):
* lisp/textmodes/reftex-toc.el (reftex-toc): Assume that we have
'cursor-intangible-mode', which was added in Emacs 25.
Stefan Kangas [Sat, 19 Aug 2023 10:21:57 +0000 (12:21 +0200)]
Remove XEmacs compat code from reftex
* lisp/textmodes/reftex-toc.el (reftex-toc, reftex-toc-dframe-p)
(reftex-toc-revert, reftex-toc-toggle-dedicated-frame): Delete
XEmacs compat code.
* lisp/textmodes/reftex.el (reftex-window-height): Make into
obsolete function alias of 'window-height'. Update all callers.
(reftex-create-customize-menu): Assume recent version of cus-edit.el.
* lisp/emacs-lisp/package.el (package--dependencies): Extend function
to handle and return package descriptors.
(package-isolate): Add new command.
* etc/NEWS: Announce new command.
Joseph Turner [Sat, 12 Aug 2023 08:40:07 +0000 (01:40 -0700)]
Fix building of VC package manuals with relative org links/includes
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
Ensure that default-default is the docs-directory around
org-export-to-file to ensure that links to relative files work
correctly. (Bug#65243)
Mauro Aranda [Tue, 15 Aug 2023 22:35:39 +0000 (19:35 -0300)]
Specialize default-get for alist widgets (Bug#63290)
* lisp/wid-edit.el (widget-list-default-get)
(widget-alist-default-get): New functions.
(list, alist): Use it.
* test/lisp/cus-edit-tests.el (cus-edit-test-bug63290-option)
(cus-edit-test-bug63290-option-2): New test options.
(cus-edit-test-bug63290): New test.
* test/lisp/wid-edit-tests.el (widget-test-alist-default-value-1)
(widget-test-alist-default-value-2)
(widget-test-alist-default-value-3)
(widget-test-alist-default-value-4): New tests.
Eli Zaretskii [Sat, 19 Aug 2023 07:34:07 +0000 (10:34 +0300)]
Fix behavior of client frames when 'find-alternate-file' is used
* lisp/files.el (find-alternate-file-dont-kill-client): New var.
(find-alternate-file): Bind it to a special value when invoking
kill-buffer-hook.
* lisp/server.el (server-delete-client): If NOFRAME is
'dont-kill-client', don't kill the client and its terminals.
(server-buffer-done): Pass 'find-alternate-file-dont-kill-client'
to 'server-delete-client'. (Bug#65277)
Po Lu [Sat, 19 Aug 2023 05:25:42 +0000 (13:25 +0800)]
Make some file I/O operations more robust on Android
* src/android.h (android_readlinkat): New prototype.
* src/androidvfs.c (struct android_vops): New function pointer
`readlink'.
(unix_vfs_ops, android_unix_readlink, afs_vfs_ops)
(android_afs_readlink, content_vfs_ops, android_content_mkdir)
(android_content_chmod, authority_vfs_ops)
(android_authority_readlink, saf_root_vfs_ops)
(android_saf_root_readlink, saf_tree_vfs_ops)
(android_saf_tree_readlink, saf_file_vfs_ops, saf_new_vfs_ops)
(android_saf_new_readlink, root_vfs_ops): Implement new
`readlink' vops for each vnode type.
(android_readlinkat): New function.
* src/fileio.c (Fcopy_file): Be more flexible about SELinux
errors under Android.
(emacs_readlinkat): Use `android_readlink' when built as
libemacs.so.
Po Lu [Sat, 19 Aug 2023 00:48:20 +0000 (08:48 +0800)]
Disable text conversion within read-char-from-minibuffer
* lisp/subr.el (read-char-from-minibuffer): Disable text
conversion. (bug#65370)
(y-or-n-p): Remove redundant binding of
`override-text-conversion-style', given that read-key already
disables text conversion.
* src/textconv.c (Fset_text_conversion_style): Always reset text
conversion for the selected frame in addition to any displaying
current_buffer.
Eli Zaretskii [Thu, 17 Aug 2023 18:35:20 +0000 (21:35 +0300)]
Fix invocation with --debug-init and changes to debug-ignored-errors
* src/eval.c (syms_of_eval) <debug-ignored-errors>: Mention in the
doc string the caveat with removing errors from the standard value
while invoking Emacs with --debug-init.
* lisp/startup.el (startup--load-user-init-file): If the user's
init files add to the value of 'debug-ignored-errors', make sure
the additions are preserved after restoring the value we reset
during loading the init file, if Emacs was invoked with
"--debug-init". (Bug#65267)
Robert Pluim [Thu, 17 Aug 2023 10:15:44 +0000 (12:15 +0200)]
Escape braces in regexp in make-info-dir
This fixes a build failure on Alpine Linux.
* build-aux/make-info-dir (detexinfo): Escape the braces, since some
awk variants (such as BusyBox's) don't like regexp interval
specifications that aren't numbers. Bug#65323
dannyfreeman [Fri, 11 Aug 2023 20:43:58 +0000 (16:43 -0400)]
Fix jsx font-lock in older tree-sitter-js grammars
* lisp/progmodes/js.el (js--treesit-font-lock-settings): Use
queries that are backwards compatible with
tree-sitter-javascript bb1f97b.
* list/progmodes/js.el
(-jsx--treesit-font-lock-compatibility-bb1f97b): Delete unused
function. (Bug#65234)
Eli Zaretskii [Thu, 17 Aug 2023 07:51:36 +0000 (10:51 +0300)]
Fix cloning 'face-remapping-alist' for indirect buffers
* lisp/face-remap.el (face-remap--copy-face): Remove.
(face-attrs--make-indirect-safe): Use 'copy-tree'. Suggested by
Stefan Monnier <monnier@iro.umontreal.ca>.
Eli Zaretskii [Thu, 17 Aug 2023 07:07:48 +0000 (10:07 +0300)]
Improve documentation of case transfer in replacement commands
* doc/emacs/search.texi (Replacement and Lax Matches):
* src/search.c (Freplace_match):
* lisp/replace.el (query-replace, query-replace-regexp): Clarify
in the doc string and the manual how letter-case is transferred
from the replaced text to the replacement text. (Bug#65347)
Po Lu [Thu, 17 Aug 2023 02:03:49 +0000 (10:03 +0800)]
; Add tasks for the Android port
* etc/PROBLEMS: Improve descriptions of issues with Droid Sans
Mono and Anonymous Pro. Then, bring up the subject of CFF fonts
and how they relate to CJK text.
Po Lu [Thu, 17 Aug 2023 00:45:57 +0000 (08:45 +0800)]
Update Android port
* configure.ac (emacs_cv_tputs_lib): Only circumvent termcap if
Android windowing support is enabled. (bug#65340)
* etc/PROBLEMS: Fix typo in section recouting problems with the
Anonymous Pro font.
* lisp/subr.el (event-start, event-end): Return the mouse
position list tied to touchscreen-begin and end events.
Reported by Stefan Monnier <monnier@iro.umontreal.ca>.
* lisp/version.el (emacs-build-system, emacs-build-time)
(emacs-repository-get-version, emacs-repository-get-branch):
Bypass Android specific code on non-GUI builds running on
Android. (bug#65340)
* lisp/wid-edit.el (widget-event-point): Remove now redundant
code.