--- a/readme.html
+++ b/readme.html
@@ -30,48 +30,51 @@
 <li><a class="reference" href="#command-line-options" id="id11" name="id11">Command Line Options</a><ul>
 <li><a class="reference" href="#last" id="id12" name="id12">--last</a></li>
 <li><a class="reference" href="#unicode-and-ansi" id="id13" name="id13">--unicode and --ansi</a></li>
-<li><a class="reference" href="#nothread" id="id14" name="id14">--nothread</a></li>
-<li><a class="reference" href="#macros" id="id15" name="id15">--macros</a></li>
+<li><a class="reference" href="#fontsize" id="id14" name="id14">--fontsize</a></li>
+<li><a class="reference" href="#nothread" id="id15" name="id15">--nothread</a></li>
+<li><a class="reference" href="#macros" id="id16" name="id16">--macros</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#pype-features-and-functionality" id="id16" name="id16">PyPE features and functionality</a><ul>
-<li><a class="reference" href="#what-is-sloppy-cut-copy" id="id17" name="id17">What is Sloppy Cut/Copy?</a></li>
-<li><a class="reference" href="#what-is-smart-paste" id="id18" name="id18">What is Smart Paste?</a></li>
-<li><a class="reference" href="#what-do-the-different-options-in-the-filter-tool-do" id="id19" name="id19">What do the different options in the Filter tool do?</a></li>
-<li><a class="reference" href="#how-do-i-update-the-default-settings-for-a-particular-document-type" id="id20" name="id20">How do I update the default settings for a particular document type?</a></li>
-<li><a class="reference" href="#dictionaries-and-alphabets-for-the-spell-checker" id="id21" name="id21">Dictionaries and alphabets for the Spell checker</a></li>
-<li><a class="reference" href="#how-does-one-pype-work" id="id22" name="id22">How does &quot;One PyPE&quot; work?</a></li>
-<li><a class="reference" href="#what-the-heck-is-a-trigger" id="id23" name="id23">What the heck is a Trigger?</a></li>
-<li><a class="reference" href="#find-replace-bars" id="id24" name="id24">Find/Replace bars</a></li>
-<li><a class="reference" href="#string-escapes-in-regular-expressions-and-multiline-searches" id="id25" name="id25">String escapes in regular expressions and multiline searches?</a></li>
-<li><a class="reference" href="#what-happens-when-smart-case-is-enabled-during-a-replace" id="id26" name="id26">What happens when &quot;Smart Case&quot; is enabled during a replace?</a></li>
-<li><a class="reference" href="#what-is-up-with-the-enable-file-drops-checkbox-in-the-edit-menu" id="id27" name="id27">What is up with the &quot;Enable File Drops&quot; checkbox in the 'Edit' menu?</a></li>
-<li><a class="reference" href="#how-do-i-use-the-todo-list" id="id28" name="id28">How do I use the 'Todo' list?</a></li>
-<li><a class="reference" href="#what-are-the-known-issues-within-pype-s-parser" id="id29" name="id29">What are the known issues within PyPE's parser?</a><ul>
-<li><a class="reference" href="#the-c-c-parser" id="id30" name="id30">The C/C++ parser</a></li>
-<li><a class="reference" href="#the-python-parser" id="id31" name="id31">The Python parser</a></li>
+<li><a class="reference" href="#pype-features-and-functionality" id="id17" name="id17">PyPE features and functionality</a><ul>
+<li><a class="reference" href="#encoding-detection-for-opening-files" id="id18" name="id18">Encoding detection for opening files</a></li>
+<li><a class="reference" href="#encoding-detection-for-saving-files" id="id19" name="id19">Encoding detection for saving files</a></li>
+<li><a class="reference" href="#what-is-a-coding-directive" id="id20" name="id20">What is a &quot;coding directive&quot;?</a></li>
+<li><a class="reference" href="#what-is-sloppy-cut-copy" id="id21" name="id21">What is Sloppy Cut/Copy?</a></li>
+<li><a class="reference" href="#what-is-smart-paste" id="id22" name="id22">What is Smart Paste?</a></li>
+<li><a class="reference" href="#what-do-the-different-options-in-the-filter-tool-do" id="id23" name="id23">What do the different options in the Filter tool do?</a></li>
+<li><a class="reference" href="#how-do-i-update-the-default-settings-for-a-particular-document-type" id="id24" name="id24">How do I update the default settings for a particular document type?</a></li>
+<li><a class="reference" href="#dictionaries-and-alphabets-for-the-spell-checker" id="id25" name="id25">Dictionaries and alphabets for the Spell checker</a></li>
+<li><a class="reference" href="#how-does-one-pype-work" id="id26" name="id26">How does &quot;One PyPE&quot; work?</a></li>
+<li><a class="reference" href="#what-the-heck-is-a-trigger" id="id27" name="id27">What the heck is a Trigger?</a></li>
+<li><a class="reference" href="#find-replace-bars" id="id28" name="id28">Find/Replace bars</a></li>
+<li><a class="reference" href="#string-escapes-in-regular-expressions-and-multiline-searches" id="id29" name="id29">String escapes in regular expressions and multiline searches?</a></li>
+<li><a class="reference" href="#what-happens-when-smart-case-is-enabled-during-a-replace" id="id30" name="id30">What happens when &quot;Smart Case&quot; is enabled during a replace?</a></li>
+<li><a class="reference" href="#how-do-i-use-the-todo-list" id="id31" name="id31">How do I use the 'Todo' list?</a></li>
+<li><a class="reference" href="#what-are-the-known-issues-within-pype-s-parser" id="id32" name="id32">What are the known issues within PyPE's parser?</a><ul>
+<li><a class="reference" href="#the-c-c-parser" id="id33" name="id33">The C/C++ parser</a></li>
+<li><a class="reference" href="#the-python-parser" id="id34" name="id34">The Python parser</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#how-do-you-get-usable-calltips" id="id32" name="id32">How do you get usable Calltips?</a></li>
-<li><a class="reference" href="#how-do-you-get-autocompletion" id="id33" name="id33">How do you get autocompletion?</a></li>
-<li><a class="reference" href="#crlf-lf-cr-line-endings" id="id34" name="id34">CRLF/LF/CR line endings</a></li>
-<li><a class="reference" href="#stcstyleeditor-py" id="id35" name="id35">STCStyleEditor.py</a></li>
-<li><a class="reference" href="#expandable-collapsable-foldable-code" id="id36" name="id36">Expandable/collapsable/foldable code</a></li>
-<li><a class="reference" href="#converting-between-tabs-and-spaces" id="id37" name="id37">Converting between tabs and spaces</a></li>
+<li><a class="reference" href="#how-do-you-get-usable-calltips" id="id35" name="id35">How do you get usable Calltips?</a></li>
+<li><a class="reference" href="#how-do-you-get-autocompletion" id="id36" name="id36">How do you get autocompletion?</a></li>
+<li><a class="reference" href="#crlf-lf-cr-line-endings" id="id37" name="id37">CRLF/LF/CR line endings</a></li>
+<li><a class="reference" href="#stcstyleeditor-py" id="id38" name="id38">STCStyleEditor.py</a></li>
+<li><a class="reference" href="#expandable-collapsable-foldable-code" id="id39" name="id39">Expandable/collapsable/foldable code</a></li>
+<li><a class="reference" href="#converting-between-tabs-and-spaces" id="id40" name="id40">Converting between tabs and spaces</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#how-do-i-program-my-own-macros" id="id38" name="id38">How do I program my own macros?</a><ul>
-<li><a class="reference" href="#an-example-nontrivial-macro" id="id39" name="id39">An example nontrivial macro</a></li>
-<li><a class="reference" href="#using-macros-as-code-snippets" id="id40" name="id40">Using macros as code snippets</a></li>
+<li><a class="reference" href="#how-do-i-program-my-own-macros" id="id41" name="id41">How do I program my own macros?</a><ul>
+<li><a class="reference" href="#an-example-nontrivial-macro" id="id42" name="id42">An example nontrivial macro</a></li>
+<li><a class="reference" href="#using-macros-as-code-snippets" id="id43" name="id43">Using macros as code snippets</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#faq" id="id41" name="id41">FAQ</a><ul>
-<li><a class="reference" href="#how-do-you-come-up-with-new-feature-ideas" id="id42" name="id42">How do you come up with new feature ideas?</a></li>
-<li><a class="reference" href="#what-s-the-deal-with-the-version-numbering-scheme" id="id43" name="id43">What's the deal with the version numbering scheme?</a></li>
-<li><a class="reference" href="#how-did-pype-come-about" id="id44" name="id44">How did PyPE come about?</a></li>
+<li><a class="reference" href="#faq" id="id44" name="id44">FAQ</a><ul>
+<li><a class="reference" href="#how-do-you-come-up-with-new-feature-ideas" id="id45" name="id45">How do you come up with new feature ideas?</a></li>
+<li><a class="reference" href="#what-s-the-deal-with-the-version-numbering-scheme" id="id46" name="id46">What's the deal with the version numbering scheme?</a></li>
+<li><a class="reference" href="#how-did-pype-come-about" id="id47" name="id47">How did PyPE come about?</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#thank-yous" id="id45" name="id45">Thank Yous</a></li>
+<li><a class="reference" href="#thank-yous" id="id48" name="id48">Thank Yous</a></li>
 </ul>
 </div>
 <div class="section" id="license-and-contact-information">
