Mercurial > libervia-backend
diff frontends/src/jp/cmd_blog.py @ 1893:4f252b72b193
jp (blog/preview): change watch for IN_MOVE_SELF event, needed at least for Emacs
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 07 Mar 2016 19:43:02 +0100 |
parents | 7b9cdde29d8b |
children | 116a55865364 |
line wrap: on
line diff
--- a/frontends/src/jp/cmd_blog.py Mon Mar 07 16:20:41 2016 +0100 +++ b/frontends/src/jp/cmd_blog.py Mon Mar 07 19:43:02 2016 +0100 @@ -445,16 +445,23 @@ def add_watch(): i.add_watch(self.content_file_path, mask=inotify.constants.IN_CLOSE_WRITE | - inotify.constants.IN_DELETE_SELF) + inotify.constants.IN_DELETE_SELF | + inotify.constants.IN_MOVE_SELF) add_watch() try: for event in i.event_gen(): if event is not None: self.disp(u"Content updated", 1) - if "IN_DELETE_SELF" in event[1]: - self.disp(u"IN_DELETE_SELF event catched, changing the watch", 2) - add_watch() + if {"IN_DELETE_SELF", "IN_MOVE_SELF"}.intersection(event[1]): + self.disp(u"{} event catched, changing the watch".format(", ".join(event[1])), 2) + try: + add_watch() + except InotifyError: + # if the new file is not here yet we can have an error + # as a workaround, we do a little rest + time.sleep(1) + add_watch() self.updateContent() update_cb() except InotifyError: