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

151515 commits

Author SHA1 Message Date
Po Lu
8729ae29d8 Add xwidget-webkit-copy-selection-as-kill to the menu bar
* lisp/xwidget.el: New menu item
`xwidget-webkit-copy-selection-as-kill'.
2021-11-07 02:59:41 +01:00
Po Lu
cd7158edd3 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.
2021-11-07 02:59:41 +01:00
Po Lu
d97718c87c Add a menu to xwidget-webkit
* lisp/xwidget.el: Add a menu to xwidget-webkit-mode-map.
2021-11-07 02:59:41 +01:00
Po Lu
32ec485e5c Redisplay xwidget view windows instead of just setting their size
* src/xwidget.c (Fxwidget_resize): Mark windows as needing redisplay
and redisplay instead.
2021-11-07 02:59:40 +01:00
Po Lu
49ed706683 Select window when clicking on an xwidget view
* src/xterm.c (handle_one_xevent): Select window when clicking on an
xwidget view.
2021-11-07 02:59:40 +01:00
Po Lu
650e5e8e92 Fix xwidget scrolling
* src/xterm.c (x_scroll_run): Use from_y and height.
2021-11-07 02:59:40 +01:00
Po Lu
8ddeebbe0c 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.
2021-11-07 02:59:40 +01:00
Po Lu
6ed7454f17 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.
2021-11-07 02:59:40 +01:00
Po Lu
b48a89fd2e Fix special events in xwidgets
* src/xwidget.c (set_widget_if_text_view): New function.
(Fxwidget_perform_lispy_event): Fix for webkit widgets.
2021-11-07 02:59:40 +01:00
Po Lu
32b9df6d21 Fix drag on xwidget motion events
* src/xwidget.c (xwidget_motion_or_crossing): Set state.
2021-11-07 02:59:40 +01:00
Po Lu
3e640399d8 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.
2021-11-07 02:59:40 +01:00
Po Lu
e111a5f3a0 Draw offscreen surface
* src/xwidget.c (xv_do_draw): Draw offscreen surface.
2021-11-07 02:59:40 +01:00
Po Lu
b39f1f158b 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.
2021-11-07 02:59:40 +01:00
Po Lu
c9c1b436ae Use gtk_widget_queue_draw instead of xv_do_draw
* src/xwidget.c (x_draw_xwidget_glyph_string): Call
gtk_widget_queue_draw.
2021-11-07 02:59:40 +01:00
Po Lu
1e16fc2634 Prefer XMoveResizeWindow to XMoveWindow for resizing xwidgets
* src/xwidget.c (x_draw_xwidget_glyph_string): Prefer
XMoveResizeWindow to avoid extra expose events.
2021-11-07 02:59:40 +01:00
Po Lu
f52f772530 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.
2021-11-07 02:59:40 +01:00
Po Lu
9c9e15a018 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.
2021-11-07 02:59:39 +01:00
Po Lu
5c387ad437 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.
2021-11-07 02:59:39 +01:00
Po Lu
61d049aaff 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.
2021-11-07 02:59:39 +01:00
Lars Ingebrigtsen
d69b5a9caa 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.
2021-11-07 02:44:42 +01:00
Lars Ingebrigtsen
6a546a2486 Fix html-mode--image-yank-handler prompting
* lisp/textmodes/sgml-mode.el (html-mode--image-yank-handler): Fix
two format statements and rearrange images.
2021-11-07 02:35:00 +01:00
Stefan Kangas
0cac4598a7 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.
2021-11-07 01:54:31 +01:00
Stefan Kangas
385741fae2 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.
2021-11-07 01:54:31 +01:00
Stefan Kangas
5dd27fef58 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.
2021-11-07 01:54:30 +01:00
dickmao
9dfd945a2c 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).
2021-11-07 01:28:47 +01:00
Lars Ingebrigtsen
55fa6a2655 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.
2021-11-07 00:45:01 +01:00
Lars Ingebrigtsen
9d54b1222c Expand register-yank-media-handler doc string
* lisp/yank-media.el (register-yank-media-handler): Expand doc string.
2021-11-07 00:24:13 +01:00
Lars Ingebrigtsen
cadf325575 Fix yank-media logic when there's several handlers
* lisp/yank-media.el (yank-media): Fix logic when there's several
different handler functions.
2021-11-07 00:18:02 +01:00
Lars Ingebrigtsen
465cb1fff1 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/*.
2021-11-07 00:08:36 +01:00
Lars Ingebrigtsen
0804b61f82 Fix "Yanking Media" sectioning
* doc/lispref/frames.texi (Yanking Media): Fix sectioning.
2021-11-06 22:47:41 +01:00
Lars Ingebrigtsen
bb495329e7 Support yank-media in html-mode
* lisp/textmodes/sgml-mode.el (html-mode--html-yank-handler): New
function.
(html-mode): Handle text/html.
2021-11-06 22:45:05 +01:00
Lars Ingebrigtsen
14a5ad139c Fix typo in previous yank-media--get-selection change
* lisp/yank-media.el (yank-media--get-selection): Fix typo in
previous change.
2021-11-06 22:44:31 +01:00
Lars Ingebrigtsen
973f0aa559 Fix nul-terminated text/* strings from some programs
* lisp/yank-media.el (yank-media--get-selection): Some programs
nul-terminate text/* strings.  Fix that.
2021-11-06 22:43:22 +01:00
Lars Ingebrigtsen
de06e05395 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.
2021-11-06 22:31:06 +01:00
Lars Ingebrigtsen
b2e9a61bcd Add mouse-face to buttonize
* lisp/button.el (buttonize): Add the highlight mouse-face.
2021-11-06 22:26:46 +01:00
Lars Ingebrigtsen
48ca3c99c8 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.
2021-11-06 21:59:27 +01:00
Lars Ingebrigtsen
5a4f98b0b6 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'.
2021-11-06 21:59:27 +01:00
Lars Ingebrigtsen
a43ec2e7a3 Add a pcase-let example to the manual
* doc/lispref/control.texi (Destructuring with pcase Patterns):
Add a pcase-let example.
2021-11-06 21:59:27 +01:00
Stefan Kangas
569d7f6a73 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.
2021-11-06 20:45:37 +01:00
Stefan Kangas
fd141116f6 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.
2021-11-06 20:45:37 +01:00
Lars Ingebrigtsen
d648e0c6f9 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).
2021-11-06 19:54:16 +01:00
Lars Ingebrigtsen
c04ac61a7c 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.
2021-11-06 19:49:11 +01:00
Stefan Kangas
2893ea4e4c Make substitute-command-keys regexp tests more strict
* test/lisp/help-tests.el (with-substitute-command-keys-test): Make
regexp tests more strict.
2021-11-06 19:39:46 +01:00
Stefan Kangas
b8b0e529a8 ; * test/lisp/help-tests.el: Fix failing tests after recent change. 2021-11-06 19:35:31 +01:00
Stefan Kangas
83422370c8 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.
2021-11-06 19:16:05 +01:00
Stefan Kangas
bf2e35c5d2 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.
2021-11-06 19:16:05 +01:00
F. Jason Park
1b1d387b96 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.
2021-11-06 19:13:35 +01:00
F. Jason Park
dedab1c30d 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'.
2021-11-06 19:13:35 +01:00
Eli Zaretskii
0b8f3c75fc 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.
2021-11-06 20:05:02 +02:00
Lars Ingebrigtsen
33ad2bfa95 Include make Errors in admin/emake 2021-11-06 18:55:34 +01:00