[wingide-users] Commentblock with ##
Wingware Support
support at wingware.com
Wed Oct 18 20:27:25 MDT 2006
On Wed, 18 Oct 2006, Rob Clewley wrote:
> I'm new to Wing and I've been benefitting greatly from the powerful
> debugging environment, among other features. But I would *really* like
> to be able to comment blocks of code with ## at the beginning of
> lines, not with a single, indented #.
Since this comes up from time to time, I just wrote up a script
(pasted in below my signature) that you can drop into your
'scripts' directory (preferably the one within your Settings
Directory, given 5th item in the About box). Then Reload All
Scripts from the Edit menu and you should be able to bind the
command 'comment-block-toggle' to some key in preferences.
Stephan Deibel
--
Wingware
Wing IDE for Python
Advancing Software Development
www.wingware.com
---------------------------
def comment_block_toggle():
"""Toggle block comment (with ## at start) on the selected lines in editor.
This is a different style of block commenting than Wing implements by default
(the default in Wing is intended to work better with some of the other
editor functionality)"""
app = wingapi.gApplication
editor = app.GetActiveEditor()
eol = editor.GetEol()
doc = editor.GetDocument()
start, end = editor.GetSelection()
start_lineno = doc.GetLineNumberFromPosition(start)
end_lineno = doc.GetLineNumberFromPosition(end)
line_start = doc.GetLineStart(start_lineno)
line_end = doc.GetLineEnd(end_lineno)
line_end = min(line_end, doc.GetLength() - 1)
txt = doc.GetCharRange(line_start, line_end)
txt2 = []
if txt.startswith('##'):
for line in txt.split(eol):
if len(line) >= 2 and line[:2] == '##':
line = line[2:]
txt2.append(line)
else:
for line in txt.split(eol):
if len(line.strip()) > 0:
line = '##' + line
txt2.append(line)
txt2 = eol.join(txt2) + eol
doc.BeginUndoAction()
try:
doc.DeleteChars(line_start, line_end)
doc.InsertChars(line_start, txt2)
finally:
doc.EndUndoAction()
More information about the wingide-users
mailing list