mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-04 11:40:22 +00:00
Fix filenotify.el issue for kqueue
* lisp/filenotify.el (file-notify-add-watch): Use directory for remote file name handlers. * test/lisp/filenotify-tests.el (file-notify-test01-add-watch): Create/delete temporary file only for "kqueue". (file-notify-test02-rm-watch): Create/delete temporary files.
This commit is contained in:
parent
716b468489
commit
560d6f9124
@ -347,13 +347,7 @@ FILE is the name of the file whose event is being reported."
|
||||
(if handler
|
||||
;; A file name handler could exist even if there is no local
|
||||
;; file notification support.
|
||||
(setq desc (funcall
|
||||
handler 'file-notify-add-watch
|
||||
;; kqueue does not report file changes in
|
||||
;; directory monitor. So we must watch the file
|
||||
;; itself.
|
||||
(if (eq file-notify--library 'kqueue) file dir)
|
||||
flags callback))
|
||||
(setq desc (funcall handler 'file-notify-add-watch dir flags callback))
|
||||
|
||||
;; Check, whether Emacs has been compiled with file notification
|
||||
;; support.
|
||||
@ -391,6 +385,8 @@ FILE is the name of the file whose event is being reported."
|
||||
|
||||
;; Call low-level function.
|
||||
(setq desc (funcall
|
||||
;; kqueue does not report file changes in directory
|
||||
;; monitor. So we must watch the file itself.
|
||||
func (if (eq file-notify--library 'kqueue) file dir)
|
||||
l-flags 'file-notify-callback)))
|
||||
|
||||
|
@ -294,13 +294,20 @@ This returns only for the local case and gfilenotify; otherwise it is nil.
|
||||
(file-notify-add-watch
|
||||
temporary-file-directory '(change attribute-change) #'ignore)))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
(write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
|
||||
;; File monitors like kqueue insist, that the watched file
|
||||
;; exists. Directory monitors are not bound to this
|
||||
;; restriction.
|
||||
(when (string-equal (file-notify--test-library) "kqueue")
|
||||
(write-region
|
||||
"any text" nil file-notify--test-tmpfile nil 'no-message))
|
||||
(should
|
||||
(setq file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
file-notify--test-tmpfile '(change attribute-change) #'ignore)))
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
(delete-file file-notify--test-tmpfile)
|
||||
(when (string-equal (file-notify--test-library) "kqueue")
|
||||
(delete-file file-notify--test-tmpfile))
|
||||
|
||||
;; Check error handling.
|
||||
(should-error (file-notify-add-watch 1 2 3 4)
|
||||
@ -378,6 +385,8 @@ This returns only for the local case and gfilenotify; otherwise it is nil.
|
||||
(progn
|
||||
(setq file-notify--test-tmpfile (file-notify--test-make-temp-name)
|
||||
file-notify--test-tmpfile1 (file-notify--test-make-temp-name))
|
||||
(write-region "any text" nil file-notify--test-tmpfile nil 'no-message)
|
||||
(write-region "any text" nil file-notify--test-tmpfile1 nil 'no-message)
|
||||
(should
|
||||
(setq file-notify--test-desc
|
||||
(file-notify-add-watch
|
||||
@ -390,6 +399,8 @@ This returns only for the local case and gfilenotify; otherwise it is nil.
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
(file-notify-rm-watch file-notify--test-desc)
|
||||
(file-notify-rm-watch file-notify--test-desc1)
|
||||
(delete-file file-notify--test-tmpfile)
|
||||
(delete-file file-notify--test-tmpfile1)
|
||||
|
||||
;; The environment shall be cleaned up.
|
||||
(file-notify--test-cleanup-p))
|
||||
|
Loading…
Reference in New Issue
Block a user