emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 0518e3c: Fix problem in remote file notification


From: Michael Albinus
Subject: [Emacs-diffs] master 0518e3c: Fix problem in remote file notification
Date: Fri, 14 Jun 2019 13:45:08 -0400 (EDT)

branch: master
commit 0518e3ca98e0d6d5d96323d4f4a2246b60fe28d9
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    Fix problem in remote file notification
    
    * lisp/net/tramp-sh.el (tramp-sh-gio-monitor-process-filter)
    (tramp-sh-gvfs-monitor-dir-process-filter)
    (tramp-sh-inotifywait-process-filter): Do not kill the process.
    Let `file-notify-rm-watch' do the job.
    
    * test/lisp/filenotify-tests.el (file-notify-test03-events)
    (file-notify-test05-file-validity)
    (file-notify-test09-watched-file-in-watched-dir): Do not
    special-case remote files.
---
 lisp/net/tramp-sh.el          | 11 -----------
 test/lisp/filenotify-tests.el | 29 ++++++++++-------------------
 2 files changed, 10 insertions(+), 30 deletions(-)

diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 3d572ad..d7db69a 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -3699,10 +3699,6 @@ Fall back to normal file name handler if no Tramp 
handler exists."
               (concat remote-prefix file)
               (when file1 (concat remote-prefix file1)))))
        (setq string (replace-match "" nil nil string))
-       ;; Remove watch when file or directory to be watched is deleted.
-       (when (and (member (cl-caadr object) '(moved deleted))
-                  (string-equal file (process-get proc 'watch-name)))
-         (delete-process proc))
        ;; Usually, we would add an Emacs event now.  Unfortunately,
        ;; `unread-command-events' does not accept several events at
        ;; once.  Therefore, we apply the handler directly.
@@ -3754,10 +3750,6 @@ file-notify events."
               (concat remote-prefix file)
               (when file1 (concat remote-prefix file1)))))
        (setq string (replace-match "" nil nil string))
-       ;; Remove watch when file or directory to be watched is deleted.
-       (when (and (member (cl-caadr object) '(moved deleted))
-                  (string-equal file (process-get proc 'watch-name)))
-         (delete-process proc))
        ;; Usually, we would add an Emacs event now.  Unfortunately,
        ;; `unread-command-events' does not accept several events at
        ;; once.  Therefore, we apply the handler directly.
@@ -3794,9 +3786,6 @@ file-notify events."
                  (replace-regexp-in-string "_" "-" (downcase x))))
               (split-string (match-string 1 line) "," 'omit))
              (match-string 3 line))))
-       ;; Remove watch when file or directory to be watched is deleted.
-       (when (member (cl-caadr object) '(move-self delete-self ignored))
-         (delete-process proc))
        ;; Usually, we would add an Emacs event now.  Unfortunately,
        ;; `unread-command-events' does not accept several events at
        ;; once.  Therefore, we apply the handler directly.
diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el
index 9dfa794..4396a69 100644
--- a/test/lisp/filenotify-tests.el
+++ b/test/lisp/filenotify-tests.el
@@ -687,12 +687,11 @@ delivered."
              ((getenv "EMACS_EMBA_CI")
               '(created changed deleted))
             ;; There are two `deleted' events, for the file and for
-            ;; the directory.  Except for cygwin, kqueue and remote
-            ;; files.  And cygwin does not raise a `changed' event.
+            ;; the directory.  Except for cygwin and kqueue.  And
+            ;; cygwin does not raise a `changed' event.
             ((eq system-type 'cygwin)
              '(created deleted stopped))
-            ((or (string-equal (file-notify--test-library) "kqueue")
-                 (file-remote-p temporary-file-directory))
+            ((string-equal (file-notify--test-library) "kqueue")
              '(created changed deleted stopped))
             (t '(created changed deleted deleted stopped)))
          (write-region
@@ -743,9 +742,6 @@ delivered."
              ;; directory are not detected.
              ((getenv "EMACS_EMBA_CI")
               '(created changed created changed deleted deleted))
-             ;; Remote files return two `deleted' events.
-            ((file-remote-p temporary-file-directory)
-             '(created changed created changed deleted deleted stopped))
             (t '(created changed created changed
                  deleted deleted deleted stopped)))
          (write-region
@@ -795,13 +791,12 @@ delivered."
              ((getenv "EMACS_EMBA_CI")
               '(created changed renamed deleted))
             ;; There are two `deleted' events, for the file and for
-            ;; the directory.  Except for cygwin, kqueue and remote
-            ;; files.  And cygwin raises `created' and `deleted'
-            ;; events instead of a `renamed' event.
+            ;; the directory.  Except for cygwin and kqueue.  And
+            ;; cygwin raises `created' and `deleted' events instead
+            ;; of a `renamed' event.
             ((eq system-type 'cygwin)
              '(created created deleted deleted stopped))
-            ((or (string-equal (file-notify--test-library) "kqueue")
-                 (file-remote-p temporary-file-directory))
+            ((string-equal (file-notify--test-library) "kqueue")
              '(created changed renamed deleted stopped))
             (t '(created changed renamed deleted deleted stopped)))
          (write-region
@@ -1046,12 +1041,11 @@ delivered."
                '((deleted stopped)
                  (created deleted stopped)))
               ;; There are two `deleted' events, for the file and for
-              ;; the directory.  Except for cygwin, kqueue and remote
-              ;; files.  And cygwin does not raise a `changed' event.
+              ;; the directory.  Except for cygwin and kqueue.  And
+              ;; cygwin does not raise a `changed' event.
               ((eq system-type 'cygwin)
                '(created deleted stopped))
-              ((or (string-equal (file-notify--test-library) "kqueue")
-                   (file-remote-p temporary-file-directory))
+              ((string-equal (file-notify--test-library) "kqueue")
                '(created changed deleted stopped))
               (t '(created changed deleted deleted stopped)))
            (write-region
@@ -1415,9 +1409,6 @@ the file watch."
                   ;; directory are not detected.
                   ((getenv "EMACS_EMBA_CI")
                    '())
-                  ;; Remote files send just one `stopped' event.
-                  ((file-remote-p temporary-file-directory)
-                   '(stopped))
                   (t '(deleted stopped))))))
           (delete-directory file-notify--test-tmpfile 'recursive))
         (unless (getenv "EMACS_EMBA_CI")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]