183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh'Provides "Strip trailing whitespace" under the "Format" menu.' 283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh__author__ = "Roger D. Serwy <roger.serwy at gmail.com>" 483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehclass RstripExtension: 683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh menudefs = [ 883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh ('format', [None, 983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh ('Strip trailing whitespace', '<<do-rstrip>>'), 1083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh ]),] 1183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh def __init__(self, editwin): 1383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.editwin = editwin 1483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh self.editwin.text.bind("<<do-rstrip>>", self.do_rstrip) 1583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh def do_rstrip(self, event=None): 1783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 1883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh text = self.editwin.text 1983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh undo = self.editwin.undo 2083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 2183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh undo.undo_block_start() 2283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 2383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh end_line = int(float(text.index('end'))) + 1 2483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh for cur in range(1, end_line): 2583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh txt = text.get('%i.0' % cur, '%i.0 lineend' % cur) 2683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh cut = len(txt.rstrip()) 2783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh text.delete('%i.%i' % (cur, cut), '%i.0 lineend' % cur) 2883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh 2983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh undo.undo_block_stop() 30