* configure.ac: Add an option to use XInput 2 if available.
* src/Makefile.in (XINPUT_LIBS, XINPUT_CFLAGS): New variables.
(EMACS_CFLAGS): Add Xinput CFLAGS.
(LIBES): Add XInput libs.
* src/xmenu.c (popup_activated_flag): Expose flag if
XInput 2 is available.
* src/xfns.c (x_window): Set XInput 2 event mask.
(setup_xi_event_mask): New function.
(syms_of_xfns): Provide XInput 2 feature.
* src/xterm.c (x_detect_focus_change): Handle XInput 2
GenericEvents.
(handle_one_xevent): Handle XInput 2 events.
(x_term_init): Ask the server for XInput 2 support and set
xkb_desc if available.
(x_delete_terminal): Free XKB kb desc if it exists, and free
XI2 devices if they exist.
(xi_grab_or_ungrab_device)
(xi_reset_scroll_valuators_for_device_id)
(x_free_xi_devices, x_init_master_valuators): New functions.
(x_get_scroll_valuator_delta): New function.
(init_xterm): Don't tell GTK to only use Core Input when built
with XInput 2 support.
* src/xterm.h (struct x_display_info): Add fields for XKB
and XI2 support.
* src/gtkutil.c (xg_event_is_for_menubar): Handle
XIDeviceEvents.
(xg_is_menu_window): New function.
(xg_event_is_for_scrollbar): Handle XIDeviceEvents.
* etc/NEWS: Document changes.
* lisp/mwheel.el (mouse-wheel-down-alternate-event)
(mouse-wheel-up-alternate-event)
(mouse-wheel-left-alternate-event)
(mouse-wheel-right-alternate-event): New user options.
(mouse-wheel-text-scale)
(mwheel-scroll): Test for alternate events.
(mouse-wheel--setup-bindings): Set up bindings for alternate
buttons.
* lisp/xwidget.el (xwidget-webkit-cookie-file): Don't use "path"
for file names in the doc string. Improve wording and markup of
the doc string.
* src/xwidget.c (Fxwidget_webkit_set_cookie_storage_file):
* doc/lispref/display.texi (Xwidgets): Don't use "path" for file
names.
* etc/NEWS: Improve the wording of the entry about
'xwidget-webkit-cookie-file'.
* doc/lispref/display.texi (Xwidgets): Document new function.
* etc/NEWS: Announce `xwidget-webkit-cookie-file' and
`xwidget-webkit-set-cookie-storage-file'.
* lisp/xwidget.el (xwidget-webkit-cookie-file): New user
option.
(xwidget-webkit-new-session): Set cookie storage file.
* src/xwidget.c (Fmake_xwidget): Create new context for
each unrelated widget.
(Fxwidget_webkit_set_cookie_storage_file): New function.
(syms_of_xwidget): Define new subr.
* doc/lispref/display.texi (Xwidgets): Document new function.
* etc/NEWS: Announce new function.
* src/xwidget.c (Fxwidget_webkit_estimated_load_progress): New
function.
(syms_of_xwidget): Define new subr.
* doc/misc/modus-themes.org (File): Use new version and add release
date.
(How do the themes look like, Learn about the latest changes): Update
link to new URL.
(Enable and load): Update text of internal reference.
(Sample configuration for use-package): Add sample configuration
without the 'use-package' infrastructure.
(Differences between loading and enabling): Minor rewordings.
(Customization Options): Update sample code to cover latest changes.
(Option for inhibiting theme reload)
(Option for color-coding success state (deuteranopia))
(Option for more bold constructs)
(Option for more italic constructs)
(Option for syntax highlighting)
(Option for links)
(Option for command prompt styles)
(Option for mode line presentation)
(Option for accented background in tab interfaces)
(Option for completion framework aesthetics)
(Option for mail citations)
(Option for fringe visibility)
(Option for language checkers)
(Option for line highlighting (hl-line-mode))
(Option for line numbers (display-line-numbers-mode))
(Option for parenthesis matching (show-paren-mode))
(Option for active region)
(Option for diff buffer looks)
(Option for org-mode block styles)
(Option for Org agenda constructs)
(Option for scaled headings)
(Control the scale of headings)
(Option for variable-pitch font in UI elements)
(Option for variable-pitch font in headings): Write brief description,
document the type of the user option, and make any other relevant
adjustments.
(Option for font mixing): Document new 'modus-themes-mixed-fonts' user
option, which supersedes the old 'modus-themes-no-mixed-fonts'.
(Option for mode line padding): Document new user option
'modus-themes-mode-line-padding'.
(Option for language checkers): Include new available property for the
user option 'modus-themes-lang-checkers'. Reword the rest of the
entry.
(Option for intense markup in Org and others): Describe new boolean
option 'modus-themes-intense-markup'.
(Option for Org agenda constructs): Include new available property for
the 'event' key in the alist 'modus-themes-org-agenda'.
(Option for the headings' overall style): Describe the new style of
explicitly specifying an optional font weight other than the implied
bold.
(Font configurations for Org and others (DIY))
(Configure bold and italic faces (DIY)): Reword and clarify some
statements.
(Decrease mode line height (DIY)): Add new Do-It-Yourself section on
tweaking the mode line's :box attribute.
(Full support for packages or face groups): Include new packages.
(Acknowledgements): Update list of contributors to code, user
feedback, etc. Does not affect the status of copyright assignment.
(Meta): Update URLs to protesilaos.com (my website).
* etc/themes/modus-themes.el (modus-themes-variable-pitch)
(modus-themes-fixed-pitch, modus-themes-no-mixed-fonts): Reference the
new 'modus-themes-mixed-fonts' user option.
(modus-themes--headings-choice): Include new font weight styles.
(modus-themes-headings): Document the new feature of accepting an
explicit font weight.
(modus-themes-org-agenda): Document the refinements to the 'event' key
of the alist and the new 'varied' property it accepts.
(modus-themes-lang-checkers): Describe the new 'faint' property.
(modus-themes-mode-line-padding): Include new user option.
(modus-themes-intense-hl-line): Remove old-deprecated user option.
(modus-themes-intense-markup): Add new option.
(modus-themes-success-deuteranopia): Update doc string.
(modus-themes--fixed-pitch): Work with 'modus-themes-mixed-fonts'.
(modus-themes--lang-check): Update internal function to add the
'faint' property of 'modus-themes-lang-checkers'.
(modus-themes--markup): Add helper function.
(modus-themes--heading-weights): Private variable with available font
weights.
(modus-themes--heading-weight): New helper function to pick the
desired font weight.
(modus-themes--heading): Update helper function to implement the
aforementioned change to 'modus-themes-headings'.
(modus-themes--agenda-event): Update helper function to apply the new
styles of 'modus-themes-org-agenda'.
(modus-themes--mode-line-padding): Add helper function for
'modus-themes-mode-line-padding'.
(modus-themes--mode-line-attrs): Minor refinements.
(modus-themes-load-operandi, modus-themes-load-vivendi): Make these
functions interactive.
(modus-themes-faces): Update faces.
* etc/themes/modus-operandi-theme.el: Bump version number.
* etc/themes/modus-vivendi-theme.el: Same.
* * *
A detailed change log entry is available here:
<https://protesilaos.com/codelog/2021-11-18-modus-themes-1-7-0/>.
Make `ert-deftest` fail with an error (in batch mode only) if an
existing test is redefined, because that is an easy mistake to make
and which leads to a test being discarded silently.
lisp/emacs-lisp/ert.el (ert-set-test, ert-deftest): Add check.
etc/NEWS: Announce.
* doc/emacs/misc.texi (Embedded WebKit Widgets)
* etc/NEWS: Document `xwidget-webkit-browse-history'.
* lisp/xwidget.el (xwidget-webkit-mode-map): Bind "H" to
xwidget-webkit-browse-history.
(xwidget-webkit-import-widget): Set last session buffer correctly.
(xwidget-webkit-browse-history): New command.
(xwidget-webkit-history--session): New variable.
(xwidget-webkit-history--insert-item)
(xwidget-webkit-history-select-item)
(xwidget-webkit-history-reload): New functions.
(xwidget-webkit-history-mode): New major mode.
* lwlib/xlwmenu.h (XtNborderThickness, XtCBorderThickness): New X
resource name.
* lwlib/xlwmenuP.h (XlwMenuPart): New border_thickness field.
* lwlib/xlwmenu.c (xlwMenuResources): Access the new resource.
(draw_shadow_rectangle): Use the new resource value.
* doc/emacs/xresources.texi (Lucid Resources): Document the new
resource (bug#51867).
* lisp/emacs-lisp/ert.el (ert-batch-print-length)
(ert-batch-print-level,.ert-batch-backtrace-line-length)
(ert-batch-test, ert-run-tests-interactively): Added the three
variables, bound them to these settings when formatting batch
test results including backtraces. Removed the optional
parameters output-buffer & message-fn from
ert-run-tests-interactively.
* test/lisp/emacs-lisp/ert-tests.el
(ert-test-run-tests-interactively, ert-test-run-tests-batch): use
cl-letf to capture output, new tests resp.
* test/lisp/ert-x-tests.el (ert-test-run-tests-interactively-2):
Changed to use cl-letf to capture output instead of using
message-fn.
* lisp/emacs-lisp/backtrace.el (backtrace--line-length-or-nil)
(backtrace--print-func-and-args): Fixed a bug when setting
backtrace-line-length to nil by adding a new function to check
for that case & having backtrace--print-func-and-args use it.
* doc/misc/ert.texi: document the new variables & their usage
(bug#51037).
* lisp/keymap.el: New file with all the new keymap-* functions.
* lisp/loadup.el ("keymap"): Load.
* lisp/subr.el (kbd): Refactor out all the code to key-parse.
(define-key-after, keyboard-translate, global-set-key)
(local-set-key, global-unset-key, local-unset-key)
(local-key-binding, global-key-binding)
(substitute-key-definition): Note in doc strings that these are
legacy functions.
(define-keymap--define): Use keymap-set.
* lisp/emacs-lisp/byte-opt.el: Remove the optimizations for
defvar-keymap and define-keymap since the macros now only
understand the kbd syntax.
* lisp/emacs-lisp/bytecomp.el (byte-compile-define-keymap)
(byte-compile-define-keymap--define): Warn about invalid key
definitions in all keymap-* functions.
* lisp/emacs-lisp/shortdoc.el (keymaps): Add shortdocs form
keymap* functions.
* src/keymap.c (possibly_translate_key_sequence): Adjust callers
to key-valid-p and key-parse.
(syms_of_keymap): Adjust defs.
* lisp/image-dired.el
(image-dired-slideshow-delay): New defcustom.
(image-dired--slideshow-initial): New defvar.
(image-dired-slideshow-start): Don't show any prompts when starting a
slideshow, unless user gave a negative prefix argument. Use the value
of the above new defcustom as the default delay.
(image-dired-slideshow-stop): Don't count number of images. Instead,
continue the slideshow until the next command.
(image-dired-slideshow-step): Use the correct buffer.
(image-dired-slideshow-count, image-dired-slideshow-times): Make
obsolete.
(image-dired--slideshow-timer): Rename from
'image-dired-slideshow-timer'. Make the old name into an obsolete
variable alias.
(image-dired-display-image-mode-map)
(image-dired-thumbnail-mode-map): Bind 'image-dired-slideshow-start'
to "S".
(image-dired-thumbnail-mode-menu): Add 'image-dired-slideshow-start'.
Previously, each function in 'tramp-foreign-file-name-handler-alist'
would call 'tramp-dissect-file-name', resulting in it being called
several times whenever 'tramp-find-foreign-file-name-handler' was
called. Now, functions take the dissected file name to avoid this
duplicated effort. (Bug#51699)
* etc/NEWS: Announce this change.
* lisp/net/tramp-adb.el (tramp-adb-file-name-p):
* lisp/net/tramp-ftp.el (tramp-ftp-file-name-p):
* lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-p):
* lisp/net/tramp-rclone.el (tramp-rclone-file-name-p):
* lisp/net/tramp-smb.el (tramp-smb-file-name-p):
* lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-p):
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-p):
Accept dissected file names.
* lisp/net/tramp.el (tramp-ensure-dissected-file-name): New function.
(tramp-find-foreign-file-name-handler): Pass dissected file name to
functions.
(tramp-connectable-p): Use 'tramp-ensure-dissected-file-name'.
* doc/emacs/misc.texi (Emacs Server): Document the new function.
Also mention that an Emacs server can be started with emacsclient.
* etc/NEWS: Describe the new function (bug#51377).
* lisp/server.el (server-stop-automatically): New function.
(server-stop-automatically): New auxiliary variable.
(server-stop-automatically--maybe-kill-emacs)
(server-stop-automatically--handle-delete-frame): New auxiliary
functions.
(server-save-buffers-kill-terminal): Call the new auxiliary
function when necessary.
* doc/lispref/display.texi (Xwidgets): Document new function.
* etc/NEWS: Announce new function.
* src/xwidget.c (Fxwidget_webkit_load_html): New function.
(syms_of_xwidget): Define new subr.
* doc/lispref/files.texi (File Name Components): Document it.
* lisp/files.el (file-name-split): New function (bug#50572).
* lisp/emacs-lisp/shortdoc.el (file-name): Mention it.
* doc/misc/eww.texi (Advanced): Document it.
* lisp/net/shr.el (shr-use-xwidgets-for-media): New user option.
(shr-tag-video): Use xwidgets to display <video> elements.
* lisp/xwidget.el (xwidget-webkit): New customization group.
(xwidget-webkit-buffer-name-prefix): New user option.
(xwidget-webkit-callback): with-current-buffer only after get title,
which can limit buffer-name change in mode-line.
(xwidget-webkit-new-session, xwidget-webkit-import-widget): Use
current buffer to generate a temp xwidget-webkit buffer.