commenting out blocks of code

Neil Hodgson nyamatongwe+thunder at gmail.com
Fri Feb 17 22:14:49 EST 2006


    Hi Steven,

> I see the developers of Scite are either newbies to GUI programming, or
> they operate in a world of their own. Ctrl-Q is reserved for Quit (or
> Exit) in every GUI API I know of.

    I am the developer responsible for SciTE and the Ctrl+Q decision.
Ctrl+Q is not reserved for Quit on every platform. Perhaps you have
never used Windows where Exit does not normally have a distinct command 
key of its own but can be performed with Alt+F4 (Close) for single 
window applications. Since exiting an application is a far less common 
action than modifying the data within that application, it doesn't 
deserve one of the more easily typed key bindings. Some applications use 
Ctrl+Q but, of the applications I currently have open, Firefox, Internet 
Explorer, Explorer, iTunes, Visual Studio .NET, WordPad, QuickTime, 
PythonWin, and WinMerge don't respond to Ctrl+Q by quitting and 
Thunderbird does.
    Windows guidelines:
http://msdn.microsoft.com/library/en-us/dnwue/html/appxB.asp

> It is *easy* to detect when a line is already commented. It starts with a
> #. The ~ is superfluous.

    It is not usual to change a line from being code to being a comment 
as most lines of code make no sense as English text. If you do sometimes 
want to do this, the "#" key can be pressed at the beginning of a line. 
Ctrl+Q exists to allow commenting out sections of code that you do not 
want to be active. The "~" acts to differentiate these different uses of 
one language feature and makes it easy to apply the operation over
ranges that include comments and then invert the operation.

> Commenting and uncommenting should be two different commands: the whole
> point of nested comments is that it allows you to comment a block of text
> which may already contain comments. Having one command do both commenting
> and uncommenting according to the presence or absence of semantic clues in
> the text is a recipe for failure ("No you stupid computer, I want to
> COMMENT that block, not uncomment it!!!").

    Comments and commented out code are distinct. Using the same marker
for both is ambiguous. Few languages support true nested comments.

    SciTE's implementation of Ctrl+Q is very popular although you can 
change the text inserted/removed from "#~" to "#" if you prefer and 
SciTE also includes a command to add stream style comments for languages 
like /* C++ */.

> Imagine if your text editor used cntl-C for both copy and paste, somehow
> guessing whether you wanted to copy selected text or paste over it
> according to some subtle clue in the text itself. Wouldn't that be fun?

    Your imaginary command makes no sense as it is described. What are 
its full semantics? Why was it implemented this way?

    BTW, I have been implementing GUIs for over 20 years so maybe me and
the other SciTE users are in our own world. It does feel like a
friendly, enjoyable, comfortable world, though.

    Neil



More information about the Python-list mailing list