1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-14 09:39:42 +00:00

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.
This commit is contained in:
Michael Albinus 2019-06-14 19:45:00 +02:00
parent 1d2e4d22c9
commit 0518e3ca98
2 changed files with 10 additions and 30 deletions

View File

@ -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.

View File

@ -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")