Anonymous avatar Anonymous committed 46c6662

interface: added guess_project variable

Comments (0)

Files changed (1)

ropemode/interface.py

+import os
+
 import rope.base.change
 from rope.base import libutils
 from rope.contrib import codeassist, generate, autoimport, findit
 
     def _check_project(self):
         if self.project is None:
-            self.open_project()
+            if self.env.get('guess_project'):
+                self.open_project(self._guess_project())
+            else:
+                self.open_project()
         else:
             self.project.validate(self.project.root)
 
+    def _guess_project(self):
+        cwd = self.env.filename()
+        if cwd is not None:
+            while True:
+                ropefolder = os.path.join(cwd, '.ropeproject')
+                if os.path.exists(ropefolder) and os.path.isdir(ropefolder):
+                    return cwd
+                newcwd = os.path.dirname(cwd)
+                if newcwd == cwd:
+                    break
+                cwd = newcwd
+
     def _reload_buffers(self, changes, undo=False):
         self._reload_buffers_for_changes(
             changes.get_changed_resources(),
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.