@@ -205,30 +208,99 @@
 have no effect on the Windows distributions of PyPE, or wherever 
 <tt class="docutils literal"><span class="pre">hasattr(sys,</span> <span class="pre">'frozen')</span></tt> is true.</p>
 </div>
+<div class="section" id="fontsize">
+<h2><a class="toc-backref" href="#id14" name="fontsize">--fontsize</a></h2>
+<p>If you provide <tt class="docutils literal"><span class="pre">--fontsize=12</span></tt>, PyPE will change the font size for all open
+documents to 12.  The default font size that PyPE uses is 10.  If you want
+text to be bigger, use a number larger than 10.  If you want text to be
+smaller, use a number smaller than 10.  The line number margin will be scaled
+proportional to the font size specified.</p>
+</div>
 <div class="section" id="nothread">
-<h2><a class="toc-backref" href="#id14" name="nothread">--nothread</a></h2>
+<h2><a class="toc-backref" href="#id15" name="nothread">--nothread</a></h2>
 <p>This command line option will disable the threaded parser, which may cause
 problems on some platforms.  This will reduce the accuracy of the tools in
 the &quot;Tools&quot; menu, due to the faster and not necessarily correct parser.</p>
 </div>
 <div class="section" id="macros">
-<h2><a class="toc-backref" href="#id15" name="macros">--macros</a></h2>
-<p>PyPE 2.6 has an almost fully-functioning macro system.  The Python 2.5
-<tt class="docutils literal"><span class="pre">--macros</span></tt> command line option is now ignored because macros are enabled by
-default in 2.6+.</p>
+<h2><a class="toc-backref" href="#id16" name="macros">--macros</a></h2>
+<p>PyPE 2.6 has what I would consider to be a fully-functioning macro system.
+The Python 2.5 <tt class="docutils literal"><span class="pre">--macros</span></tt> command line option is now ignored because macros
+are enabled by default in 2.6+.</p>
 </div>
 </div>
 <div class="section" id="pype-features-and-functionality">
