Fix watching directories using w32notify.c.
src/w32notify.c (Fw32notify_add_watch): If the argument FILE is a directory, watch it and not its parent. (add_watch): Allow empty string in FILE. lisp/filenotify.el (file-notify-add-watch): Don't special-case w32notify when computing the directory to watch.
This commit is contained in:
parent
1baa1e49d8
commit
fb6a5d68e3
4 changed files with 27 additions and 9 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-11-27 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* filenotify.el (file-notify-add-watch): Don't special-case
|
||||
w32notify when computing the directory to watch.
|
||||
|
||||
2013-11-27 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
Make bootstrap without generated uni-*.el files possible again.
|
||||
|
|
|
@ -237,8 +237,7 @@ FILE is the name of the file whose event is being reported."
|
|||
|
||||
(let* ((handler (find-file-name-handler file 'file-notify-add-watch))
|
||||
(dir (directory-file-name
|
||||
(if (or (and (not handler) (eq file-notify--library 'w32notify))
|
||||
(file-directory-p file))
|
||||
(if (file-directory-p file)
|
||||
file
|
||||
(file-name-directory file))))
|
||||
desc func l-flags)
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2013-11-27 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* w32notify.c (Fw32notify_add_watch): If the argument FILE is a
|
||||
directory, watch it and not its parent.
|
||||
(add_watch): Allow empty string in FILE.
|
||||
|
||||
2013-11-27 Martin Rudalics <rudalics@gmx.at>
|
||||
|
||||
* window.c (Fset_window_start, window_resize_apply)
|
||||
|
|
|
@ -324,7 +324,7 @@ add_watch (const char *parent_dir, const char *file, BOOL subdirs, DWORD flags)
|
|||
HANDLE hdir;
|
||||
struct notification *dirwatch = NULL;
|
||||
|
||||
if (!file || !*file)
|
||||
if (!file)
|
||||
return NULL;
|
||||
|
||||
hdir = CreateFile (parent_dir,
|
||||
|
@ -526,13 +526,21 @@ generate notifications correctly, though. */)
|
|||
report_file_error ("GetFullPathName failed",
|
||||
Fcons (lisp_errstr, Fcons (file, Qnil)));
|
||||
}
|
||||
/* We need the parent directory without the slash that follows it.
|
||||
If BASENAME is NULL, the argument was the root directory on its
|
||||
drive. */
|
||||
if (basename)
|
||||
basename[-1] = '\0';
|
||||
/* filenotify.el always passes us a directory, either the parent
|
||||
directory of a file to be watched, or the directory to be
|
||||
watched. */
|
||||
if (file_directory_p (parent_dir))
|
||||
basename = "";
|
||||
else
|
||||
subdirs = TRUE;
|
||||
{
|
||||
/* This should only happen if we are called directly, not via
|
||||
filenotify.el. If BASENAME is NULL, the argument was the
|
||||
root directory on its drive. */
|
||||
if (basename)
|
||||
basename[-1] = '\0';
|
||||
else
|
||||
subdirs = TRUE;
|
||||
}
|
||||
|
||||
if (!NILP (Fmember (Qsubtree, filter)))
|
||||
subdirs = TRUE;
|
||||
|
|
Loading…
Add table
Reference in a new issue