diff options
author | RĂ¼diger Sonderfeld <ruediger@c-plusplus.de> | 2012-12-10 06:17:21 -0500 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-12-10 06:17:21 -0500 |
commit | 81606b10501169a5671061b8461bbc32dcec8705 (patch) | |
tree | 6dadb650dc1950fbb1e5d4cf6f0c8d18588e6787 /lisp | |
parent | 265c2fbf11cb8bf9b805df63ecb9508631f08e35 (diff) | |
download | emacs-81606b10501169a5671061b8461bbc32dcec8705.tar.gz |
Support filesystem notification through inotify on GNU/Linux.
configure.ac (inotify): New option.
(HAVE_INOTIFY): Test for inotify.
src/termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add
FILE_NOTIFY_EVENT.
src/lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.
src/keyboard.c (Qfile_inotify) [HAVE_INOTIFY]: New variable.
(syms_of_keyboard): DEFSYM it.
(kbd_buffer_get_event) [HAVE_INOTIFY]: Generate FILE_NOTIFY_EVENT.
(make_lispy_event): Support FILE_NOTIFY_EVENT by generating
Qfile_inotify events.
(keys_of_keyboard) [HAVE_INOTIFY]: Bind file-inotify events in
special-event-map to inotify-handle-event.
src/emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.
src/Makefile.in (base_obj): Add inotify.o.
src/inotify.c: New file.
lisp/subr.el (inotify-event-p, inotify-handle-event): New functions.
test/automated/inotify-test.el: New test.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 4 | ||||
-rw-r--r-- | lisp/subr.el | 20 |
2 files changed, 24 insertions, 0 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 787bfb7563b..1e65aa3a089 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-12-10 RĂ¼diger Sonderfeld <ruediger@c-plusplus.de> + + * subr.el (inotify-event-p, inotify-handle-event): New functions. + 2012-12-10 Dani Moncayo <dmoncayo@gmail.com> * simple.el (just-one-space): Doc fix. diff --git a/lisp/subr.el b/lisp/subr.el index e08277370a9..4f2e8f22bfe 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4323,6 +4323,26 @@ convenience wrapper around `make-progress-reporter' and friends. nil ,@(cdr (cdr spec))))) +;;;; Support for watching filesystem events. + +(defun inotify-event-p (event) + "Check if EVENT is an inotify event." + (and (listp event) + (>= (length event) 3) + (eq (car event) 'file-inotify))) + +;;;###autoload +(defun inotify-handle-event (event) + "Handle file system monitoring event. +If EVENT is a filewatch event then the callback is called. If EVENT is +not a filewatch event then a `filewatch-error' is signaled." + (interactive "e") + (unless (inotify-event-p event) + (signal 'filewatch-error (cons "Not a valid inotify event" event))) + + (funcall (nth 2 event) (nth 1 event))) + + ;;;; Comparing version strings. (defconst version-separator "." |