Skip to content

Instantly share code, notes, and snippets.

@kevinw
Created February 11, 2010 17:07
Show Gist options
  • Save kevinw/301707 to your computer and use it in GitHub Desktop.
Save kevinw/301707 to your computer and use it in GitHub Desktop.
diff -r 1216cb0e6b25 rope/base/change.py
--- a/rope/base/change.py Thu Feb 04 22:41:45 2010 +0300
+++ b/rope/base/change.py Thu Feb 11 12:03:54 2010 -0500
@@ -123,8 +123,9 @@
"""
def call(self, job_set=taskhandle.NullJobSet()):
job_set.started_job(str(self))
- function(self)
+ res = function(self)
job_set.finished_job()
+ return res
return call
@@ -143,18 +144,22 @@
self.new_contents = new_contents
self.old_contents = old_contents
- @_handle_job_set
- def do(self):
+ def do(self, job_set=taskhandle.NullJobSet()):
+ job_set.started_job(str(self))
if self.old_contents is None:
self.old_contents = self.resource.read()
- self._operations.write_file(self.resource, self.new_contents)
+ if self._operations.write_file(self.resource, self.new_contents):
+ job_set.editor_changed_resource(self.resource)
+ job_set.finished_job()
- @_handle_job_set
- def undo(self):
+ def undo(self, job_set=taskhandle.NullJobSet()):
+ job_set.started_job(str(self))
if self.old_contents is None:
raise exceptions.HistoryError(
'Undoing a change that is not performed yet!')
- self._operations.write_file(self.resource, self.old_contents)
+ if self._operations.write_file(self.resource, self.old_contents):
+ job_set.editor_changed_resource(self.resource)
+ job_set.finished_job()
def __str__(self):
return 'Change <%s>' % self.resource.path
@@ -328,9 +333,10 @@
def write_file(self, resource, contents):
data = rope.base.fscommands.unicode_to_file_data(contents)
fscommands = self._get_fscommands(resource)
- fscommands.write(resource.real_path, data)
+ editor_change = fscommands.write(resource.real_path, data)
for observer in list(self.project.observers):
observer.resource_changed(resource)
+ return editor_change
def move(self, resource, new_resource):
fscommands = self._get_fscommands(resource)
diff -r 1216cb0e6b25 rope/base/taskhandle.py
--- a/rope/base/taskhandle.py Thu Feb 04 22:41:45 2010 +0300
+++ b/rope/base/taskhandle.py Thu Feb 11 12:03:54 2010 -0500
@@ -17,6 +17,7 @@
self.stopped = False
self.job_sets = []
self.observers = []
+ self.editor_changed_resources = []
def stop(self):
"""Interrupts the refactoring"""
@@ -54,6 +55,8 @@
for observer in list(self.observers):
observer()
+ def editor_changed_resource(self, resource):
+ self.editor_changed_resources.append(resource)
class JobSet(object):
@@ -64,6 +67,9 @@
self.done = 0
self.job_name = None
+ def editor_changed_resource(self, resource):
+ self.handle.editor_changed_resource(resource)
+
def started_job(self, name):
self.check_status()
self.job_name = name
@@ -94,7 +100,7 @@
class NullTaskHandle(object):
def __init__(self):
- pass
+ self.editor_changed_resources = []
def is_stopped(self):
return False
@@ -131,3 +137,6 @@
def get_name(self):
pass
+
+ def editor_changed_resource(self, resource):
+ pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment