- Notifications
You must be signed in to change notification settings - Fork 31.8k
/
Copy pathzzdummy.py
73 lines (54 loc) · 1.96 KB
/
zzdummy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""Example extension, also used for testing.
See extend.txt for more details on creating an extension.
See config-extension.def for configuring an extension.
"""
fromidlelib.configimportidleConf
fromfunctoolsimportwraps
defformat_selection(format_line):
"Apply a formatting function to all of the selected lines."
@wraps(format_line)
defapply(self, event=None):
head, tail, chars, lines=self.formatter.get_region()
forposinrange(len(lines) -1):
line=lines[pos]
lines[pos] =format_line(self, line)
self.formatter.set_region(head, tail, chars, lines)
return'break'
returnapply
classZzDummy:
"""Prepend or remove initial text from selected lines."""
# Extend the format menu.
menudefs= [
('format', [
('Z in', '<<z-in>>'),
('Z out', '<<z-out>>'),
] )
]
def__init__(self, editwin):
"Initialize the settings for this extension."
self.editwin=editwin
self.text=editwin.text
self.formatter=editwin.fregion
@classmethod
defreload(cls):
"Load class variables from config."
cls.ztext=idleConf.GetOption('extensions', 'ZzDummy', 'z-text')
@format_selection
defz_in_event(self, line):
"""Insert text at the beginning of each selected line.
This is bound to the <<z-in>> virtual event when the extensions
are loaded.
"""
returnf'{self.ztext}{line}'
@format_selection
defz_out_event(self, line):
"""Remove specific text from the beginning of each selected line.
This is bound to the <<z-out>> virtual event when the extensions
are loaded.
"""
zlength=0ifnotline.startswith(self.ztext) elselen(self.ztext)
returnline[zlength:]
ZzDummy.reload()
if__name__=="__main__":
importunittest
unittest.main('idlelib.idle_test.test_zzdummy', verbosity=2, exit=False)