Po Lu [Sat, 6 Nov 2021 06:01:56 +0000 (14:01 +0800)]
Make it safe to have non-xwidget views in xwidget-view-list
* src/xwidget.c (define_cursors, offscreen_damage_event): Check
XWIDGET_VIEW_P before XXWIDGET_VIEW.
Po Lu [Sat, 6 Nov 2021 05:58:52 +0000 (13:58 +0800)]
Make xwidgets print nicer
* src/print.c (print_vectorlike): Print xwidgets with ID and widget
pointer, and print xwidget views separately.
Po Lu [Sat, 6 Nov 2021 04:34:41 +0000 (12:34 +0800)]
Fix cursor for new widget views
* src/xwidget.c (Fmake_xwidget): Clear hit result.
(cursor_for_hit): Use integer hit result.
(define_cursors): Set hit result appropriately.
(widget_init_view): Set cursor to the existing hit result.
* src/xwidget.h (struct xwidget): Add hit result field.
Po Lu [Sat, 6 Nov 2021 03:28:40 +0000 (11:28 +0800)]
Add support for cursors in xwidget views
* src/xwidget.c (mouse_target_changed): New function.
(Fmake_xwidget): Attach mouse target changed signal.
(cursor_for_hit, define_cursors, mouse_target_changed): New functions.
(xwidget_init_view): Set default cursor to nontext cursor.
(x_draw_xwidget_glyph_string): Define cursor.
* src/xwidget.h (struct xwidget_view): Add cursor field.
Po Lu [Sat, 6 Nov 2021 02:37:25 +0000 (10:37 +0800)]
Display page titles in xwidget webkit header line
* lisp/xwidget.el (xwidget-webkit--title): New variable.
(xwidget-webkit-callback, xwidget-webkit-mode): Set header line format
and associated variables.
Po Lu [Sat, 6 Nov 2021 01:45:06 +0000 (09:45 +0800)]
Improve detail of load-changed xwidget events
* src/xwidget.c (webkit_view_load_changed_cb): Improve event detail.
* etc/NEWS: Document changes.
* doc/lispref/commands.texi: Document Xwidget events.
* doc/lispref/display.texi (Xwidgets): Add reference to Xwidget events.
Po Lu [Fri, 5 Nov 2021 13:01:12 +0000 (21:01 +0800)]
Make the WebKit inspector available
* etc/NEWS: Document changes.
* src/xwidget.c (find_widget_at_pos)
(find_widget)
(find_widget_cb): New functions.
(struct widget_search_data): New structure.
(Fmake_xwidget): Enable web inspector for WebKit widgets.
(Fxwidget_perform_lispy_event): Use current focus instead of
hard-coded widget.
(xwidget_button_1, xwidget_button, xwidget_motion_or_crossing):
Use window at event position instead of the default widget.
Po Lu [Fri, 5 Nov 2021 11:40:24 +0000 (19:40 +0800)]
Add xwidget-webkit-copy-selection-as-kill to the menu bar
* lisp/xwidget.el: New menu item
`xwidget-webkit-copy-selection-as-kill'.
Po Lu [Fri, 5 Nov 2021 11:32:20 +0000 (19:32 +0800)]
Add new tool-bar items to xwidget-webkit
* etc/images/README: Update copyright information for new images.
* etc/images/connect-to-url.pbm:
* etc/images/connect-to-url.xpm: Import new images from GNOME.
* lisp/xwidget.el (xwidget-webkit-tool-bar-map): New keymap variable.
(xwidget-webkit-mode): Set tool-bar-map to the appropriate map.
Po Lu [Fri, 5 Nov 2021 10:53:50 +0000 (18:53 +0800)]
Add a menu to xwidget-webkit
* lisp/xwidget.el: Add a menu to xwidget-webkit-mode-map.
Po Lu [Fri, 5 Nov 2021 10:34:42 +0000 (18:34 +0800)]
Redisplay xwidget view windows instead of just setting their size
* src/xwidget.c (Fxwidget_resize): Mark windows as needing redisplay
and redisplay instead.
Po Lu [Fri, 5 Nov 2021 09:46:47 +0000 (17:46 +0800)]
Select window when clicking on an xwidget view
* src/xterm.c (handle_one_xevent): Select window when clicking on an
xwidget view.
Po Lu [Fri, 5 Nov 2021 07:27:36 +0000 (15:27 +0800)]
Fix xwidget scrolling
* src/xterm.c (x_scroll_run): Use from_y and height.
Po Lu [Fri, 5 Nov 2021 07:12:32 +0000 (15:12 +0800)]
Allow enabling xwidget-webkit-edit-mode via a binding
* doc/emacs/misc.texi: Document changes.
* lisp/xwidget.el (xwidget-webkit-mode-map): Add shortcut for
xwidget-webkit-edit-mode.
Po Lu [Fri, 5 Nov 2021 06:47:26 +0000 (14:47 +0800)]
Add xwidget-webkit-edit-mode to make using the WebKit browser easier
* doc/emacs/misc.texi: Document changes.
* etc/NEWS: Document recent changes.
* lisp/xwidget.el (xwidget-webkit-pass-command-event): New variable.
* lisp/xwidget.el (xwidget-perform-lispy-event): New function
declaration.
* lisp/xwidget.el (xwidget-webkit-edit-mode): New minor mode.
Po Lu [Fri, 5 Nov 2021 06:34:45 +0000 (14:34 +0800)]
Fix special events in xwidgets
* src/xwidget.c (set_widget_if_text_view): New function.
(Fxwidget_perform_lispy_event): Fix for webkit widgets.
Po Lu [Fri, 5 Nov 2021 02:31:27 +0000 (10:31 +0800)]
Fix drag on xwidget motion events
* src/xwidget.c (xwidget_motion_or_crossing): Set state.
Po Lu [Fri, 5 Nov 2021 02:22:27 +0000 (10:22 +0800)]
Handle crossing events on xwidget windows correctly
* src/xterm.c (handle_one_xevent): Clear help and mouse face
when handling xwidget entry events.
* src/xwidget.c (xwidget_motion_or_crossing): Add device to crossing
events.
(x_draw_xwidget_glyph_string): Add EnterWindowMask and
LeaveWindowMask.
Po Lu [Thu, 4 Nov 2021 10:53:55 +0000 (18:53 +0800)]
Draw offscreen surface
* src/xwidget.c (xv_do_draw): Draw offscreen surface.
Po Lu [Thu, 4 Nov 2021 10:51:28 +0000 (18:51 +0800)]
Implement function for sending events to widgets
* doc/lispref/display.texi (Xwidgets): Document changes.
* src/keyboard.c (lispy_function_keys): Make non-static on X.
* src/keyboard.h (lispy_function_keys): Expose lispy_function_keys on
X.
* src/xterm.c (x_emacs_to_x_modifiers): Export function.
* src/xterm.h (x_emacs_to_x_modifiers): Likewise.
* src/xwidget.c (Fxwidget_perform_lispy_event)
(find_suitable_keyboard): New functions.
(syms_of_xwidget): Define new subr.
Po Lu [Wed, 3 Nov 2021 13:00:20 +0000 (21:00 +0800)]
Use gtk_widget_queue_draw instead of xv_do_draw
* src/xwidget.c (x_draw_xwidget_glyph_string): Call
gtk_widget_queue_draw.
Po Lu [Wed, 3 Nov 2021 12:00:57 +0000 (20:00 +0800)]
Prefer XMoveResizeWindow to XMoveWindow for resizing xwidgets
* src/xwidget.c (x_draw_xwidget_glyph_string): Prefer
XMoveResizeWindow to avoid extra expose events.
Po Lu [Wed, 3 Nov 2021 11:02:59 +0000 (19:02 +0800)]
Allow xwidgets to accept motion and button events
* src/xterm.c (handle_one_xevent): Pass through some events to
xwidgets.
* src/xwidget.c (synthesize_focus_in_event)
(find_suitable_pointer, xwidget_button_1)
(xwidget_button, xwidget_motion_or_crossing): New functions.
(xwidget_view_from_window): Draw offscreen window instead of the
widget.
(x_draw_xwidget_glyph_string): Set appropriate event masks.
* src/xwidget.h (xwidget_button, xwidget_motion_or_crossing): New
functions.
Po Lu [Fri, 29 Oct 2021 11:26:49 +0000 (19:26 +0800)]
Destroy xwidgets when destroying frames
* src/xterm.c (x_free_frame_resources): Make sure to kill xwidget views.
* src/xwidget.c (Fmake_xwidget): Attach damage event signal.
(offscreen_damage_event): Operate on xwidgets and not individual
views.
(xwidget_init_view): Don't attach damage event signal here.
(Fdelete_xwidget_view): Destroy window correctly and stop removing
damage event signal.
(kill_frame_xwidget_views): New function.
* src/xwidget.c (kill_frame_xwidget_views): New function.
Po Lu [Fri, 29 Oct 2021 03:33:06 +0000 (11:33 +0800)]
Enable scrolling optimization for xwidgets
* src/dispextern.h (struct glyph): Store xwidget ID instead of a
reference.
* src/dispnew.c (scrolling_window): Enable scrolling optimization on
xwidget builds.
* src/xdisp.c (fill_xwidget_glyph_string, produce_xwidget_glyph):
Obtain xwidget from ID.
* src/xterm.c (x_scroll_run): Scroll xwidget windows.
* src/xwidget.c (id_to_xwidget_map, xwidget_counter): New xwidget
variables.
(Fmake_xwidget): Assign each xwidget a unique ID, and keep track of
that ID.
(xwidget_from_id): New function.
(syms_of_xwidget): Initialize id_to_xwidget_map.
(xwidget_end_redisplay): Lookup xwidgets via ID.
* src/xwidget.h (struct xwidget): Add ID field.
(xwidget_from_id): New function.
Po Lu [Thu, 28 Oct 2021 13:46:01 +0000 (21:46 +0800)]
Use an X window to display xwidgets on X11
Since Emacs draws using X11 primitives, Emacs drawing operations can
erase the GtkDrawingArea used to draw the offscreen widget, which
leads to unpleasant flickering effects, all of which can be prevented
by creating a native X window and drawing to that instead.
* src/xterm.c (x_window_to_frame): Return xwidget window if
appropriate.
(handle_one_xevent): Handle xwidget expose events.
* src/xwidget.c (x_window_to_xvw_map): New variable.
(xwidget_view_from_window): New function.
(xwidget_show_view, xwidget_hide_view)
(offscreen_damage_event): Move to drawing xwidgets with X windows.
(xv_do_draw)
(xwidget_expose): New function.
(xwidget_osr_draw_cb, xwidget_osr_event_forward)
(xwidget_osr_event_set_embedder): Removed.
(xwidget_init_view): Replace use of GtkDrawingArea with that of an X
window.
(x_draw_xwidget_glyph_string): Prevent xwidget views from constantly
generating expose events, and use an X window instead of a
GtkDrawingArea.
(syms_of_xwidget): Initialize x_window_to_xwv_map.
src/xwidget.h (struct xwidget_view): Replace GTK widgets with
X-related fields.
(xwidget_view_from_window, xwidget_expose): New functions.
Lars Ingebrigtsen [Sun, 7 Nov 2021 01:44:42 +0000 (02:44 +0100)]
Fix pp-emacs-lisp-code for `when' and related
* lisp/emacs-lisp/pp.el (pp--format-definition): Skip edebug specs
we don't understand at all.
Lars Ingebrigtsen [Sun, 7 Nov 2021 01:34:54 +0000 (02:34 +0100)]
Fix html-mode--image-yank-handler prompting
* lisp/textmodes/sgml-mode.el (html-mode--image-yank-handler): Fix
two format statements and rearrange images.
Stefan Kangas [Sat, 6 Nov 2021 23:41:14 +0000 (00:41 +0100)]
Ensure return value of ert-with-temp-directory
* lisp/emacs-lisp/ert-x.el (ert-with-temp-file): Ensure return
value when :directory is t is the directory name.
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests-with-temp-directory): Extend test for the above.
Stefan Kangas [Sat, 6 Nov 2021 22:20:59 +0000 (23:20 +0100)]
Prefer ert-with-temp-(directory|file)
* test/lisp/abbrev-tests.el (read-write-abbrev-file-test)
(read-write-abbrev-file-test-with-props)
(abbrev-edit-save-to-file-test):
* test/lisp/auth-source-tests.el (auth-source-test-netrc-create-secret)
(auth-source-delete):
* test/lisp/autoinsert-tests.el (autoinsert-tests-auto-insert-file):
* test/lisp/bookmark-tests.el (with-bookmark-test-save-load):
* test/lisp/buff-menu-tests.el (buff-menu-24962):
* test/lisp/calendar/icalendar-tests.el (icalendar-tests--do-test-export):
* test/lisp/calendar/todo-mode-tests.el (with-todo-test):
* test/lisp/dired-tests.el
(dired-test-bug27243-01, dired-test-bug27243-02)
(dired-test-bug27243-03, dired-test-bug27631)
(dired-test-bug27968, dired-test-with-temp-dirs):
* test/lisp/dired-x-tests.el (dired-test-bug25942):
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--with-temp-file):
* test/lisp/emacs-lisp/check-declare-tests.el (check-declare-tests-scan)
(check-declare-tests-verify-mismatch):
* test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-with-normal-env):
* test/lisp/emacs-lisp/package-tests.el (with-package-test)
(package-test-signed):
* test/lisp/emacs-lisp/testcover-tests.el (testcover-tests-markup-region)
(testcover-tests-run-test-case):
* test/lisp/emulation/viper-tests.el (viper-test-undo-kmacro):
* test/lisp/epg-tests.el (with-epg-tests):
* test/lisp/eshell/em-hist-tests.el (eshell-write-readonly-history):
* test/lisp/eshell/em-ls-tests.el (em-ls-test-bug27631):
* test/lisp/ffap-tests.el (ffap-tests-25243):
* test/lisp/files-tests.el (files-tests-bug-18141)
(files-tests-read-file-in-~, files-tests-make-directory)
(files-tests-copy-directory, files-tests-executable-find)
(files-tests-dont-rewrite-precious-files)
(files-tests--save-some-buffers):
* test/lisp/ls-lisp-tests.el (ls-lisp-test-bug27631):
* test/lisp/mail/uudecode-tests.el (uudecode-tests-decode-region-internal)
(uudecode-tests-decode-region-external):
* test/lisp/net/browse-url-tests.el (browse-url-tests-delete-temp-file):
* test/lisp/progmodes/elisp-mode-tests.el (xref--case-insensitive):
* test/lisp/progmodes/etags-tests.el (etags-buffer-local-tags-table-list):
* test/lisp/progmodes/flymake-tests.el (ruby-backend):
* test/lisp/progmodes/python-tests.el (python-tests-with-temp-file):
* test/lisp/progmodes/sql-tests.el (with-sql-test-connect-harness):
* test/lisp/saveplace-tests.el (saveplace-test-save-place-to-alist/file)
(saveplace-test-forget-unreadable-files)
(saveplace-test-place-alist-to-file):
* test/lisp/so-long-tests/spelling-tests.el:
* test/lisp/textmodes/reftex-tests.el (reftex-locate-bibliography-files)
(reftex-parse-from-file-test):
* test/lisp/thumbs-tests.el (thumbs-tests-thumbsdir/create-if-missing):
* test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-bug9726)
(vc-bzr-test-bug9781, vc-bzr-test-faulty-bzr-autoloads):
* test/lisp/vc/diff-mode-tests.el (diff-mode-test-ignore-trailing-dashes):
* test/lisp/vc/ediff-ptch-tests.el (ediff-ptch-test-bug26084):
* test/lisp/wdired-tests.el (wdired-test-bug32173-01)
(wdired-test-bug32173-02, wdired-test-symlink-name)
(wdired-test-unfinished-edit-01, wdired-test-bug34915)
(wdired-test-bug39280):
* test/src/buffer-tests.el (test-kill-buffer-auto-save-default):
* test/src/filelock-tests.el (filelock-tests--fixture):
* test/src/inotify-tests.el (inotify-file-watch-simple):
* test/src/undo-tests.el (undo-test-file-modified): Prefer
'ert-with-temp-(directory|file)' to using 'make-temp-file' directly.
In some cases, this is just cleanup, but in several cases this fixes
bugs where an error would have lead to us not cleaning up.
Stefan Kangas [Sat, 6 Nov 2021 20:54:02 +0000 (21:54 +0100)]
Add generated suffix to test temp file names
* lisp/emacs-lisp/ert-x.el
(ert-with-temp-file): Add temp file name suffix based on file name of
caller. Reflow docstring.
(ert--with-temp-file-generate-suffix): New defun.
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests--with-temp-file-generate-suffix): New test.
dickmao [Sun, 7 Nov 2021 00:28:47 +0000 (01:28 +0100)]
Fix byte compilation of package built-ins
* lisp/emacs-lisp/package.el
(package--activate-autoloads-and-load-path):
(package--load-files-for-activation): Remove.
(package--library-stem): New function, because
file-name-sans-extension is insufficient.
(package--reload-previously-loaded): New function.
(package-activate-1): Reload directly.
(package--files-load-history):
(package--list-of-conflicts):
(package--list-loaded-files): Remove
(package-unpack): Adjust call.
* test/lisp/emacs-lisp/package-tests.el (macro-builtin-func): Test.
(macro-builtin-10-and-90): Test.
(package-test-macro-compilation): Test.
(package-test-macro-compilation-gz): Test (bug#49708).
Lars Ingebrigtsen [Sat, 6 Nov 2021 23:45:01 +0000 (00:45 +0100)]
Add new user option eww-url-transformers
* doc/misc/eww.texi (Advanced): Document it.
* lisp/net/eww.el (eww-url-transformers): New user option.
(eww-remove-tracking): New default function.
(eww--transform-url): Helper function.
(eww-follow-link): Use it.
(eww): Ditto.
Lars Ingebrigtsen [Sat, 6 Nov 2021 23:24:13 +0000 (00:24 +0100)]
Expand register-yank-media-handler doc string
* lisp/yank-media.el (register-yank-media-handler): Expand doc string.
Lars Ingebrigtsen [Sat, 6 Nov 2021 23:18:02 +0000 (00:18 +0100)]
Fix yank-media logic when there's several handlers
* lisp/yank-media.el (yank-media): Fix logic when there's several
different handler functions.
Lars Ingebrigtsen [Sat, 6 Nov 2021 23:08:36 +0000 (00:08 +0100)]
Allow yanking images to html-mode
* lisp/net/mailcap.el (mailcap-mime-type-to-extension): Autoload.
* lisp/textmodes/sgml-mode.el (html-mode--image-yank-handler): New
function.
(html-mode): Accept image/*.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:47:41 +0000 (22:47 +0100)]
Fix "Yanking Media" sectioning
* doc/lispref/frames.texi (Yanking Media): Fix sectioning.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:45:05 +0000 (22:45 +0100)]
Support yank-media in html-mode
* lisp/textmodes/sgml-mode.el (html-mode--html-yank-handler): New
function.
(html-mode): Handle text/html.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:44:31 +0000 (22:44 +0100)]
Fix typo in previous yank-media--get-selection change
* lisp/yank-media.el (yank-media--get-selection): Fix typo in
previous change.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:43:22 +0000 (22:43 +0100)]
Fix nul-terminated text/* strings from some programs
* lisp/yank-media.el (yank-media--get-selection): Some programs
nul-terminate text/* strings. Fix that.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:31:06 +0000 (22:31 +0100)]
Make the lambda/closure buttons in `C-h b' say what they do
* lisp/button.el (buttonize): Add a help-echo property.
* lisp/help.el (help--describe-command): Say what the
lambda/closure buttons do.
Lars Ingebrigtsen [Sat, 6 Nov 2021 21:26:46 +0000 (22:26 +0100)]
Add mouse-face to buttonize
* lisp/button.el (buttonize): Add the highlight mouse-face.
Lars Ingebrigtsen [Sat, 6 Nov 2021 20:59:22 +0000 (21:59 +0100)]
Add a framework for yanking media into Emacs
* doc/emacs/killing.texi (Clipboard): Refer to it.
* doc/lispref/frames.texi (Yanking Media): Document the mechanism.
* lisp/yank-media.el: New file.
* lisp/gnus/message.el (message-mode): Register a yank handler for
images.
(message-insert-screenshot): Factor out image code from here...
(message--yank-media-image-handler): ... to here.
Lars Ingebrigtsen [Sat, 6 Nov 2021 20:14:54 +0000 (21:14 +0100)]
Add new function mailcap-mime-type-to-extension
* lisp/net/mailcap.el (mailcap-mime-type-to-extension): Add a new
helper function to do the reverse of `mailcap-file-name-to-mime-type'.
Lars Ingebrigtsen [Sat, 6 Nov 2021 19:40:28 +0000 (20:40 +0100)]
Add a pcase-let example to the manual
* doc/lispref/control.texi (Destructuring with pcase Patterns):
Add a pcase-let example.
Stefan Kangas [Fri, 5 Nov 2021 03:22:12 +0000 (04:22 +0100)]
New user option image-auto-resize-max-scale-percent
* lisp/image-mode.el (image-auto-resize-max-scale-percent): New
user option to limit how much 'fit-window' will scale up an image.
(image--scale-within-limits-p): New function.
(image-toggle-display-image): Respect above new user option.
Stefan Kangas [Fri, 5 Nov 2021 02:24:50 +0000 (03:24 +0100)]
New command image-transform-fit-to-window
* lisp/image-mode.el (image-auto-resize, image-transform-resize):
Add new value 'fit-window', meaning to scale the image up or down
to fit the window. (Bug#)
(image-transform-fit-to-window): New command.
(image-transform-fit-to-height, image-transform-fit-to-width):
Make obsolete in favor of above new command.
(image-mode-map): Bind "s w" to 'image-transform-fit-to-window'.
Move binding for obsolete command 'image-transform-fit-to-width'
to "s i".
(image-mode-map): Add menu entry for
'image-transform-fit-to-window'. Remove menu entries for above
obsolete commands.
* doc/emacs/files.texi (Image Mode): Update documentation.
(image-transform-fit-both): Doc fix.
Lars Ingebrigtsen [Sat, 6 Nov 2021 18:54:16 +0000 (19:54 +0100)]
Add outline-minor-mode-use-buttons doc string caveat
* lisp/outline.el (outline-minor-mode-use-buttons): Note that the
feature is for special mode buffers only (bug#51629).
Lars Ingebrigtsen [Sat, 6 Nov 2021 18:49:07 +0000 (19:49 +0100)]
Make `outline-hide-body' work in `C-h b' buffers
* lisp/outline.el (outline-flag-region): Update buttons on most
outline toggling commands (bug#51629).
(outline--fix-up-all-buttons): Take a region as parameter.
(outline-cycle-buffer): Adjust call.
Stefan Kangas [Sat, 6 Nov 2021 18:37:46 +0000 (19:37 +0100)]
Make substitute-command-keys regexp tests more strict
* test/lisp/help-tests.el (with-substitute-command-keys-test): Make
regexp tests more strict.
Stefan Kangas [Sat, 6 Nov 2021 18:35:31 +0000 (19:35 +0100)]
; * test/lisp/help-tests.el: Fix failing tests after recent change.
Stefan Kangas [Sat, 6 Nov 2021 15:05:02 +0000 (16:05 +0100)]
Replace some macros with ert-with-temp-(file|directory)
* test/lisp/custom-tests.el (custom-tests--with-temp-dir):
* test/lisp/files-tests.el (files-tests--with-temp-file):
* test/lisp/progmodes/project-tests.el
(project-tests--with-temporary-directory):
* test/src/emacs-module-tests.el (module--with-temp-directory):
* test/src/emacs-tests.el (emacs-tests--with-temp-file):
* test/src/lread-tests.el (lread-tests--with-temp-file):
* test/src/process-tests.el (process-tests--with-temp-directory):
Replace macros with 'ert-with-temp-(file|directory)'. Update callers.
Stefan Kangas [Sat, 6 Nov 2021 12:50:46 +0000 (13:50 +0100)]
New convenience macros ert-with-temp-(file|directory)
* lisp/emacs-lisp/ert-x.el
(ert-with-temp-file)
(ert-with-temp-directory): New macros.
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests-with-temp-directory)
ert-x-tests-with-temp-directory/text-signals-error
(ert-x-tests-with-temp-file)
(ert-x-tests-with-temp-file/handle-error)
(ert-x-tests-with-temp-file/prefix-and-suffix-kwarg)
(ert-x-tests-with-temp-file/text-kwarg)
(ert-x-tests-with-temp-file/unknown-kwargs-signals-error): New tests.
F. Jason Park [Sun, 13 Jun 2021 09:15:55 +0000 (02:15 -0700)]
Don't send empty lines for unknown commands in ERC
* lisp/erc/erc.el (erc-cmd-default): prevent excess trailing newlines
from being sent.
* test/lisp/erc/erc-tests.el: Update `erc-process-input-line' test to
check for excess line feeds with unknown commands.
F. Jason Park [Fri, 11 Jun 2021 10:55:07 +0000 (03:55 -0700)]
Deprecate instead of redefine erc-server-reconnecting
* lisp/erc/erc-backend.el (erc-server-reconnecting,
erc--server-reconnecting): obsolete and replace the former with new
internal variant, which carries a simplified meaning.
(erc-server-reconnect-p, erc--server-reconnect-p): Obsolete and
replace the former with an internal function, and change behavior to
disregard `erc-server-reconnecting' when rendering verdict.
(erc-process-sentinel-2): ensure local var `erc--server-reconnecting'
is t when timers are scheduled or firing, and nil otherwise, including
after retries exhausted. This agrees with the straightforward way
`erc-server-reconnecting' has always been used by `erc-cmd-RECONNECT'.
(erc-server-connect): set `erc--server-reconnecting'.
* lisp/erc/erc.el (erc-cmd-RECONNECT): use `erc--server-reconnecting'
instead of `erc-server-reconnecting'.
Eli Zaretskii [Sat, 6 Nov 2021 18:05:02 +0000 (20:05 +0200)]
Fix Emoji-related documentation
* etc/NEWS: Fix wording and spelling.
* doc/emacs/mule.texi (Input Methods): Add index entries and fix
wording.
* admin/notes/unicode: Update instructions for updating Emacs for
the latest Unicode Standard.
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:54:17 +0000 (18:54 +0100)]
Include make Errors in admin/emake
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:52:30 +0000 (18:52 +0100)]
Add an example to the display-supports-face-attributes-p doc string
* src/xfaces.c (Fdisplay_supports_face_attributes_p): Add an example.
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:51:49 +0000 (18:51 +0100)]
Partially revert previous make-separator-line change
* lisp/simple.el (make-separator-line): Use dashes on displays
that don't support underlines (bug#32950).
Eli Zaretskii [Sat, 6 Nov 2021 17:46:19 +0000 (19:46 +0200)]
Fix the build broken by recent commits
* admin/unidata/Makefile.in (${unifiles})
(${unidir}/emoji-labels.el): Fix typos in last commits.
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:27:27 +0000 (18:27 +0100)]
Fix up emoji-labels.el generation incantation
* admin/unidata/Makefile.in (${unidir}/emoji-labels.el): Make
generation more silent.
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:21:05 +0000 (18:21 +0100)]
Make describe-char include emoji combination descriptions
* lisp/descr-text.el (describe-char): Output emoji descriptions.
Lars Ingebrigtsen [Sat, 6 Nov 2021 17:19:35 +0000 (18:19 +0100)]
Add emoji insertion support to Emacs
* .gitignore: Ignore the generated emoji-labels.el file.
* admin/unidata/Makefile.in (${unidir}/emoji-labels.el): Generate
the emoji-labels.el file.
(gen-clean): Delete it.
* admin/unidata/README (https): Note the source for the Unicode
file that has emoji categorisations.
* admin/unidata/emoji-test.txt: Import another Unicode file.
* doc/emacs/mule.texi (Input Methods): Document the new key bindings.
* lisp/international/emoji.el: New file.
* lisp/international/mule-cmds.el (ctl-x-map): Bind the emoji
commands.
Eli Zaretskii [Sat, 6 Nov 2021 17:14:55 +0000 (19:14 +0200)]
Improve latin-2-postfix and latin-2prefix input methods
* lisp/leim/quail/latin-pre.el ("latin-2-prefix"):
* lisp/leim/quail/latin-post.el ("latin-2-postfix"): Add variants
of "`s" and "s," for Romanian. Add key bindings for moving
between variants, when there are more than one. (Bug#51638)
Eli Zaretskii [Sat, 6 Nov 2021 17:13:44 +0000 (19:13 +0200)]
Fix an error in 'highlight-confusing-reorderings'
* lisp/international/mule-cmds.el
(highlight-confusing-reorderings): Don't signal an error when
a confusingly-reordered sequence ends at EOB.
Michael Albinus [Sat, 6 Nov 2021 16:27:16 +0000 (17:27 +0100)]
Merge from origin/emacs-28
5e9b4e70ab Fix dbus-test04-register-method on CentOS (Bug#51369)
d96de23510 * lisp/transient.el: Update to package version v0.3.7-11-g...
7343b0d0e4 ; * etc/NEWS: Native compilation is more picky about missi...
0d6b2b0b9d ; * etc/PROBLEMS: Move entry about LLVM plugin to the righ...
# Conflicts:
# etc/NEWS
Michael Albinus [Sat, 6 Nov 2021 16:25:19 +0000 (17:25 +0100)]
Fix dbus-test04-register-method on CentOS (Bug#51369)
* test/lisp/net/dbus-tests.el (dbus-test04-register-method):
Fix problem on CentOS. (Bug#51369)
Jonas Bernoulli [Sat, 6 Nov 2021 14:36:29 +0000 (15:36 +0100)]
* lisp/transient.el: Update to package version
v0.3.7-11-g7f5520b3.
Eli Zaretskii [Sat, 6 Nov 2021 13:02:57 +0000 (15:02 +0200)]
; * etc/NEWS: Native compilation is more picky about missing dependencies.
Po Lu [Sat, 23 Oct 2021 11:51:31 +0000 (19:51 +0800)]
General improvements to NS port
* src/dispextern.h: Remove some !HAVE_NS conditionals around grab
related code.
* src/frame.c (gui_mouse_grabbed, gui_redo_mouse_highlight): Remove
!HAVE_NS conditionals around code.
* src/nsmenu.m (ns_update_menubar): Prevent recursive calls and enable
shallow updates on GNUstep.
(menuNeedsUpdate): Prevent recursive calls.
(ns_menu_show): Fix mysterious GC-related bug.
(update_frame_tool_bar_1): Work around mysterious toolbar sizing bug
on GNUstep.
* src/nsterm.h (struct ns_output): New field for tracking toolbar
visibility changes.
* src/nsterm.m (frame_set_mouse_pixel_position): Implement for
GNUstep.
(ns_redraw_scroll_bars): Enable for GNUstep.
(ns_clear_frame): Redraw scrollbars on GNUstep.
(ns_update_window_end): New function.
(ns_redisplay_interface): Add ns_update_window_end on GNUstep.
(- keyDown): Remove debug code that doesn't work on GNUstep.
(- mouseDown): Enable grab tracking on NS port.
(- resizeWithOldSuperviewSize): Fix build with NSTRACE.
* src/xdisp.c (note_tab_bar_highlight): Enable some code for NS port.
Po Lu [Sat, 23 Oct 2021 11:44:03 +0000 (19:44 +0800)]
Improve font display on NS port
* src/nsfns.m (Fx_create_frame): Use "fixed" for the default font on
GNUstep.
* src/nsfont.m (LCD_SMOOTHING_MARGIN, ns_escape_name)
(ns_unescape_name, ns_attribute_fvalue)
(STYLE_REF): Remove unused defines and functions.
(struct ns_glyph_layout, enum lgstring_direction).
(enum gs_font_slant, enum gs_font_weight, enum gs_font_width)
(enum gs_specified, struct gs_font_data): New enumerators and
structures.
(ns_font_descs_match_p)
(ns_done_font_data, ns_get_font_data): New functions.
(ns_glyph_metrics): Stop escaping names.
(ns_spec_to_descriptor): Fix font descriptor creation for symbolic
font spec entires.
(ns_descriptor_to_entity): Create entries with the correct symbolic
styles.
(ns_fallback_entity): Fix fallback entity selection.
(ns_findfonts): Use our own font matcher instead of the broken GNUstep
matcher.
(ns_list_family): Remove obsolete comment.
(nsfont_open): Remove obsolete code, comments, and synthItal logic
which doesn't work on GNUstep.
(nsfont_encode_char): Use a type that can fit NSGlyph
(nsfont_draw): Chose correct font, remove obsolete mouse face logic,
obsolete comments, and switch to using glyph-based drawing instead of
character-based drawing.
(ns_font_shape, nsfont_shape): New functions.
(ns_uni_to_glyphs_1): New function.
(ns_uni_to_glyphs): Return glyphs instead of unicode codepoints.
(ns_glyph_metrics): Use NSGlyphs instead of unicode codepoints and fix
left bearing, right bearing, ascent and descent computation.
(struct nsfont_driver): Add shaping capability.
* src/nsterm.h (struct nsfont_info): Use unsigned int for glyph cache.
* src/nsterm.c (ns_focus): Set DPS clipping on GNUstep.
(ns_compute_glyph_string_overhangs): Fix overhang computation by using
xterm code.
(ns_draw_window_cursor): Simplify cursor drawing.
(ns_maybe_dumpglyphs_background): Test for cursor HL and remove
obsolete mouse face logic.
(ns_dumpglyphs_image)
(ns_dumpglyphs_box_or_relief): Rectify for new cursor logic.
(ns_dumpglyphs_stretch): Rectify for new cursor logic and rely on
ns_draw_glyph_string to set focus.
(ns_draw_glyph_string_foreground): Remove mouse face logic.
(ns_draw_glyph_strings): Implement overhangs, remove obsolete
comment, and always focus before dumping glyphs.
(ns_draw_text_decoration): Add condition for DRAW_CURSOR and simplify
color selection.
(ns_define_frame_cursor): Remove nonsensical code (define_frame_cursor
has nothing to do with the text cursor, aka caret).
* src/xdisp.c (draw_glyphs): Enable code for NS port to fix mouse face
cursor display.
* src/macfont.m (get_cgcolor_from_nscolor): New function.
(macfont_draw): Remove obsolete mouse-face code and enable cursor
display.
Eli Zaretskii [Sat, 6 Nov 2021 12:23:02 +0000 (14:23 +0200)]
; * etc/PROBLEMS: Move entry about LLVM plugin to the right section.
Kazuhiro Ito [Thu, 26 Aug 2010 07:35:54 +0000 (07:35 +0000)]
Fix display of BW images on MS-Windows
* src/image.c (convert_mono_to_color_image) [HAVE_NTGUI]: Swap the
fore- and the back-ground colors back to their normal conventions.
(Bug#6918)
Eli Zaretskii [Sat, 6 Nov 2021 10:33:26 +0000 (12:33 +0200)]
Improve detection of suspicious reordering in source code
* src/bidi.c (bidi_find_first_overridden): Detect suspiciously
reordered EN types as well.
* test/src/xdisp-tests.el
(xdisp-tests--find-directional-overrides-case-1): Rename from
'xdisp-tests--find-directional-overrides'.
(xdisp-tests--find-directional-overrides-case-2): New test.
Eli Zaretskii [Sat, 6 Nov 2021 09:38:08 +0000 (11:38 +0200)]
; * etc/NEWS: Fix a typo.
Eli Zaretskii [Sat, 6 Nov 2021 09:23:39 +0000 (11:23 +0200)]
; * etc/NEWS.28: Merge recent changes from emacs-28 branch.
Eli Zaretskii [Sat, 6 Nov 2021 09:21:43 +0000 (11:21 +0200)]
Merge from origin/emacs-28
9bdb1d0 ; * etc/PROBLEMS: Describe a crash in xwidgets due to Bubblew...
550887c ; * etc/PROBLEMS: Rearrange and update the section about cras...
c2e3cd6 Clarify "text area of a window" in the documentation
4e7e78d Improve docstring of kmacro-set-format
Eli Zaretskii [Sat, 6 Nov 2021 09:21:41 +0000 (11:21 +0200)]
; Merge from origin/emacs-28
The following commit was skipped:
d8c9a9d Revert "* lisp/wid-edit.el (widget-field): Add subtle border ...
Eli Zaretskii [Sat, 6 Nov 2021 09:21:39 +0000 (11:21 +0200)]
Merge from origin/emacs-28
# Conflicts:
# etc/NEWS
Eli Zaretskii [Sat, 6 Nov 2021 09:21:08 +0000 (11:21 +0200)]
; Merge from origin/emacs-28
The following commits were skipped:
b1885ac ; * etc/NEWS: slightly more careful wording
6ee929c Use current face foreground for SVG icons in customize
82529b9 ; * etc/NEWS: Improve wording of a recently changed entry.
e9c7a49 ; * etc/NEWS: Improve NEWS entry for Image-Dired.
2de7be4 ; * etc/NEWS: Various fixes.
Eli Zaretskii [Sat, 6 Nov 2021 09:21:07 +0000 (11:21 +0200)]
Merge from origin/emacs-28
b5ccad3 * doc/emacs/building.texi (Compilation Mode): Add next-error-...
Eli Zaretskii [Sat, 6 Nov 2021 08:49:54 +0000 (10:49 +0200)]
; * etc/PROBLEMS: Describe a crash in xwidgets due to Bubblewrap.
Eli Zaretskii [Sat, 6 Nov 2021 08:45:58 +0000 (10:45 +0200)]
; * etc/PROBLEMS: Rearrange and update the section about crashes.
Eli Zaretskii [Sat, 6 Nov 2021 06:59:09 +0000 (08:59 +0200)]
Clarify "text area of a window" in the documentation
* src/keyboard.c (Fposn_at_x_y): Clarify that the Y coordinate
includes the header-line and the tab-line. (Bug#51590)
* doc/lispref/windows.texi (Window Sizes, Splitting Windows)
(Textual Scrolling, Coordinates and Windows): Fix/remove improper
or confusing uses of "text area" of a window.
Lars Ingebrigtsen [Sat, 6 Nov 2021 05:26:57 +0000 (06:26 +0100)]
Inhibit isearching over message-insert-screenshot data
* lisp/gnus/message.el (message-insert-screenshot): Inhibit
isearch over the image data.
Stefan Kangas [Sat, 6 Nov 2021 04:37:08 +0000 (05:37 +0100)]
Improve docstring of kmacro-set-format
* lisp/kmacro.el (kmacro-set-format): Improve docstring.
(kmacro-insert-counter, kmacro-display-counter)
(kmacro-set-counter, kmacro-add-counter): Add cross-references
to the info manual.
Lars Ingebrigtsen [Sat, 6 Nov 2021 04:22:26 +0000 (05:22 +0100)]
Update help-tests after separator line changes
Lars Ingebrigtsen [Sat, 6 Nov 2021 04:18:32 +0000 (05:18 +0100)]
Allow 'insert-image' to inhibit isearches or not
* doc/lispref/display.texi (Showing Images): Mention it.
* lisp/image.el (insert-image): Take an optional parameter to
inhibit isearch of the STRING argument.
Lars Ingebrigtsen [Sat, 6 Nov 2021 03:59:05 +0000 (04:59 +0100)]
Introduce a new 'inhibit-isearch' text property
* doc/lispref/text.texi (Special Properties): Mention it.
* lisp/image.el (insert-image): Make `C-s' skip over the image data.
* lisp/isearch.el (isearch--search-skip-inhibited): New function.
(isearch-search-string): Use it.
(isearch--invisible-p): New function.
(isearch-range-invisible): Use it.
Lars Ingebrigtsen [Sat, 6 Nov 2021 02:58:43 +0000 (03:58 +0100)]
Re-rename the minibuffer heading
* lisp/minibuffer.el: There's more here than completion functions
(bug#49844).
Lars Ingebrigtsen [Sat, 6 Nov 2021 02:41:11 +0000 (03:41 +0100)]
Correct minibuffer.el heading
* lisp/minibuffer.el: There's more here than completion functions
(bug#49844).
Lars Ingebrigtsen [Sat, 6 Nov 2021 02:31:51 +0000 (03:31 +0100)]
Use underline on non-graphical terminals in make-separator-line
* lisp/simple.el (separator-line):
(make-separator-line): Use an underline on terminals (bug#32950).
F. Jason Park [Sat, 6 Nov 2021 02:15:24 +0000 (03:15 +0100)]
Normalize usage of variable erc-server-reconnecting
* lisp/erc/erc-backend.el (erc-server-reconnecting-p):
Don't consider erc-server-reconnecting when rendering verdict.
(erc-process-sentinel-2): ensure local variable
erc-server-reconnecting is t when timers are scheduled or running and
trying to reconnect, and nil otherwise, including after no retries
remain. Previously, its use and meaning in erc-backend were convoluted
and conflicted with its use in erc-cmd-RECONNECT (bug#50007).
F. Jason Park [Sat, 6 Nov 2021 02:09:43 +0000 (03:09 +0100)]
Don't send empty lines for implicit targets in ERC
* erc.el (erc-send-input-line): Previously, any line typed into a
query or channel buffer without an explicit user-command
handler (meaning most lines), would be sent twice because a trailing
newline (linefeed) would be appended. This has been verified by
checking IRCd server logs. IRCds won't return an error upon receiving
an empty message, but they also won't forward them to channel
subscribers and DM pals.
* erc-tests.el: Add test for erc-process-input-line, which also
indirectly tests erc-send-input-line. It also tests the command
lookup and dispatch facility (bug#50008).
Lars Ingebrigtsen [Sat, 6 Nov 2021 01:20:06 +0000 (02:20 +0100)]
Remove messaging in pp-display-expression.
* lisp/emacs-lisp/pp.el (pp-display-expression): Remove confusing
message -- we don't usually say that we've popped up a new buffer when
we do so.
Lars Ingebrigtsen [Sat, 6 Nov 2021 00:54:25 +0000 (01:54 +0100)]
Allow getting verbose results on erts 'C-u C-c C-c'
* lisp/progmodes/erts-mode.el (erts-run-test): Allow getting a
diff buffer of the differences with `C-u C-c C-c'.
Jim Porter [Sat, 6 Nov 2021 00:21:35 +0000 (01:21 +0100)]
Improve behavior of 'electric-pair-mode' in 'cc-mode'
* lisp/progmodes/cc-mode.el (c-electric-pair-inhibit-predicate):
Inhibit insertion of paired quote in fewer cases.
* test/lisp/electric-tests.el (define-electric-pair-test):
Add 'c-mode' to list of modes to test by default (bug#50538).
This ensures that quotes are paired correctly within comments, allows for
insertion of quote pairs immediately before another quote, and allows
inserting quote pairs within a string (thus splitting the string in two).
Manuel Giraud [Sat, 6 Nov 2021 00:13:49 +0000 (01:13 +0100)]
Make 'C-x v v' on an unregistered file use the most specific backend
* lisp/vc/vc.el (vc-next-action): Mention this.
* lisp/vc/vc.el (vc-backend-for-registration): Choose the most
specific backend (bug#50572).
Lars Ingebrigtsen [Fri, 5 Nov 2021 23:17:18 +0000 (00:17 +0100)]
Tweak `eww' new-buffer parameters
* lisp/net/eww.el (eww): Don't require that the function be called
with 4 to open a new buffer (bug#51613).
Daniel Martín [Fri, 5 Nov 2021 22:24:27 +0000 (23:24 +0100)]
Fix GNUstep build (ns_compute_glyph_string_overhangs)
* src/nsterm.m (ns_compute_glyph_string_overhangs): Declare the font
variable so that it's in scope for the GNUstep code.