Commits

Anonymous committed 6dbc56b

don't execute pymacs commands when not imported by pymacs

Comments (0)

Files changed (1)

ropemacs/__init__.py

 """ropemacs, an emacs mode for using rope refactoring library"""
+import sys
+
 import ropemode.decorators
 import ropemode.environment
 import ropemode.interface
              ('C-c f', 'rope-find-occurrences')]
 
 
-ropemode.decorators.logger.message = message
-lisp(DEFVARS)
-_interface = ropemode.interface.RopeMode(env=LispUtils())
-_interface.init()
-lisp(MINOR_MODE)
+def _load_ropemacs():
+    ropemode.decorators.logger.message = message
+    lisp(DEFVARS)
+    _interface = ropemode.interface.RopeMode(env=LispUtils())
+    _interface.init()
+    lisp(MINOR_MODE)
 
-for key, command in shortcuts:
-    LispUtils()._bind_local(command, key)
+    for key, command in shortcuts:
+        LispUtils()._bind_local(command, key)
 
-lisp.add_hook(lisp['python-mode-hook'], lisp['ropemacs-mode'])
+    lisp.add_hook(lisp['python-mode-hook'], lisp['ropemacs-mode'])
+
+def _started_from_pymacs():
+    import inspect
+    frame = sys._getframe()
+    while frame:
+        # checking frame.f_code.co_name == 'pymacs_load_helper' might
+        # be very fragile.
+        if inspect.getfile(frame).rstrip('c').endswith('pymacs.py'):
+            return True
+        frame = frame.f_back
+
+if _started_from_pymacs():
+    _load_ropemacs()
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.