commit 879d9ce713cb43eadf5bc273619c5bf827bf041c (HEAD, refs/remotes/origin/master) Author: Michael Albinus Date: Wed Jan 30 09:28:43 2019 +0100 * test/lisp/net/tramp-tests.el (tramp-test43-asynchronous-requests): Tag it :unstable also for emba. Adapt `accept-process-output' arguments. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index c52f0092f6..92ad41b19a 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -5215,11 +5215,11 @@ Such requests could arrive from timers, process filters and process sentinels. They shall not disturb each other." ;; The test fails from time to time, w/o a reproducible pattern. So ;; we mark it as unstable. + :tags '(:expensive-test :unstable) ;; Recent investigations have uncovered a race condition in ;; `accept-process-output'. Let's check on emba, whether this has ;; been solved. - :tags - (if (getenv "EMACS_EMBA_CI") '(:expensive-test) '(:expensive-test :unstable)) + ;; (if (getenv "EMACS_EMBA_CI") '(:expensive-test) '(:expensive-test :unstable)) (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) @@ -5229,7 +5229,6 @@ process sentinels. They shall not disturb each other." ;; infrequently hangs for hours until killed by the infrastructure. (with-timeout (300 (tramp--test-timeout-handler)) (define-key special-event-map [sigusr1] 'tramp--test-timeout-handler) - (tramp--test-instrument-test-case (if (getenv "EMACS_HYDRA_CI") 10 0) (let* (;; For the watchdog. (default-directory (expand-file-name temporary-file-directory)) (watchdog commit 1f82ab7d4e9c92203b36a2e0f79f2f38f1d27e40 Author: Michael Albinus Date: Tue Jan 29 22:17:06 2019 +0100 * test/lisp/filenotify-tests.el (file-notify--deftest-remote): Tag as :unstable. diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 50036209b0..ef1271dac4 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -266,7 +266,7 @@ This returns only for the local case and gfilenotify; otherwise it is nil. (declare (indent 1)) `(ert-deftest ,(intern (concat (symbol-name test) "-remote")) () ,docstring - :tags '(:expensive-test) + :tags '(:expensive-test :unstable) :expected-result (or ,expected :passed) (skip-unless (not ,skip)) (let* ((temporary-file-directory commit 7022acb065ab73930c2b4d6ca3ddb3531704d374 Author: Robert Pluim Date: Tue Jan 29 11:05:12 2019 +0100 Move some descriptions to the right section * etc/NEWS: Move ibuffer and gnus change descriptions to mode-specific section. diff --git a/etc/NEWS b/etc/NEWS index c658406bc7..2bbc38769e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -78,20 +78,6 @@ The new command-line argument '--dump-file=FILE' allows to specify a non-default '.pdmp' file to load the state from; see the node "Initial Options" in the Emacs manual for more information. -** Ibuffer - ---- -*** All mode filters can now accept a list of symbols. -This means you can now easily filter several major modes, as well -as a single mode. - -** Gnus - -+++ -*** The nnimap backend now has support for IMAP namespaces. -This feature can be enabled by setting the new 'nnimap-use-namespaces' -server variable to non-nil. - * Startup Changes in Emacs 27.1 @@ -598,6 +584,11 @@ Of course it will still find it if you have it in ~/.ecompleterc ** Gnus ++++ +*** The nnimap backend now has support for IMAP namespaces. +This feature can be enabled by setting the new 'nnimap-use-namespaces' +server variable to non-nil. + +++ *** A prefix argument to 'gnus-summary-limit-to-score' will limit reverse. Limit to articles with score at below. @@ -725,6 +716,11 @@ can now be searched via 'C-s'. --- *** New filter 'ibuffer-filter-by-process'; bound to '/E'. +--- +*** All mode filters can now accept a list of symbols. +This means you can now easily filter several major modes, as well +as a single mode. + ** Search and Replace *** Isearch supports a prefix argument for 'C-s' ('isearch-repeat-forward') commit 7a1f11deea6bd626f0008b7423ac42378a1bd2ad Author: Eli Zaretskii Date: Tue Jan 29 18:58:54 2019 +0200 Fix documentation of pdump file installation * doc/lispref/internals.texi (Building Emacs): Correct the directory where the pdump file is installed. (Bug#34244) diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 06ff9f70bf..3fbff266ad 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -65,7 +65,7 @@ can be one of the following: Record the preloaded Lisp data in a @dfn{portable dump} file. This method produces an additional data file which Emacs will load at startup. The portable dump file is usually called @file{emacs.pdmp}, -and is installed in the Emacs @code{data-directory} (@pxref{Help +and is installed in the Emacs @code{exec-directory} (@pxref{Help Functions}). This method is the most preferred one, as it does not require Emacs to employ any special techniques of memory allocation, which might get in the way of various memory-layout techniques used by commit b092a9afe613b3ff31071f9f01be743611501f64 Author: Michael Albinus Date: Tue Jan 29 17:26:14 2019 +0100 Adapt `accept-process-output' arguments in tramp-tests * test/lisp/net/tramp-tests.el (tramp-test29-start-file-process) (tramp-test30-make-process, tramp-test31-interrupt-process) (tramp-test32-shell-command) (tramp--test-shell-command-to-string-asynchronously) (tramp-test43-asynchronous-requests): Adapt `accept-process-output' arguments. diff --git a/test/lisp/net/tramp-archive-tests.el b/test/lisp/net/tramp-archive-tests.el index 0d0062e196..1d9de39ae9 100644 --- a/test/lisp/net/tramp-archive-tests.el +++ b/test/lisp/net/tramp-archive-tests.el @@ -515,7 +515,7 @@ This checks also `file-name-as-directory', `file-name-directory', (skip-unless tramp-archive-enabled) (let ((tmp-name tramp-archive-test-archive) - (files '("." ".." "bar" "baz.tar" "foo.hrd" "foo.lnk" "foo.txt"))) + (files '("." ".." "bar" "baz.tar" "foo.hrd" "foo.lnk" "foo.txt"))) (unwind-protect (progn (should (file-directory-p tmp-name)) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 7fa25f1baf..c52f0092f6 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -3818,7 +3818,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`start-file-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3836,7 +3836,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`start-file-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3857,7 +3857,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`start-file-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3890,7 +3890,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`make-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3910,7 +3910,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`make-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3935,7 +3935,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; Read output. (with-timeout (10 (ert-fail "`make-process' timed out")) (while (< (- (point-max) (point-min)) (length "foo")) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "foo"))) ;; Cleanup. @@ -3958,8 +3958,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (delete-process proc) ;; Read output. (with-timeout (10 (ert-fail "`make-process' timed out")) - (while (process-live-p proc) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t))) (should (string-equal (buffer-string) "killed\n"))) ;; Cleanup. @@ -3980,7 +3979,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (with-current-buffer stderr (with-timeout (10 (ert-fail "`make-process' timed out")) (while (= (point-min) (point-max)) - (accept-process-output proc 0.1))) + (while (accept-process-output proc 0 nil t)))) (should (string-equal (buffer-string) "cat: /: Is a directory\n")))) @@ -4007,7 +4006,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (should (numberp (process-get proc 'remote-pid))) (should (interrupt-process proc)) ;; Let the process accept the interrupt. - (accept-process-output proc 1 nil 0) + (while (accept-process-output proc nil nil 0)) (should-not (process-live-p proc)) ;; An interrupted process cannot be interrupted, again. (should-error (interrupt-process proc) :type 'error)) @@ -4056,10 +4055,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (current-buffer)) ;; Read output. (with-timeout (10 (ert-fail "`async-shell-command' timed out")) - (while (< (- (point-max) (point-min)) - (1+ (length (file-name-nondirectory tmp-name)))) - (accept-process-output - (get-buffer-process (current-buffer)) 0.1))) + (while (accept-process-output + (get-buffer-process (current-buffer)) nil nil t))) ;; `ls' could produce colorized output. (goto-char (point-min)) (while @@ -4087,10 +4084,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (format "%s\n" (file-name-nondirectory tmp-name))) ;; Read output. (with-timeout (10 (ert-fail "`async-shell-command' timed out")) - (while (< (- (point-max) (point-min)) - (1+ (length (file-name-nondirectory tmp-name)))) - (accept-process-output - (get-buffer-process (current-buffer)) 0.1))) + (while (accept-process-output + (get-buffer-process (current-buffer)) nil nil t))) ;; `ls' could produce colorized output. (goto-char (point-min)) (while @@ -4112,10 +4107,9 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." "Like `shell-command-to-string', but for asynchronous processes." (with-temp-buffer (async-shell-command command (current-buffer)) - (with-timeout (10) - (while (get-buffer-process (current-buffer)) - (accept-process-output (get-buffer-process (current-buffer)) 0.1))) - (accept-process-output nil 0.1) + (with-timeout (10 (ert-fail "`async-shell-command-to-string' timed out")) + (while (accept-process-output + (get-buffer-process (current-buffer)) nil nil t))) (buffer-substring-no-properties (point-min) (point-max)))) ;; This test is inspired by Bug#23952. @@ -5359,7 +5353,7 @@ process sentinels. They shall not disturb each other." (should (file-attributes file))) ;; Send string to process. (process-send-string proc (format "%s\n" (buffer-name buf))) - (accept-process-output proc 0.1 nil 0) + (while (accept-process-output proc 0 nil 0)) ;; Give the watchdog a chance. (read-event nil nil 0.01) (tramp--test-message commit 492b31d977c63a90ac703aebf7120a96026f93ef Author: Michael Albinus Date: Tue Jan 29 17:25:36 2019 +0100 ; Tramp cleanup * lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection): Handle `non-essential'. * lisp/net/tramp-archive.el: Increase `max-specpdl-size' when loading tramp-gvfs. * lisp/net/tramp-rclone.el (tramp-rclone-mounted-p): Reorder for better traces. (tramp-rclone-maybe-open-connection): Handle `non-essential'. * lisp/net/tramp-sh.el (tramp-sh-handle-copy-directory) (tramp-find-inline-encoding): Simplify check. * lisp/net/tramp-smb.el (tramp-smb-handle-insert-directory) (tramp-smb-handle-insert-directory): Simplify check. * lisp/net/tramp-sudoedit.el (tramp-sudoedit-action-sudo): Simplify check. (tramp-sudoedit-maybe-open-connection): Handle `non-essential'. * lisp/net/tramp.el (tramp-handle-load, tramp-wait-for-regexp): Simplify check. (tramp-action-login, tramp-action-password, tramp-action-yesno) (tramp-action-yn, tramp-action-terminal): Return explicitly t. (tramp-process-one-action, tramp-process-actions): Adapt docstring. diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 372ce15414..d45695cbec 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -1300,6 +1300,14 @@ connection if a previous connection has died for some reason." (tramp-error vec 'file-error "Cannot switch to user `%s'" user)) (unless (process-live-p p) + ;; During completion, don't reopen a new connection. We check + ;; this for the process related to `tramp-buffer-name'; + ;; otherwise `start-file-process' wouldn't run ever when + ;; `non-essential' is non-nil. + (when (and (tramp-completion-mode-p) + (null (get-process (tramp-buffer-name vec)))) + (throw 'non-essential 'non-essential)) + (save-match-data (when (and p (processp p)) (delete-process p)) (if (zerop (length device)) diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index e4a7b157a0..f975ccfcfa 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el @@ -108,7 +108,10 @@ ;;; Code: (eval-when-compile (require 'cl-lib)) -(require 'tramp-gvfs) +;; Sometimes, compilation fails with "Variable binding depth exceeds +;; max-specpdl-size". +(eval-and-compile + (let ((max-specpdl-size (* 2 max-specpdl-size))) (require 'tramp-gvfs))) (autoload 'dired-uncache "dired") (autoload 'url-tramp-convert-url-to-tramp "url-tramp") diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el index bc48d4d3a8..3db8f1d8af 100644 --- a/lisp/net/tramp-rclone.el +++ b/lisp/net/tramp-rclone.el @@ -467,19 +467,19 @@ file names." (when (tramp-get-connection-process vec) ;; We cannot use `with-connection-property', because we don't want ;; to cache a nil result. - (or (tramp-get-connection-property - (tramp-get-connection-process vec) "mounted" nil) + (unless (tramp-get-connection-property + (tramp-get-connection-process vec) "mounted" nil) + (let* ((default-directory temporary-file-directory) + (mount (shell-command-to-string "mount -t fuse.rclone"))) + (tramp-message vec 6 "%s" "mount -t fuse.rclone") + (tramp-message vec 6 "\n%s" mount) (tramp-set-connection-property (tramp-get-connection-process vec) "mounted" - (let* ((default-directory temporary-file-directory) - (mount (shell-command-to-string "mount -t fuse.rclone"))) - (tramp-message vec 6 "%s" "mount -t fuse.rclone") - (tramp-message vec 6 "\n%s" mount) - (when (string-match - (format - "^\\(%s:\\S-*\\)" (regexp-quote (tramp-file-name-host vec))) - mount) - (match-string 1 mount))))))) + (when (string-match + (format + "^\\(%s:\\S-*\\)" (regexp-quote (tramp-file-name-host vec))) + mount) + (match-string 1 mount))))))) (defun tramp-rclone-flush-directory-cache (vec) "Flush directory cache of VEC mount." @@ -544,6 +544,14 @@ connection if a previous connection has died for some reason." (if (zerop (length host)) (tramp-error vec 'file-error "Storage %s not connected" host)) + ;; During completion, don't reopen a new connection. We check + ;; this for the process related to `tramp-buffer-name'; + ;; otherwise `start-file-process' wouldn't run ever when + ;; `non-essential' is non-nil. + (when (and (tramp-completion-mode-p) + (null (get-process (tramp-buffer-name vec)))) + (throw 'non-essential 'non-essential)) + ;; We need a process bound to the connection buffer. Therefore, ;; we create a dummy process. Maybe there is a better solution? (unless (get-buffer-process (tramp-get-connection-buffer vec)) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index e4ea9ecb9f..5ed7513275 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -1931,7 +1931,7 @@ tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'" (setq newname (expand-file-name (file-name-nondirectory dirname) newname))) - (when (not (file-directory-p (file-name-directory newname))) + (unless (file-directory-p (file-name-directory newname)) (make-directory (file-name-directory newname) parents)) (tramp-do-copy-or-rename-file-out-of-band 'copy dirname newname keep-date)) @@ -4458,7 +4458,7 @@ Goes through the list `tramp-local-coding-commands' and ;; actually check the output it gives. And also, when ;; redirecting "mimencode" output to /dev/null, then as root ;; it might change the permissions of /dev/null! - (when (not (stringp rem-enc)) + (unless (stringp rem-enc) (let ((name (symbol-name rem-enc))) (while (string-match "-" name) (setq name (replace-match "_" nil t name))) @@ -4471,7 +4471,7 @@ Goes through the list `tramp-local-coding-commands' and vec (format "%s