aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2017-11-29 17:12:56 -0800
committerGlenn Morris2017-11-29 17:12:56 -0800
commitf069ea4f84a94bfbbd444073729f81fdd27c9445 (patch)
tree6adf14a7d71264bb20c87a426df6e18e0edba9a3
parent03e1012be4028e653bd88c93846b17172b5c0faa (diff)
parent408862f02a874dcd9cfc2599adb35dec522b3ef4 (diff)
downloademacs-f069ea4f84a94bfbbd444073729f81fdd27c9445.tar.gz
emacs-f069ea4f84a94bfbbd444073729f81fdd27c9445.zip
Merge from origin/emacs-26
408862f02a (origin/emacs-26) ; * lisp/emacs-lisp/bytecomp.el: Tweak m... 9964db4c34 Restore obsolete method of changing byte-compile-dest-file 3dd25aeecb Some minor Tramp corrections d670a15f25 * doc/misc/url.texi (http/https): Fix typo 99d07e8d5e Remove some bogus definition-prefixes from loaddefs 6067f0c702 Shell-quote wildcards when invoking 'vc-git-grep' 0540df10e6 Update documentation of '.dir-locals-2.el' f2441ab320 ; Fix some tiny doc and comment typos 22ff46e6d8 ; Fix some comment typos # Conflicts: # etc/NEWS
-rw-r--r--doc/lispref/variables.texi7
-rw-r--r--doc/misc/url.texi2
-rw-r--r--etc/NEWS.262
-rw-r--r--lisp/emacs-lisp/autoload.el1
-rw-r--r--lisp/emacs-lisp/bytecomp.el7
-rw-r--r--lisp/files.el18
-rw-r--r--lisp/gnus/gnus-cus.el4
-rw-r--r--lisp/gnus/message.el4
-rw-r--r--lisp/gnus/mm-decode.el2
-rw-r--r--lisp/gnus/smime.el2
-rw-r--r--lisp/htmlfontify.el2
-rw-r--r--lisp/net/mailcap.el2
-rw-r--r--lisp/net/tramp-adb.el2
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/net/tramp.el20
-rw-r--r--lisp/progmodes/ebnf2ps.el2
-rw-r--r--lisp/progmodes/flymake.el2
-rw-r--r--lisp/vc/vc-git.el4
-rw-r--r--test/lisp/net/tramp-tests.el100
20 files changed, 107 insertions, 80 deletions
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index a871352b004..5bee0f9d82a 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1919,7 +1919,12 @@ settings to any file in that directory or any of its subdirectories
1919(optionally, you can exclude subdirectories; see below). 1919(optionally, you can exclude subdirectories; see below).
1920If some of the subdirectories have their own @file{.dir-locals.el} 1920If some of the subdirectories have their own @file{.dir-locals.el}
1921files, Emacs uses the settings from the deepest file it finds starting 1921files, Emacs uses the settings from the deepest file it finds starting
1922from the file's directory and moving up the directory tree. The file 1922from the file's directory and moving up the directory tree. This
1923constant is also used to derive the name of a second dir-locals file
1924@file{.dir-locals-2.el}. If this second dir-locals file is present,
1925then that is loaded instead of @file{.dir-locals.el}. This is useful
1926when @file{.dir-locals.el} is under version control in a shared
1927repository and cannot be used for personal customizations. The file
1923specifies local variables as a specially formatted list; see 1928specifies local variables as a specially formatted list; see
1924@ref{Directory Variables, , Per-directory Local Variables, emacs, The 1929@ref{Directory Variables, , Per-directory Local Variables, emacs, The
1925GNU Emacs Manual}, for more details. 1930GNU Emacs Manual}, for more details.
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index e98fab4e011..075d0f6fed1 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -401,7 +401,7 @@ gateway method to be used. @xref{Gateways in general}.
401@defopt url-honor-refresh-requests 401@defopt url-honor-refresh-requests
402If this option is non-@code{nil} (the default), the @code{url} library 402If this option is non-@code{nil} (the default), the @code{url} library
403honors the HTTP @samp{Refresh} header, which is used by servers to 403honors the HTTP @samp{Refresh} header, which is used by servers to
404direct clients to reload documents from the same URL or a or different 404direct clients to reload documents from the same URL or a different
405one. If the value is @code{nil}, the @samp{Refresh} header is 405one. If the value is @code{nil}, the @samp{Refresh} header is
406ignored; any other value means to ask the user on each request. 406ignored; any other value means to ask the user on each request.
407@end defopt 407@end defopt
diff --git a/etc/NEWS.26 b/etc/NEWS.26
index f7a9feb6e49..4ccf468693c 100644
--- a/etc/NEWS.26
+++ b/etc/NEWS.26
@@ -366,7 +366,7 @@ These local variables will thus not vanish on setting a major mode.
366 366
367+++ 367+++
368** A second dir-local file (.dir-locals-2.el) is now accepted. 368** A second dir-local file (.dir-locals-2.el) is now accepted.
369See the variable 'dir-locals-file-2' for more information. 369See the doc string of 'dir-locals-file' for more information.
370 370
371+++ 371+++
372** Connection-local variables can be used to specify local variables 372** Connection-local variables can be used to specify local variables
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 27426c45307..7299ae9d203 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -761,6 +761,7 @@ FILE's modification time."
761 "def-edebug-spec" 761 "def-edebug-spec"
762 ;; Hmm... this is getting ugly: 762 ;; Hmm... this is getting ugly:
763 "define-widget" 763 "define-widget"
764 "define-erc-module"
764 "define-erc-response-handler" 765 "define-erc-response-handler"
765 "defun-rcirc-command")))) 766 "defun-rcirc-command"))))
766 (push (match-string 2) defs)) 767 (push (match-string 2) defs))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index e4d8a202a3b..e5a1ea782e8 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -172,6 +172,12 @@ are found in the same directory is hard-coded in various places in Emacs.)"
172 (funcall handler 'byte-compiler-base-file-name filename) 172 (funcall handler 'byte-compiler-base-file-name filename)
173 filename))) 173 filename)))
174 174
175;; Sadly automake relies on this misfeature up to at least version 1.15.1.
176(if (fboundp 'byte-compile-dest-file)
177 (or (featurep 'bytecomp)
178 (display-warning 'bytecomp (format-message "\
179Changing `byte-compile-dest-file' is obsolete (as of 23.2);
180set `byte-compile-dest-file-function' instead.")))
175(defun byte-compile-dest-file (filename) 181(defun byte-compile-dest-file (filename)
176 "Convert an Emacs Lisp source file name to a compiled file name. 182 "Convert an Emacs Lisp source file name to a compiled file name.
177If `byte-compile-dest-file-function' is non-nil, uses that 183If `byte-compile-dest-file-function' is non-nil, uses that
@@ -186,6 +192,7 @@ otherwise adds \".elc\"."
186 (cond ((string-match emacs-lisp-file-regexp filename) 192 (cond ((string-match emacs-lisp-file-regexp filename)
187 (concat (substring filename 0 (match-beginning 0)) ".elc")) 193 (concat (substring filename 0 (match-beginning 0)) ".elc"))
188 (t (concat filename ".elc"))))) 194 (t (concat filename ".elc")))))
195)
189 196
190;; This can be the 'byte-compile property of any symbol. 197;; This can be the 'byte-compile property of any symbol.
191(autoload 'byte-compile-inline-expand "byte-opt") 198(autoload 'byte-compile-inline-expand "byte-opt")
diff --git a/lisp/files.el b/lisp/files.el
index 5d78cd07b6e..25746094d2a 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3905,16 +3905,16 @@ VARIABLES list of the class. The list is processed in order.
3905 "File that contains directory-local variables. 3905 "File that contains directory-local variables.
3906It has to be constant to enforce uniform values across different 3906It has to be constant to enforce uniform values across different
3907environments and users. 3907environments and users.
3908See also `dir-locals-file-2', whose values override this one's.
3909See Info node `(elisp)Directory Local Variables' for details.")
3910 3908
3911(defconst dir-locals-file-2 ".dir-locals-2.el" 3909A second dir-locals file can be used by a user to specify their
3912 "File that contains directory-local variables. 3910personal dir-local variables even if the current directory
3913This essentially a second file that can be used like 3911already has a `dir-locals-file' that is shared with other
3914`dir-locals-file', so that users can have specify their personal 3912users (such as in a git repository). The name of this second
3915dir-local variables even if the current directory already has a 3913file is derived by appending \"-2\" to the base name of
3916`dir-locals-file' that is shared with other users (such as in a 3914`dir-locals-file'. With the default value of `dir-locals-file',
3917git repository). 3915a \".dir-locals-2.el\" file in the same directory will override
3916the \".dir-locals.el\".
3917
3918See Info node `(elisp)Directory Local Variables' for details.") 3918See Info node `(elisp)Directory Local Variables' for details.")
3919 3919
3920(defun dir-locals--all-files (directory) 3920(defun dir-locals--all-files (directory)
diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el
index c22c9c1d5ac..f698d806171 100644
--- a/lisp/gnus/gnus-cus.el
+++ b/lisp/gnus/gnus-cus.el
@@ -454,7 +454,7 @@ Set variables local to the group you are entering.
454If you want to turn threading off in `news.answers', you could put 454If you want to turn threading off in `news.answers', you could put
455`(gnus-show-threads nil)' in the group parameters of that group. 455`(gnus-show-threads nil)' in the group parameters of that group.
456`gnus-show-threads' will be made into a local variable in the summary 456`gnus-show-threads' will be made into a local variable in the summary
457buffer you enter, and the form nil will be `eval'ed there. 457buffer you enter, and the form nil will be `eval'uated there.
458 458
459This can also be used as a group-specific hook function, if you'd 459This can also be used as a group-specific hook function, if you'd
460like. If you want to hear a beep when you enter a group, you could 460like. If you want to hear a beep when you enter a group, you could
@@ -535,7 +535,7 @@ These files will not be loaded, even though they would normally be so,
535for some reason or other.") 535for some reason or other.")
536 536
537 (eval (sexp :tag "Eval" :value nil) "\ 537 (eval (sexp :tag "Eval" :value nil) "\
538The value of this entry will be `eval'el. 538The value of this entry will be `eval'uated.
539This element will be ignored when handling global score files.") 539This element will be ignored when handling global score files.")
540 540
541 (read-only (boolean :tag "Read-only" :value t) "\ 541 (read-only (boolean :tag "Read-only" :value t) "\
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 1f1302e3fc8..8e3d299ee80 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4774,7 +4774,7 @@ to find out how to use this."
4774 message-qmail-inject-program nil nil nil 4774 message-qmail-inject-program nil nil nil
4775 ;; qmail-inject's default behavior is to look for addresses on the 4775 ;; qmail-inject's default behavior is to look for addresses on the
4776 ;; command line; if there're none, it scans the headers. 4776 ;; command line; if there're none, it scans the headers.
4777 ;; yes, it does The Right Thing w.r.t. Resent-To and it's kin. 4777 ;; yes, it does The Right Thing w.r.t. Resent-To and its kin.
4778 ;; 4778 ;;
4779 ;; in general, ALL of qmail-inject's defaults are perfect for simply 4779 ;; in general, ALL of qmail-inject's defaults are perfect for simply
4780 ;; reading a formatted (i. e., at least a To: or Resent-To header) 4780 ;; reading a formatted (i. e., at least a To: or Resent-To header)
@@ -4792,7 +4792,7 @@ to find out how to use this."
4792 (if (functionp message-qmail-inject-args) 4792 (if (functionp message-qmail-inject-args)
4793 (funcall message-qmail-inject-args) 4793 (funcall message-qmail-inject-args)
4794 message-qmail-inject-args))) 4794 message-qmail-inject-args)))
4795 ;; qmail-inject doesn't say anything on it's stdout/stderr, 4795 ;; qmail-inject doesn't say anything on its stdout/stderr,
4796 ;; we have to look at the retval instead 4796 ;; we have to look at the retval instead
4797 (0 nil) 4797 (0 nil)
4798 (100 (error "qmail-inject reported permanent failure")) 4798 (100 (error "qmail-inject reported permanent failure"))
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index c6ac0567fbb..82b378e6270 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -676,7 +676,7 @@ MIME-Version header before proceeding."
676 (mm-alist-to-plist (cdr ctl)) (car ctl)) 676 (mm-alist-to-plist (cdr ctl)) (car ctl))
677 677
678 ;; what really needs to be done here is a way to link a 678 ;; what really needs to be done here is a way to link a
679 ;; MIME handle back to it's parent MIME handle (in a multilevel 679 ;; MIME handle back to its parent MIME handle (in a multilevel
680 ;; MIME article). That would probably require changing 680 ;; MIME article). That would probably require changing
681 ;; the mm-handle API so we simply store the multipart buffer 681 ;; the mm-handle API so we simply store the multipart buffer
682 ;; name as a text property of the "multipart/whatever" string. 682 ;; name as a text property of the "multipart/whatever" string.
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index f62b65a0661..21f8c09e1cb 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -67,7 +67,7 @@
67;; 67;;
68;; To be able to verify messages you need to build up trust with 68;; To be able to verify messages you need to build up trust with
69;; someone. Perhaps you trust the CA that issued your certificate, at 69;; someone. Perhaps you trust the CA that issued your certificate, at
70;; least I did, so I export it's certificates from my PKCS#12 70;; least I did, so I export its certificates from my PKCS#12
71;; certificate with: 71;; certificate with:
72;; 72;;
73;; $ openssl pkcs12 -in mykey.p12 -cacerts -nodes > cacert.pem 73;; $ openssl pkcs12 -in mykey.p12 -cacerts -nodes > cacert.pem
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index a4c68d329b7..cb4c83d33e0 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -461,7 +461,7 @@ and so on."
461 optimization - If on, preserve overlay highlighting 461 optimization - If on, preserve overlay highlighting
462 (cf ediff or goo-font-lock) as well as basic faces.\n 462 (cf ediff or goo-font-lock) as well as basic faces.\n
463 body-text-only : Emit only body-text. In concrete terms, 463 body-text-only : Emit only body-text. In concrete terms,
464 1. Suppress calls to `hfy-page-header'and 464 1. Suppress calls to `hfy-page-header' and
465 `hfy-page-footer' 465 `hfy-page-footer'
466 2. Pretend that `div-wrapper' option above is 466 2. Pretend that `div-wrapper' option above is
467 turned off 467 turned off
diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el
index 86587466ef5..b4b38707c89 100644
--- a/lisp/net/mailcap.el
+++ b/lisp/net/mailcap.el
@@ -323,7 +323,7 @@ means the viewer is always valid. If it is a Lisp function, it is
323called with a list of items from any extra fields from the 323called with a list of items from any extra fields from the
324Content-Type header as argument to return a boolean value for the 324Content-Type header as argument to return a boolean value for the
325validity. Otherwise, if it is a non-function Lisp symbol or list 325validity. Otherwise, if it is a non-function Lisp symbol or list
326whose car is a symbol, it is `eval'led to yield the validity. If it 326whose car is a symbol, it is `eval'uated to yield the validity. If it
327is a string or list of strings, it represents a shell command to run 327is a string or list of strings, it represents a shell command to run
328to return a true or false shell value for the validity.") 328to return a true or false shell value for the validity.")
329(put 'mailcap-mime-data 'risky-local-variable t) 329(put 'mailcap-mime-data 'risky-local-variable t)
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index bf21db2e8d8..8399c02923d 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -137,7 +137,7 @@ It is used for TCP/IP devices."
137 (file-readable-p . tramp-handle-file-exists-p) 137 (file-readable-p . tramp-handle-file-exists-p)
138 (file-regular-p . tramp-handle-file-regular-p) 138 (file-regular-p . tramp-handle-file-regular-p)
139 (file-remote-p . tramp-handle-file-remote-p) 139 (file-remote-p . tramp-handle-file-remote-p)
140 (file-selinux-context . ignore) 140 (file-selinux-context . tramp-handle-file-selinux-context)
141 (file-symlink-p . tramp-handle-file-symlink-p) 141 (file-symlink-p . tramp-handle-file-symlink-p)
142 (file-system-info . tramp-adb-handle-file-system-info) 142 (file-system-info . tramp-adb-handle-file-system-info)
143 (file-truename . tramp-adb-handle-file-truename) 143 (file-truename . tramp-adb-handle-file-truename)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 404af983b50..fe5a98909e0 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -517,7 +517,7 @@ Every entry is a list (NAME ADDRESS).")
517 (file-readable-p . tramp-gvfs-handle-file-readable-p) 517 (file-readable-p . tramp-gvfs-handle-file-readable-p)
518 (file-regular-p . tramp-handle-file-regular-p) 518 (file-regular-p . tramp-handle-file-regular-p)
519 (file-remote-p . tramp-handle-file-remote-p) 519 (file-remote-p . tramp-handle-file-remote-p)
520 (file-selinux-context . ignore) 520 (file-selinux-context . tramp-handle-file-selinux-context)
521 (file-symlink-p . tramp-handle-file-symlink-p) 521 (file-symlink-p . tramp-handle-file-symlink-p)
522 (file-system-info . tramp-gvfs-handle-file-system-info) 522 (file-system-info . tramp-gvfs-handle-file-system-info)
523 (file-truename . tramp-handle-file-truename) 523 (file-truename . tramp-handle-file-truename)
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index f35c10b58ab..eb0d6b50731 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -253,7 +253,7 @@ See `tramp-actions-before-shell' for more info.")
253 (file-readable-p . tramp-handle-file-exists-p) 253 (file-readable-p . tramp-handle-file-exists-p)
254 (file-regular-p . tramp-handle-file-regular-p) 254 (file-regular-p . tramp-handle-file-regular-p)
255 (file-remote-p . tramp-handle-file-remote-p) 255 (file-remote-p . tramp-handle-file-remote-p)
256 ;; `file-selinux-context' performed by default handler. 256 (file-selinux-context . tramp-handle-file-selinux-context)
257 (file-symlink-p . tramp-handle-file-symlink-p) 257 (file-symlink-p . tramp-handle-file-symlink-p)
258 (file-system-info . tramp-smb-handle-file-system-info) 258 (file-system-info . tramp-smb-handle-file-system-info)
259 (file-truename . tramp-handle-file-truename) 259 (file-truename . tramp-handle-file-truename)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index cf2218dd1ec..d41ae82e1be 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -2937,14 +2937,13 @@ User is always nil."
2937 "Like `directory-file-name' for Tramp files." 2937 "Like `directory-file-name' for Tramp files."
2938 ;; If localname component of filename is "/", leave it unchanged. 2938 ;; If localname component of filename is "/", leave it unchanged.
2939 ;; Otherwise, remove any trailing slash from localname component. 2939 ;; Otherwise, remove any trailing slash from localname component.
2940 ;; Method, host, etc, are unchanged. Does it make sense to try 2940 ;; Method, host, etc, are unchanged.
2941 ;; to avoid parsing the filename? 2941 (while (with-parsed-tramp-file-name directory nil
2942 (with-parsed-tramp-file-name directory nil 2942 (and (not (zerop (length localname)))
2943 (if (and (not (zerop (length localname))) 2943 (eq (aref localname (1- (length localname))) ?/)
2944 (eq (aref localname (1- (length localname))) ?/) 2944 (not (string= localname "/"))))
2945 (not (string= localname "/"))) 2945 (setq directory (substring directory 0 -1)))
2946 (substring directory 0 -1) 2946 directory)
2947 directory)))
2948 2947
2949(defun tramp-handle-directory-files (directory &optional full match nosort) 2948(defun tramp-handle-directory-files (directory &optional full match nosort)
2950 "Like `directory-files' for Tramp files." 2949 "Like `directory-files' for Tramp files."
@@ -3172,6 +3171,11 @@ User is always nil."
3172 (t (tramp-make-tramp-file-name 3171 (t (tramp-make-tramp-file-name
3173 method user domain host port "" hop))))))))) 3172 method user domain host port "" hop)))))))))
3174 3173
3174(defun tramp-handle-file-selinux-context (_filename)
3175 "Like `file-selinux-context' for Tramp files."
3176 ;; Return nil context.
3177 '(nil nil nil nil))
3178
3175(defun tramp-handle-file-symlink-p (filename) 3179(defun tramp-handle-file-symlink-p (filename)
3176 "Like `file-symlink-p' for Tramp files." 3180 "Like `file-symlink-p' for Tramp files."
3177 (let ((x (tramp-compat-file-attribute-type (file-attributes filename)))) 3181 (let ((x (tramp-compat-file-attribute-type (file-attributes filename))))
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 5c9a106d41a..e40104353ac 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -1135,7 +1135,7 @@ Please send all bug fixes and enhancements to
1135;; Thanks to Drew Adams <drew.adams@oracle.com> for suggestions: 1135;; Thanks to Drew Adams <drew.adams@oracle.com> for suggestions:
1136;; - `ebnf-arrow-extra-width', `ebnf-arrow-scale', 1136;; - `ebnf-arrow-extra-width', `ebnf-arrow-scale',
1137;; `ebnf-production-name-p', `ebnf-stop-on-error', 1137;; `ebnf-production-name-p', `ebnf-stop-on-error',
1138;; `ebnf-file-suffix-regexp'and `ebnf-special-show-delimiter' variables. 1138;; `ebnf-file-suffix-regexp' and `ebnf-special-show-delimiter' variables.
1139;; - `ebnf-delete-style', `ebnf-eps-file' and `ebnf-eps-directory' 1139;; - `ebnf-delete-style', `ebnf-eps-file' and `ebnf-eps-directory'
1140;; commands. 1140;; commands.
1141;; - some docs fix. 1141;; - some docs fix.
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index aac167357ec..15a36175970 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -125,7 +125,7 @@ If nil, never start checking buffer automatically like this."
125 "it no longer has any effect." "26.1") 125 "it no longer has any effect." "26.1")
126 126
127(defcustom flymake-start-on-flymake-mode t 127(defcustom flymake-start-on-flymake-mode t
128 "Start syntax check when `flymake-mode'is enabled. 128 "Start syntax check when `flymake-mode' is enabled.
129Specifically, start it when the buffer is actually displayed." 129Specifically, start it when the buffer is actually displayed."
130 :type 'boolean) 130 :type 'boolean)
131 131
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 2c807a38cd5..ab8b358cf2c 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1431,7 +1431,9 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
1431 nil nil 'grep-history) 1431 nil nil 'grep-history)
1432 nil)) 1432 nil))
1433 (t (let* ((regexp (grep-read-regexp)) 1433 (t (let* ((regexp (grep-read-regexp))
1434 (files (grep-read-files regexp)) 1434 (files
1435 (mapconcat #'shell-quote-argument
1436 (split-string (grep-read-files regexp)) " "))
1435 (dir (read-directory-name "In directory: " 1437 (dir (read-directory-name "In directory: "
1436 nil default-directory t))) 1438 nil default-directory t)))
1437 (list regexp files dir)))))) 1439 (list regexp files dir))))))
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 8310003d9b1..044ab9329ff 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -1685,6 +1685,10 @@ This checks also `file-name-as-directory', `file-name-directory',
1685 "/method:host:/path/to/file")) 1685 "/method:host:/path/to/file"))
1686 (should 1686 (should
1687 (string-equal 1687 (string-equal
1688 (directory-file-name "/method:host:/path/to/file//")
1689 "/method:host:/path/to/file"))
1690 (should
1691 (string-equal
1688 (file-name-as-directory "/method:host:/path/to/file") 1692 (file-name-as-directory "/method:host:/path/to/file")
1689 "/method:host:/path/to/file/")) 1693 "/method:host:/path/to/file/"))
1690 (should 1694 (should
@@ -2341,7 +2345,10 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
2341 ;; There might be a summary line. 2345 ;; There might be a summary line.
2342 "\\(total.+[[:digit:]]+\n\\)?" 2346 "\\(total.+[[:digit:]]+\n\\)?"
2343 ;; We don't know in which order ".", ".." and "foo" appear. 2347 ;; We don't know in which order ".", ".." and "foo" appear.
2344 "\\(.+ \\(\\.?\\.\\|foo\\)\n\\)\\{3\\}"))))) 2348 (format
2349 "\\(.+ %s\\( ->.+\\)?\n\\)\\{%d\\}"
2350 (regexp-opt (directory-files tmp-name1))
2351 (length (directory-files tmp-name1))))))))
2345 2352
2346 ;; Cleanup. 2353 ;; Cleanup.
2347 (ignore-errors (delete-directory tmp-name1 'recursive)))))) 2354 (ignore-errors (delete-directory tmp-name1 'recursive))))))
@@ -4445,8 +4452,8 @@ Use the `ls' command."
4445 ;; Since Emacs 27.1. 4452 ;; Since Emacs 27.1.
4446 (skip-unless (fboundp 'file-system-info)) 4453 (skip-unless (fboundp 'file-system-info))
4447 4454
4448 ;; `file-system-info' exists since Emacs 27. We don't 4455 ;; `file-system-info' exists since Emacs 27. We don't want to see
4449 ;; want to see compiler warnings for older Emacsen. 4456 ;; compiler warnings for older Emacsen.
4450 (let ((fsi (with-no-warnings 4457 (let ((fsi (with-no-warnings
4451 (file-system-info tramp-test-temporary-file-directory)))) 4458 (file-system-info tramp-test-temporary-file-directory))))
4452 (skip-unless fsi) 4459 (skip-unless fsi)
@@ -4622,22 +4629,50 @@ process sentinels. They shall not disturb each other."
4622 (skip-unless (tramp--test-enabled)) 4629 (skip-unless (tramp--test-enabled))
4623 (skip-unless (not (tramp--test-mock-p))) 4630 (skip-unless (not (tramp--test-mock-p)))
4624 4631
4625 (let ((default-directory (expand-file-name temporary-file-directory))) 4632 (let ((default-directory (expand-file-name temporary-file-directory))
4626 (let ((code 4633 (code
4627 (format 4634 (format
4628 "(message \"Tramp loaded: %%s\" (consp (file-attributes \"%s\")))" 4635 "(message \"Tramp loaded: %%s\" (consp (file-attributes %S)))"
4629 tramp-test-temporary-file-directory))) 4636 tramp-test-temporary-file-directory)))
4637 (should
4638 (string-match
4639 "Tramp loaded: t[\n\r]+"
4640 (shell-command-to-string
4641 (format
4642 "%s -batch -Q -L %s --eval %s"
4643 (expand-file-name invocation-name invocation-directory)
4644 (mapconcat 'shell-quote-argument load-path " -L ")
4645 (shell-quote-argument code)))))))
4646
4647(ert-deftest tramp-test42-delay-load ()
4648 "Check that Tramp is loaded lazily, only when needed."
4649 ;; Tramp is neither loaded at Emacs startup, nor when completing a
4650 ;; non-Tramp file name like "/foo". Completing a Tramp-alike file
4651 ;; name like "/foo:" autoloads Tramp, when `tramp-mode' is t.
4652 (let ((default-directory (expand-file-name temporary-file-directory))
4653 (code
4654 "(progn \
4655 (setq tramp-mode %s) \
4656 (message \"Tramp loaded: %%s\" (featurep 'tramp)) \
4657 (file-name-all-completions \"/foo\" \"/\") \
4658 (message \"Tramp loaded: %%s\" (featurep 'tramp)) \
4659 (file-name-all-completions \"/foo:\" \"/\") \
4660 (message \"Tramp loaded: %%s\" (featurep 'tramp)))"))
4661 ;; Tramp doesn't load when `tramp-mode' is nil since Emacs 26.1.
4662 (dolist (tm (if (tramp--test-emacs26-p) '(t nil) '(nil)))
4630 (should 4663 (should
4631 (string-match 4664 (string-match
4632 "Tramp loaded: t[\n\r]+" 4665 (format
4666 "Tramp loaded: nil[\n\r]+Tramp loaded: nil[\n\r]+Tramp loaded: %s[\n\r]+"
4667 tm)
4633 (shell-command-to-string 4668 (shell-command-to-string
4634 (format 4669 (format
4635 "%s -batch -Q -L %s --eval %s" 4670 "%s -batch -Q -L %s --eval %s"
4636 (expand-file-name invocation-name invocation-directory) 4671 (expand-file-name invocation-name invocation-directory)
4637 (mapconcat 'shell-quote-argument load-path " -L ") 4672 (mapconcat 'shell-quote-argument load-path " -L ")
4638 (shell-quote-argument code)))))))) 4673 (shell-quote-argument (format code tm)))))))))
4639 4674
4640(ert-deftest tramp-test43-recursive-load () 4675(ert-deftest tramp-test42-recursive-load ()
4641 "Check that Tramp does not fail due to recursive load." 4676 "Check that Tramp does not fail due to recursive load."
4642 (skip-unless (tramp--test-enabled)) 4677 (skip-unless (tramp--test-enabled))
4643 4678
@@ -4660,7 +4695,7 @@ process sentinels. They shall not disturb each other."
4660 (mapconcat 'shell-quote-argument load-path " -L ") 4695 (mapconcat 'shell-quote-argument load-path " -L ")
4661 (shell-quote-argument code)))))))) 4696 (shell-quote-argument code))))))))
4662 4697
4663(ert-deftest tramp-test44-remote-load-path () 4698(ert-deftest tramp-test42-remote-load-path ()
4664 "Check that Tramp autoloads its packages with remote `load-path'." 4699 "Check that Tramp autoloads its packages with remote `load-path'."
4665 ;; `tramp-cleanup-all-connections' is autoloaded from tramp-cmds.el. 4700 ;; `tramp-cleanup-all-connections' is autoloaded from tramp-cmds.el.
4666 ;; It shall still work, when a remote file name is in the 4701 ;; It shall still work, when a remote file name is in the
@@ -4683,34 +4718,7 @@ process sentinels. They shall not disturb each other."
4683 (mapconcat 'shell-quote-argument load-path " -L ") 4718 (mapconcat 'shell-quote-argument load-path " -L ")
4684 (shell-quote-argument code))))))) 4719 (shell-quote-argument code)))))))
4685 4720
4686(ert-deftest tramp-test45-delay-load () 4721(ert-deftest tramp-test43-unload ()
4687 "Check that Tramp is loaded lazily, only when needed."
4688 ;; Tramp is neither loaded at Emacs startup, nor when completing a
4689 ;; non-Tramp file name like "/foo". Completing a Tramp-alike file
4690 ;; name like "/foo:" autoloads Tramp, when `tramp-mode' is t.
4691 (let ((code
4692 "(progn \
4693 (setq tramp-mode %s) \
4694 (message \"Tramp loaded: %%s\" (featurep 'tramp)) \
4695 (file-name-all-completions \"/foo\" \"/\") \
4696 (message \"Tramp loaded: %%s\" (featurep 'tramp)) \
4697 (file-name-all-completions \"/foo:\" \"/\") \
4698 (message \"Tramp loaded: %%s\" (featurep 'tramp)))"))
4699 ;; Tramp doesn't load when `tramp-mode' is nil since Emacs 26.1.
4700 (dolist (tm (if (tramp--test-emacs26-p) '(t nil) '(nil)))
4701 (should
4702 (string-match
4703 (format
4704 "Tramp loaded: nil[\n\r]+Tramp loaded: nil[\n\r]+Tramp loaded: %s[\n\r]+"
4705 tm)
4706 (shell-command-to-string
4707 (format
4708 "%s -batch -Q -L %s --eval %s"
4709 (expand-file-name invocation-name invocation-directory)
4710 (mapconcat 'shell-quote-argument load-path " -L ")
4711 (shell-quote-argument (format code tm)))))))))
4712
4713(ert-deftest tramp-test46-unload ()
4714 "Check that Tramp and its subpackages unload completely. 4722 "Check that Tramp and its subpackages unload completely.
4715Since it unloads Tramp, it shall be the last test to run." 4723Since it unloads Tramp, it shall be the last test to run."
4716 :tags '(:expensive-test) 4724 :tags '(:expensive-test)
@@ -4756,6 +4764,12 @@ Since it unloads Tramp, it shall be the last test to run."
4756 (ignore-errors (all-completions "tramp" (symbol-value x))) 4764 (ignore-errors (all-completions "tramp" (symbol-value x)))
4757 (ert-fail (format "Hook `%s' still contains Tramp function" x))))))) 4765 (ert-fail (format "Hook `%s' still contains Tramp function" x)))))))
4758 4766
4767(defun tramp-test-all (&optional interactive)
4768 "Run all tests for \\[tramp]."
4769 (interactive "p")
4770 (funcall
4771 (if interactive 'ert-run-tests-interactively 'ert-run-tests-batch) "^tramp"))
4772
4759;; TODO: 4773;; TODO:
4760 4774
4761;; * dired-compress-file 4775;; * dired-compress-file
@@ -4769,11 +4783,5 @@ Since it unloads Tramp, it shall be the last test to run."
4769;; * Fix `tramp-test30-interrupt-process', timeout doesn't work reliably. 4783;; * Fix `tramp-test30-interrupt-process', timeout doesn't work reliably.
4770;; * Fix Bug#16928 in `tramp-test41-asynchronous-requests'. 4784;; * Fix Bug#16928 in `tramp-test41-asynchronous-requests'.
4771 4785
4772(defun tramp-test-all (&optional interactive)
4773 "Run all tests for \\[tramp]."
4774 (interactive "p")
4775 (funcall
4776 (if interactive 'ert-run-tests-interactively 'ert-run-tests-batch) "^tramp"))
4777
4778(provide 'tramp-tests) 4786(provide 'tramp-tests)
4779;;; tramp-tests.el ends here 4787;;; tramp-tests.el ends here