aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPo Lu2024-07-11 11:40:34 +0800
committerPo Lu2024-07-11 11:40:34 +0800
commit166685a7d9568cc8fcbc2ad85db1ed23efd9793e (patch)
tree7c597d10febfa77c577c0f68efe835e866038d63
parent29aeed7218c77180eef8afac6056af103069b4b2 (diff)
parente0b271e279ba5b606330908604ac4fa42a389b30 (diff)
downloademacs-166685a7d9568cc8fcbc2ad85db1ed23efd9793e.tar.gz
emacs-166685a7d9568cc8fcbc2ad85db1ed23efd9793e.zip
Merge from savannah/emacs-30
e0b271e279b Take precautions against ill-formed content URIs 9331ab056a4 etags-regen-mode: Handle TAGS buffer being killed ef3f26ec02d ; Tag ERC multiline blanks test as :expensive 945335fec1e Improve 'put-image' documentation c38d5cc3b28 Improve 'set-fontset-font' documentation 7de4dbea08f Adapt Tramp's "run0" method 871585db4ca * test/src/sqlite-tests.el (sqlite-execute-batch): Declar... 5cf8d60e0de Capitalize "Dired" and "Lisp" in docstrings 37475c9af7a Document Eshell entry points # Conflicts: # etc/NEWS
-rw-r--r--doc/emacs/mule.texi10
-rw-r--r--doc/lispref/display.texi4
-rw-r--r--doc/misc/eshell.texi139
-rw-r--r--doc/misc/tramp.texi6
-rw-r--r--etc/NEWS.304
-rw-r--r--java/org/gnu/emacs/EmacsService.java18
-rw-r--r--lisp/desktop.el4
-rw-r--r--lisp/dired-x.el4
-rw-r--r--lisp/dired.el20
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/find-dired.el2
-rw-r--r--lisp/hilit-chg.el2
-rw-r--r--lisp/image.el4
-rw-r--r--lisp/locate.el8
-rw-r--r--lisp/msb.el4
-rw-r--r--lisp/net/tramp-sh.el5
-rw-r--r--lisp/printing.el6
-rw-r--r--lisp/progmodes/etags-regen.el7
-rw-r--r--lisp/uniquify.el4
-rw-r--r--lisp/wdired.el10
-rw-r--r--lisp/woman.el8
-rw-r--r--test/lisp/erc/erc-tests.el47
-rw-r--r--test/src/sqlite-tests.el1
23 files changed, 218 insertions, 101 deletions
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index 55dd74c48a3..8b16c661a7e 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1657,6 +1657,16 @@ used. Some examples are:
1657 'han (font-spec :registry "big5") 1657 'han (font-spec :registry "big5")
1658 nil 'prepend) 1658 nil 'prepend)
1659 1659
1660@cindex emoji font
1661;; Use "Noto Color Emoji" for the emoji script (this is the default).
1662(set-fontset-font "fontset-default" 'emoji
1663 '("Noto Color Emoji" . "iso10646-1")
1664 nil 'prepend)
1665
1666;; Display the "heart" character using a color font.
1667(set-fontset-font "fontset-default"
1668 #x2764 "Noto Color Emoji")
1669
1660;; Use MyPrivateFont for the Unicode private use area. 1670;; Use MyPrivateFont for the Unicode private use area.
1661(set-fontset-font "fontset-default" '(#xe000 . #xf8ff) 1671(set-fontset-font "fontset-default" '(#xe000 . #xf8ff)
1662 "MyPrivateFont") 1672 "MyPrivateFont")
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 6e4b727a2bd..16f60bdebf6 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -7095,7 +7095,9 @@ buffer's text.
7095 7095
7096Internally, this function creates an overlay, and gives it a 7096Internally, this function creates an overlay, and gives it a
7097@code{before-string} property containing text that has a @code{display} 7097@code{before-string} property containing text that has a @code{display}
7098property whose value is the image. (Whew! that was a mouthful@dots{}) 7098property whose value is the image. (Whew! that was a mouthful@dots{}).
7099It returns the created overlay upon success, and also sets its
7100@code{put-image} property to @code{t}.
7099@end defun 7101@end defun
7100 7102
7101@defun remove-images start end &optional buffer 7103@defun remove-images start end &optional buffer
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 8547131194e..c52b8dd66c9 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -76,6 +76,7 @@ similar to command shells such as @command{bash}, @command{zsh},
76 76
77@menu 77@menu
78* Introduction:: A brief introduction to the Emacs Shell. 78* Introduction:: A brief introduction to the Emacs Shell.
79* Entry Points::
79* Commands:: 80* Commands::
80* Expansion:: 81* Expansion::
81* Input/Output:: 82* Input/Output::
@@ -186,6 +187,116 @@ Apart from these, a lot of people have sent suggestions, ideas,
186requests, bug reports and encouragement. Thanks a lot! Without you 187requests, bug reports and encouragement. Thanks a lot! Without you
187there would be no new releases of Eshell. 188there would be no new releases of Eshell.
188 189
190@node Entry Points
191@chapter Entry Points
192@cindex starting Eshell
193@cindex Eshell, starting
194
195Eshell provides several different ways to start it, depending on the
196situation.
197
198@menu
199* Interactive Shell::
200* One-Off Commands::
201* Scripts::
202@end menu
203
204@node Interactive Shell
205@section Interactive Shell
206@cindex interactive session
207
208The most common way to use Eshell is via an interactive shell. You can
209start this via the @code{eshell} command:
210
211@deffn Command eshell &optional arg
212Start a new interactive Eshell session, or switch to an already active
213session. The exact behavior depends on the value of @var{arg}
214(interactively, the prefix argument):
215
216@table @asis
217
218@item @code{nil} or omitted
219Start or switch to the default Eshell session. This is the behavior
220when typing @kbd{M-x eshell @key{RET}}.
221
222@item a number
223Start or switch to the Eshell session with the specified number (e.g.@:
224@samp{*eshell*<2>}).
225
226@item anything else
227Start a new Eshell session, no matter if another one already exists.
228
229@end table
230@end deffn
231
232@node One-Off Commands
233@section One-Off Commands
234@cindex command invocation, from anywhere
235
236You can also run individual Eshell commands from anywhere within Emacs:
237
238@deffn Command eshell-command command &optional to-current-buffer
239Execute the Eshell command string @var{command} and show the output in a
240buffer. If @var{to-current-buffer} is non-@code{nil} (interactively,
241with the prefix argument), then insert output into the current buffer at
242point.
243
244When the command ends with @kbd{&}, Eshell will evaluate the command
245asynchronously. Otherwise, it will wait until the command has finished
246execution.
247@end deffn
248
249@defun eshell-command-result command &optional status-var
250Execute the Eshell command string @var{command} and return the result,
251like using the variable @code{$$} in an interactive session
252(@pxref{Variables}). If @var{status-var} is a symbol, this function
253will set it to the exit status of the command (like using the variable
254@code{$?} in an interactive session).
255@end defun
256
257@node Scripts
258@section Scripts
259@cindex scripts
260
261@cmindex source
262@cmindex .
263Like other shells, you can create Eshell @dfn{scripts}. An Eshell
264script is simply a file containing a sequence of commands that will be
265executed as though you entered them one at a time in an interactive
266Eshell session. You can invoke these scripts from within Eshell with
267@command{source}, which will run the script in a subshell. If you wish
268to run a script in your @emph{current} Eshell environment, use the
269@code{.} command instead.
270
271Like with aliases (@pxref{Aliases}), Eshell scripts can accept any
272number of arguments. Within the script, you can refer to these with
273the special variables @code{$0}, @code{$1}, @dots{}, @code{$9}, and
274@code{$*}.
275
276You can also invoke Eshell scripts from outside of Eshell:
277
278@defun eshell-execute-file file &optional args destination
279Execute the Eshell commands contained in @var{file}, passing an optional
280list of @var{args} to the script. If @var{destination} is @code{t},
281write the command output to the current buffer. If @code{nil}, don't
282write the output anywhere. For any other value, output to the
283corresponding Eshell target (@pxref{Redirection}).
284@end defun
285
286@cindex batch scripts
287@defun eshell-batch-file
288This function lets you make an Eshell script file executable from
289outside of Emacs by adding it to the script's interpreter directive like
290this:
291
292@example
293#!/usr/bin/env -S emacs --batch -f eshell-batch-file
294@end example
295
296As with other ways of invoking Eshell scripts, you can pass extra
297arguments to the script on the command line.
298@end defun
299
189@node Commands 300@node Commands
190@chapter Commands 301@chapter Commands
191 302
@@ -208,7 +319,6 @@ that will be invoked, type this as the Eshell prompt:
208* Aliases:: 319* Aliases::
209* Remote Access:: 320* Remote Access::
210* Control Flow:: 321* Control Flow::
211* Scripts::
212@end menu 322@end menu
213 323
214@node Invocation 324@node Invocation
@@ -1597,33 +1707,6 @@ treat it as a list of one element. If you specify multiple
1597 1707
1598@end table 1708@end table
1599 1709
1600@node Scripts
1601@section Scripts
1602@cmindex source
1603@fnindex eshell-execute-file
1604@fnindex eshell-batch-file
1605You can run Eshell scripts much like scripts for other shells; the main
1606difference is that since Eshell is not a system command, you have to run
1607it from within Emacs. An Eshell script is simply a file containing a
1608sequence of commands, as with almost any other shell script. You can
1609invoke scripts from within Eshell with @command{source}, or from
1610anywhere in Emacs with @code{eshell-execute-file}. Additionally, you
1611can make an Eshell script file executable by calling
1612@code{eshell-batch-file} in the interpreter directive:
1613
1614@example
1615#!/usr/bin/env -S emacs --batch -f eshell-batch-file
1616@end example
1617
1618Like with aliases (@pxref{Aliases}), Eshell scripts can accept any
1619number of arguments. Within the script, you can refer to these with
1620the special variables @code{$0}, @code{$1}, @dots{}, @code{$9}, and
1621@code{$*}.
1622
1623@cmindex .
1624If you wish to load a script into your @emph{current} environment,
1625rather than in a subshell, use the @code{.} command.
1626
1627@node Expansion 1710@node Expansion
1628@chapter Expansion 1711@chapter Expansion
1629Expansion in a command shell is somewhat like macro expansion in macro 1712Expansion in a command shell is somewhat like macro expansion in macro
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index ef74f1e3f13..e1130917f0c 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -892,9 +892,9 @@ a predefined timeout.
892@cindex method @option{run0} 892@cindex method @option{run0}
893@cindex @option{run0} method 893@cindex @option{run0} method
894 894
895This method is used on @code{systemd}-based hosts. Internally, it 895@c This requires systemd 256. Check with 'systemd-run --version'.
896uses the @code{systemd-run} command. A @option{run0} connection is 896This method is used on @code{systemd}-based hosts. A @option{run0}
897disabled after a predefined timeout as well. 897connection is disabled after a predefined timeout as well.
898 898
899This is an optional method, @pxref{Optional methods}. 899This is an optional method, @pxref{Optional methods}.
900 900
diff --git a/etc/NEWS.30 b/etc/NEWS.30
index 31d69ddabab..57b17cc858e 100644
--- a/etc/NEWS.30
+++ b/etc/NEWS.30
@@ -1329,8 +1329,8 @@ Android.
1329 1329
1330+++ 1330+++
1331*** New optional connection method "run0". 1331*** New optional connection method "run0".
1332This connection method is similar to "sudo", but it uses the 1332This connection method is similar to "sudo", but it uses the 'systemd'
1333'systemd-run' program internally. 1333framework internally.
1334 1334
1335+++ 1335+++
1336*** New connection methods "dockercp" and "podmancp". 1336*** New connection methods "dockercp" and "podmancp".
diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java
index 77124a7d80f..7afe4c7f82e 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -987,6 +987,7 @@ public final class EmacsService extends Service
987 String name, mode; 987 String name, mode;
988 ParcelFileDescriptor fd; 988 ParcelFileDescriptor fd;
989 int i; 989 int i;
990 Uri uriObject;
990 991
991 /* Figure out the file access mode. */ 992 /* Figure out the file access mode. */
992 993
@@ -1001,12 +1002,20 @@ public final class EmacsService extends Service
1001 if (truncate) 1002 if (truncate)
1002 mode += "t"; 1003 mode += "t";
1003 1004
1005 /* Decode the URI. It might be possible for a perverse user to
1006 construct a content file name that Android finds unparsable, so
1007 punt if the result is NULL. */
1008
1009 uriObject = Uri.parse (uri);
1010 if (uriObject == null)
1011 return -1;
1012
1004 /* Try to open a corresponding ParcelFileDescriptor. Though 1013 /* Try to open a corresponding ParcelFileDescriptor. Though
1005 `fd.detachFd' is exclusive to Honeycomb and up, this function is 1014 `fd.detachFd' is exclusive to Honeycomb and up, this function is
1006 never called on systems older than KitKat, which is Emacs's 1015 never called on systems older than KitKat, which is Emacs's
1007 minimum requirement for access to /content/by-authority. */ 1016 minimum requirement for access to /content/by-authority. */
1008 1017
1009 fd = resolver.openFileDescriptor (Uri.parse (uri), mode); 1018 fd = resolver.openFileDescriptor (uriObject, mode);
1010 if (fd == null) 1019 if (fd == null)
1011 return -1; 1020 return -1;
1012 1021
@@ -1027,7 +1036,14 @@ public final class EmacsService extends Service
1027 Uri uri; 1036 Uri uri;
1028 int rc, flags; 1037 int rc, flags;
1029 1038
1039 /* Decode the URI. It might be possible that perverse user should
1040 construct a content file name that Android finds unparsable, so
1041 punt if the result is NULL. */
1042
1030 uri = Uri.parse (name); 1043 uri = Uri.parse (name);
1044 if (uri == null)
1045 return false;
1046
1031 flags = 0; 1047 flags = 0;
1032 1048
1033 if (readable) 1049 if (readable)
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 3fa09ce6a41..06f0bbb946e 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -122,7 +122,7 @@
122;; things you did not mean to keep. Use M-x desktop-clear RET. 122;; things you did not mean to keep. Use M-x desktop-clear RET.
123 123
124;; Thanks to hetrick@phys.uva.nl (Jim Hetrick) for useful ideas. 124;; Thanks to hetrick@phys.uva.nl (Jim Hetrick) for useful ideas.
125;; avk@rtsg.mot.com (Andrew V. Klein) for a dired tip. 125;; avk@rtsg.mot.com (Andrew V. Klein) for a Dired tip.
126;; chris@tecc.co.uk (Chris Boucher) for a mark tip. 126;; chris@tecc.co.uk (Chris Boucher) for a mark tip.
127;; f89-kam@nada.kth.se (Klas Mellbourn) for a mh-e tip. 127;; f89-kam@nada.kth.se (Klas Mellbourn) for a mh-e tip.
128;; kifer@cs.stonybrook.edu (M. Kifer) for a bug hunt. 128;; kifer@cs.stonybrook.edu (M. Kifer) for a bug hunt.
@@ -296,7 +296,7 @@ If nil, just print error messages in the message buffer."
296(defcustom desktop-no-desktop-file-hook nil 296(defcustom desktop-no-desktop-file-hook nil
297 "Normal hook run when `desktop-read' can't find a desktop file. 297 "Normal hook run when `desktop-read' can't find a desktop file.
298Run in the directory in which the desktop file was sought. 298Run in the directory in which the desktop file was sought.
299May be used to show a dired buffer." 299May be used to show a Dired buffer."
300 :type 'hook 300 :type 'hook
301 :group 'desktop 301 :group 'desktop
302 :version "22.1") 302 :version "22.1")
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 753d3054d2f..98cf09945da 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -28,7 +28,7 @@
28;; This is based on Sebastian Kremer's excellent dired-x.el (Dired Extra), 28;; This is based on Sebastian Kremer's excellent dired-x.el (Dired Extra),
29;; version 1.191, adapted for GNU Emacs. See the `dired-x' Info manual. 29;; version 1.191, adapted for GNU Emacs. See the `dired-x' Info manual.
30 30
31;; At load time dired-x.el will install itself and bind some dired keys. 31;; At load time dired-x.el will install itself and bind some Dired keys.
32;; Some dired.el and dired-aux.el functions have extra features if 32;; Some dired.el and dired-aux.el functions have extra features if
33;; dired-x is loaded. 33;; dired-x is loaded.
34 34
@@ -858,7 +858,7 @@ sure that a trailing letter in STR is one of BKkMGTPEZYRQ."
858 "Mark files for which PREDICATE returns non-nil. 858 "Mark files for which PREDICATE returns non-nil.
859With a prefix arg, unmark or unflag those files instead. 859With a prefix arg, unmark or unflag those files instead.
860 860
861PREDICATE is a lisp expression that can refer to the following symbols: 861PREDICATE is a Lisp expression that can refer to the following symbols:
862 862
863 inode [integer] the inode of the file (only for ls -i output) 863 inode [integer] the inode of the file (only for ls -i output)
864 s [integer] the size of the file for ls -s output 864 s [integer] the size of the file for ls -s output
diff --git a/lisp/dired.el b/lisp/dired.el
index 33b79cbef85..0d526dfc376 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -350,7 +350,7 @@ with the buffer narrowed to the listing."
350;; functions probably depend on the dired-subdir-alist to be OK. 350;; functions probably depend on the dired-subdir-alist to be OK.
351 351
352(defcustom dired-make-directory-clickable t 352(defcustom dired-make-directory-clickable t
353 "When non-nil, make the directory at the start of the dired buffer clickable." 353 "When non-nil, make the directory at the start of the Dired buffer clickable."
354 :version "29.1" 354 :version "29.1"
355 :group 'dired 355 :group 'dired
356 :type 'boolean) 356 :type 'boolean)
@@ -941,7 +941,7 @@ If ARG is `marked', don't return the current file if nothing else
941is marked. 941is marked.
942 942
943If optional third arg SHOW-PROGRESS evaluates to non-nil, 943If optional third arg SHOW-PROGRESS evaluates to non-nil,
944redisplay the dired buffer after each file is processed. 944redisplay the Dired buffer after each file is processed.
945 945
946No guarantee is made about the position on the marked line. 946No guarantee is made about the position on the marked line.
947BODY must ensure this itself if it depends on this. 947BODY must ensure this itself if it depends on this.
@@ -1145,7 +1145,7 @@ ERROR can be a string with the error message."
1145;; nil default-directory nil)))))))) 1145;; nil default-directory nil))))))))
1146 1146
1147(defun dired-file-name-at-point () 1147(defun dired-file-name-at-point ()
1148 "Try to get a file name at point in the current dired buffer. 1148 "Try to get a file name at point in the current Dired buffer.
1149This hook is intended to be put in `file-name-at-point-functions'. 1149This hook is intended to be put in `file-name-at-point-functions'.
1150Note that it returns an abbreviated name that can't be used 1150Note that it returns an abbreviated name that can't be used
1151as an argument to `dired-goto-file'." 1151as an argument to `dired-goto-file'."
@@ -2133,7 +2133,7 @@ BUFFER-POSITION is the point position in the current Dired buffer.
2133It has the form (BUFFER DIRED-FILENAME BUFFER-LINE-NUMBER). 2133It has the form (BUFFER DIRED-FILENAME BUFFER-LINE-NUMBER).
2134 2134
2135WINDOW-POSITIONS are current positions in all windows displaying 2135WINDOW-POSITIONS are current positions in all windows displaying
2136this dired buffer. The window positions have the form (WINDOW 2136this Dired buffer. The window positions have the form (WINDOW
2137DIRED-FILENAME WINDOW-LINE-NUMBER). 2137DIRED-FILENAME WINDOW-LINE-NUMBER).
2138 2138
2139We store line numbers instead of point positions because the header 2139We store line numbers instead of point positions because the header
@@ -3465,7 +3465,7 @@ You can then feed the file name(s) to other commands with \\[yank]."
3465If FILE is non-nil, include only those whose wildcard pattern (if any) 3465If FILE is non-nil, include only those whose wildcard pattern (if any)
3466matches FILE. 3466matches FILE.
3467The list is in reverse order of buffer creation, most recent last. 3467The list is in reverse order of buffer creation, most recent last.
3468As a side effect, killed dired buffers for DIR are removed from 3468As a side effect, killed Dired buffers for DIR are removed from
3469`dired-buffers'." 3469`dired-buffers'."
3470 (setq dir (file-name-as-directory (expand-file-name dir))) 3470 (setq dir (file-name-as-directory (expand-file-name dir)))
3471 (let (result buf) 3471 (let (result buf)
@@ -3492,7 +3492,7 @@ As a side effect, killed dired buffers for DIR are removed from
3492 3492
3493(defun dired-buffers-for-dir-or-subdir (dir) 3493(defun dired-buffers-for-dir-or-subdir (dir)
3494 "Return a list of buffers for DIR or a subdirectory thereof. 3494 "Return a list of buffers for DIR or a subdirectory thereof.
3495As a side effect, killed dired buffers for DIR are removed from 3495As a side effect, killed Dired buffers for DIR are removed from
3496`dired-buffers'." 3496`dired-buffers'."
3497 (setq dir (file-name-as-directory dir)) 3497 (setq dir (file-name-as-directory dir))
3498 (let (result buf) 3498 (let (result buf)
@@ -4049,7 +4049,7 @@ non-empty directories is allowed."
4049 (dired-move-to-filename)) 4049 (dired-move-to-filename))
4050 4050
4051(defun dired-fun-in-all-buffers (directory file fun &rest args) 4051(defun dired-fun-in-all-buffers (directory file fun &rest args)
4052 "In all buffers dired'ing DIRECTORY, run FUN with ARGS. 4052 "In all buffers Dired'ing DIRECTORY, run FUN with ARGS.
4053If the buffer has a wildcard pattern, check that it matches FILE. 4053If the buffer has a wildcard pattern, check that it matches FILE.
4054\(FILE does not include a directory component.) 4054\(FILE does not include a directory component.)
4055FILE may be nil, in which case ignore it. 4055FILE may be nil, in which case ignore it.
@@ -4064,7 +4064,7 @@ Return list of buffers where FUN succeeded (i.e., returned non-nil)."
4064 4064
4065;; Delete the entry for FILE from 4065;; Delete the entry for FILE from
4066(defun dired-remove-entry (file) 4066(defun dired-remove-entry (file)
4067 "Remove entry FILE in the current dired buffer. 4067 "Remove entry FILE in the current Dired buffer.
4068Note this doesn't delete FILE in the file system. 4068Note this doesn't delete FILE in the file system.
4069See `dired-delete-file' in case you wish that." 4069See `dired-delete-file' in case you wish that."
4070 (save-excursion 4070 (save-excursion
@@ -4074,7 +4074,7 @@ See `dired-delete-file' in case you wish that."
4074 (line-beginning-position 2)))))) 4074 (line-beginning-position 2))))))
4075 4075
4076(defun dired-delete-entry (file) 4076(defun dired-delete-entry (file)
4077 "Remove entry FILE in the current dired buffer. 4077 "Remove entry FILE in the current Dired buffer.
4078Like `dired-remove-entry' followed by `dired-clean-up-after-deletion'. 4078Like `dired-remove-entry' followed by `dired-clean-up-after-deletion'.
4079Note this doesn't delete FILE in the file system. 4079Note this doesn't delete FILE in the file system.
4080See `dired-delete-file' in case you wish that." 4080See `dired-delete-file' in case you wish that."
@@ -5139,7 +5139,7 @@ move to that file's line in the directory listing.
5139If the current buffer isn't visiting a file, Dired `default-directory'. 5139If the current buffer isn't visiting a file, Dired `default-directory'.
5140 5140
5141If in Dired already, pop up a level and goto old directory's line. 5141If in Dired already, pop up a level and goto old directory's line.
5142In case the proper Dired file line cannot be found, refresh the dired 5142In case the proper Dired file line cannot be found, refresh the Dired
5143buffer and try again. 5143buffer and try again.
5144 5144
5145When OTHER-WINDOW is non-nil, jump to Dired buffer in other window. 5145When OTHER-WINDOW is non-nil, jump to Dired buffer in other window.
diff --git a/lisp/files.el b/lisp/files.el
index e552f3ac413..66f47b4aa39 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5769,7 +5769,7 @@ We don't want excessive versions piling up, so there are variables
5769 `kept-old-versions', which tells Emacs how many oldest versions to keep, 5769 `kept-old-versions', which tells Emacs how many oldest versions to keep,
5770 and `kept-new-versions', which tells how many newest versions to keep. 5770 and `kept-new-versions', which tells how many newest versions to keep.
5771 Defaults are 2 old versions and 2 new. 5771 Defaults are 2 old versions and 2 new.
5772`dired-kept-versions' controls dired's clean-directory (.) command. 5772`dired-kept-versions' controls Dired's clean-directory (.) command.
5773If `delete-old-versions' is nil, system will query user 5773If `delete-old-versions' is nil, system will query user
5774 before trimming versions. Otherwise it does it silently. 5774 before trimming versions. Otherwise it does it silently.
5775 5775
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index fa0c034c816..e52adaa9d9f 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -76,7 +76,7 @@ than the latter."
76This is a cons of two strings (FIND-OPTION . LS-SWITCHES). 76This is a cons of two strings (FIND-OPTION . LS-SWITCHES).
77FIND-OPTION is the option (or options) passed to `find' to produce 77FIND-OPTION is the option (or options) passed to `find' to produce
78a file listing in the desired format. LS-SWITCHES is a set of 78a file listing in the desired format. LS-SWITCHES is a set of
79`ls' switches that tell dired how to parse the output of `find'. 79`ls' switches that tell Dired how to parse the output of `find'.
80 80
81The two options must be set to compatible values. 81The two options must be set to compatible values.
82For example, to use human-readable file sizes with GNU ls: 82For example, to use human-readable file sizes with GNU ls:
diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el
index 41bd4026b8e..0015bd024bd 100644
--- a/lisp/hilit-chg.el
+++ b/lisp/hilit-chg.el
@@ -100,7 +100,7 @@
100;; * nil -- then no buffers are suitable; 100;; * nil -- then no buffers are suitable;
101;; * a function -- this function is called and the result is used. As 101;; * a function -- this function is called and the result is used. As
102;; an example, if the value is `buffer-file-name' then all buffers 102;; an example, if the value is `buffer-file-name' then all buffers
103;; who are visiting files are suitable, but others (like dired 103;; who are visiting files are suitable, but others (like Dired
104;; buffers) are not; 104;; buffers) are not;
105;; * a list -- then the buffer is suitable if and only if its mode is in the 105;; * a list -- then the buffer is suitable if and only if its mode is in the
106;; list, except if the first element is `not', in which case the test 106;; list, except if the first element is `not', in which case the test
diff --git a/lisp/image.el b/lisp/image.el
index c75c8ff765a..e16bd989ce7 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -638,7 +638,9 @@ IMAGE must be an image created with `create-image' or `defimage'.
638IMAGE is displayed by putting an overlay into the current buffer with a 638IMAGE is displayed by putting an overlay into the current buffer with a
639`before-string' STRING that has a `display' property whose value is the 639`before-string' STRING that has a `display' property whose value is the
640image. STRING defaults to \"x\" if it's nil or omitted. 640image. STRING defaults to \"x\" if it's nil or omitted.
641The overlay created by this function has the `put-image' property set to t. 641Upon success, this function returns the created overlay with its
642`put-image' property set to t.
643
642POS may be an integer or marker. 644POS may be an integer or marker.
643AREA is where to display the image. AREA nil or omitted means 645AREA is where to display the image. AREA nil or omitted means
644display it in the text area, a value of `left-margin' means 646display it in the text area, a value of `left-margin' means
diff --git a/lisp/locate.el b/lisp/locate.el
index 70328d5184e..c6a1e9b6e46 100644
--- a/lisp/locate.el
+++ b/lisp/locate.el
@@ -22,7 +22,7 @@
22 22
23;;; Commentary: 23;;; Commentary:
24 24
25;; Search a database of files and use dired commands on the result. 25;; Search a database of files and use Dired commands on the result.
26;; 26;;
27;; Locate.el provides an interface to a program which searches a 27;; Locate.el provides an interface to a program which searches a
28;; database of file names. By default, this program is the GNU locate 28;; database of file names. By default, this program is the GNU locate
@@ -60,7 +60,7 @@
60;; character in the file name and the last character in the file name. 60;; character in the file name and the last character in the file name.
61;; 61;;
62;; To use locate-mode, simply type M-x locate and then the string 62;; To use locate-mode, simply type M-x locate and then the string
63;; you wish to find. You can use almost all of the dired commands in 63;; you wish to find. You can use almost all of the Dired commands in
64;; the resulting *Locate* buffer. It is worth noting that your commands 64;; the resulting *Locate* buffer. It is worth noting that your commands
65;; do not, of course, affect the file database. For example, if you 65;; do not, of course, affect the file database. For example, if you
66;; compress a file in the locate buffer, the actual file will be 66;; compress a file in the locate buffer, the actual file will be
@@ -90,7 +90,7 @@
90;; 90;;
91;;;;;;;; ADVICE For dired-make-relative: ;;;;;;;;; 91;;;;;;;; ADVICE For dired-make-relative: ;;;;;;;;;
92;; 92;;
93;; For certain dired commands to work right, you should also include the 93;; For certain Dired commands to work right, you should also include the
94;; following in your _emacs/.emacs: 94;; following in your _emacs/.emacs:
95;; 95;;
96;; (defadvice dired-make-relative (before set-no-error activate) 96;; (defadvice dired-make-relative (before set-no-error activate)
@@ -439,7 +439,7 @@ file name or is inside a subdirectory."
439(define-derived-mode locate-mode special-mode "Locate" 439(define-derived-mode locate-mode special-mode "Locate"
440 "Major mode for the `*Locate*' buffer made by \\[locate]. 440 "Major mode for the `*Locate*' buffer made by \\[locate].
441\\<locate-mode-map>\ 441\\<locate-mode-map>\
442In that buffer, you can use almost all the usual dired bindings. 442In that buffer, you can use almost all the usual Dired bindings.
443\\[locate-find-directory] visits the directory of the file on the current line. 443\\[locate-find-directory] visits the directory of the file on the current line.
444This function runs `locate-mode-hook' before returning. 444This function runs `locate-mode-hook' before returning.
445 445
diff --git a/lisp/msb.el b/lisp/msb.el
index ec5ca9790da..4252d631335 100644
--- a/lisp/msb.el
+++ b/lisp/msb.el
@@ -398,7 +398,7 @@ Optional second argument MAXBUF is completely ignored."
398 (buffer-name))))) 398 (buffer-name)))))
399 399
400(defun msb-dired-item-handler (_buffer &optional _maxbuf) 400(defun msb-dired-item-handler (_buffer &optional _maxbuf)
401 "Create one string item, concerning a dired BUFFER, for the buffer menu. 401 "Create one string item, concerning a Dired BUFFER, for the buffer menu.
402The item looks like: 402The item looks like:
403*% <buffer-name> 403*% <buffer-name>
404The `*' appears only if the buffer is marked as modified. 404The `*' appears only if the buffer is marked as modified.
@@ -434,7 +434,7 @@ An item looks like (NAME . BUFFER)."
434 434
435 435
436(defun msb-sort-by-directory (item1 item2) 436(defun msb-sort-by-directory (item1 item2)
437 "Sort the items ITEM1 and ITEM2 by directory name. Made for dired. 437 "Sort the items ITEM1 and ITEM2 by directory name. Made for Dired.
438An item look like (NAME . BUFFER)." 438An item look like (NAME . BUFFER)."
439 (string-lessp (with-current-buffer (cdr item1) 439 (string-lessp (with-current-buffer (cdr item1)
440 (msb--dired-directory)) 440 (msb--dired-directory))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 4a0c09ff722..df8ca151718 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -509,8 +509,9 @@ The string is used in `tramp-methods'.")
509 "Enable \"run0\" method." 509 "Enable \"run0\" method."
510 (add-to-list 'tramp-methods 510 (add-to-list 'tramp-methods
511 `("run0" 511 `("run0"
512 (tramp-login-program "systemd-run") 512 (tramp-login-program "run0")
513 (tramp-login-args (("--uid" "%u") ("-t") ("%l"))) 513 (tramp-login-args (("--user" "%u")
514 ("--background" "''") ("%l")))
514 (tramp-remote-shell ,tramp-default-remote-shell) 515 (tramp-remote-shell ,tramp-default-remote-shell)
515 (tramp-remote-shell-args ("-c")) 516 (tramp-remote-shell-args ("-c"))
516 (tramp-connection-timeout 10) 517 (tramp-connection-timeout 10)
diff --git a/lisp/printing.el b/lisp/printing.el
index 404d1be619f..cbb78265f3c 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -1663,7 +1663,7 @@ DEFAULT It's a way to set default values when this entry is selected.
1663 (pr-gs-device . (my-gs-device t)) 1663 (pr-gs-device . (my-gs-device t))
1664 1664
1665This variable should be modified by customization engine. If this variable is 1665This variable should be modified by customization engine. If this variable is
1666modified by other means (for example, a lisp function), use `pr-update-menus' 1666modified by other means (for example, a Lisp function), use `pr-update-menus'
1667function (see it for documentation) to update PostScript printer menu. 1667function (see it for documentation) to update PostScript printer menu.
1668 1668
1669Examples: 1669Examples:
@@ -2335,7 +2335,7 @@ DEFAULT It's a way to set default values when this entry is selected.
2335 2335
2336 (set VARIABLE (eval VALUE)) 2336 (set VARIABLE (eval VALUE))
2337 2337
2338 Note that VALUE can be any valid lisp expression. So, don't 2338 Note that VALUE can be any valid Lisp expression. So, don't
2339 forget to quote symbols and constant lists. 2339 forget to quote symbols and constant lists.
2340 If VARIABLE is the special keyword `inherits-from:', VALUE must 2340 If VARIABLE is the special keyword `inherits-from:', VALUE must
2341 be a symbol name setting defined in `pr-setting-database' from 2341 be a symbol name setting defined in `pr-setting-database' from
@@ -2347,7 +2347,7 @@ DEFAULT It's a way to set default values when this entry is selected.
2347 (pr-gs-device . (my-gs-device t)) 2347 (pr-gs-device . (my-gs-device t))
2348 2348
2349This variable should be modified by customization engine. If this variable is 2349This variable should be modified by customization engine. If this variable is
2350modified by other means (for example, a lisp function), use `pr-update-menus' 2350modified by other means (for example, a Lisp function), use `pr-update-menus'
2351function (see it for documentation) to update PostScript utility menu. 2351function (see it for documentation) to update PostScript utility menu.
2352 2352
2353NOTE: Don't forget to download and install the utilities declared on 2353NOTE: Don't forget to download and install the utilities declared on
diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.el
index dc778b14061..21ea9bfb8b3 100644
--- a/lisp/progmodes/etags-regen.el
+++ b/lisp/progmodes/etags-regen.el
@@ -294,7 +294,9 @@ File extensions to generate the tags for."
294 (add-hook 'before-save-hook #'etags-regen--mark-as-new) 294 (add-hook 'before-save-hook #'etags-regen--mark-as-new)
295 (setq etags-regen--tags-file tags-file 295 (setq etags-regen--tags-file tags-file
296 etags-regen--tags-root root) 296 etags-regen--tags-root root)
297 (visit-tags-table etags-regen--tags-file)) 297 (visit-tags-table etags-regen--tags-file)
298 (with-current-buffer (get-file-buffer tags-file)
299 (add-hook 'kill-buffer-hook #'etags-regen--tags-cleanup nil t)))
298 300
299(defun etags-regen--ctags-p () 301(defun etags-regen--ctags-p ()
300 (string-search "Ctags" 302 (string-search "Ctags"
@@ -390,7 +392,8 @@ File extensions to generate the tags for."
390 392
391(defun etags-regen--tags-cleanup () 393(defun etags-regen--tags-cleanup ()
392 (when etags-regen--tags-file 394 (when etags-regen--tags-file
393 (let ((buffer (get-file-buffer etags-regen--tags-file))) 395 (let ((buffer (get-file-buffer etags-regen--tags-file))
396 kill-buffer-hook)
394 (and buffer 397 (and buffer
395 (kill-buffer buffer))) 398 (kill-buffer buffer)))
396 (tags-reset-tags-tables) 399 (tags-reset-tags-tables)
diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index 7085089dbe3..efe42762a6b 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -28,7 +28,7 @@
28 28
29;; Emacs's traditional method for making buffer names unique adds <2>, <3>, 29;; Emacs's traditional method for making buffer names unique adds <2>, <3>,
30;; etc. to the end of (all but one of) the buffers. This file replaces 30;; etc. to the end of (all but one of) the buffers. This file replaces
31;; that behavior, for buffers visiting files and dired buffers, with a 31;; that behavior, for buffers visiting files and Dired buffers, with a
32;; uniquification that adds parts of the file name until the buffer names 32;; uniquification that adds parts of the file name until the buffer names
33;; are unique. For instance, buffers visiting /u/mernst/tmp/Makefile and 33;; are unique. For instance, buffers visiting /u/mernst/tmp/Makefile and
34;; /usr/projects/zaphod/Makefile would be named Makefile|tmp and 34;; /usr/projects/zaphod/Makefile would be named Makefile|tmp and
@@ -148,7 +148,7 @@ file name components (default \"\\\")."
148 :type '(choice (const nil) string)) 148 :type '(choice (const nil) string))
149 149
150(defcustom uniquify-trailing-separator-p nil 150(defcustom uniquify-trailing-separator-p nil
151 "If non-nil, add a file name separator to dired buffer names. 151 "If non-nil, add a file name separator to Dired buffer names.
152If `uniquify-buffer-name-style' is `forward', add the separator at the end; 152If `uniquify-buffer-name-style' is `forward', add the separator at the end;
153if it is `reverse', add the separator at the beginning; otherwise, this 153if it is `reverse', add the separator at the beginning; otherwise, this
154variable is ignored." 154variable is ignored."
diff --git a/lisp/wdired.el b/lisp/wdired.el
index be7e39c8957..8ce115eb142 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -35,7 +35,7 @@
35;; Dired buffer editable, by changing the buffer mode (which inhibits 35;; Dired buffer editable, by changing the buffer mode (which inhibits
36;; all of the commands of Dired mode). Here you can edit the names of 36;; all of the commands of Dired mode). Here you can edit the names of
37;; one or more files and directories, and when you press `C-c C-c', 37;; one or more files and directories, and when you press `C-c C-c',
38;; the renaming takes effect and you are back to dired mode. 38;; the renaming takes effect and you are back to Dired mode.
39;; 39;;
40;; Other things you can do with WDired: 40;; Other things you can do with WDired:
41;; 41;;
@@ -72,7 +72,7 @@
72(autoload 'dired-do-create-files-regexp "dired-aux") 72(autoload 'dired-do-create-files-regexp "dired-aux")
73 73
74(defgroup wdired nil 74(defgroup wdired nil
75 "Mode to rename files by editing their names in dired buffers." 75 "Mode to rename files by editing their names in Dired buffers."
76 :group 'dired) 76 :group 'dired)
77 77
78(defcustom wdired-use-interactive-rename nil 78(defcustom wdired-use-interactive-rename nil
@@ -438,7 +438,7 @@ non-nil means return old filename."
438 (concat (dired-current-directory) file)))))) 438 (concat (dired-current-directory) file))))))
439 439
440(defun wdired-change-to-dired-mode () 440(defun wdired-change-to-dired-mode ()
441 "Change the mode back to dired." 441 "Change the mode back to Dired."
442 (or (eq major-mode 'wdired-mode) 442 (or (eq major-mode 'wdired-mode)
443 (error "Not a Wdired buffer")) 443 (error "Not a Wdired buffer"))
444 (let ((inhibit-read-only t)) 444 (let ((inhibit-read-only t))
@@ -677,8 +677,8 @@ non-nil means return old filename."
677 (make-directory (file-name-directory file-new) t))) 677 (make-directory (file-name-directory file-new) t)))
678 678
679(defun wdired-exit () 679(defun wdired-exit ()
680 "Exit wdired and return to dired mode. 680 "Exit wdired and return to Dired mode.
681Just return to dired mode if there are no changes. Otherwise, 681Just return to Dired mode if there are no changes. Otherwise,
682ask a yes-or-no question whether to save or cancel changes, 682ask a yes-or-no question whether to save or cancel changes,
683and proceed depending on the answer." 683and proceed depending on the answer."
684 (interactive) 684 (interactive)
diff --git a/lisp/woman.el b/lisp/woman.el
index 2357ba6b132..7c68ef0334b 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -92,7 +92,7 @@
92;; (add-hook 'dired-mode-hook 92;; (add-hook 'dired-mode-hook
93;; (lambda () 93;; (lambda ()
94;; (define-key dired-mode-map "W" 'woman-dired-find-file))) 94;; (define-key dired-mode-map "W" 'woman-dired-find-file)))
95;; and open the directory containing the man page file using dired, 95;; and open the directory containing the man page file using Dired,
96;; put the cursor on the file, and press `W'. 96;; put the cursor on the file, and press `W'.
97 97
98;; In each case, the result should (!) be a buffer in Man mode showing 98;; In each case, the result should (!) be a buffer in Man mode showing
@@ -102,7 +102,7 @@
102;; manual-browsing facility rather than `WoMan' -- this is 102;; manual-browsing facility rather than `WoMan' -- this is
103;; intentional!) 103;; intentional!)
104 104
105;; (By default, WoMan will automatically define the dired keys "W" and 105;; (By default, WoMan will automatically define the Dired keys "W" and
106;; "w" when it loads, but only if they are not already defined. This 106;; "w" when it loads, but only if they are not already defined. This
107;; behavior is controlled by the user option `woman-dired-keys'. 107;; behavior is controlled by the user option `woman-dired-keys'.
108;; Note that the `dired-x' (dired extra) package binds 108;; Note that the `dired-x' (dired extra) package binds
@@ -1526,7 +1526,7 @@ Also make each path-info component into a list.
1526 (woman-dired-define-key key))) 1526 (woman-dired-define-key key)))
1527 1527
1528(defun woman-dired-define-keys () 1528(defun woman-dired-define-keys ()
1529 "Define dired keys to run WoMan according to `woman-dired-keys'." 1529 "Define Dired keys to run WoMan according to `woman-dired-keys'."
1530 (if woman-dired-keys 1530 (if woman-dired-keys
1531 (if (listp woman-dired-keys) 1531 (if (listp woman-dired-keys)
1532 (mapc #'woman-dired-define-key woman-dired-keys) 1532 (mapc #'woman-dired-define-key woman-dired-keys)
@@ -1544,7 +1544,7 @@ Also make each path-info component into a list.
1544 1544
1545;;;###autoload 1545;;;###autoload
1546(defun woman-dired-find-file () 1546(defun woman-dired-find-file ()
1547 "In dired, run the WoMan man-page browser on this file." 1547 "In Dired, run the WoMan man-page browser on this file."
1548 (interactive) 1548 (interactive)
1549 (woman-find-file (dired-get-filename))) 1549 (woman-find-file (dired-get-filename)))
1550 1550
diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el
index f4cff06f942..f65c1496087 100644
--- a/test/lisp/erc/erc-tests.el
+++ b/test/lisp/erc/erc-tests.el
@@ -1635,25 +1635,27 @@
1635 '("Stripping" "Padding")) 1635 '("Stripping" "Padding"))
1636 1636
1637(ert-deftest erc--check-prompt-input-for-multiline-blanks () 1637(ert-deftest erc--check-prompt-input-for-multiline-blanks ()
1638 (erc-tests-common-with-process-input-spy 1638 :tags '(:expensive-test)
1639 (lambda (next) 1639 (ert-with-message-capture messages
1640 (erc-tests-common-init-server-proc "sleep" "10") 1640 (erc-tests-common-with-process-input-spy
1641 (should-not erc-send-whitespace-lines) 1641 (lambda (next)
1642 (should erc-warn-about-blank-lines) 1642 (erc-tests-common-init-server-proc "sleep" "300")
1643 1643 (should-not erc-send-whitespace-lines)
1644 (pcase-dolist (`((,wb ,sw) . ,ex) erc-tests--check-prompt-input--expect) 1644 (should erc-warn-about-blank-lines)
1645 (let ((print-escape-newlines t) 1645
1646 (erc-warn-about-blank-lines (eq wb '+wb)) 1646 (pcase-dolist (`((,wb ,sw) . ,ex) erc-tests--check-prompt-input--expect)
1647 (erc-send-whitespace-lines (eq sw '+sw)) 1647 (let ((print-escape-newlines t)
1648 (samples '("" " " "\n" "\n " " \n" "\n\n" 1648 (erc-warn-about-blank-lines (eq wb '+wb))
1649 "a\n" "a\n " "a\n \nb"))) 1649 (erc-send-whitespace-lines (eq sw '+sw))
1650 (setq ex `(,@ex (a) (a b)) ; baseline, same for all combos 1650 (samples '("" " " "\n" "\n " " \n" "\n\n"
1651 samples `(,@samples "a" "a\nb")) 1651 "a\n" "a\n " "a\n \nb")))
1652 (dolist (input samples) 1652 (setq ex `(,@ex (a) (a b)) ; baseline, same for all combos
1653 (insert input) 1653 samples `(,@samples "a" "a\nb"))
1654 (ert-info ((format "Opts: %S, Input: %S, want: %S" 1654 (dolist (input samples)
1655 (list wb sw) input (car ex))) 1655 (insert input)
1656 (ert-with-message-capture messages 1656 (ert-info ((format "Opts: %S, Input: %S, want: %S"
1657 (list wb sw) input (car ex)))
1658 (setq messages "")
1657 (pcase-exhaustive (pop ex) 1659 (pcase-exhaustive (pop ex)
1658 ('err (let ((e (should-error (erc-send-current-line)))) 1660 ('err (let ((e (should-error (erc-send-current-line))))
1659 (should (string-match (rx (| "trailing" "blank")) 1661 (should (string-match (rx (| "trailing" "blank"))
@@ -1663,9 +1665,6 @@
1663 ('nop (erc-send-current-line) 1665 ('nop (erc-send-current-line)
1664 (should (equal (erc-user-input) input)) 1666 (should (equal (erc-user-input) input))
1665 (should-not (funcall next))) 1667 (should-not (funcall next)))
1666 ('clr (erc-send-current-line)
1667 (should (string-empty-p (erc-user-input)))
1668 (should-not (funcall next)))
1669 ((and (pred consp) v) 1668 ((and (pred consp) v)
1670 (erc-send-current-line) 1669 (erc-send-current-line)
1671 (should (string-empty-p (erc-user-input))) 1670 (should (string-empty-p (erc-user-input)))
@@ -1679,8 +1678,8 @@
1679 ('s (should (equal " \n" (car (funcall next))))) 1678 ('s (should (equal " \n" (car (funcall next)))))
1680 ('a (should (equal "a\n" (car (funcall next))))) 1679 ('a (should (equal "a\n" (car (funcall next)))))
1681 ('b (should (equal "b\n" (car (funcall next))))))) 1680 ('b (should (equal "b\n" (car (funcall next)))))))
1682 (should-not (funcall next)))))) 1681 (should-not (funcall next)))))
1683 (delete-region erc-input-marker (point-max)))))))) 1682 (delete-region erc-input-marker (point-max)))))))))
1684 1683
1685(ert-deftest erc--check-prompt-input-for-multiline-blanks/explanations () 1684(ert-deftest erc--check-prompt-input-for-multiline-blanks/explanations ()
1686 (should erc-warn-about-blank-lines) 1685 (should erc-warn-about-blank-lines)
diff --git a/test/src/sqlite-tests.el b/test/src/sqlite-tests.el
index e87a5fc77b1..1a887c3a730 100644
--- a/test/src/sqlite-tests.el
+++ b/test/src/sqlite-tests.el
@@ -37,6 +37,7 @@
37(declare-function sqlite-open "sqlite.c") 37(declare-function sqlite-open "sqlite.c")
38(declare-function sqlite-load-extension "sqlite.c") 38(declare-function sqlite-load-extension "sqlite.c")
39(declare-function sqlite-version "sqlite.c") 39(declare-function sqlite-version "sqlite.c")
40(declare-function sqlite-execute-batch "sqlite.c")
40 41
41(ert-deftest sqlite-select () 42(ert-deftest sqlite-select ()
42 (skip-unless (sqlite-available-p)) 43 (skip-unless (sqlite-available-p))