Anonymous avatar Anonymous committed 883eb3b

autoimport: observing file changes

Comments (0)

Files changed (1)

rope/contrib/autoimport.py

-from rope.base import exceptions, pynames
+from rope.base import exceptions, pynames, resourceobserver
 from rope.refactor import importutils
 
 
 class AutoImport(object):
 
-    def __init__(self, project):
+    def __init__(self, project, observe=False):
         self.project = project
         self.names = project.data_files.read_data('globalnames')
         if self.names is None:
             self.names = {}
         project.data_files.add_write_hook(self.write)
+        # XXX: handle moved and removed
+        observer = resourceobserver.ResourceObserver(
+            changed=self._changed)
+        if observe:
+            project.add_observer(observer)
 
     def write(self):
         self.project.data_files.write_data('globalnames', self.names)
             self._add_names(pymodule, modname)
         except exceptions.ModuleNotFoundError:
             pass
+
+    def _changed(self, resource):
+        if not resource.is_folder():
+            self.update_resource(resource)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.