Created
February 11, 2010 17:07
-
-
Save kevinw/301707 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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