parent
0b7060c3c9
commit
317955c5d8
|
@ -22,8 +22,9 @@ def hasher(data):
|
|||
m = md5.new(data)
|
||||
return m
|
||||
|
||||
class ReadOnlyError(Exception):
|
||||
pass
|
||||
class ReadOnlyError(Exception): pass
|
||||
class FileChangedError(Exception): pass
|
||||
class FileGoneError(Exception): pass
|
||||
|
||||
# used for undo/redo stacks when text will need to be added back
|
||||
class AddMove(object):
|
||||
|
@ -79,8 +80,6 @@ class Buffer(object):
|
|||
win_c = len(self.win_re.findall(data))
|
||||
if (unix_c and mac_c) or (unix_c and win_c) or (mac_c and win_c):
|
||||
# warn the user?
|
||||
#raise Exception, 'inconsistent line endings %r' % \
|
||||
# (data, [unix_c, mac_c, win_c])
|
||||
pass
|
||||
|
||||
if unix_c >= win_c and unix_c >= mac_c:
|
||||
|
@ -94,19 +93,19 @@ class Buffer(object):
|
|||
def _open_file_r(self, path):
|
||||
path = os.path.realpath(path)
|
||||
if not os.path.isfile(path):
|
||||
raise Exception, "Path '%s' does not exist" % (path)
|
||||
raise Exception("Path '%s' does not exist" % (path))
|
||||
if not os.access(path, os.R_OK):
|
||||
raise Exception, "Path '%s' cannot be read" % (path)
|
||||
raise Exception("Path '%s' cannot be read" % (path))
|
||||
f = open(path, 'r')
|
||||
return f
|
||||
def _open_file_w(self, path):
|
||||
if os.path.isfile(path):
|
||||
raise Exception, "Path '%s' already exists" % (path)
|
||||
raise Exception("Path '%s' already exists" % (path))
|
||||
d = os.path.dirname(path)
|
||||
if not os.access(d, os.R_OK):
|
||||
raise Exception, "Dir '%s' cannot be read" % (path)
|
||||
raise Exception("Dir '%s' cannot be read" % (path))
|
||||
if not os.access(d, os.W_OK):
|
||||
raise Exception, "Dir '%s' cannot be written" % (path)
|
||||
raise Exception("Dir '%s' cannot be written" % (path))
|
||||
f = open(path, 'w')
|
||||
return f
|
||||
def _temp_path(self, path):
|
||||
|
@ -132,7 +131,7 @@ class Buffer(object):
|
|||
self.undo_stack.append(move)
|
||||
self._stack_trim(self.undo_stack)
|
||||
else:
|
||||
raise Exception, "Invalid act: %d" % (act)
|
||||
raise Exception("Invalid act: %d" % (act))
|
||||
def undo(self):
|
||||
if len(self.undo_stack):
|
||||
undo_id = self.undo_stack[-1].undo_id
|
||||
|
@ -143,7 +142,7 @@ class Buffer(object):
|
|||
pos = move.getpos()
|
||||
return pos
|
||||
else:
|
||||
raise Exception, "Nothing to Undo!"
|
||||
raise Exception("Nothing to Undo!")
|
||||
def redo(self):
|
||||
if len(self.redo_stack):
|
||||
undo_id = self.redo_stack[-1].undo_id
|
||||
|
@ -154,7 +153,7 @@ class Buffer(object):
|
|||
pos = move.getpos()
|
||||
return pos
|
||||
else:
|
||||
raise Exception, "Nothing to Redo!"
|
||||
raise Exception("Nothing to Redo!")
|
||||
|
||||
# window-buffer communication
|
||||
def add_window(self, w):
|
||||
|
@ -237,7 +236,7 @@ class Buffer(object):
|
|||
def changed_on_disk(self):
|
||||
return False
|
||||
def reload(self):
|
||||
raise Exception, "%s reload: Unimplemented" % (self.name())
|
||||
raise Exception("%s reload: Unimplemented" % (self.name()))
|
||||
def save_as(self, path, force=False):
|
||||
# check to see if the path exists, and if we're prepared to overwrite it
|
||||
# if yes to both, get its mode so we can preserve the path's permissions
|
||||
|
@ -246,7 +245,8 @@ class Buffer(object):
|
|||
if force:
|
||||
mode = os.stat(self.path)[0]
|
||||
else:
|
||||
raise Exception, "oh no! %r already exists" % path
|
||||
# XYZ
|
||||
raise Exception("oh no! %r already exists" % path)
|
||||
|
||||
# create the string that we're going to write into the file
|
||||
data = self.write_filter(self.make_string())
|
||||
|
@ -296,7 +296,7 @@ class Buffer(object):
|
|||
# buffer set
|
||||
def set_lines(self, lines, force=False):
|
||||
if not force and self.readonly():
|
||||
raise Exception, "set_data: buffer is readonly"
|
||||
raise Exception("set_data: buffer is readonly")
|
||||
start = self.get_buffer_start()
|
||||
end = self.get_buffer_end()
|
||||
self.delete(start, end, force=force)
|
||||
|
@ -464,7 +464,7 @@ class InterpreterBuffer(Buffer):
|
|||
def get_env(self):
|
||||
return {}
|
||||
def get_cmd(self):
|
||||
raise Exception, 'unimplemented'
|
||||
raise Exception('unimplemented')
|
||||
def pipe_readline(self):
|
||||
if self.pipe.poll() is not None:
|
||||
raise InterpreterPipeError('broken pipe')
|
||||
|
@ -520,7 +520,7 @@ class IperlBuffer(InterpreterBuffer):
|
|||
if parent.path.endswith('.pm'):
|
||||
return '*%s:%s*' % (cls._basename, parent.name())
|
||||
else:
|
||||
raise Exception, "not a perl module"
|
||||
raise Exception("not a perl module")
|
||||
else:
|
||||
return '*%s*' % cls._basename
|
||||
create_name = classmethod(create_name)
|
||||
|
@ -581,21 +581,21 @@ class FileBuffer(Buffer):
|
|||
path = os.path.realpath(path)
|
||||
self.path = path
|
||||
if not os.path.isfile(path):
|
||||
raise Exception, "Path '%s' does not exist" % (path)
|
||||
raise Exception("Path '%s' does not exist" % (path))
|
||||
if not os.access(path, os.R_OK):
|
||||
raise Exception, "Path '%s' cannot be read" % (path)
|
||||
raise Exception("Path '%s' cannot be read" % (path))
|
||||
f = open(path, 'r')
|
||||
return f
|
||||
def _open_file_w(self, path=None, preserve=True):
|
||||
if path is None:
|
||||
path = self.path
|
||||
if preserve and os.path.isfile(path):
|
||||
raise Exception, "Path '%s' already exists" % (path)
|
||||
raise Exception("Path '%s' already exists" % (path))
|
||||
d = os.path.dirname(path)
|
||||
if not os.access(d, os.R_OK):
|
||||
raise Exception, "Dir '%s' cannot be read" % (path)
|
||||
raise Exception("Dir '%s' cannot be read" % (path))
|
||||
if not os.access(d, os.W_OK):
|
||||
raise Exception, "Dir '%s' cannot be written" % (path)
|
||||
raise Exception("Dir '%s' cannot be written" % (path))
|
||||
f = open(path, 'w')
|
||||
return f
|
||||
def _temp_path(self, path=None):
|
||||
|
@ -610,8 +610,6 @@ class FileBuffer(Buffer):
|
|||
def path_exists(self):
|
||||
return os.path.exists(self.path)
|
||||
def store_checksum(self, data):
|
||||
#self.checksum = md5.new(data)
|
||||
#self.checksum = hashlib.md5(data)
|
||||
self.checksum = hasher(data)
|
||||
def read(self):
|
||||
if self.path_exists():
|
||||
|
@ -626,7 +624,7 @@ class FileBuffer(Buffer):
|
|||
data = ''
|
||||
|
||||
if data.startswith('\xEF\xBB\xBF'):
|
||||
# utf-8
|
||||
# utf-8 bytemark
|
||||
self.bytemark = data[:3]
|
||||
data = data[3:]
|
||||
|
||||
|
@ -635,8 +633,7 @@ class FileBuffer(Buffer):
|
|||
data = data.replace("\t", " ")
|
||||
for i in range(0, min(len(data), 128)):
|
||||
if data[i] not in string.printable:
|
||||
raise BinaryDataException, "binary files are not supported"
|
||||
#FIXME: this is horrible...but maybe not as horrible as using tabs??
|
||||
raise BinaryDataException("binary files are not supported")
|
||||
return data
|
||||
def open(self):
|
||||
data = self.read()
|
||||
|
@ -649,8 +646,6 @@ class FileBuffer(Buffer):
|
|||
f = open(self.path)
|
||||
data = f.read()
|
||||
f.close()
|
||||
#m = md5.new(data)
|
||||
#m = hashlib.md5(data)
|
||||
m = hasher(data)
|
||||
return self.checksum.digest() != m.digest()
|
||||
def save(self, force=False):
|
||||
|
@ -661,9 +656,9 @@ class FileBuffer(Buffer):
|
|||
# the file already existed and we took a checksum so make sure it's
|
||||
# still the same right now
|
||||
if not self.path_exists():
|
||||
raise Exception, "oh no! %r disappeared!" % self.path
|
||||
raise FileGoneError("oh no! %r disappeared!" % self.path)
|
||||
if self.changed_on_disk():
|
||||
raise Exception, "oh no! %r has changed on-disk!" % self.path
|
||||
raise FileChangedError("oh no! %r has changed on-disk!" % self.path)
|
||||
|
||||
exists = os.path.exists(self.path)
|
||||
if exists:
|
||||
|
|
|
@ -115,11 +115,17 @@ class SaveBufferAs(Method):
|
|||
class SaveBuffer(Method):
|
||||
'''Save the contents of a buffer'''
|
||||
def _execute(self, w, **vargs):
|
||||
if w.buffer.changed():
|
||||
if not w.buffer.changed():
|
||||
w.set_error("(No changes need to be saved)")
|
||||
return
|
||||
try:
|
||||
w.buffer.save()
|
||||
w.set_error("Wrote %s" % (w.buffer.path))
|
||||
else:
|
||||
w.set_error("(No changes need to be saved)")
|
||||
except buffer.FileGoneError, e:
|
||||
w.buffer.save(force=True)
|
||||
w.set_error("File had disappeared! Wrote %s" % (w.buffer.path))
|
||||
except buffer.FileChangedError, e:
|
||||
pass
|
||||
|
||||
class ToggleTabs(Method):
|
||||
'''Toggle whether to write tabs out or not (defaults to false)'''
|
||||
|
|
Loading…
Reference in New Issue