Skip to content

Commit 677ac58

Browse files
committed
Removed speed block
1 parent c12b6b3 commit 677ac58

File tree

7 files changed

+215
-268
lines changed

7 files changed

+215
-268
lines changed

pe.py

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Editor:
1616
b"\x03" : 0x11,
1717
b"\r" : 0x0a,
1818
b"\x7f" : 0x08,
19-
b"\x1b[3~": 0x7f,
19+
b"\x1b[3~": 0xfffc,
2020
b"\x1b[Z" : 0x15,
2121
b"\x11" : 0x11,
2222
b"\n" : 0x0a,
@@ -211,7 +211,7 @@ def line_edit(self, prompt, default):
211211
if (len(res) > 0):
212212
res = res[:len(res)-1]
213213
self.wr('\b \b')
214-
elif key == 0x7f:
214+
elif key == 0xfffc:
215215
self.wr('\b \b' * len(res))
216216
res = ''
217217
elif 0x20 <= key < 0xfff0:
@@ -237,7 +237,26 @@ def find_in_file(self, pattern, pos, end):
237237
self.col = match + spos
238238
self.cur_line = line
239239
return len(pattern)
240-
def handle_cursor_keys(self, key):
240+
def undo_add(self, lnum, text, key, span = 1):
241+
self.changed = '*'
242+
if self.undo_limit > 0 and (
243+
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
244+
if len(self.undo) >= self.undo_limit:
245+
del self.undo[0]
246+
self.undo_zero -= 1
247+
self.undo.append((lnum, span, text, key, self.col))
248+
def delete_lines(self, yank):
249+
lrange = self.line_range()
250+
if yank:
251+
self.yank_buffer = self.content[lrange[0]:lrange[1]]
252+
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
253+
del self.content[lrange[0]:lrange[1]]
254+
if self.content == []:
255+
self.content = [""]
256+
self.total_lines = len(self.content)
257+
self.cur_line = lrange[0]
258+
self.mark = None
259+
def handle_edit_keys(self, key):
241260
l = self.content[self.cur_line]
242261
if key == 0x0d:
243262
if self.cur_line < self.total_lines - 1:
@@ -265,6 +284,11 @@ def handle_cursor_keys(self, key):
265284
self.scroll_down(1)
266285
else:
267286
self.col += 1
287+
elif 0x20 <= key < 0xfff0:
288+
self.mark = None
289+
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
290+
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
291+
self.col += 1
268292
elif key == 0x10:
269293
self.col = self.spaces(l) if self.col == 0 else 0
270294
elif key == 0x03:
@@ -361,45 +385,16 @@ def handle_cursor_keys(self, key):
361385
pos = len(self.content[i - 1]) - 1
362386
elif key == 0x0c:
363387
self.mark = self.cur_line if self.mark == None else None
364-
else:
365-
return False
366-
return True
367-
def undo_add(self, lnum, text, key, span = 1):
368-
self.changed = '*'
369-
if self.undo_limit > 0 and (
370-
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
371-
if len(self.undo) >= self.undo_limit:
372-
del self.undo[0]
373-
self.undo_zero -= 1
374-
self.undo.append((lnum, span, text, key, self.col))
375-
def delete_lines(self, yank):
376-
lrange = self.line_range()
377-
if yank:
378-
self.yank_buffer = self.content[lrange[0]:lrange[1]]
379-
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
380-
del self.content[lrange[0]:lrange[1]]
381-
if self.content == []:
382-
self.content = [""]
383-
self.total_lines = len(self.content)
384-
self.cur_line = lrange[0]
385-
self.mark = None
386-
def handle_edit_keys(self, key):
387-
l = self.content[self.cur_line]
388-
if key == 0x7f:
388+
elif key == 0xfffc:
389389
if self.mark != None:
390390
self.delete_lines(False)
391391
elif self.col < len(l):
392-
self.undo_add(self.cur_line, [l], 0x7f)
392+
self.undo_add(self.cur_line, [l], 0xfffc)
393393
self.content[self.cur_line] = l[:self.col] + l[self.col + 1:]
394394
elif (self.cur_line + 1) < self.total_lines:
395395
self.undo_add(self.cur_line, [l, self.content[self.cur_line + 1]], 0)
396396
self.content[self.cur_line] = l + self.content.pop(self.cur_line + 1)
397397
self.total_lines -= 1
398-
elif 0x20 <= key < 0xfff0:
399-
self.mark = None
400-
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
401-
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
402-
self.col += 1
403398
elif key == 0x08:
404399
if self.mark != None:
405400
self.delete_lines(False)
@@ -570,8 +565,6 @@ def edit_loop(self):
570565
self.goto(self.height, 0)
571566
self.clear_to_eol()
572567
return None
573-
elif self.handle_cursor_keys(key):
574-
pass
575568
else: self.handle_edit_keys(key)
576569
except Exception as err:
577570
self.message = "{}".format(err)

pe2.py

Lines changed: 34 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Editor:
1616
b"\x03" : 0x11,
1717
b"\r" : 0x0a,
1818
b"\x7f" : 0x08,
19-
b"\x1b[3~": 0x7f,
19+
b"\x1b[3~": 0xfffc,
2020
b"\x1b[Z" : 0x15,
2121
b"\x1b[3;5~": 0x18,
2222
b"\x11" : 0x11,
@@ -210,7 +210,7 @@ def line_edit(self, prompt, default):
210210
if (len(res) > 0):
211211
res = res[:len(res)-1]
212212
self.wr('\b \b')
213-
elif key == 0x7f:
213+
elif key == 0xfffc:
214214
self.wr('\b \b' * len(res))
215215
res = ''
216216
elif 0x20 <= key < 0xfff0:
@@ -236,8 +236,27 @@ def find_in_file(self, pattern, pos, end):
236236
self.col = match + spos
237237
self.cur_line = line
238238
return len(pattern)
239-
def handle_cursor_keys(self, key):
239+
def undo_add(self, lnum, text, key, span = 1):
240+
self.changed = '*'
241+
if self.undo_limit > 0 and (
242+
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
243+
if len(self.undo) >= self.undo_limit:
244+
del self.undo[0]
245+
self.undo_zero -= 1
246+
self.undo.append((lnum, span, text, key, self.col))
247+
def delete_lines(self, yank):
248+
lrange = self.line_range()
249+
if yank: self.yank_buffer = self.content[lrange[0]:lrange[1]]
250+
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
251+
del self.content[lrange[0]:lrange[1]]
252+
if self.content == []:
253+
self.content = [""]
254+
self.total_lines = len(self.content)
255+
self.cur_line = lrange[0]
256+
self.mark = None
257+
def handle_edit_keys(self, key):
240258
l = self.content[self.cur_line]
259+
jut = self.col - len(l)
241260
if key == 0x0d:
242261
if self.cur_line < self.total_lines - 1:
243262
self.cur_line += 1
@@ -258,6 +277,16 @@ def handle_cursor_keys(self, key):
258277
if self.col > 0: self.col -= 1
259278
elif key == 0x1e:
260279
self.col += 1
280+
elif 0x20 <= key < 0xfff0:
281+
self.mark = None
282+
if jut >= 0:
283+
if key != 0x20:
284+
self.undo_add(self.cur_line, [l], 0x41)
285+
self.content[self.cur_line] = l + ' ' * jut + chr(key)
286+
else:
287+
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
288+
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
289+
self.col += 1
261290
elif key == 0x10:
262291
self.col = self.spaces(l) if self.col == 0 else 0
263292
elif key == 0x03:
@@ -356,53 +385,18 @@ def handle_cursor_keys(self, key):
356385
self.row = self.height - 1
357386
elif key == 0x0c:
358387
self.mark = self.cur_line if self.mark == None else None
359-
else:
360-
return False
361-
return True
362-
def undo_add(self, lnum, text, key, span = 1):
363-
self.changed = '*'
364-
if self.undo_limit > 0 and (
365-
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
366-
if len(self.undo) >= self.undo_limit:
367-
del self.undo[0]
368-
self.undo_zero -= 1
369-
self.undo.append((lnum, span, text, key, self.col))
370-
def delete_lines(self, yank):
371-
lrange = self.line_range()
372-
if yank: self.yank_buffer = self.content[lrange[0]:lrange[1]]
373-
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
374-
del self.content[lrange[0]:lrange[1]]
375-
if self.content == []:
376-
self.content = [""]
377-
self.total_lines = len(self.content)
378-
self.cur_line = lrange[0]
379-
self.mark = None
380-
def handle_edit_keys(self, key):
381-
from os import rename, unlink
382-
l = self.content[self.cur_line]
383-
jut = self.col - len(l)
384-
if key == 0x7f:
388+
elif key == 0xfffc:
385389
if self.mark != None:
386390
self.delete_lines(False)
387391
elif jut < 0:
388-
self.undo_add(self.cur_line, [l], 0x7f)
392+
self.undo_add(self.cur_line, [l], 0xfffc)
389393
self.content[self.cur_line] = l[:self.col] + l[self.col + 1:]
390394
elif (self.cur_line + 1) < self.total_lines:
391395
self.undo_add(self.cur_line, [l, self.content[self.cur_line + 1]], 0)
392396
if jut > 0:
393397
l += ' ' * jut
394398
self.content[self.cur_line] = l + self.content.pop(self.cur_line + 1)
395399
self.total_lines -= 1
396-
elif 0x20 <= key < 0xfff0:
397-
self.mark = None
398-
if jut >= 0:
399-
if key != 0x20:
400-
self.undo_add(self.cur_line, [l], 0x41)
401-
self.content[self.cur_line] = l + ' ' * jut + chr(key)
402-
else:
403-
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
404-
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
405-
self.col += 1
406400
elif key == 0x08:
407401
if self.mark != None:
408402
self.delete_lines(False)
@@ -579,8 +573,6 @@ def edit_loop(self):
579573
self.goto(self.height, 0)
580574
self.clear_to_eol()
581575
return None
582-
elif self.handle_cursor_keys(key):
583-
pass
584576
else: self.handle_edit_keys(key)
585577
except Exception as err:
586578
self.message = "{}".format(err)

pemin.py

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Editor:
1616
b"\x03" : 0x11,
1717
b"\r" : 0x0a,
1818
b"\x7f" : 0x08,
19-
b"\x1b[3~": 0x7f,
19+
b"\x1b[3~": 0xfffc,
2020
b"\x1b[Z" : 0x15,
2121
b"\x0b" : 0xfffe,
2222
}
@@ -161,7 +161,7 @@ def line_edit(self, prompt, default):
161161
if (len(res) > 0):
162162
res = res[:len(res)-1]
163163
self.wr('\b \b')
164-
elif key == 0x7f:
164+
elif key == 0xfffc:
165165
self.wr('\b \b' * len(res))
166166
res = ''
167167
elif 0x20 <= key < 0xfff0:
@@ -185,7 +185,26 @@ def find_in_file(self, pattern, pos, end):
185185
self.col = match + spos
186186
self.cur_line = line
187187
return len(pattern)
188-
def handle_cursor_keys(self, key):
188+
def undo_add(self, lnum, text, key, span = 1):
189+
self.changed = '*'
190+
if self.undo_limit > 0 and (
191+
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
192+
if len(self.undo) >= self.undo_limit:
193+
del self.undo[0]
194+
self.undo_zero -= 1
195+
self.undo.append((lnum, span, text, key, self.col))
196+
def delete_lines(self, yank):
197+
lrange = self.line_range()
198+
if yank:
199+
self.yank_buffer = self.content[lrange[0]:lrange[1]]
200+
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
201+
del self.content[lrange[0]:lrange[1]]
202+
if self.content == []:
203+
self.content = [""]
204+
self.total_lines = len(self.content)
205+
self.cur_line = lrange[0]
206+
self.mark = None
207+
def handle_edit_keys(self, key):
189208
l = self.content[self.cur_line]
190209
if key == 0x0d:
191210
self.cur_line += 1
@@ -195,6 +214,11 @@ def handle_cursor_keys(self, key):
195214
self.col -= 1
196215
elif key == 0x1e:
197216
self.col += 1
217+
elif 0x20 <= key < 0xfff0:
218+
self.mark = None
219+
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
220+
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
221+
self.col += 1
198222
elif key == 0x10:
199223
self.col = self.spaces(l) if self.col == 0 else 0
200224
elif key == 0x03:
@@ -260,45 +284,16 @@ def handle_cursor_keys(self, key):
260284
pos = len(self.content[i - 1]) - 1
261285
elif key == 0x0c:
262286
self.mark = self.cur_line if self.mark == None else None
263-
else:
264-
return False
265-
return True
266-
def undo_add(self, lnum, text, key, span = 1):
267-
self.changed = '*'
268-
if self.undo_limit > 0 and (
269-
len(self.undo) == 0 or key == 0 or self.undo[-1][3] != key or self.undo[-1][0] != lnum):
270-
if len(self.undo) >= self.undo_limit:
271-
del self.undo[0]
272-
self.undo_zero -= 1
273-
self.undo.append((lnum, span, text, key, self.col))
274-
def delete_lines(self, yank):
275-
lrange = self.line_range()
276-
if yank:
277-
self.yank_buffer = self.content[lrange[0]:lrange[1]]
278-
self.undo_add(lrange[0], self.content[lrange[0]:lrange[1]], 0, 0)
279-
del self.content[lrange[0]:lrange[1]]
280-
if self.content == []:
281-
self.content = [""]
282-
self.total_lines = len(self.content)
283-
self.cur_line = lrange[0]
284-
self.mark = None
285-
def handle_edit_keys(self, key):
286-
l = self.content[self.cur_line]
287-
if key == 0x7f:
287+
elif key == 0xfffc:
288288
if self.mark != None:
289289
self.delete_lines(False)
290290
elif self.col < len(l):
291-
self.undo_add(self.cur_line, [l], 0x7f)
291+
self.undo_add(self.cur_line, [l], 0xfffc)
292292
self.content[self.cur_line] = l[:self.col] + l[self.col + 1:]
293293
elif (self.cur_line + 1) < self.total_lines:
294294
self.undo_add(self.cur_line, [l, self.content[self.cur_line + 1]], 0)
295295
self.content[self.cur_line] = l + self.content.pop(self.cur_line + 1)
296296
self.total_lines -= 1
297-
elif 0x20 <= key < 0xfff0:
298-
self.mark = None
299-
self.undo_add(self.cur_line, [l], 0x20 if key == 0x20 else 0x41)
300-
self.content[self.cur_line] = l[:self.col] + chr(key) + l[self.col:]
301-
self.col += 1
302297
elif key == 0x08:
303298
if self.mark != None:
304299
self.delete_lines(False)
@@ -407,8 +402,6 @@ def edit_loop(self):
407402
self.goto(self.height, 0)
408403
self.clear_to_eol()
409404
return None
410-
elif self.handle_cursor_keys(key):
411-
pass
412405
else: self.handle_edit_keys(key)
413406
except Exception as err:
414407
self.message = "{}".format(err)

0 commit comments

Comments
 (0)