Anonymous avatar Anonymous committed e3bc47f Draft

ropemacs: added LispUtils.preview_changes()

Comments (0)

Files changed (2)

ropemacs/__init__.py

         else:
             lisp.find_file(filename)
 
-    def make_buffer(self, name, contents, empty_goto=True, switch=False,
-                    window='other', modes=[], fit_lines=None):
+    def _make_buffer(self, name, contents, empty_goto=True, switch=False,
+                     window='other', modes=[], fit_lines=None):
         """Make an emacs buffer
 
         `window` can be one of `None`, 'current' or 'other'.
                     lisp.bury_buffer(new_buffer)
         return new_buffer
 
-    def hide_buffer(self, name, delete=True):
+    def _hide_buffer(self, name, delete=True):
         buffer = lisp.get_buffer(name)
         if buffer is not None:
             window = lisp.get_buffer_window(buffer)
             line = '%s : %s %s' % (filename, offset, note)
             text.append(line)
         text = '\n'.join(text) + '\n'
-        buffer = self.make_buffer('*rope-occurrences*', text, switch=True)
+        buffer = self._make_buffer('*rope-occurrences*', text, switch=True)
         lisp.set_buffer(buffer)
         lisp.local_set_key('\r', lisp.rope_occurrences_goto_occurrence)
         lisp.local_set_key('q', lisp.delete_window)
 
     def show_doc(self, docs):
         fit_lines = self.get('ropemacs-max-doc-buffer-height')
-        buffer = self.make_buffer('*rope-pydoc*', docs,
-                                  empty_goto=False, fit_lines=fit_lines)
+        buffer = self._make_buffer('*rope-pydoc*', docs,
+                                   empty_goto=False, fit_lines=fit_lines)
         lisp.local_set_key('q', lisp.bury_buffer)
 
+    def preview_changes(self, diffs):
+        self._make_buffer('*rope-preview*', diffs, switch=True,
+                          modes=['diff'], window='current')
+        try:
+            return self.yes_or_no('Do the changes? ')
+        finally:
+            self._hide_buffer('*rope-preview*', delete=False)
 
     def local_command(self, name, callback, key=None, prefix=False):
         globals()[name] = callback

ropemode/refactor.py

         if action == 'preview':
             if changes is not None:
                 diffs = str(changes.get_description())
-                self.env.make_buffer('*rope-preview*', diffs, switch=True,
-                                      modes=['diff'], window='current')
-                if self.env.yes_or_no('Do the changes? '):
+                if self.env.preview_changes(diffs):
                     self._perform(changes)
                 else:
                     self.env.message('Thrown away!')
-                self.env.hide_buffer('*rope-preview*', delete=False)
             else:
                 self.env.message('No changes!')
 
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.