[Idle-dev] CVS: idle IOBinding.py,1.13,1.14
Guido van Rossum
gvanrossum@users.sourceforge.net
Fri, 25 Apr 2003 11:36:35 -0700
Update of /cvsroot/idlefork/idle
In directory sc8-pr-cvs1:/tmp/cvs-serv16219
Modified Files:
IOBinding.py
Log Message:
New feature: when saving a file, keep the eol convention of the
original. New files are written using the eol convention of the
platform, given by os.linesep. All files are read and written in
binary mode.
Index: IOBinding.py
===================================================================
RCS file: /cvsroot/idlefork/idle/IOBinding.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** IOBinding.py 4 Mar 2003 04:42:04 -0000 1.13
--- IOBinding.py 25 Apr 2003 18:36:31 -0000 1.14
***************
*** 179,182 ****
--- 179,186 ----
return "break"
+ eol = r"(\r\n)|\n|\r" # \r\n (Windows), \n (UNIX), or \r (Mac)
+ eol_re = re.compile(eol)
+ eol_convention = os.linesep # Default
+
def loadfile(self, filename):
try:
***************
*** 192,197 ****
chars = self.decode(chars)
# We now convert all end-of-lines to '\n's
! eol = r"(\r\n)|\n|\r" # \r\n (Windows), \n (UNIX), or \r (Mac)
! chars = re.compile( eol ).sub( r"\n", chars )
self.text.delete("1.0", "end")
--- 196,203 ----
chars = self.decode(chars)
# We now convert all end-of-lines to '\n's
! firsteol = self.eol_re.search(chars)
! if firsteol:
! self.eol_convention = firsteol.group(0)
! chars = self.eol_re.sub(r"\n", chars)
self.text.delete("1.0", "end")
***************
*** 307,312 ****
self.fixlastline()
chars = self.encode(self.text.get("1.0", "end-1c"))
try:
! f = open(filename, "w")
f.write(chars)
f.close()
--- 313,320 ----
self.fixlastline()
chars = self.encode(self.text.get("1.0", "end-1c"))
+ if self.eol_convention != "\n":
+ chars = chars.replace("\n", self.eol_convention)
try:
! f = open(filename, "wb")
f.write(chars)
f.close()