Viewing file: zzdummy.py (1.96 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
"""Example extension, also used for testing.
See extend.txt for more details on creating an extension. See config-extension.def for configuring an extension. """
from idlelib.config import idleConf from functools import wraps
def format_selection(format_line): "Apply a formatting function to all of the selected lines."
@wraps(format_line) def apply(self, event=None): head, tail, chars, lines = self.formatter.get_region() for pos in range(len(lines) - 1): line = lines[pos] lines[pos] = format_line(self, line) self.formatter.set_region(head, tail, chars, lines) return 'break'
return apply
class ZzDummy: """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 def reload(cls): "Load class variables from config." cls.ztext = idleConf.GetOption('extensions', 'ZzDummy', 'z-text')
@format_selection def z_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. """ return f'{self.ztext}{line}'
@format_selection def z_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 = 0 if not line.startswith(self.ztext) else len(self.ztext) return line[zlength:]
ZzDummy.reload()
if __name__ == "__main__": import unittest unittest.main('idlelib.idle_test.test_zzdummy', verbosity=2, exit=False)
|