1'Provides "Strip trailing whitespace" under the "Format" menu.'
2
3class Rstrip:
4
5    def __init__(self, editwin):
6        self.editwin = editwin
7
8    def do_rstrip(self, event=None):
9
10        text = self.editwin.text
11        undo = self.editwin.undo
12
13        undo.undo_block_start()
14
15        end_line = int(float(text.index('end')))
16        for cur in range(1, end_line):
17            txt = text.get('%i.0' % cur, '%i.end' % cur)
18            raw = len(txt)
19            cut = len(txt.rstrip())
20            # Since text.delete() marks file as changed, even if not,
21            # only call it when needed to actually delete something.
22            if cut < raw:
23                text.delete('%i.%i' % (cur, cut), '%i.end' % cur)
24
25        undo.undo_block_stop()
26
27if __name__ == "__main__":
28    from unittest import main
29    main('idlelib.idle_test.test_rstrip', verbosity=2,)
30