Commit graph

6073 commits

Author SHA1 Message Date
Stefan Kangas
ddb797cf4c Clean up major mode check in package-menu-mode
* lisp/emacs-lisp/package.el (package--ensure-package-menu-mode):
Extract function to warn about incorrect major mode...
(package-menu-toggle-hiding, package-menu-refresh)
(package-menu-execute): ...from here.
(package-menu--mark-upgrades-1): And here, but move call...
(package-menu-mark-upgrades): ...here instead.
(package-menu-hide-package, package-menu-mark-delete)
(package-menu-mark-install, package-menu-mark-unmark)
(package-menu-quick-help, package-menu-get-status)
(package-menu-filter-by-keyword, package-menu-filter-by-name)
(package-menu-clear-filter): Add call to new function.  (Bug#37891)
2019-11-07 04:12:01 +01:00
Stefan Kangas
d30f5e7eee Fix problem with my last commit in package.el
* lisp/emacs-lisp/package.el (package-menu--refresh-archives): Rename
from duplicated name package-menu--refresh.  (Bug#38084)
(package-menu-mode, list-packages): Use new name.
2019-11-06 15:01:37 +01:00
Stefan Kangas
0661a39d1b Avoid changing value of defcustom package-enable-at-startup
* lisp/emacs-lisp/package.el (package--activated): New variable to
avoid changing value of defcustom 'package-enable-at-startup'.
(package-initialize): Don't set 'package-enable-at-startup'.
(package-initialize, package-activate-all): Set 'package--activated'
instead of 'package-enable-at-startup'.
(package--initialized): Add doc string.

* lisp/startup.el (command-line): Check if 'package--activated' is
non-nil before activating packages.

* doc/lispref/package.texi (Packaging Basics): Update docs.
2019-11-06 01:19:23 +01:00
Stefan Kangas
0c293f1520 Make 'g' refresh package data in package menu
* lisp/emacs-lisp/package.el (package-menu--refresh): Rename from
'package-menu-refresh', make internal and non-interactive.
(package-menu-mode-map, package-menu-mode-menu, package-menu-mode)
(list-packages): Use the above.  (Bug#35504)
(package-menu-refresh): Redefine as obsolete fuction alias for
'revert-buffer'.
* doc/emacs/package.texi (Package Menu): Document it.
* etc/NEWS: Announce it.
2019-11-06 00:58:57 +01:00
Stefan Kangas
d76bc06abc Declare unused macro package--push obsolete
* lisp/emacs-lisp/package.el (package--push): Declare obsolete.
2019-11-05 15:49:29 +01:00
Juri Linkov
c472df8ad3 * lisp/tab-bar.el: Filter out non-persistent tab parameters from frameset.
* lisp/tab-bar.el (frameset-filter-tabs): New function
added to 'frameset-filter-alist' for frame parameter 'tabs'.
(tab-bar--tab): Remove ws-bl/ws-bbl that are not needed because
frameset doesn't save frame buffer-list to desktop anyway.
(tab-bar-select-tab): Remove ws-bl/ws-bbl related code.

* lisp/emacs-lisp/seq.el (seq-reduce): Add autoload cookie.
2019-11-03 23:44:44 +02:00
Stefan Kangas
6297eb0fca Don't refuse to install packages without a "footer line"
* lisp/emacs-lisp/package.el (package-buffer-info): Don't signal an
error when the "footer line" is missing.  Warn only.  (Bug#26490)
* etc/NEWS: Announce it.
2019-11-02 01:30:36 +01:00
Lars Ingebrigtsen
0714d6664c Really enable setting a breakpoint without instrumenting first
* lisp/emacs-lisp/edebug.el (edebug-set-breakpoint): Really enable
setting a breakpoint without instrumenting first (bug#23469).
2019-11-01 17:42:28 +01:00
Lars Ingebrigtsen
77d4491391 Revert "Move description of value to syntax-ppss function."
This reverts commit 305dbc7e2b.

Both of the functions in question are used a lot in the sources, so move it back to the more basic function.
2019-10-30 21:26:22 +01:00
Lars Ingebrigtsen
f7673c147c Add a new ppss structure for syntax-ppss data
* lisp/emacs-lisp/syntax.el (ppss): Add a new structure to provide
accessors to the syntax-ppss data.
2019-10-30 21:25:23 +01:00
Lars Ingebrigtsen
305dbc7e2b Move description of value to syntax-ppss function.
* lisp/emacs-lisp/syntax.el (syntax-ppss): Move the description of
the return value from...

* src/syntax.c (Fparse_partial_sexp): ... here because
`syntax-ppss' is what's called over the place, and jumping through
an indirection to get to the value description is inconvenient.
2019-10-30 13:16:44 +01:00
Juri Linkov
d7f62ce0cd * lisp/tab-bar.el: Store point position and frame buffer-lists in tab.
* lisp/tab-bar.el (tab-bar--tab): Store additionally point-marker,
frame parameters buffer-list and buried-buffer-list, both for wc and ws.
Use seq-filter.
(tab-bar-select-tab): Restore point-marker after restoring
window-configuration.  Also restore frame parameters buffer-list
and buried-buffer-list both for window-configuration and window-state.
(tab-bar-history-limit, tab-bar-history--minibuffer-depth): New variables.
(tab-bar-history-current): Rename from tab-bar-history--pre-change.
(tab-bar-history--pre-change): Set tab-bar-history-current.
(tab-bar--history-change): Use seq-take for tab-bar-history-limit.
(tab-bar-history-back, tab-bar-history-forward): Restore point-marker.
(tab-bar-list-noselect): Use seq-remove.

* lisp/emacs-lisp/seq.el (seq-take, seq-filter): Add autoload cookie.
2019-10-30 00:31:11 +02:00
Stefan Monnier
0e4dd67aae * lisp/emacs-lisp/seq.el: Don't require cl-lib.
(seq-subseq): Move cl-subseq's code here instyead of calling it.
* lisp/emacs-lisp/cl-extra.el (cl-subseq): Use seq-subseq.
2019-10-27 13:25:00 -04:00
Eli Zaretskii
fc0f98a8a8 Fix point position after revert-buffer in tabulated-list mode
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-print):
Don't use count-screen-lines, as it is unreliable when lines
are truncated and the region ends before a newline (the root
cause is in vertical-motion, but is very hard to fix there).
Instead, use vertical-motion directly, as the problems with
counting/not counting the newline that ends the region are not
relevant to what we need in this function, which is simply the
number of the current window line.  (Bug#37941)
2019-10-27 17:07:47 +02:00
Mattias Engdegård
cbd439e785 Expand rx definitions inside (not ...)
* lisp/emacs-lisp/rx.el (rx--translate-not):
* test/lisp/emacs-lisp/rx-tests.el (rx-not, rx-def-in-not):
* doc/lispref/searching.texi (Rx Constructs, Extending Rx):

Allow user-defined rx constructs to be expanded inside (not ...)
forms, for better composability (bug#37849).
2019-10-27 09:54:54 +01:00
Juri Linkov
5a9a01797b * lisp/tab-bar.el (tab-bar-switch-to-recent-tab): New command.
(tab-recent): Alias to tab-bar-switch-to-recent-tab.
(tab-bar--tab-index-recent): New internal function.
(tab-bar-close-tab-select): Add new default option 'recent'.
(tab-bar-close-tab): Handle it.

* lisp/emacs-lisp/seq.el (seq-sort-by, seq-remove): Add autoload.
2019-10-27 01:16:10 +03:00
Mattias Engdegård
539d0411bb rx.el: Refactor user-definition expansion
* lisp/emacs-lisp/rx.el (rx--translate-not): Simplify structure.
* lisp/emacs-lisp/rx.el (rx--expand-def): New.
(rx--translate-symbol, rx--translate-form): Use rx--expand-def.
2019-10-24 10:23:00 +02:00
Mattias Engdegård
0e9d92146e rx doc string tweaks
* lisp/emacs-lisp/rx.el (rx--translate-seq, rx--translate-or, rx):
Say "zero or more" instead of "one or more" where applicable.
2019-10-22 15:37:51 +02:00
Lars Ingebrigtsen
7f5d92e643 Make edebug-eval-last-sexp interactively take a zero prefix
* lisp/emacs-lisp/edebug.el (edebug-eval-last-sexp): Make the zero
prefix work analogously to in eval-last-sexp (bug#28895).
(edebug-eval-print-last-sexp): Ditto.
2019-10-22 13:12:08 +02:00
Stefan Monnier
7f5db3f40c * lisp/emacs-lisp/cursor-sensor.el: Make it possible to reveal invisible text
(cursor-sensor-mode): Hook into post-command-hook as well.
(cursor-sensor--detect): Make argument optional.
2019-10-21 16:35:38 -04:00
Lars Ingebrigtsen
cf294d78a1 Tiny clean-up of previous edebug patch
* lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): Clean
up code slightly.
2019-10-21 22:28:49 +02:00
Lars Ingebrigtsen
7e5f3a8091 Ensure we always remove the breakpoint overlays
* lisp/emacs-lisp/edebug.el (edebug--display-1): Remove the
overlays here -- this cleans up after exiting no matter how we
exited.
2019-10-21 22:22:16 +02:00
Lars Ingebrigtsen
73cea54064 Add fringe markers to edebug breakpoints
* lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): Set a
fringe element to mark the breakpoint.
(edebug-breakpoint): Fringe marker.
2019-10-21 22:22:16 +02:00
Stefan Kangas
0e6f4628d8 Don't try to add nil packages on refresh
* lisp/emacs-lisp/package.el (package-read-archive-contents): Don't
try to add nil entries.  Warn instead.  (Bug#28502)
* test/lisp/emacs-lisp/package-tests.el
(package-test-update-archives/ignore-nil-entry): New test.
* test/lisp/emacs-lisp/package-resources/with-nil-entry/archive-contents:
New file.
2019-10-21 00:00:36 +02:00
Lars Ingebrigtsen
78cb3791fa Add a command to toggle an edebug breakpoint
* doc/lispref/edebug.texi (Breakpoints): Document this.

* lisp/emacs-lisp/edebug.el (edebug-disabled-breakpoint): New face
(bug#23472).
(edebug-enabled-breakpoint): Rename.
(edebug--overlay-breakpoints): Use the new face.
(edebug-toggle-disable-breakpoint): New command and keystroke.
2019-10-20 23:46:50 +02:00
Mattias Engdegård
c2cd27bceb Add missing rx symbols bow' and eow' to documentation
* doc/lispref/searching.texi (Rx Constructs):
* lisp/emacs-lisp/rx.el (rx):  Add missing synonyms.
2019-10-20 20:28:12 +02:00
Lars Ingebrigtsen
cd4f707a98 Make edebug-mode-map take precedence
* lisp/emacs-lisp/edebug.el (edebug--recursive-edit): Bind
minor-mode-overriding-map-alist to avoid other minor modes hiding the
edebug commands (bug#11018).
2019-10-20 17:07:01 +02:00
Lars Ingebrigtsen
34963d632d Fix edebug--restore-breakpoints re-instrumentinging bug-out
* lisp/emacs-lisp/edebug.el (edebug--restore-breakpoints): Don't
bug out when instrumenting/de-instrumenting/re-instrumenting.
2019-10-20 14:27:38 +02:00
Lars Ingebrigtsen
34744278ba Add a new edebug-breakpoint face
* doc/lispref/edebug.texi (Breakpoints): Mention it.

* lisp/emacs-lisp/edebug.el (edebug-breakpoint): New face.
2019-10-20 14:09:36 +02:00
Lars Ingebrigtsen
23b3032702 New command to clear all breakpoints in a function
* doc/lispref/edebug.texi (Breakpoints): Mention it.

* lisp/emacs-lisp/edebug.el (edebug-unset-breakpoints): New
command and keystroke.
2019-10-20 13:40:03 +02:00
Lars Ingebrigtsen
a4e7c15484 Preserve breakpoints when Edebug-reinstrumenting functions
* lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): New
function (bug#23470).

* lisp/emacs-lisp/seq.el (seq-position): Autoload.
2019-10-20 13:11:04 +02:00
Lars Ingebrigtsen
bee7beee8e Change default to cancel all edebug-on-entry in cancel-edebug-on-entry
* lisp/emacs-lisp/edebug.el (cancel-edebug-on-entry): Make the
default to cancel all edebug-on-entry.
2019-10-20 12:37:37 +02:00
Lars Ingebrigtsen
665208ce59 Use user-error in cancel-edebug-on-entry
* lisp/emacs-lisp/edebug.el (cancel-edebug-on-entry): This is a
user-class error, so use user-error.
2019-10-20 12:28:36 +02:00
Lars Ingebrigtsen
0794354b24 Instrument function if it hasn't been already in edebug-set-breakpoint
* lisp/emacs-lisp/edebug.el (edebug-set-breakpoint): Instrument
form automatically when using this function (bug#23469).
2019-10-20 12:25:59 +02:00
Lars Ingebrigtsen
4503af6c9e Fix up previous edebug breakpoint overlay change
* lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints): Only
make the overlays in edebug mode, so that we remove them when we
exit.
2019-10-20 12:17:28 +02:00
Lars Ingebrigtsen
e8b3a15cb6 Mark breakpoints in edebug with highlights
* lisp/emacs-lisp/edebug.el (edebug--overlay-breakpoints)
(edebug--overlay-breakpoints-remove): New functions (bug#23468).
(edebug-modify-breakpoint): Use them to highlight breakpoints.
(edebug--display-1): Restore breakpoint highlights.
(edebug--recursive-edit): Remove highlights on exit.
2019-10-20 12:17:28 +02:00
Juanma Barranquero
41ba8231ef lisp/*.el: Fix typos and improve some docstrings
* lisp/auth-source.el (auth-source-backend-parse-parameters)
(auth-source-search-collection)
(auth-source-secrets-listify-pattern)
(auth-source--decode-octal-string, auth-source-plstore-search):
* lisp/registry.el (registry-lookup)
(registry-lookup-breaks-before-lexbind)
(registry-lookup-secondary, registry-lookup-secondary-value)
(registry-search, registry-delete, registry-size, registry-full)
(registry-insert, registry-reindex, registry-prune)
(registry-collect-prune-candidates):
* lisp/subr.el (nbutlast, process-live-p):
* lisp/tab-bar.el (tab-bar-list):
* lisp/cedet/ede/linux.el (ede-linux--get-archs)
(ede-linux--include-path, ede-linux-load):
* lisp/erc/erc-log.el (erc-log-all-but-server-buffers):
* lisp/erc/erc-pcomplete.el (pcomplete-erc-commands)
(pcomplete-erc-ops, pcomplete-erc-not-ops, pcomplete-erc-nicks)
(pcomplete-erc-all-nicks, pcomplete-erc-channels)
(pcomplete-erc-command-name, pcomplete-erc-parse-arguments):
* lisp/eshell/em-term.el (eshell-visual-command-p):
* lisp/gnus/gnus-cache.el (gnus-cache-fully-p):
* lisp/gnus/nnmail.el (nnmail-get-active)
(nnmail-fancy-expiry-target):
* lisp/mail/mail-utils.el (mail-string-delete):
* lisp/mail/supercite.el (sc-hdr, sc-valid-index-p):
* lisp/net/ange-ftp.el (ange-ftp-use-smart-gateway-p):
* lisp/net/nsm.el (nsm-save-fingerprint-maybe)
(nsm-network-same-subnet, nsm-should-check):
* lisp/net/rcirc.el (rcirc-looking-at-input):
* lisp/net/tramp-cache.el (tramp-get-hash-table):
* lisp/net/tramp-compat.el (tramp-compat-process-running-p):
* lisp/net/tramp-smb.el (tramp-smb-get-share)
(tramp-smb-get-localname, tramp-smb-read-file-entry)
(tramp-smb-get-cifs-capabilities, tramp-smb-get-stat-capability):
* lisp/net/zeroconf.el (zeroconf-list-service-names)
(zeroconf-list-service-types, zeroconf-list-services)
(zeroconf-get-host, zeroconf-get-domain)
(zeroconf-get-host-domain):
* lisp/nxml/rng-xsd.el (rng-xsd-compile)
(rng-xsd-make-date-time-regexp, rng-xsd-convert-date-time):
* lisp/obsolete/erc-hecomplete.el (erc-hecomplete)
(erc-command-list, erc-complete-at-prompt):
* lisp/org/ob-scheme.el (org-babel-scheme-get-buffer-impl):
* lisp/org/ob-shell.el (org-babel--variable-assignments:sh-generic)
(org-babel--variable-assignments:bash_array)
(org-babel--variable-assignments:bash_assoc)
(org-babel--variable-assignments:bash):
* lisp/org/org-clock.el (org-day-of-week):
* lisp/progmodes/cperl-mode.el (cperl-char-ends-sub-keyword-p):
* lisp/progmodes/gud.el (gud-find-c-expr, gud-innermost-expr)
(gud-prev-expr, gud-next-expr):
* lisp/textmodes/table.el (table--at-cell-p, table--probe-cell)
(table--get-cell-justify-property)
(table--get-cell-valign-property)
(table--put-cell-justify-property)
(table--put-cell-valign-property): Fix typos.

* lisp/so-long.el (fboundp): Doc fix.
(so-long-mode-line-info, so-long-mode)
(so-long--check-header-modes): Fix typos.

* lisp/emulation/viper-mous.el (viper-surrounding-word)
(viper-mouse-click-get-word): Fix typos.
(viper-mouse-click-search-word): Doc fix.

* lisp/erc/erc-backend.el (erc-forward-word, erc-word-at-arg-p)
(erc-bounds-of-word-at-point): Fix typos.
(erc-decode-string-from-target, define-erc-response-handler):
Refill docstring.

* lisp/erc/erc-dcc.el (pcomplete/erc-mode/DCC): Fix typo.
(erc-dcc-get-host, erc-dcc-auto-mask-p, erc-dcc-get-file):
Doc fixes.

* lisp/erc/erc-networks.el (erc-network-name): Fix typo.
(erc-determine-network): Refill docstring.

* lisp/net/dbus.el (dbus-list-hash-table)
(dbus-string-to-byte-array, dbus-byte-array-to-string)
(dbus-check-event): Fix typos.
(dbus-introspect-get-property): Doc fix.

* lisp/net/tramp-adb.el (tramp-adb-file-name-handler):
Rename ARGS to ARGUMENTS.  Doc fix.
(tramp-adb-sh-fix-ls-output, tramp-adb-execute-adb-command)
(tramp-adb-find-test-command): Fix typos.

* lisp/net/tramp.el (tramp-set-completion-function)
(tramp-get-completion-function)
(tramp-completion-dissect-file-name)
(tramp-completion-dissect-file-name1)
(tramp-get-completion-methods, tramp-get-completion-user-host)
(tramp-get-inode, tramp-get-device, tramp-mode-string-to-int)
(tramp-call-process, tramp-call-process-region)
(tramp-process-lines): Fix typos.
(tramp-interrupt-process): Doc fix.

* lisp/org/ob-core.el (org-babel-named-src-block-regexp-for-name)
(org-babel-named-data-regexp-for-name): Doc fix.
(org-babel-src-block-names, org-babel-result-names): Fix typos.

* lisp/progmodes/inf-lisp.el (lisp-input-filter): Doc fix.
(lisp-fn-called-at-pt): Fix typo.

* lisp/progmodes/xref.el (xref-backend-identifier-at-point):
Doc fix.
(xref-backend-identifier-completion-table): Fix typo.
2019-10-20 12:12:27 +02:00
Lars Ingebrigtsen
e2acf4d29d New command edebug-remove-instrumentation
* doc/lispref/edebug.texi (Instrumenting): Document it.

* lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): New
command (bug#15843).
2019-10-20 11:29:34 +02:00
Lars Ingebrigtsen
cfaecdb293 Fix doc string and interactive spec of cancel-edebug-on-entry
* lisp/emacs-lisp/edebug.el (cancel-edebug-on-entry): Add doc
string and make the interactive spec complete over functions that
have the spec (bug#10806).
(edebug-cancel-edebug-on-entry): Add alias for discoverability.
(edebug-on-entry): Clarify what this command does.
2019-10-20 10:51:08 +02:00
Lars Ingebrigtsen
27490cec4e Revert "Add an edebug-cancel-debug-on-entry alias"
This reverts commit cea9577b7d.

cancel-edebug-on-entry and cancel-debug-on-entry are not the same functions.
2019-10-20 10:28:44 +02:00
Lars Ingebrigtsen
cea9577b7d Add an edebug-cancel-debug-on-entry alias
* lisp/emacs-lisp/debug.el (edebug-cancel-debug-on-entry): Add an
alias for easier discoverability (bug#10806).
2019-10-20 09:48:28 +02:00
Mattias Engdegård
6331d23de3 Use [^z-a] for matching any character (anychar/anything) in rx
* lisp/emacs-lisp/rx.el (rx--translate-symbol):
* test/lisp/emacs-lisp/rx-tests.el (rx-any, rx-atoms):
Use [^z-a] instead of ".\\|\n" for anychar.

The new expression is faster (about 2×) and does not allocate regexp
stack space.  For example, (0+ anychar) now matches strings of any
size (bug#37659).
2019-10-18 14:46:12 +02:00
Mattias Engdegård
ae5407b857 Add `unmatchable' as alias for (or) in rx (bug#37659)
* lisp/emacs-lisp/rx.el (rx--translate-symbol, rx--builtin-symbols, rx):
* test/lisp/emacs-lisp/rx-tests.el (rx-atoms):
* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS:
Add `unmatchable', more descriptive than (or), and corresponding to
the variable `regexp-unmatchable'.
2019-10-18 14:46:06 +02:00
Mattias Engdegård
e5a446b0a7 Add anychar' as alias to anything' in rx (bug#37659)
* lisp/emacs-lisp/rx.el (rx--translate-symbol, rx--builtin-symbols, rx):
* test/lisp/emacs-lisp/rx-tests.el (rx-atoms):
* doc/lispref/searching.texi (Rx Constructs):
* etc/NEWS:
Add `anychar', an alias for `anything'.  Since `anychar' is more
descriptive (and slightly shorter), treat it as the preferred name.
2019-10-18 14:45:47 +02:00
Michael Heerdegen
2d13a3f68d Extend debug spec of cl-flet (Bug#34481)
* lisp/emacs-lisp/cl-macs.el (cl-flet): Extend debug spec to cover
definitions of the form (FUNC EXP).
2019-10-17 20:13:40 +02:00
Juanma Barranquero
2bb0703e24 lisp/*.el: Force non-nil result to t, to match docstring
* lisp/emacs-lock.el (emacs-lock-live-process-p):
* lisp/shadowfile.el (shadow-file-match):
* lisp/emacs-lisp/edebug.el (edebug-basic-spec):
* lisp/mail/rmail.el (rmail-expunge-confirmed):
* lisp/net/soap-client.el (soap-should-encode-value-for-xs-element):
* lisp/progmodes/idlwave.el (idlwave-quoted):
* lisp/progmodes/idlw-shell.el (idlwave-shell-filename-string):
* lisp/textmodes/refbib.el (r2b-isa-proceedings):
* lisp/textmodes/texnfo-upd.el (texinfo-find-lower-level-node):
Normalize boolean result.
2019-10-17 02:08:43 +02:00
Lars Ingebrigtsen
a1dbb81f18 Fix some &rest body edebug specs
* lisp/ses.el (ses--letref):

* lisp/emacs-lisp/crm.el (crm--completion-command): Fix edebug
&rest body spec (bug#28747).

* lisp/emacs-lisp/easy-mmode.el (easy-mmode-define-navigation):

* lisp/emacs-lisp/inline.el (inline--leteval)
(inline--letlisteval, inline-letevals):
2019-10-16 04:44:22 +02:00
Eric Ludlam
128f803197 Update CEDET manual tests so that they run.
To run visit test/manual/cedet/cedet-utests.el
M-x eval-buffer
M-x cedet-utest
Author: Eric Ludlam <zappo@gnu.org>
2019-10-15 11:08:18 -04:00
Lars Ingebrigtsen
ddc9837bf4 Add new macro `benchmark-progn'
* doc/lispref/debugging.texi (Profiling): Mention it.

* lisp/emacs-lisp/benchmark.el (benchmark-progn): New macro.
2019-10-15 08:19:14 +02:00
Mattias Engdegård
67ed6ee733 Correctly explain test failures with mixed uni/multibyte strings
* lisp/emacs-lisp/ert.el (ert--explain-equal-rec):
* test/lisp/emacs-lisp/ert-tests.el (ert-test-explain-equal):
When explaining a difference between a unibyte and a multibyte string,
first convert both to multibyte.  Otherwise, we might end up comparing
unibyte char C to multibyte char C, 127<C<256, and not detect the
difference (bug#30219).
2019-10-13 20:29:27 +02:00