-<h1><a class="toc-backref" href="#id16" name="pype-features-and-functionality">PyPE features and functionality</a></h1>
+<h1><a class="toc-backref" href="#id17" name="pype-features-and-functionality">PyPE features and functionality</a></h1>
+<div class="section" id="encoding-detection-for-opening-files">
+<h2><a class="toc-backref" href="#id18" name="encoding-detection-for-opening-files">Encoding detection for opening files</a></h2>
+<p>If you are using the Unicode version of PyPE, when opening a file, PyPE will
+attempt to decode your file using the following encodings in order:</p>
+<ol class="arabic simple">
+<li>The encoding specified by the BOM, if any (PyPE writes BOMs for UTF-*
+encodings by default).</li>
+<li>Encodings specified by &quot;coding directives&quot; in the first two lines of
+source, if any.</li>
+<li>Ascii (only allows for values from 0...127)</li>
+<li>Latin-1 (allows for values 0...255)</li>
+</ol>
+<p>If options 1-3 above fail, then 4 will succeed, but may not necessarily
+display the correct content, and may cause corruption if you were to save the
+document.</p>
+<p>In 2.6.3 and earlier, PyPE would try 1, 2, then 3, but not 4.</p>
+<p>Note that PyPE does not default to assuming XML or HTML files are UTF-8 as per
+spec: <a class="reference" href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-EncodingDecl">http://www.w3.org/TR/2000/REC-xml-20001006#NT-EncodingDecl</a> due to
+backwards compatability concerns with PyPE 2.6.3 and earlier. Users desiring
+UTF-8 decoding support should make sure that their xml/html files include a
+UTF-8 encoding directive or BOM at the beginning of their file.</p>
+</div>
+<div class="section" id="encoding-detection-for-saving-files">
+<h2><a class="toc-backref" href="#id19" name="encoding-detection-for-saving-files">Encoding detection for saving files</a></h2>
+<p>If you are using the Unicode version of PyPE, when saving a file, PyPE will
+attempt to encode your file using the following encodings in order:</p>
+<ol class="arabic simple">
+<li>Any encoding specified by the Document -&gt; Encodings menu option (note that
+a specification of 'other' will be ignored, and will assume the existance
+of a &quot;coding&quot; directive.</li>
+<li>Encodings specified by &quot;coding directives&quot; in the first two lines of
+source, if any.</li>
+<li>Ascii (only allows for values from 0...127)</li>
+<li>Latin-1/iso-8859-1 (allows for values 0...255)</li>
+<li>UTF-8</li>
+</ol>
+<p>If options 1-4 above fail, 5 will succeed.  If the first encoding option does
+not succeed: say, for instance, that you have specified &quot;other&quot; as the
+Document -&gt; Encodings option, then used the iso-8859-9 coding declaration for
+Turkish, but included some Arabic letters in a comment somewhere, PyPE will
+inform you that your intended encoding (iso-8859-9) does not match the first
+encoding to succeed (UTF-8), and ask you if it is ok to continue.</p>
+<p>In 2.6.3 and earlier, PyPE would try 1, 2, 3, then 5.</p>
+</div>
+<div class="section" id="what-is-a-coding-directive">
+<h2><a class="toc-backref" href="#id20" name="what-is-a-coding-directive">What is a &quot;coding directive&quot;?</a></h2>
+<p>If in the first two lines of your source file (all initial blank lines being
+ignored), the following regular expression matches something:</p>
+<pre class="literal-block">
+coding[=:](?:[&quot;'\s]*)([-\w.]+)
+</pre>
+<p>... then you have a properly specified &quot;coding directive&quot;.  This regular
+expression was intended to match things like:</p>
+<pre class="literal-block">
+# -*- coding: ENCODING_NAME -*-
+# vim:fileencoding=ENCODING_NAME
+&lt;?xml version='1.0' encoding='ENCODING_NAME' ?&gt;
+</pre>
+<p>... in [X]Emacs or Vim style encoding declarations for Python source, or
+XML-style declarations in XML or HTML source.</p>
+</div>
 <div class="section" id="what-is-sloppy-cut-copy">
-<h2><a class="toc-backref" href="#id17" name="what-is-sloppy-cut-copy">What is Sloppy Cut/Copy?</a></h2>
+<h2><a class="toc-backref" href="#id21" name="what-is-sloppy-cut-copy">What is Sloppy Cut/Copy?</a></h2>
 <p>When selecting multiple lines for a cut/copy operation, Sloppy Cut/Copy will
 select the entirety of partially selected lines.  This saves the user from
 having to meticulously select the start and end points of multi-line
 selections.</p>
 </div>
 <div class="section" id="what-is-smart-paste">
-<h2><a class="toc-backref" href="#id18" name="what-is-smart-paste">What is Smart Paste?</a></h2>
+<h2><a class="toc-backref" href="#id22" name="what-is-smart-paste">What is Smart Paste?</a></h2>
 <p>Smart Paste is two functionalities in one.</p>
 <ol class="arabic simple">
 <li>When pasting multiple lines into a currently indented region, it will
@@ -242,7 +314,7 @@
 </ol>
 </div>
 <div class="section" id="what-do-the-different-options-in-the-filter-tool-do">
-<h2><a class="toc-backref" href="#id19" name="what-do-the-different-options-in-the-filter-tool-do">What do the different options in the Filter tool do?</a></h2>
+<h2><a class="toc-backref" href="#id23" name="what-do-the-different-options-in-the-filter-tool-do">What do the different options in the Filter tool do?</a></h2>
 <dl class="docutils">
 <dt>subsequence</dt>
 <dd>will match things like <tt class="docutils literal"><span class="pre">us.et</span></tt> to <tt class="docutils literal"><span class="pre">UserString.ExpandTabs</span></tt></dd>
@@ -299,7 +371,7 @@
 </pre>
 </div>
 <div class="section" id="how-do-i-update-the-default-settings-for-a-particular-document-type">
-<h2><a class="toc-backref" href="#id20" name="how-do-i-update-the-default-settings-for-a-particular-document-type">How do I update the default settings for a particular document type?</a></h2>
+<h2><a class="toc-backref" href="#id24" name="how-do-i-update-the-default-settings-for-a-particular-document-type">How do I update the default settings for a particular document type?</a></h2>
 <ol class="arabic simple">
 <li>Close all open documents of the particular type whose default settings you
 want to update.</li>
@@ -321,7 +393,7 @@
 specific type, follow the above 5 steps.</p>
 </div>
 <div class="section" id="dictionaries-and-alphabets-for-the-spell-checker">
-<h2><a class="toc-backref" href="#id21" name="dictionaries-and-alphabets-for-the-spell-checker">Dictionaries and alphabets for the Spell checker</a></h2>
+<h2><a class="toc-backref" href="#id25" name="dictionaries-and-alphabets-for-the-spell-checker">Dictionaries and alphabets for the Spell checker</a></h2>
 <p>You can create/delete custom dictionaries via the +/- buttons right next to
 the &quot;Custom Dictionaries:&quot; section.  You can add words to these custom
 dictionaries by &quot;Check&quot;ing your document for misspellings, checking all of the
@@ -345,7 +417,7 @@
 dictionaries, and any that match become suggestions.</p>
 </div>
 <div class="section" id="how-does-one-pype-work">
-<h2><a class="toc-backref" href="#id22" name="how-does-one-pype-work">How does &quot;One PyPE&quot; work?</a></h2>
+<h2><a class="toc-backref" href="#id26" name="how-does-one-pype-work">How does &quot;One PyPE&quot; work?</a></h2>
 <p>If &quot;One PyPE&quot; is selected, it will remove the file named 'nosocket' from the
 path in which PyPE is running from (if it exists), and start a listening
 socket on 127.0.0.1:9999 .  If &quot;One PyPE&quot; is deselected, it will create a file
@@ -363,7 +435,7 @@
 sockets, create a file called 'nosocket' and make it read-only to PyPE.</p>
 </div>
 <div class="section" id="what-the-heck-is-a-trigger">
-<h2><a class="toc-backref" href="#id23" name="what-the-heck-is-a-trigger">What the heck is a Trigger?</a></h2>
+<h2><a class="toc-backref" href="#id27" name="what-the-heck-is-a-trigger">What the heck is a Trigger?</a></h2>
 <p>Let us say that you writing a web page from scratch.  Let us also say that
 typing in everything has gotten a bit tiresome, so you want to offer yourself
 a few macro-like expansions, like 'img' -&gt; '&lt;img src=&quot;&quot;&gt;'.</p>
@@ -389,14 +461,14 @@
 standard <tt class="docutils literal"><span class="pre">\n</span></tt>.</p>
 </div>
 <div class="section" id="find-replace-bars">
-<h2><a class="toc-backref" href="#id24" name="find-replace-bars">Find/Replace bars</a></h2>
+<h2><a class="toc-backref" href="#id28" name="find-replace-bars">Find/Replace bars</a></h2>
 <p>If you have ' or &quot; as the first character in a find or find/replace entry, and
 what you entered is a proper string declaration in Python, PyPE will use the
 compiler module to parse and discover the the string.  For example, to
 discover LF characters, use <tt class="docutils literal"><span class="pre">&quot;\n&quot;</span></tt>, including quotes.</p>
 </div>
 <div class="section" id="string-escapes-in-regular-expressions-and-multiline-searches">
-<h2><a class="toc-backref" href="#id25" name="string-escapes-in-regular-expressions-and-multiline-searches">String escapes in regular expressions and multiline searches?</a></h2>
+<h2><a class="toc-backref" href="#id29" name="string-escapes-in-regular-expressions-and-multiline-searches">String escapes in regular expressions and multiline searches?</a></h2>
 <p>You can use standard Python strings with escapes and quote marks just like
 when you use the find/replace bars with one minor difference; all searched
 data is normalized to have <tt class="docutils literal"><span class="pre">\n</span></tt> line endings regardless of the input.  This
@@ -407,7 +479,7 @@
 checked or unchecked).</p>
 </div>
 <div class="section" id="what-happens-when-smart-case-is-enabled-during-a-replace">
-<h2><a class="toc-backref" href="#id26" name="what-happens-when-smart-case-is-enabled-during-a-replace">What happens when &quot;Smart Case&quot; is enabled during a replace?</a></h2>
+<h2><a class="toc-backref" href="#id30" name="what-happens-when-smart-case-is-enabled-during-a-replace">What happens when &quot;Smart Case&quot; is enabled during a replace?</a></h2>
 <p>If the found string is all upper or lower case, it will be replaced by a
 string that is also all upper or lower case.</p>
 <p>Else if the length of the found string is the same length as the replacement
@@ -431,25 +503,8 @@
 <p>Otherwise if the first letter of the found string is upper or lowercase, then
 its replacement will have the first letter be upper or lowercase respectively.</p>
 </div>
-<div class="section" id="what-is-up-with-the-enable-file-drops-checkbox-in-the-edit-menu">
-<h2><a class="toc-backref" href="#id27" name="what-is-up-with-the-enable-file-drops-checkbox-in-the-edit-menu">What is up with the &quot;Enable File Drops&quot; checkbox in the 'Edit' menu?</a></h2>
-<ol class="arabic simple">
-<li>Select some text.</li>
-<li>Now click on it.</li>
-</ol>
-<p>Q: Do you want the selection to go away, and your cursor to be close to where
-you clicked?</p>
-<p>A1: If yes, uncheck the box and restart if necessary.</p>
-<p>A2: If no, check the box and restart if necessary.</p>
-<p>(The check is effective for any opened document from then on, but does not
-change the behavior of already opened documents.)</p>
-<p>One should always be able to drag and drop text.  One should always be able to
-drag and drop files everywhere, except for the text editor portion.  If
-checked, you can drop files on the editor portion, if unchecked, you won't be
-able to drop files on the text editor portion.</p>
-</div>
 <div class="section" id="how-do-i-use-the-todo-list">
-<h2><a class="toc-backref" href="#id28" name="how-do-i-use-the-todo-list">How do I use the 'Todo' list?</a></h2>
+<h2><a class="toc-backref" href="#id31" name="how-do-i-use-the-todo-list">How do I use the 'Todo' list?</a></h2>
 <p>On a line by itself (any amount of leading spaces), place something that
 matches the following regular expression: <tt class="docutils literal"><span class="pre">([a-zA-Z0-9</span> <span class="pre">]+):(.*)</span></tt> and is
 immediately preceeded with a language-specific single-line comment (<tt class="docutils literal"><span class="pre">#</span></tt>,
@@ -471,14 +526,18 @@
 
 #I am not a valid todo...: because there is punctuation on the left
 </pre>
+<p>In PyPE 2.6.5 and later, for Python, C/C++, and TeX files, PyPE supports the
+use of <tt class="docutils literal"><span class="pre">#&gt;</span></tt> (or equivalents for non-XML/HTML languages) as a &quot;strict&quot; todo,
+with the option to only recognize these &quot;strict&quot; todos.</p>
 </div>
 <div class="section" id="what-are-the-known-issues-within-pype-s-parser">
-<h2><a class="toc-backref" href="#id29" name="what-are-the-known-issues-within-pype-s-parser">What are the known issues within PyPE's parser?</a></h2>
+<h2><a class="toc-backref" href="#id32" name="what-are-the-known-issues-within-pype-s-parser">What are the known issues within PyPE's parser?</a></h2>
 <div class="section" id="the-c-c-parser">
-<h3><a class="toc-backref" href="#id30" name="the-c-c-parser">The C/C++ parser</a></h3>
-<p>The recently added C/C++ parser uses a combination of regular expressions and
-a few checks to extract function definition information.  Note that it can
-handle things like the following and their variations:</p>
+<h3><a class="toc-backref" href="#id33" name="the-c-c-parser">The C/C++ parser</a></h3>
+<p>PyPE 2.6.1 and later added a C/C++ parser that uses a combination of regular
+expressions and some post-processing to extract function definition
+information.  Note that it can handle things like the following and their
+variations:</p>
 <pre class="literal-block">
 int ** foo(char* arg1, int larg1) \{ ...
 
@@ -494,8 +553,8 @@
 (#ys+i\(i(?:,s*i)*\))
 (?:(cs*\([^\)]*\))[^{;\)]*[;{])
 </pre>
-<p>Where the following replacements are made, in-order to the regular expressions
-prior to matching:</p>
+<p>Where the following replacements are made to the regular expressions prior to
+matching:</p>
 <pre class="literal-block">
 c -&gt; (?:i|operator[^\w]+)
 i -&gt; (?:[a-zA-Z_]\w*)
@@ -503,14 +562,15 @@
 y -&gt; (?:[dD][eE][fF][iI][nN][eE])
 </pre>
 <p>The function-like macros are returned unchanged, while the possible function
-matches have various other tests performed on them, and the addition of
-everything on the same line as the potential function definition.</p>
+matches have various other tests performed on them and everything on the same
+line as the potential function definition.</p>
 <p>Note that the parser doesn't recognize struct definitions, data members of
-classes, class hierarchies, functions with default values, etc.  It should be
-sufficient for most navigation and/or</p>
+classes, class hierarchies, functions with default values, etc., but it should
+generally be sufficient for most navigation and/or file-specific autocomplete
+and calltips.</p>
 </div>
 <div class="section" id="the-python-parser">
-<h3><a class="toc-backref" href="#id31" name="the-python-parser">The Python parser</a></h3>
+<h3><a class="toc-backref" href="#id34" name="the-python-parser">The Python parser</a></h3>
 <p>For Python source files, if given a syntactically correct Python source file,
 the Python parser should work without issue (as long as --nothread is not
 provided), though it may not be quite as fast as desired (where fast is &lt; .1
@@ -543,24 +603,23 @@
 </pre>
 <p>This parser will also not pull out doc strings or handle multi-line function
 definitions properly.</p>
-<p>PyPE still needs a real parser for C, so it only extracts \todo: items.  What
-precisely a parser would do on TeX/LaTeX, HTML or XML is beyond me, so they
-also only extract %todo: and &lt;!-- todo: --&gt; items respectively.</p>
+<p>What precisely a parser would do on TeX/LaTeX, HTML or XML is beyond me, so
+they only extract %todo: and &lt;!-- todo: --&gt; items respectively.</p>
 </div>
 </div>
 <div class="section" id="how-do-you-get-usable-calltips">
-<h2><a class="toc-backref" href="#id32" name="how-do-you-get-usable-calltips">How do you get usable Calltips?</a></h2>
+<h2><a class="toc-backref" href="#id35" name="how-do-you-get-usable-calltips">How do you get usable Calltips?</a></h2>
 <p>Hit F5.  This will also rebuild the browsable source tree, autocomplete
-listing, and todo list.</p>
+listing, filter, and todo list.</p>
 </div>
 <div class="section" id="how-do-you-get-autocompletion">
-<h2><a class="toc-backref" href="#id33" name="how-do-you-get-autocompletion">How do you get autocompletion?</a></h2>
+<h2><a class="toc-backref" href="#id36" name="how-do-you-get-autocompletion">How do you get autocompletion?</a></h2>
 <p>Easy.  In the 'Document' menu, there is an entry for 'Show autocomplete'.
 Make sure there is a check by it, and you are set.  If you want to get a new
 or updated listing of functions, hit the F5 key on your keyboard.</p>
 </div>
 <div class="section" id="crlf-lf-cr-line-endings">
-<h2><a class="toc-backref" href="#id34" name="crlf-lf-cr-line-endings">CRLF/LF/CR line endings</a></h2>
+<h2><a class="toc-backref" href="#id37" name="crlf-lf-cr-line-endings">CRLF/LF/CR line endings</a></h2>
 <p>PyPE will attempt to figure out what kind of file was opened, it does this by
 counting the number of different kinds of line endings.  Which ever line
 ending appears the most in an open file will set the line ending support for
@@ -574,7 +633,7 @@
 'Document' menu.</p>
 </div>
 <div class="section" id="stcstyleeditor-py">
-<h2><a class="toc-backref" href="#id35" name="stcstyleeditor-py">STCStyleEditor.py</a></h2>
+<h2><a class="toc-backref" href="#id38" name="stcstyleeditor-py">STCStyleEditor.py</a></h2>
 <p>As I didn't write this, I can offer basically no support for it.  It seems to
 work to edit python colorings, and if you edit some of the last 30 or so lines
 of it, you can actually use the editor to edit some of the other styles that
@@ -584,7 +643,7 @@
 As it is a known-good version, use it.</p>
 </div>
 <div class="section" id="expandable-collapsable-foldable-code">
-<h2><a class="toc-backref" href="#id36" name="expandable-collapsable-foldable-code">Expandable/collapsable/foldable code</a></h2>
+<h2><a class="toc-backref" href="#id39" name="expandable-collapsable-foldable-code">Expandable/collapsable/foldable code</a></h2>
 <p>Since the beginning, there have been expandable and collapsable scopes thanks
 to wxStyledTextCtrl.  How to use them...
 Given the below...</p>
@@ -609,7 +668,7 @@
 Play around with them, you may like it.</p>
 </div>
 <div class="section" id="converting-between-tabs-and-spaces">
-<h2><a class="toc-backref" href="#id37" name="converting-between-tabs-and-spaces">Converting between tabs and spaces</a></h2>
+<h2><a class="toc-backref" href="#id40" name="converting-between-tabs-and-spaces">Converting between tabs and spaces</a></h2>
 <p>So, you got tabs and you want spaces, or you have spaces and want to make them
 tabs.  As it is not a menu option, you're probably wondering &quot;how in the hell
 am I going to do this&quot;.  Well, if you read the above stuff about string
@@ -622,7 +681,7 @@
 </div>
 </div>
 <div class="section" id="how-do-i-program-my-own-macros">
-<h1><a class="toc-backref" href="#id38" name="how-do-i-program-my-own-macros">How do I program my own macros?</a></h1>
+<h1><a class="toc-backref" href="#id41" name="how-do-i-program-my-own-macros">How do I program my own macros?</a></h1>
 <p>Users of PyPE 2.5.1 (a test release) and later will have the ability to
 record, edit, playback, and delete macros.  Most keyboard related tasks are
 recorded (typing, keyboard movement, selection, cut, copy, paste, etc.), as
@@ -641,6 +700,8 @@
 <pre class="literal-block">
 creation_date = 'Wed Jul 12 21:35:34 2006'
 name = 'macro: Wed Jul 12 21:35:34 2006'
+hotkeydisplay = &quot;&quot;
+hotkeyaccept = &quot;&quot;
 
 def macro(self):
     pass
@@ -651,6 +712,14 @@
 <dt><tt class="docutils literal"><span class="pre">name</span></tt></dt>
 <dd>is the name you will see in the macro list.  If this value is
 missing, you will see the file name instead.</dd>
+<dt><tt class="docutils literal"><span class="pre">hotkeydisplay</span></tt></dt>
+<dd>if you have created a hotkey for this macro, this represents how the
+hotkey would be displayed to PyPE.  To get usable values for
+<tt class="docutils literal"><span class="pre">hotkeydisplay</span></tt>, use the 'Create Hotkey' button.</dd>
+<dt><tt class="docutils literal"><span class="pre">hotkeyaccept</span></tt></dt>
+<dd>if you have created a hotkey for this macro, this represents the
+actual underlying keyboard keypresses necessary to make the macro run.  To
+get usable values for <tt class="docutils literal"><span class="pre">hotkeyaccept</span></tt>, use the 'Create Hotkey' button.</dd>
 <dt><tt class="docutils literal"><span class="pre">def</span> <span class="pre">macro(self):</span></tt></dt>
 <dd>is the initial definition of the macro.  You can have any number of helper
 functions, extra data, etc., but the macro itself must be named <tt class="docutils literal"><span class="pre">macro</span></tt>,
@@ -698,8 +767,12 @@
 self.lines.curline          # manipulation of the line the cursor is on
 self.lines.curlinei         # manipulation of the index where the cursor is
 self.lines.curlinep         # manipulation of the column in the line where the cursor is
-self.lines.selectedlines    # manipulation of the lines where a selection exists
-self.lines.selectedlinesi   # manipulation of the indices where a selection exists
+self.lines.selectedlines    # manipulation of the lines where the selection exists
+self.lines.selectedlinesi   # manipulation of the indices where the selection exists
+self.lines.targetlines      # manipulation of the lines where the target exists
+self.lines.targetlinesi     # manipulation of the indices where the target exists
+                            # the target is like an invisible selection
+
 
 #to force the selection of all of all lines where a selection currently exists:
 self.lines.selectedlinesi = self.lines.selectedlinesi
@@ -730,7 +803,7 @@
 </li>
 </ol>
 <div class="section" id="an-example-nontrivial-macro">
-<h2><a class="toc-backref" href="#id39" name="an-example-nontrivial-macro">An example nontrivial macro</a></h2>
+<h2><a class="toc-backref" href="#id42" name="an-example-nontrivial-macro">An example nontrivial macro</a></h2>
 <p>When I was writing macro support, I would have found macros to be quite
 convenient for developing macros.  What do I mean?  Let us say that I wanted
 to turn a line that read (from main_window_callback.c in the gPHPedit sources):</p>
@@ -761,7 +834,7 @@
 but they shouldn't be terribly difficult.</p>
 </div>
 <div class="section" id="using-macros-as-code-snippets">
-<h2><a class="toc-backref" href="#id40" name="using-macros-as-code-snippets">Using macros as code snippets</a></h2>
+<h2><a class="toc-backref" href="#id43" name="using-macros-as-code-snippets">Using macros as code snippets</a></h2>
 <ol class="arabic simple">
 <li>Create a macro.</li>
 <li>Paste the content of your snippet into a global variable in the macro and
@@ -789,9 +862,9 @@
 </div>
 </div>
 <div class="section" id="faq">
-<h1><a class="toc-backref" href="#id41" name="faq">FAQ</a></h1>
+<h1><a class="toc-backref" href="#id44" name="faq">FAQ</a></h1>
 <div class="section" id="how-do-you-come-up-with-new-feature-ideas">
-<h2><a class="toc-backref" href="#id42" name="how-do-you-come-up-with-new-feature-ideas">How do you come up with new feature ideas?</a></h2>
+<h2><a class="toc-backref" href="#id45" name="how-do-you-come-up-with-new-feature-ideas">How do you come up with new feature ideas?</a></h2>
 <p>Every once and a while, I'll be editing with PyPE, and I'll say, &quot;hey, it
 would be neat if I could do X with PyPE&quot;.  This is rare, though it has
 produced things like the draggable document list, spell check, customizable
@@ -825,7 +898,7 @@
 welcome your feedback.</p>
 </div>
 <div class="section" id="what-s-the-deal-with-the-version-numbering-scheme">
-<h2><a class="toc-backref" href="#id43" name="what-s-the-deal-with-the-version-numbering-scheme">What's the deal with the version numbering scheme?</a></h2>
+<h2><a class="toc-backref" href="#id46" name="what-s-the-deal-with-the-version-numbering-scheme">What's the deal with the version numbering scheme?</a></h2>
 <p>Early in development, PyPE raised version numbers very quickly.  From 1.0 to
 1.5, not much more than 2 months passed.  In that time, most of the major
 initial architectural changes that were to happen, happened.  This is not the
@@ -853,7 +926,7 @@
 whether or not anyone would even want to use the feature (even me).</p>
 </div>
 <div class="section" id="how-did-pype-come-about">
-<h2><a class="toc-backref" href="#id44" name="how-did-pype-come-about">How did PyPE come about?</a></h2>
+<h2><a class="toc-backref" href="#id47" name="how-did-pype-come-about">How did PyPE come about?</a></h2>
 <p>The beginnings of PyPE were written from 10:30PM on the 2nd of July through
 10:30PM on the 3rd of July, 2003.  Additional features were put together on
 the 4th of July along with some bug fixing and more testing for version 1.0.
@@ -877,7 +950,7 @@
 </div>
 </div>
 <div class="section" id="thank-yous">
-<h1><a class="toc-backref" href="#id45" name="thank-yous">Thank Yous</a></h1>
+<h1><a class="toc-backref" href="#id48" name="thank-yous">Thank Yous</a></h1>
 <p>Certainly there are some people I should thank, because without them, the
 piece of software you are using right now, just wouldn't be possible.</p>
 <p>Guido van Rossum - without Guido, not only would I not have Python, I also
@@ -905,10 +978,5 @@
 uncouth, but there's only so much a good woman can fix.</p>
 </div>
 </div>
-<hr class="docutils footer" />
-<div class="footer">
-Generated on: 2006-08-11 04:30 UTC.
-Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
-</div>
 </body>
 </html>