What's New in Version 6.0
_________________________
―――――――――――――――――――――――――
***Please enable word wrap when viewing this document***

Major Changes in Latest Versions
================================
Only the most significant feature changes are listed under this topic. Some version updates may include more comprehensive details under the next main topic section.


NoteTab v6.0 (released: 04 May 2009)
――――――――――――
* Improved support for Unicode and UTF-8 files, as well as documents based on alternative character code pages. Support for these new features appear in the File Open/Save dialog boxes as well as in Clip commands. Note that NoteTab is not a Unicode editor; characters that cannot be converted to the chosen ANSI code page are lost. Note also that Windows may substitute the document font with another that offers the appropriate character script. In NoteTab Pro this could result in a fixed-width font getting replaced with a variable-width font; when this happens, you may experience inconsistencies when selecting and editing text.

* When you open a Web document without specifying a code page, NoteTab will search the file for a charset, encoding, or lang attribute value. If such a value is found and recognized, NoteTab will attempt to adjust the font to the appropriate font script in order to display the text faithfully.

* The read-only document protection is now only set after opening a UTF-8 or Unicode file containing characters that failed to convert to ANSI.

* NoteTab Pro: significantly improved handling of Double-Byte text (DBCS).

* Updated the regular expressions engine to the latest release, which is based on PCRE 7.9.

* By default, unselected document tabs now use a less dark color.

* Fixed failure to set read-only protection when opening UTF-8 Web files lacking BOM signature.

* NoteTab Pro: fixed minor alignment issue in column ruler when line ruler is turned off.

* Updated the SampleCode Clip library with two new commands for opening and saving documents. The Open Document command lets you specify a code page and the Save Document command lets you specify an ANSI, UTF-8, or Unicode encoding. You will find additional code page values listed on the following Web page:
http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx

* Some other minor improvements and issues fixed.


Clip-code additions and improvements:
-------------------------------------
* New Clip language options added to support alternative code pages as well as saving to UTF-8 and Unicode encodings:

^!Open "FileName" [/R] [/J=nnn] [/C=CodePage]
CodePage should be one of the numeric values listed on this page:
http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx

^!SaveAnsi FileName
^!SaveUtf8 FileName
^!SaveUnicode FileName

^!Export "FileName" [ASCII|ANSI|UTF-8|UNICODE][MAC|UNIX][SELECTION|ALL][HARDBREAKS]
Added the UTF-8 and UNICODE encoding options.

^$GetLong(ShortFileName)$
Converts a DOS short filename to a Windows long name.



NoteTab v5.8 (released: 28 March 2009)
――――――――――――
* Updated the regular expressions engine to the latest release, which is based on PCRE 7.8.

* Added the /Close and /Exit command-line switches. Use either one to close a running instance of NoteTab.

* Fixed an issue that under specific conditions when searching through all open documents can cause an Outline document to lose all its topics except the current one.

* Fixed a display issue when minimizing/restoring NoteTab while the Find or Replace dialog is open.

* Fixed issues with the "Go to Hyperlink" feature.

* Fixed an issue with the ^$GetReSubStrings$ function, which failed to return a captured substring when only one subpattern was defined in the search criteria.

* Some other minor improvements and issues fixed.



NoteTab v5.7b (released: 31 July 2008)
―――――――――――――
* The /Temp command-line switch value is now automatically stored in NoteTab's INI file. As a result, you only need to use the switch again to change the last saved value or when the INI file has been reset. Use a blank value to use the default Windows temp folder (e.g., /temp="").

* Fixed an issue with search hyperlinks, like when Ctrl+Double-clicking in [ NoteTab ], that appeared in version 5.7.

* Fixed loss of icon from file types associated with NoteTab Light.



NoteTab v5.7 (released: 15 July 2008)
――――――――――――
* Updated the regular expressions engine to the latest release, which is based on PCRE 7.7.

* Improved the Strip HTML Tags feature. Now correctly processes unordered lists, ordered lists, and definition lists. Also improved processing speed.

* Added the Outline Tutorial shortcut under the Help menu to easily open the Readme.otl document.

* Added support for a new type of "text" hyperlink. You can now open files in their associated application by using an exclamation character (!) at the start of the hyperlink text. The following example will open the GIF file in your associated image viewer: [!Samples\notetab.gif]. See the [Readme.otl::Hyperlinks] topic for more details (tip: to open the document, hold down the Ctrl key while you double-click on the text between the square brackets).

* Opening a shortcut file (.lnk) in NoteTab now always opens its target file.

* Added support for folder and file name tokens. These tokens represent either fully qualified folder names or system variables. See "Folder and File Name Tokens" topic in Help for more details on this feature. 

* Improved the /usb switch option. You now only need to use this command the first time you run NoteTab off a USB drive. NoteTab will store the option in its INI file on the USB drive. To cancel the option, run NoteTab with the /usb=false command-line switch.

* Added keyboard shortcuts to combo-box and edit-box controls in dialogs: Ctrl+Z = undo; Ctrl+Backspace = delete word before cursor; Ctrl+Delete = delete from cursor till end of word.

* NoteTab Pro: added Ctrl+Shift+Up/Down keyboard shortcut to extend selection range a paragraph at a time.

* Fixed several issues affecting certain complex regular expression operations.

* Fixed issue with AutoReplace feature failing to work when an Outline document is open.

* Fixed issue when using keyboard shortcuts to open context menus.

* Fixed several accessibility issues. Added configuration file for Window-Eyes, JAWS for Windows, and Dolphin Hal; these are stored in the Accessibility subfolder. Use the following command-line switch to install them in the appropriate folders:
NoteTab.exe /acc=install
or
NotePro.exe /acc=install

* The Voluntary Product Accessibility Template (VPAT), which describes how NoteTab conforms to Section 508 of the Rehabilitation Act, is available from the following Web page:
http://www.notetab.com/vpat.php

* Freeware and Trial versions of NoteTab are now protected with a different third-party product, which should significantly reduce compatibility issues.

* Updated the spell-checker help file to the HTML Help format. Previous WinHelp format does not work on Windows Vista without installing extra support files.

* Added new print shortcuts to the Utilities library and Clipbar.

* Fixed issues with printer margins and word wrap settings that were not always correctly rendered in print output.

* Some other minor improvements and issues fixed.

* Updated references to Fookes Software to reflect the new legal form of business company. Fookes Software is now a Limited (Ltd) company, which is owned by Fookes Holding Ltd.


Clip-code additions and improvements:
-------------------------------------
* Added new option "O" to ^!Find and ^!Replace Clip commands. Use it to only search in current outline topic. This option is ignored if the Global scope option "G" is also set.

* Added ^!SetWizardWidth Clip command. Use it to control the width of the Clip wizard. The argument represents a width percentage value and can be between 20 and 500. This command must precede the first Clip field. The following example creates a Clip wizard with twice the regular width:
^!SetWizardWidth 200

* Added ^$IsAppOnUSB$ Clip function. Returns True if NoteTab is running with the USB option (see related /USB command-line switch).

* Updated the ^$GetDate Clip function. Now supports a second optional argument that can be used to add or remove days from the current date:
^$GetDate(DateFilter[;+/-days])$

* Added ^$GetActiveLibraryName$ and ^$GetActiveLibraryFileName$ Clip functions. These are similar to ^$GetLibraryName$ and ^$GetLibraryFileName$, but return an empty string if the Clipbook panel is closed.

* Added ^$IsAutoReplace$. Returns 1 if the Clipbook library is open in AutoReplace mode, or 0 if it is not.

* Added ^!SetAutoReplace ON/OFF
Changes AutoReplace mode accordingly if the Clipbook library is open.

* Updated ^!MakeShortcut command to add support for optional "start in" folder and icon arguments:
^!MakeShortcut ShortcutLocation "Target" ["Arguments"] ["Description"] [CmdShow] ["StartInFolder"] [IconIndex]
^!MakeShortcut ShortcutLocation "Target" ["Arguments"] ["Description"] [CmdShow] ["StartInFolder"] ["IconFile"]
^!MakeShortcut ShortcutLocation "Target" ["Arguments"] ["Description"] [CmdShow] ["StartInFolder"] ["IconFile::IconIndex"]

"IconFile" sets the file (path and name) containing the icon. If this argument is not specified, the value is set to "Target" if it represents an icon resource.
IconIndex sets the index of the icon within "IconFile". The first icon has an index value of 0.

* Improved ^$GetRegValue, which can now also read integer values from the registry.

* Added new Clip functions for regular expression tasks:

^$GetDocListAll("SearchPattern";"OutputPattern")$
Finds all matching strings in the current document (or selected text) based on the SearchPattern regexp pattern. The function returns a string with each match formatted according to the ReplaceString. Example that collects and displays all URLs in a Web page:
^!Info [L]^$GetDocListAll("(?s)<a.+?href\s*?=\s*?"(.*?)"";"$1\r\n")$

^$GetDocReplaceAll("SearchPattern";"ReplacePattern")$
Replaces all text in the current document (or selected text) matching the SearchPattern regexp pattern with the text specified by ReplacePattern. Example that replaces all h2 tags to h3:
^!Info [L]^$GetDocReplaceAll("<h2>(.*)</h2>";"<h3>$1</h3>")$

* Added new Clip commands for printing text:

^!PrintDialog AnyText
Displays the Print dialog box so that you can select a printer and modify certain options before starting the print job based on the AnyText argument. If you leave out the argument or AnyText is empty, then the current document text will be printed.

^!PrintPreview AnyText
Sends the text from the AnyText argument to the Print Preview window. You can then decide whether to start the print job or cancel the procedure. If you leave out the argument or AnyText is empty, then the current document text will be printed. The following example shows selected text in the preview window:
^!PrintPreview ^$GetSelection$

^!PrintText AnyText
Sends the text from the AnyText argument directly to printer using current default settings. The Print dialog box is not displayed. If you leave out the argument or AnyText is empty, then the current document text will be printed.

* Added new Clip functions for handling dates:

^$GetDateFromInt(DateInteger;DateFilter)$
Converts a date integer value to the format defined by DateFilter. This date integer value represents the number of days that have passed since 12/30/1899. See related ^$GetDateToInt function below. Example:
^$GetDateFromInt(39625;mm/dd/yyyy)$ -> 06/26/2008

^$GetDateToInt[(Date;DateFilter)]$
Converts a date matching the DateFilter format to an integer value. If you do not specify any arguments, then the current date is returned. This value represents the number of days that have passed since 12/30/1899. This format is useful if you want to store the date in a universal way, and which can also be manipulated in calculations. Examples:
^$GetDateToInt$ -> 39625 (assuming the current date is June 26, 2008)
^$GetDateToInt(11/06/2008;dd/mm/yyyy)$ -> 39610

^$GetDay$
Returns the day of the week. 1 for Monday, 2 for Tuesday, etc.

* Added new Clip commands and functions for processing Outline documents:

^!CreateOutline FileName
Creates a new Outline file and saves it with a filename based on the command argument.

^!TopicAdd "TopicName" AnyText
Adds a topic to the active Outline document. The topic name is taken from the TopicName argument and text specified by the AnyText argument is stored in the topic.

^!TopicDelete TopicIndex
^!TopicDelete TopicName
Deletes the specified topic from the active Outline document. You can either specify the topic name or its position in the list  1 being the first topic.

^!TopicMove TopicToMove TargetPosition
Moves a topic to the specified position. The TopicToMove and TargetPosition arguments can either represent a topic name (surround with double quotes if name contains spaces) or its position in the list  1 being the first topic. Examples:
^!TopicMove "Topic Name #3" "Topic Name #7"
^!TopicMove 3 7

^!TopicReplace "TopicName" AnyText
^!TopicReplace TopicIndex AnyText
Replaces data in the specified topic from the active Outline document with text specified by the AnyText argument. You can either specify the topic name (surround with double quotes if name contains spaces) or its position in the list  1 being the first topic.

^!TopicShow "TopicName"
^!TopicShow TopicIndex
Displays the specified topic in the active Outline document. You can either specify the topic name or its position in the list  1 being the first topic.

^$GetTopicHeading(TopicIndex)$
Returns the topic name at the specified position in the active Outline document  1 being the first topic.

^$GetTopicText(TopicIndex)$
^$GetTopicText(TopicName)$
Returns the text from the corresponding topic in the active Outline document. You can either specify the topic name or its position in the list  1 being the first topic.



NoteTab v5.61 (released: 05 February 2008)
―――――――――――――
* Updated the regular expressions engine to the latest release, which is based on PCRE 7.6.

* The PCRE regular expressions engine now defaults to the ANYCRLF option.



NoteTab v5.6 (released: 24 January 2008)
――――――――――――
* Setup no longer requires administrative or "power user" privileges under Windows NT/2000/XP/2003/Vista.

* Added option in Clipbook shortcut menu to Restore Default Library.

* Paste-Board feature now resets NoteTab in Windows Clipboard chain when set. Useful when a misbehaved application breaks the chain.

* Updated the regular expressions engine to the latest release, which is based on PCRE 7.5.

* Added /TEMP command-line switch. By default, NoteTab stores temporary files in the Windows Temp folder under the logon user folder. If the /USB switch is used, temporary files are now stored on the USB drive in the Temp folder. If the /USER switch is used, temporary files are now stored in the Temp subfolder of the specified folder. Use this switch to specify an alternative location for storing temporary files. The folder name can include system variables; example:
NoteTab.exe /temp=%AllUsersProfile%\NoteTab\Temp

* To avoid import/export issues with the main NoteTab distribution packages, encryption features are only available after you install the ntb_enc.dll file. You can download the DLL from here:
http://www.notetab.com/ntb_enc.php

* Fixed issue causing incompatibility under Windows 95 and NT4. A new "NoteTab Window 95 and NT4 Compatibility Pack" is available for download from here:
http://www.notetab.com/ftp/Win95-NT4.zip

* Fixed issue with backup creation during search-disk replace operations.

* Fixed slow startup issue when NoteTab's Reopen list contains inaccessible files.

* Several other minor improvements and bug fixes.

* Updated EULA and documentation, including Glossary.otl.



NoteTab v5.5 (released: 04 October 2007)
――――――――――――
* Updated the regular expressions engine to the latest release, which is based on PCRE 7.4. The \R newline sequence now matches either CRLF, or a lone CR, or a lone LF.

* Changed method on Windows XP and Vista to determine default location of folder for user settings. Fixes issues on some systems that have corrupted registry keys.

* Restored the MS-Office Sounds setting in the Options dialog box (View tab). This option is only available if you have installed the sounds on your system. Download details here:
http://www.notetab.com/os.html

* Fixed a minor display issue on Windows Vista that caused toolbar button delimiters to draw incorrectly.

* Fixed an issue on Windows Vista that caused some buttons and checkboxes in dialogs to disappear when pressing the "Alt Gr" button (special button available on some keyboards for accessing a third character on a key).

* Fixed a text-flicker issue in NoteTab Pro when it is run on slower computers.

* Fixed issue with incorrect total page count sometimes printed in Page Preview.

* Fixed issue with Partial Loading option failing to work.

* Fixed a weakness in the Clip parser.

* Added new Clip command:
^!IfFileUnicode "FileName" GoToLabelTrue [ELSE GoToLabelFalse]
Jumps to specified label if FileName is a Unicode text file or UTF-8 Web page.

* Updated documentation.



NoteTab v5.4 (released: 06 September 2007)
――――――――――――
* NoteTab Light now available as a version 5 release.

* Updated the regular expressions engine to the latest release, which is based on PCRE 7.3. See the following document for a list of improvements:
http://www.pcre.org/changelog.txt

* Added several new Clip syntax elements:

^!IfEmpty "Value" GoToLabelTrue [ELSE GoToLabelFalse]
If Value represents an empty variable or string, then jumps to specified label name. It is recommended to enclose Value between double quotes.

^$GetParaCol$
Returns cursor column position within paragraph in current document.

^$GetParaRow$
Returns paragraph row index of cursor in current document.

^$GetUserRegRoot$
If you are running a non-NT version of Windows (Win95/98/ME), this function returns a value of HKEY_LOCAL_MACHINE, otherwise it returns HKEY_CURRENT_USER. This function can be useful to ensure compatibility with certain registry operations under different versions of Windows. See usage examples under the "NoteTab Shortcuts" section of the Utilities library.

^$GetWinPlatform$
Returns the Windows platform type under which NoteTab is running. Possible values are one of the following: Win32_Win, Win32_NT, Unknown. If you're running Win95/98/ME the returned value is Win32_Win, and Win2000/2003/XP/Vista/Longhorn produces Win32_NT. This function is useful to ensure compatibility with operations that need to run differently on each Windows platform.

* Several minor improvements and bug fixes.

* Updated documentation.


NoteTab v5.3 (released: 06 July 2007)
――――――――――――
* Improved "Replace Notepad" feature under Windows 2000, 2003, and XP. Feature not available under Windows Vista.
* File Associations set through NoteTab now work under Windows XP with a user "Limited Account" and under Windows Vista. 
* Added /RESETWND command-line switch, which resets the NoteTab window position and size at startup. This switch is useful if the NoteTab window does not show up when you start the program.
* Fixed issue with some system dialogs opening offscreen on multi-monitor systems.
* Fixed issue with Clip-wizard labels not appearing under Windows Vista.
* Fixed issue with header/footer text not always appearing when printing documents.
* Fixed issue causing a long delay when opening a file from a shared drive (e.g. \\Vista-central\public\file.txt).
* Fixed sorting issue with ^$GetFileFirst$ Clip function.
* Fixed Vista compatibility issue with ^!Keyboard Clip command.
* Updated the regular expressions engine to the latest release, which is based on PCRE 7.2. See the following document for a list of improvements:
http://www.pcre.org/changelog.txt
* Updated the print engine to the latest release.
* Added ^$GetWinVersion$ function to return the version of Windows that is running NoteTab. Possible values are: Win95, Win98, WinME, NT4, WinXP, Win2000, Win2003, Vista, Longhorn, Unknown.
* Improved ^!SetDebug Clip command. Now has the capability of storing debug information in a log file. Simply specify a filename as the parameter. If no pathname is specified, the log file is saved under the "Application Data\NoteTab\Libraries" folder. Example:
  ^!SetDebug Log.txt
* Many other minor improvements and bug fixes.

NoteTab v5.2 (released: 31 March 2007)
――――――――――――
* Updated the regexp engine to PCRE version 7.
* Added /usb command-line switch. Use it when you want to run NoteTab from a USB key.
* Fixed misplaced warning and information dialog boxes when running NoteTab under multiple monitors.
* Fixed several issues with ^$GetDocMatchAll Clip function.
* NoteTab Std: fixed issues with ^$GetParagraph$ Clip function.
* Many other minor improvements and bug fixes.
* Updated documentation.

NoteTab v5.1 (released: 30 August 2006)
――――――――――――
* Added token for Header/Footer line separator on printed pages.
* Added "Close All Other" command to tab shortcut menu.
* Added method to print only selected text.
* Fixed slow loading of Clipbars.
* Fixed issue with modal dialogs sometimes ending up behind main NoteTab window.
* Euro Clipbook included with NoteTab again.
* Several other glitches fixed and improvements (listed under next topic).
* Updated Help files.

NoteTab v5.0 (released: 26 July 2006)
――――――――――――
* Full support for multi-user and network environments.
* Can be run reliably from a user "Limited Account".
* Improved user-interface appearance under Windows XP.
* Added new print engine with Print Preview tool.
* NoteTab Pro breaks line lengths limit.
* Improved Undo feature in NoteTab Pro.
* Improved opening files through the Windows Shell and Send To feature.
* Powerful new regexp engine based on PCRE (Perl 5 compatible).
* Clip-code additions and improvements.
* Added support for IntelliComplete Server (www.flashpeak.com).
* Fixed issue opening HTML documents in Firefox.
* Many other minor improvements and bug fixes.
* Revised license pricing.
* Updated documentation.

NoteTab v4.951 (released: 19 October 2005)
――――――――――――――
* Updated documentation and Setup program.

NoteTab v4.95 (released: 22 May 2003)
―――――――――――――
* Added optional News feature to inform you of NoteTab updates and other Fookes Software news.
* Added Quiet option on Advanced tab in Options dialog box. Turns off most sounds when enabled.
* Updated Help file.
* Several minor glitches fixed and other improvements.

NoteTab v4.92 (released: 14 January 2003)
―――――――――――――
* Maintenance release (see changes under next main topic).

NoteTab v4.91 (released: 26 August 2002)
―――――――――――――
* Maintenance release (see changes under next main topic).

NoteTab v4.9 (released: 10 June 2002)
――――――――――――
* Seamless support for UltimaShell Autocompletion Server (UAS).
* New Help files; Clip code now in separate file.
* Supports both WinHelp and HTML Help.
* Supports extended File Open/Save dialogs under Win2000/ME/XP.
* Improved handling of browsers.
* Customizable menu shortcuts (NoteTab Pro and Std).
* Now compatible with NTFS 5 Summary Information Properties.
* Improved Browse Folder dialog box.
* New Clip commands and functions.
* See details of changes under next section.

NoteTab v4.86c (released: 10 December 2001)
――――――――――――――
* Supports Windows XP themes.
* Many minor improvements and bug fixes.
* New Setup program made through the Inno Setup package (http://www.jrsoftware.org/).
* See details of changes under next section.

NoteTab v4.85 (released: 09 May 2001)
―――――――――――――
* Maintenance release (see changes under next main topic).

NoteTab v4.84 (released: 09 February 2001)
―――――――――――――
* Improved the regular expressions engine.
* Added support in NoteTab Pro and Std for WordWeb.
* Added CSS1 library and Clipbar.
* Added Clip functions to encrypt/decrypt your text and files.
* Added Clip commands and functions performing ROT13, CRC32, MD5, and UUEncode/UUDecode operations.
* Minor improvements to the Clip language and bug fixes.
* See details of changes under next section.

NoteTab v4.83 (released: 26 October 2000)
―――――――――――――
* Now runs on Macs using Virtual PC.
* Minor improvements to the Clip language and bug fixes.
* See details of changes under next section.

NoteTab v4.82 (released: 12 May 2000)
―――――――――――――
* Powerful new engine for regular expressions.
* See details of changes under next section.

NoteTab v4.81 (released: 22 March 2000)
―――――――――――――
* Maintenance release (see changes under next main topic).

NoteTab v4.8 (released: 14 February 2000)
――――――――――――
* NoteTab now integrates with HTML Tidy, TopStyle, and CSE HTML Validator.
* Added Clipbars to NoteTab Pro and Std: a special type of toolbar with buttons that run Clips.
* NoteTab Light now supports the full Clip language.
* Added over 50 new commands and functions to the Clip language.
* Improved the HTML Clipbook libraries and added the HTML-1 and HTML-2 Clipbars.
* Option to generate HTML tags in uppercase, lowercase, or XHTML format.
* Menu command to convert selected HTML tags to uppercase, lowercase, or XHTML format.
* Added feature to enable previewing of Web pages, such as ASP and Cold Fusion, through a local Web server.
* NoteTab Pro can now open files larger than 16 MB.
* Supports .png images (image size for HTML image tags).
* Significantly improved performance of Perl, Gawk, and other related Clip commands.
* Improved support for WordStar commands.



Changes in Version 5.1
======================

* Added token for Header/Footer line separator on printed pages.
Use an underscore character ( _ ) at the start of the Header and/or Footer field to insert a separator line on printed pages between the main document text and the header/footer text.

* Added "Close All Other" command to documents tabbar shortcut menu.

* Added method to print only selected text.
Hold down the Shift key while you click on the Print or Print Preview command.

* Added /USER=FolderName command-line switch.
By default, NoteTab 5 stores per-user customization files under the Application Data folder: 
  <SYSTEMDRIVE>\Documents and Settings\<user>\Application Data
Use the /USER switch to specify a different location for the NoteTab customization files. This option is particularly useful if you work with sensitive data (point to a folder on an encrypted drive) or simply don't want to leave files behind on the computer you're using (point to a removable drive like a USB key). Example:
NotePro.exe /USER="E:\NoteTab Data"

* Only Template files with the .tpl extension are now interpreted.
Earlier versions of NoteTab checked all files for the template header, irrespective of file extension. Some users felt this was a potential security issue and requested to limit this feature to files with the official template .tpl extension.

* The Euro Clipbook was not part of the initial 5.0 package. Due to frequent requests, it is now included with NoteTab again.

* Updated the code for ^!DirectPrint Clip command to improve compatibility under Windows XP and other NT versions.

* Clip lines starting with a command (^!CommandName) are now automatically stripped of trailing blank characters before execution. This eliminates unexpected Clip errors due to stray blanks.

* Fixed slow loading of Clipbars.

* Fixed issue with modal dialogs sometimes ending up behind main NoteTab window, notably when receiving focus from another application. When this happened, NoteTab appeared to lock up.

* Fixed issue opening files with wildcards from the command line when an instance of NoteTab is already running.

* Fixed issue with "Open File at Cursor" that failed to open files when used on relative filenames.

* Fixed several reference errors in the Utilities Clipbar.

* Fixed issue loading Clipbooks and Clipbars that have dots in their name.

* Fixed minor issues in ^$StrCapitalize()$ and ^$StrSplit()$ Clip functions.

* Fixed an issue in NoteTab Std with the ^$GetLine$ Clip function which returned an extra character at the end of the line.

* Fixed an issue in NoteTab Std with certain regex Replace All operations failing to work.

* Fixed an issue in NoteTab Std with the Undo command after a Replace All operation.

* Fixed an issue in NoteTab Pro with the line-number ruler not repainting properly after the program window is maximized/restored.

* Several other minor glitches fixed.

* Updated Glossary.otl file.

* Updated Help files.



Changes in Version 5.0
======================

* Added full support for running NoteTab under multi-user and network environments.
* Can be run reliably from a user "Limited Account".
* Improved user-interface appearance under Windows XP.
* Improved memory usage and processing speed.
* Improved conversion between HTML and plain-text format.
* Added new print engine with Print Preview tool.
* NoteTab Pro now supports line lengths up to a theoretical limit of 2 GB.
* Improved Undo feature in NoteTab Pro.
* Improved opening files through the Windows Shell and Send To feature.
* Replaced regex engine with a powerful new one that is based on PCRE (Perl 5 compatible).
* All core libraries have been rewritten for improved reliability and compatibility.
* Added support for IntelliComplete Server (www.flashpeak.com).
* Improved "Go to Hyperlink" function to support opening email addresses.
* Removed redundant info box with Replace dialog when no more occurrences found.
* Dot at start of filename is no longer treated as extension delimiter.
* Fixed issue opening documents with very long fully qualified filenames through Windows Explorer.
* Fixed issue with folder being locked (can't rename or delete) after NoteTab opens a file from it.
* Fixed issue opening HTML documents in Firefox.
* Registered version succesfully tested under Wine.
* Many other minor improvements and bug fixes.
* Revised license pricing.
* Updated documentation.


Clip-code additions and improvements:
-------------------------------------

New predefined Clip variable:
^%DOLLAR% = Dollar character ($)

^!IfRegexOk Pattern GoToLabelTrue [ELSE GoToLabelFalse]
Jumps to the specified label if the regex pattern is valid. If the pattern has mistakes and the optional ELSE keyword follows the first label name, execution jumps to the specified GoToLabelFalse label; or to the next instruction if the "ELSE" label is not used.

^$GetRegexErrorMsg$
Returns the error text if the previous regex pattern contained mistakes. If there was no error, the function returns an empty string.

^$GetDocMatchAll("Pattern"[;SubPatternId])$
Finds all matching strings based on the supplied regex pattern. Optionally specify a subpattern value between 1 and 65536. Use the ^!SetListDelimiter command to define how matches are separated in the resulting string.
Example that collects all URLs in a Web page:
^!Set %NewVariable%=^$GetDocMatchAll("(?s)<a.+?href\s*?=\s*?"(.*?)"";1)$

^$GetReSubStrings$
The above function is best used together with ^!SetArray. It extracts all Substrings from a regex search after using ^!Find. Use the ^!SetListDelimiter command to define how matches are separated in the resulting string. Example:
^!SetArray %Array%=^$GetReSubStrings$

^$IsOnline$
Returns True if NoteTab detects a connection to the Internet.

^$GetDataPath$
Returns the folder where NoteTab stores user settings and data.

^$GetLibraryFileName$
Returns the fully qualified filename of the current Clipbook library.

^$GetLibraryUserPath$
Returns the folder where NoteTab stores user-modified libraries.

^$GetLibraryPath(LibraryName)$
Added support for optional parameter that causes the function to return the location of the specified library. The following example returns the location of the current library:
^$GetLibraryPath(^$GetLibraryName$)$

^$StrSort supports two new values for the CaseSensitive parameter: ANSI to enforce a case sensitive dictionary-type sorting order and No_ANSI (or False_ANSI) to ignore character case during sorting. The ANSI option produces a sorting order that matches the result from the Modify/Lines/Sort menu command. Note, however, that sorting is much slower with the ANSI option.

^$IsNumber(Value)$ improved to support negative and decimal values.

^!Find and ^!Replace improved to support selection of regex subpatterns.


Syntax Changes from Previous Regex Engine
-----------------------------------------
There are significant differences compared to the previous regex syntax used in earlier versions of NoteTab. The most notable ones are listed below:

\n for newline (hex 0A); before it was hex 0D 0A. Replace \n with \r\n
\l and \p - no longer used
\b and \B  now zero width assertions of word boundary and non-word boundary (except in a character class where \b is now a backspace character); before they represented blank and non-blank characters respectively
\s  now means any whitespace character; before used for a space

Tagged Matches:
Replace { } with ( )

Replace tokens:
& no longer used; replace with $0
\1 to \9 meaning changed; replace with $1 to $9



Changes in Version 4.95
=======================
* Added optional News feature to inform you of NoteTab updates and other Fookes Software news. This feature is available under the Help menu through the Check for Updates command.

* Added Quiet option on Advanced tab in Options dialog box. Turns off most sound prompts when enabled.

* Used a new method for the "Use as Paste Board" feature.

* NoteTab Light/Std: the ^$GetParaCount$ Clip function usually missed a line. This is now fixed.

* Recent versions of WordWeb were not always recognized. This is now fixed.

* Updated Help file.


Changes in Version 4.92
=======================
* NoteTab now checks Web documents to see if they declare UTF-8 character encoding in their header. If the UTF-8 declaration is found, NoteTab takes care of automatically converting characters from UTF-8 to ANSI on loading, and ANSI to UTF-8 on saving. Note that characters which are not available in the current ANSI character set are substituted by a question mark (?).

* The "Document to HTML" feature no longer converts extended characters to their corresponding entities if the document is a UTF-8 Web file.

* Starting with NetCaptor 7.02, NoteTab can open Web documents in the same browser page when the option is invoked.

* Updated the HTML Clipbook library.

* Wrap to Column in NoteTab Light and Std produced lines that were one character too short. This is now fixed.

* NoteTab Pro: URL protocol names with numbers are now correctly highlighted. E.g.: ed2k:// (eDonkey2000 protocol).

* Other minor changes and fixes.



Changes in Version 4.91
=======================
* Checkbox controls now support a "+" key press to set a check mark and "-" to uncheck it. This is useful for controlling settings through keyboard utilities.

* Updated the Clip Assistant with a new item for the "Menu" command, kindly offered by Sheri Pierce.

* Updated the Help files; ClipCode.chm now uses bookmarked items.

* Fixed an issue in v4.9 where &nbsp; substituting blank characters in indented lines when converting from text to HTML.

* Fixed an issue in v4.9 when using the "View in browser" command with documents on a network drive using the UNC format (eg: \\network\web\filename.html).

* Fixed an issue in v4.9 that resulted in some extra random characters getting added at the end of documents when they were saved to certain types of network drives.

* Fixed a bug that caused loss of data or corruption when saving UTF-8 documents.

* Other minor changes and fixes.



Changes in Version 4.9
======================
* NoteTab now works seamlessly with UltimaShell Autocompletion Server (UAS) from FlashPeak. This excellent utility provides smart autocompletion and can learn new words as you type away. It's easy to use and can save a lot of time. A free version of UAS is available to NoteTab users from here:
http://www.notetab.com/uas.htm

* The Help file has been split into two documents -- the main Help and Clip programming Help. The index for Clip syntax has been completed and URLs are now clickable.

* NoteTab now supports for both WinHelp and HTML Help. If it finds the *.chm HTML Help files in its folder, NoteTab uses them instead of the traditional WinHelp files (.hlp).

* Under Windows 2000, ME, and XP, NoteTab now uses the extended File Open/Save dialogs with the "places" bar.

* Now integrates a new method for launching Web browsers. It should work better than in previous versions. See Help topic "Options | Internet" for details.

* You can now change the default keyboard shortcuts for menu items by creating a definition file called Shortcuts.dat in the NoteTab program folder. Place one shortcut reassignment per line. Start the line with the shortcut value, followed by a space, followed by the menu item. The first menu name in the sequence is the one that appears at the top of the main menu, followed by submenu names (if any), and then the name of the final menu item to activate. You must separate submenu items with a forward slash and leave out any ellipsis. You should put double quotes around a menu name if it contains one or more forward slash characters. The case of characters does not have to be the same as the actual menu commands.You can comment out shortcuts by putting a semicolon at the start of the line. Note that this feature is not available in NoteTab Light. Contents example for the Shortcuts.dat file:

;This line starts with a semicolon and is ignored by NoteTab
Ctrl+Shift+F Document/Font/Change Font
Ctrl+T Document/"Insert Date/Time"

* During the conversion from text to HTML, multiple spaces are now preserved with the &nbsp; entity.

* When saving files on NTFS 5 drives, Summary Information Properties are now preserved when the backups setting is enabled.

* The Browse Folder dialog box used in various parts of NoteTab has been improved.

* Added five new Clip functions:

^$StrIndent("Str";IndentSize)$
Returns the Str value with each line indented by IndentSize number of blank characters.

^$StrAlign("Str";TextWidth;Alignment[;Pad=False])$
This function aligns the Str value within a space specified by TextWidth. Alignment values can be Left, Right, or Center. If the Pad parameter is used, a True value adds blank spaces on the right side of Str (if necessary). Examples:
^$StrAlign("Test";10;Right)$ -> "      Test"
^$StrAlign("Test";10;Center;True)$ -> "   Test   "

^$StrAnsiToOem("Str")$
Returns Str based on ANSI-defined character set converted to OEM.

^$StrOemToAnsi("Str")$
Returns Str based on OEM-defined character set converted to ANSI.

^$GetShellFolder(SystemFolder)$
Returns the path to the specified folder type "SystemFolder". The folder name always ends with a backslash. See below for SystemFolder values and an example of a corresponding path (under Windows 98).

Desktop --> C:\WINDOWS\Desktop\
Templates --> C:\WINDOWS\ShellNew\
AppData --> C:\WINDOWS\Application Data\
Start Menu --> C:\WINDOWS\Start Menu\
Programs --> C:\WINDOWS\Start Menu\Programs\
Startup --> C:\WINDOWS\Start Menu\Programs\StartUp\
Fonts --> C:\WINDOWS\Fonts\
SendTo --> C:\WINDOWS\SendTo\
Recent --> C:\WINDOWS\Recent\
Favorites --> C:\WINDOWS\Favorites\
NetHood --> C:\WINDOWS\NetHood\
Personal --> C:\WINDOWS\My Documents\
Cache --> C:\WINDOWS\Temporary Internet Files\
Cookies --> C:\WINDOWS\Cookies\
History --> C:\WINDOWS\History\
PrintHood --> C:\WINDOWS\PrintHood\
Local AppData --> C:\WINDOWS\Local Settings\Application Data\
My Pictures --> C:\WINDOWS\My Documents\My Pictures\
Administrative Tools -->
  C:\WINDOWS\Start Menu\Programs\Administrative Tools\

^$ExpandEnv("Str")$
This function expands environment-variable strings and replaces them with their defined values. Example (under Windows XP):
^$ExpandEnv("%systemroot%")$ -> "C:\WINDOWS"

Predefined system variables:
  ComputerName
  ComSpec
  HomeDrive
  HomePath
  HomeShare
  LogonServer
  Number_Of_Procesors
  OS
  Os2LibPath
  Path
  PathExt
  Processor_Architecture
  Processor_Identifier
  Processor_Level
  Processor_Revision
  Prompt
  SystemDrive
  SystemRoot
  UserDomain
  UserName
  UserProfile
  WinDir

* Added ^!Menu command to the Clip language. Use it to activate any enabled command from the main program menu. The first menu name in the sequence is the one that appears at the top of the main menu, followed by submenu names (if any), and then the name of the final menu item to activate. You must separate submenu items with a forward slash and leave out any ellipsis. You should put double quotes around a menu name if it contains one or more forward slash characters. The case of characters does not have to be the same as the actual menu commands. The following example opens the Font dialog box for the active document:
^!MENU Document/Font/Change Font

The example below inserts the date and time from the menu command (notice the use of double quotes):
^!MENU Document/"Insert Date/Time"

* Added ^!SetShortcut command to the Clip language. You can use it to temporarily change keyboard shortcuts for menu items. It takes two parameters, which are separated by a space character. The first parameter represents the shortcut value and the second represents the menu item. Note that this command is not available in NoteTab Light. Examples:
^!SetShortcut Ctrl+Shift+F Document/Font/Change Font
^!SetShortcut Ctrl+T Document/"Insert Date/Time"

* Added ^!InsertSelect command to the Clip language. It works just like ^!InsertText but it also selects the inserted text.

* Added the new pre-defined Clip variable ^%AR_WORD%, which contains the Auto-replace text.

* The Clip command "^!Select Filename" has been updated to work with long filenames.

* Improved the ^!Url command with an options parameter to specify a browser similar to the method available in the Options dialog box for the browser fields on the Internet tab. Syntax:
^!Url [Browser command] <url>
The following example will open the URL in Internet Explorer:
^!Url [IExplore] www.fookes.com
or in Mozilla (if you have the browser installed):
^!Url [Mozilla] www.fookes.com

* Fixed an issue with the ^!SaveValue command, which always placed quotes around values. This resulted in numerical and Boolean values being read incorrectly when applied to NoteTab's .ini file settings.

* Under Windows 2000 and XP, NoteTab Light and Std were often unable to undo certain kinds of edit changes. This has been fixed.

* Fixed several issues in the RegEx engine.

* Closing a modified document that is locked by another application displayed an error message, but did not give the opportunity to retry or cancel closing. This is now fixed.

* Under Windows NT/2000/XP, NoteTab could not save over libraries that had the Hidden attribute set. This has been fixed.

* Recent versions of NoteTab failed to load binary files that started with a sequence of null characters. This is now fixed.

* Fixed access violation error when opening UTF-8 files.

* Fixed a minor issue with incorrect line break character sometimes generated when opening Unicode files.

* Other minor changes.


Changes in Version 4.86c
========================
* You can now close document tabs by clicking on them with the middle mouse button or the mouse wheel (like in Netcaptor).

* The "Open File at Cursor" command (F7) now also works with most fully qualified filenames that contain spaces. Example:
C:\Program Files\Accessories\pppmenu.scp

* NoteTab Pro: Added two WordStar commands: Ctrl+N (<Return>+<Left>) and Ctrl+U (Undo)

* Added "Restore Default HTML Editor" to the Utilities library.

* Added support for a logical zero function in the mathematical expressions parser. Use lzero(x) to return 1 if x=0 and 0 if x<>0.

* Added support for Windows XP themes through a manifest file.

* NoteTab Pro: Added option to highlight a word with or without trailing spaces when double-clicking to select. Hold the Alt key down while double clicking to change the selection method. The setting is remembered between NoteTab sessions.

* Changed settings for some of the default options -- only noticeable on a clean install.

* Added ^$StrUrlDecode("Text")$ function to convert URL strings and form Mailto data to plain text. Example:
^$StrUrlDecode("C%3A%5CProgram%20Files%5CReadme%2Etxt")$ --> C:\Program Files\Readme.txt

* Fixed several glitches in the regex engine.

* Under Windows 2000 and XP, the program window sometimes failed to come to the front when invoked. This has been fixed.

* NoteTab Pro: Fixed incorrect behavior of the vertical scroll bar when lines exceeded 32K.

* NoteTab Pro: Fixed display issue with line ruler when second document window is displayed.

* NoteTab Pro: Fixed a minor issue with URL highlighting when the "Show Nonprinting" option is set.

* Fixed an issue that caused some URLs to be incorrectly invoked through the Web browser.

* Saving files to a remote disk or any other slow target sometimes generated a "file not correctly saved to disk" error message. This has been fixed.

* Under Windows 2000 and XP, NoteTab failed to save over a file that had the Hidden attribute set. This has been fixed.

* Fixed minor problem with disabled "Save Now" command in Clipbook shortcut menu. It was always disabled when the Clip editor was open and only the current Clip has been modified.

* Fixed "Please remove the file's Read-Only attribute" error message when saving new Clipbook Libraries.

* Fixed an issue with the ^$StrSort()$ Clip function. If the criteria did not contain line breaks, the function would return an empty string when RemoveDuplicates = False.

* Fixed incorrect rendering of link character case generated through the HTML-tag Clip-wizard field.

* Fixed an issue affecting FarClips and Clips invoked from Clipbar. The Clip parser failed to convert ^!Clip to ^!FarClip when the command appeared immediately following a conditional statement. Example of statement that would fail if invoked as a FarClip:
^!IfTrue ^$IsEmpty("^%Computer%")$ ^!Clip "FTP server setup"

* Other minor changes.



Changes in Version 4.86
=======================
* Unicode files are now automatically detected on loading and converted to ANSI for display in the editor. Note that the process will not convert characters correctly if they are not available in the current ANSI character set. By default, Unicode files are opened in Read-Only mode. See the "Protect Unicode Files" setting described below.

* New "Protect Unicode Files" setting on the General tab of the Options dialog. When NoteTab opens Unicode files, it has to convert them to the ANSI character set, which contains much fewer characters. As a result, the conversion process may drop non-ANSI and cause the loss of information. When this setting is checked, Unicode files are opened in Read-Only mode, which protects the file from changes. If you know that your Unicode documents will not loose important information during the conversion process, you can uncheck this option in order to open such files in editable mode.

* File Security attributes should now be correctly preserved when a file is saved with backups enabled.

* The "Help/Replace MS Notepad" menu command is now available under Windows 2000 and XP.

* New command-line parameter "/DDE=True or False" to switch off or re-enable DDE communication with Internet Explorer, Netscape, and Opera browsers. This is useful on some faulty Windows ME systems that hang when DDE is used.

* Search Disk now automatically save matches in Favorites file "Search Disk.fvr", so the files can easily be opened at any time until the next search.

* Incremental Clipbook backups using the tilde are now automatically hidden to avoid their appearing in the Clipbook bar.

* When searching through subdirectories, directories with the hidden, read-only, or system attributes were skipped. This is now fixed.

* Page scrolling now works correctly when mouse wheel is set to scroll one "screen" at a time.

* Fixed a glitch in the regex engine. A replace operation would sometimes fail if the search pattern ended with the $ token.

* Fixed a glitch in Join Lines command that failed to join lines containing a single character.

* Fixed a glitch in the Strip HTML command that failed to produce a blank line when encountering a double line break <br><br>.

* Fixed a glitch in the Clip command "^!Select nnn", which failed to work properly if the range reached a non-empty last line.

* Fixed a glitch in the "Ordered List" and "Unordered list" clips from the HTML Clipbook library.



Changes in Version 4.85
=======================
* Some browsers opened up two windows when launched through the "View in Browser" command. Fixed.

* Custom colors set in the color dialog boxes are now correctly restored between sessions.

* Fixed a problem in the Modify/Change HTML Tags command that could mess up tags ending in a percentage value; like <TD ALIGN=center WIDTH=40%>

* The File Open/Save dialogs can now be stretched if your version of Windows supports this feature.

* The "Create Uppercase Tags" setting on the HTML tab of the Options dialog box now supports three states. When checked, tags are converted to uppercase. When unchecked, they are converted to lowercase. When grayed, case is not modified (useful when dealing with XML files).

* The StrRandom has been updated to let you optionally define which characters are used in the random string that is generated. Syntax: ^$StrRandom(Size[;Characters])$
"Characters" represents a string of characters that the function should use. You can define ranges by using "..". For example, A..Z represents all the uppercase letters of the Roman alphabet; A..Za..z0..1 represents all digits and letters of the Roman alphabet. Function example:
^$StrRandom(10;A..F0..9)$ --> D744E70176

* Holding Ctrl key down while launching NoteTab _no longer_ resets the .ini file. This feature caused too many problems, so it has been removed.

* Clip labels are no longer affected by trailing spaces.

* Fixed a printing problem when long lines that need wrapping don't contain a character to mark a split position.

* Fixed a problem in the mathematical expression parser's way of handling unary minus/plus signs. The following will now work correctly: ^$Calc(-2-2)$ and ^$Calc(+2+2)$

* Other minor changes.



Changes in Version 4.84
=======================
* Added support in NoteTab Pro and Std (registered versions only) for WordWeb, by Antony Lewis. If NoteTab detects the WordWeb DLL, then it will display the WordWeb dialog box when you invoke the Thesaurus from NoteTab's menu and toolbar. WordWeb is a powerful freeware thesaurus/dictionary for Windows. You can read more about it and download a copy from the following Web site http://www.wordweb.co.uk/

* Added support for Cascading Style Sheets through the CSS1 Clipbook library and Clipbar.

* NoteTab can now be started even if it does not find the efomacro.dll file. If NoteTab does not find it, Clips using the ^!Keyboard, ^!PasteBack, and ^!TypeBack commands will not work.

* The "Launch Document" command will now try to open the current document in its associated program when no criteria are specified in the Custom Launch setting.

* Fixed print range setting being ignored when multiple pages are printed.

* Numbers containing a comma (e.g. 1,000,000) are no longer split in word wrapped printed output.

* RegEx replacements now work on lines longer than 1024 characters. Maximum line length supported is now 32 KB.

* Fixed problem in regular expressions using tagged matches higher than "\1" in a replace operation, which did not work.

* Fixed crash that could occur under Windows ME when Web browser was launched from NoteTab.

* Fixed problem that caused NoteTab to fail to recognize some networked printers.

* Relative file names (like "../index.html" and "..\units\foo.pas") now supported by the "Tools|Open File at Cursor" and Tools|Open Link" menu commands.

* Fixed bad folder constructions when invoking the disk browser from the Quick List combobox. Example:
C:\Program Files\NoteTab Pro\*.txt\*.*

* Fixed Count feature, which skipped read-only documents when it iterated through the tabs.

* Fixed protection problem on NT and Win2000, which did not allow saving a file with the Hidden attribute set.


Clip Language:
.............
* Added ^!SetCode command for assigning values to a variable without interpreting ^?{} prompts and Clip tokens like ^P, ^T, ^&, ^#, etc. Variables and functions are evaluated normally.
^!SetCode %VariableName%=Value

* Added ^!InsertCode command for inserting values into the current document without interpreting ^?{} prompts and Clip tokens like ^P, ^T, ^&, ^#, etc. Variables and functions are evaluated normally. This command is very useful when treating UUEncoded text, which may contain character sequences that imitate such tokens.
^!InsertCode Text

* Added ^$StrROT13("Text")$ function to perform a ROT13 operation on the specified text.

* Added ^$StrEncrypt("Text";[Key])$ and ^$StrDecrypt("Text";[Key])$ functions, which provide stronger text encryption than ROT13. Use the optional "Key" parameter to define an encryption password (max. 255 characters). Make sure you don't forget the key you used with this function, otherwise you may never be able to retrieve your encrypted text. Note that although the encryption algorithm is very good, there is no guarantee that it can't be cracked. You should not rely on this feature to protect very sensitive data. Example:
^$StrEncrypt("^$GetSelection$";"^?[key=My secret password]")$

* Added Clip functions ^$GetCrcText("Text")$ and ^$GetCrcFile("Filename")$. Use these to calculate the CRC32 (cyclic redundancy check) of text and files respectively. Example:
^$GetCrcFile(^$GetAppFileName$)$

* Added Clip functions ^$GetMD5Text("Text")$ and ^$GetMD5File("Filename")$. Use these to calculate the MD5 signature of text and files respectively. The result is produced in hexadecimal format. MD5 is a hashing algorithm that generates a digital signature, or Message Digest, representing the supplied data. The MD5 algorithm was produced by RSA Data Security Inc. Example:
^$GetMD5File(^$GetAppFileName$)$

* Added ^$StrUUEncode("Text")$ and ^$StrUUDecode("Text")$ functions, to encode text to 7-bit UUEncode format and decode it back respectively. This encoding format is frequently used to send 8-bit data through transmission media (email, for example) supporting only 7-bit data. These new Clip functions are useful if you want to send encrypted text by email. Example:
^$StrUUEncode("^$StrEncrypt("^$GetText$";)$")$
^$StrDecrypt("^$StrUUDecode("^$GetText$";)$")$
Important note: UUencoded text may contain characters that the Clip parser interprets as tokens, like ^p and ^&. As a result, you should use the ^!SetCode command to assign such data to a variable and ^!InsertCode to paste the result of ^$StrUUEncode("Text")$ into a document. See the example in the Utilities library.

* Added UUEncode and UUDecode Clip commands:
^!UUEncode "InputName"[ "OutputName"]
InputName is the file to encode. Use the optional OutputName to define the name of the UUEncoded data file. If you don't specify an output name, the name will be based on InputName with the extension ".uue".

^!UUDecode "InputName"[ "OutputName"]
InputName is the file to decode. Use the optional OutputName to define the name of the UUEncoded data file. If you don't specify an output name, the name stored in the encoded file will be used.

* Added encryption/decryption command for files:
^!FileScramble "InputName"[ "OutputName"[ "Key"]]
This command can automatically detect if the file needs encrypting or decrypting. InputName is the file to encrypt or decrypt. Use the optional OutputName to define the name of the file created by the operation. If the file is going to be encrypted and you don't specify an output name, the name will be based on InputName with the extension ".npw". If the file is going to be decrypted and you don't specify an output name, the original file name will be used. Use the optional "Key" parameter to define an encryption password (max. 255 characters). Make sure you don't forget your password, or you will not be able to restore your encrypted data.
The encryption algorithm is based on RC4 ("RC4" is a trademark of RSA security corporation). You should not rely on this feature to protect very sensitive data. 

* Added ^$ChangeFileExt("FileName";"Ext")$
Use this function to create a new file name based on the provided extension. Example:
^$ChangeFileExt("c:\config.sys";"bak")$ = c:\config.bak

* Added ^$StrRandom(Size)$ to create strings of random characters of the specified length. Example:
^$StrRandom(6)$ = Θ$q3εξ

* The ^$GetDocIndex(Name)$ now returns the index number of the specified document, as indicated in the Help file.

* Improved ^$HexToInt(Value)$ and ^$IntToHex(Value)$ to handle larger values.

* Fixed ^!MoveFile command "losing" files when the destination folder does not exist.

* Fixed last character of parameter being truncated by ^!Shell command.



Changes in Version 4.83
=======================
* The program executable file is no longer compressed. The advantage of this is that you will be able to run NoteTab on Macs using Virtual PC. You are also less likely to encounter problems with anti-virus programs.

* When you double click on a word, NoteTab Pro selects the word as well as any white spaces after it. If you don't want the white spaces to be selected, you can now hold down the Alt key when you double click.

* Text that does not fit in a listbox (e.g. Clipbook window) will now be displayed in a popup tip when the mouse cursor is over it

* Added "Help on Clip Programming" under Help menu. This command displays the table of contents on the topic of Clip programming.

* NoteTab Pro: all "Replace All" operations can now be undone in a single operation.

* Implemented a protection against stray keystroke messages generated by some faulty keyboards (notably from Compaq). Stray keystroke messages could cause the Close Document command to be activated.

* Hyperlinks with relative paths to filenames now work. Example: [workdata\client3\important.otl::meetings]

* The "Open File at Cursor" command now also works when a filename uses a relative path.

* Templates with Clip code now set the "modified" state of documents they create (if text is produced).

* Strip HTML Tags command now recognized the &apos; entity.

* The "Change HTML Tags commands now work correctly with Web pages using Server Side Include (SSI) commands.

* The "More..." button displayed in long Clipbar menus now works correctly. It opens a dialog box with a combobox control, which lists all available Clipbars.

* Fixed a glitch in the Modify|Block|Sum menu command.

* Fixed bug causing NoteTab to crash when doing a regex Replace All operation with $ as the "Find What" criteria.

* Fixed an incompatibility problem between the File|Send command and Outlook Express 5.

* Fixed glitch that caused tabs to be replaced by spaces when using the "Strip HTML Tags" command on tables.

* Fixed RegEx option in Find and Replace dialog box when criteria contains NoteTab tokens (e.g. ^C)

* Fixed Quick List/Disk Files update problem when Save As command is used

* Fixed "Strip HTML Tags" glitch when text contains consecutive <br> tags

* Fixed a problem with the "Evaluate Expression" command which caused the following truncated results:
  10^39 = 1.0E+003
  10^40 = 1.0E+004
Now, the result is correctly formed as:
  10^39 = 1.0E+0039
  10^40 = 1.0E+0040

* Attempted to improve the behavior when launching NoteTab through the MS-Explorer Open command with multiple files selected.

* "Rename" command from Tab bar no longer accepts invalid file name characters

* Favorites "Open All" command now respect order of files in list

* Ctrl+C now makes sound if Office Sounds are enabled

* NoteTab Light/Std: Insert/Overwrite status information is less likely to become out-of-sync.

* NoteTab Light/Std: text now stays selected after a Replace All operation is applied on a selection.

* NoteTab Light/Std: regex tagged matches with Replace criteria should now work as in NoteTab Pro.


Clip Language:
.............
* Added Clip function ^$StrToHtml("Str"[;ConvertLineBreaks[;ConvertEntities]])$, to convert plain text to HTML format. "Str" represents the text you want to convert. Use False for ConvertEntities if you don't want special characters (e.g. ©) to be converted to HTML entities (e.g. &copy;); the default value when omitted is True. Use False for ConvertLineBreaks if you don't want <p> and <br> tags to be inserted at line breaks in the text; the default value when omitted is True.

* Changed the behavior of the ^$GetFiles([+]FilePath;FileSpecs[;Attr][;SortingOrder])$ and ^$GetFileFirst([+]FilePath;FileSpecs[;Attr][;SortingOrder])$ Clip functions. When the Attr field is used, only files that use the specified attributes are selected. To select files that have no attribute settings, use "-" as a value for Attr. You can also span through subdirectories by adding a + sign in front of the FilePath criteria. The following example will select all files under Windows and its subdirectories, that have the System attribute set:
^$GetFiles("+C:\Windows";*.*;S;Name)$

* The registry-related Clip functions and commands (GetRegValue, SaveRegValue, ClearRegValue) look for a colon (:) as the delimiter between the key and name parts. Unfortunately, there are situations where a colon character needs to be used in the name part, and this causes malformed key and name values. In this situation, you can now use a double colon (::) to indicate where the name value starts.

* Fixed a bug in the ^$GetValue(...)$ function, which removed quotes surrounding values.

* Fixed problems in the ^!Find and ^!Replace Clip commands when used with the Regular Expression option.

* Fixed quote problem with ^!Open command: ^!Open "^?{(T=O;S=M)Browse to file(s) to open}"

* Fixed a problem with the GetRelativeName Clip function when only the FileName parameter is specified and quotes are used around it.

* NoteTab Light/Std: fixed ^!SelectTo, which can now be used to select text backwards.



Changes in Version 4.82
=======================
* New engine for regular expressions. More powerful and adds support for regex criteria in replace field. See Help file for details.

* Added "Close to System Tray" option on General tab. This lets you configure whether closing NoteTab minimizes the program to the System Tray or not when its icon is displayed there.

* Added "Hidden Files" option in Search Disk dialog box. When set, the command will also search through hidden files.

* The header used in template files can now specify Clip directory functions to represent special path names (e.g. ^$GetScriptPath$, ^$GetTmpPath$). Example taken from FTP.tpl:
= DocTemplate ClipCode "^$GetScriptPath$FTP%0.3d.scr"

* New FTP.clb library. Requires the Windows FTP.exe program.

* New FTP.tpl template file for creating FTP.exe scripts.

* Console applications run by NoteTab can be interrupted with the Ctrl+Alt key combination while NoteTab is receiving/waiting for data.

* Replace All operations applied to selected text now leave the updated text selected.

* Fixed errors in several library files and documentation.

* Fixed MAPI address formatting bug that was accidentally reintroduced in final release of 4.81.

* Fixed incorrect error message claiming a directory does not exist when saving a file with a UNC name (e.g. \\RemoteDisk\Text\).

* Fixed minor bug in Match Brackets command.

* Fixed minor problem with Print dialog box not recognizing Print Range setting under certain situations.

* Other minor fixes.


Clip Language:
.............
* New Clip functions:

^!Shell
Launches the specified file, program, or URL through the Windows shell. Proposed as a replacement for the default ^! launch method. Example: instead of using "^!WordPad c:\autoexec.bat", use "^!Shell WordPad c:\autoexec.bat"

^!ShellWait
Similar to the ^!Shell command, but waits until the launched program is terminated before moving to the next Clip instruction. Unlike the ^!Wait command, you can continue editing files in NoteTab while the application is running. Example:
^!ShellWait WordPad c:\autoexec.bat

^$StrDeleteLeft("Str";Amount)$
Similar to ^$StrDelete()$ but deletes the text from the start of the specified string.

^$StrDeleteRight("Str";Amount)$
Similar to ^$StrDelete()$ but deletes the text from the end of the specified string.

^$StrCopyLeft("Str";Amount)$
Similar to ^$StrCopy()$ but copies the substring from the start of the specified string.

^$IsWildcard("FileName")$
Returns 1 if FileName contains one or more wildcard characters (* and ?), and 0 if it does not.

^$GetSysProgPath$
Returns the path containing system programs like MS-Notepad and FTP.exe.

^$StrStripHTML("Str";PreserveURLs)$
Returns a copy of Str with all HTML tags removed. PreserveURLs is either True or False, and determines if URLs are preserved or not.

^!TextToUnicodeFile "FileName" AnyText
Saves the specified text to FileName in the Unicode format using the current Windows code page.

^!AppendTextToUnicodeFile "FileName" AnyText
Appends the specified text to the end of a disk file in Unicode format using the current Windows code page. A new file is created if FileName does not exist.

^$GetUnicodeFileText("FileName")$
Reads Unicode text from FileName and returns it as normal text based on the current Windows code page.

* Clips with multiple "^&" are better handled.

* Fixed incorrect behavior when pasting Clip text beginning with a line break when the "Indent on Paste" option is set. Now indents a whole selection when place holder is also indented. Example:
^!InsertHtml <p>^P  ^&^P</p>
Applied on the following three lines:
Line1
Line2
Line3
will now indent all the lines in the selection, instead of just the first one.
<p>
  Line1
  Line2
  Line3
</p>

* Clip shell commands did not respect the ^!ChDir setting. Fixed.

* ^$GetWord$, ^$GetBlock$, and ^$GetQuoteBlock$ now return the whole item even when it is wrapped.

* Fixed a bug that caused the ^%AR_KEY% to always return an empty value.

* Fixed problem with ^!SetScreenUpdate not working within sub-Clips (those run with the ^!Clip command).

* Fixed ^$GetColScreen$ when text is selected.

* Fixed ^!MoveFile which caused target directory file to end up in recycle bin if original did not exist.

* Fixed ^!SetFocus Frame1



Changes in Version 4.81
=======================
* New favorites feature: Precede the path name with a + character to also open all matching files contained in subdirectories. Example: 
+C:\Program Files\Web\*.htm*

* Dialogs are now centered with respect to the NoteTab window rather than the screen.

* You can now open the Glossary.otl file from the Help menu.

* Updated some of the libraries and the HTML template.

* The single HTML Clipbar is now replaced by two new ones: HTML-1 and HTML-2 (the last button makes it easy to switch between the two).

* Custom colors are now remembered between NoteTab sessions.

* Sometimes NoteTab did not correctly detect when a file was updated by another application. Fixed.

* When NoteTab receives the focus from another application, it now also checks if the current library in the Clipbook needs updating.

* Join Lines (Ctrl+J) works again when only a single paragraph is selected. It ignores the last blank line, if included in selection.

* Closing the Clip editor now prompts to save changes, as when closing other documents.

* Opening e-mail addresses now uses MAPI rather than going through the default browser (if MAPI is enabled).

* Ctrl+Left/Right arrows will now also place the cursor between tags: >|<.

* The /P command-line parameter now works again.

* Fixed several minor errors in the implementation of the XHTML features.

* Fixed problem with Intellimouse wheel in NoteTab Pro causing lines to scroll only one line at a time under certain conditions.

* NoteTab no longer locks up when a save operation fails and the error dialog is not closed before moving the focus to another application.

* Other minor changes and fixes.


Clip Language:
--------------
^!SetHtmlFormat [UPPERCASE|LOWERCASE|XHTML]
Sets the default format of HTML tags created by the ^!InsertHtml and ^!InsertWizardHtml, as well as other related HTML commands.

^$GetHtmlFormat$
Returns the default format used for creating HTML tags. Possible values are: Uppercase, Lowercase, XHTML.

^$GetClipVersion$
Since version 4.801, this function returns the actual NoteTab release version as an integer. For example, in version 4.801, ^$GetClipVersion$ returns 4801.

* Fixed Clip command ^!AppendToFile so that it accepts text ending with blank lines.

* Custom Clip function names can now be shorter than 5 characters.



Changes in Version 4.8
======================
* Added Clipbars to NoteTab Pro and Std: a special type of toolbar with buttons that run Clips. Users can "attach" their own scripts to this toolbar, as well as use their own icons for the buttons. Several Clipbars are provided with NoteTab, including a couple of handy ones for HTML editing. Clipbars can be opened through the View|Clipbar submenu. See Help for more information.

* NoteTab Light now supports the full Clip language. It can now run the same libraries as NoteTab Pro and NoteTab Std.

* NoteTab supports HTML Tidy -- a free utility that cleans HTML code and fixes errors. Once it is installed, you can invoke it through the "Tools|Tidy HTML Code" menu command. HTML Tidy accepts a variety of switches to control the way it processes HTML tags. NoteTab will try to determine the best switches based on the active document type and the HTML Tag option settings. If you want more control over the settings, you can create a configuration file for Tidy, which you should save in the NoteTab folder with the name Tidy.cfg (see the program's instructions for details). You can learn more about HTML Tidy and download the latest version by visiting the following Web page:
http://www.w3.org/People/Raggett/tidy/
The easiest setup is to copy the Tidy.exe program file to the NoteTab folder, but you may place it anywhere else if you prefer.

* NoteTab supports CSE HTML Validator Pro (v2.00A and higher) -- a program for checking HTML syntax errors. If the program is correctly installed, you will see a new command under the Tools menu called "Validate HTML". When you click on this command, it will send the current document text to CSE HTML Validator. Once the checking is completed, NoteTab will create a Clipbook library containing all the messages produced by the CSE program. Executing the Clips in the library will select the offending line and display the corresponding error message. Note that you should avoid removing or adding lines while correcting errors so that the line numbers referenced by the Clips remain valid. You can learn more about CSE HTML Validator and download the latest version by visiting the following Web page:
http://www.htmlvalidator.com/

* The "Modify|Document to HTML" menu commands now use the <p></p> pair of tags instead of the single <p> used to mark paragraph breaks. This conforms to the latest standards for HTML coding.

* Added menu commands to convert HTML tags to Uppercase/Lowercase/XHTML. See submenu "Modify|Change HTML Tags".

* Added settings in Options dialog box to control the format of HTML tags generated by NoteTab. See Options tab labeled "HTML Files". The setting "Create XHTML Tags" produces tags based on the W3C recommendations for XHTML. The setting "Create Uppercase Tags" produces tags with element and attribute names in upper case.

* Added new options to enable previewing of Web pages, such as ASP and Cold Fusion, through a local Web server (e.g. MS Personal Web Server). See Options tab labeled "HTML Files". The relevant fields are "Server Name" (e.g. localhost) and "Physical Path" (e.g. c:\inetpub\wwwroot\html). When these fields are set, any file under the Physical Path will be displayed through the local Web server. Based on the example values, the following file name:
  c:\inetpub\wwwroot\html\index.asp
is converted to:
  http://localhost/index.asp
when sent for previewing to the browser.

* Can now preserve case of file names by holding down the Ctrl key when inserted in HTML documents (e.g. drag-and-drop from file list).

* Added menu command "File|Template|New" to create new templates.

* Template headers now accept the ^$GetDate()$ function in order to use the current date in the file name. Example:
= DocTemplate ClipCode "Notes-^$GetDate(yyyymmdd)$-%0.3d.txt"

* Added "Document|Disk File Properties" menu command. Shows the Windows "File Properties" dialog box for the current document.

* The "Help|Replace MS Notepad" menu command is no longer displayed under Windows 2000 (and higher). Windows 2000 does not allow substituting MS Notepad with another program.

* Clicking on the More button in the text statistics dialog box now also provides a count of punctuation characters.

* Improved support for WordStar commands.

* Library files with the hidden attribute set are no longer displayed in the Library Bar.

* New shortcut command for System Tray icon to enable/disable the Paste Board (a document set to collect all text sent to the Clipboard). Useful when NoteTab is minimized in System Tray.

* Two new command-line parameters:
+ 1) NoteTab /L=LibraryName:RunClip
Opens the library and automatically runs the specified Clip. Example:
NoteTab /L=Utilities:Calculator
+ 2) NoteTab /INST=InstanceID
Opens a new instance of NoteTab (even if multiple instances is disabled) or activates the instance matching the InstanceID text. Use quotes around InstanceId if it contains spaces. Multiple instances are disabled in instances opened through this method, and documents are not automatically reopened. Example:
NoteTab /INST="HTML Editing"

* Improved the command-line parser. Now accepts multiple file names without quotes (as long as the names don't contain spaces).

* Changed the method used to associated file types with NoteTab.

* Changed method used for handling .ini files. Should be much faster on Windows NT.

* Holding Ctrl key down while launching NoteTab resets the .ini file.

* Improved handling of single and multiple instances of NoteTab.

* NoteTab Pro can now open files larger than 16 MB.

* NoteTab can now also determine the size attributes for .png images.

* Changed behavior of Ctrl+Left/Right arrows in NoteTab Pro to match the behavior of NoteTab Std/Light.

* Loading of a large number of documents can be aborted by holding down the Alt+Ctrl keys.

* NoteTab now uses the standard "Browse for Folder" dialog box.


Clipbar:
--------
* Added support for user-made toolbars, called Clipbars. You can open available Clipbars and create new ones through the "View|Clipbar" submenu commands. Quick instructions to add buttons to a Clipbar:
+ Open a new Clipbar or an existing one.
+ Open the Clipbook window (F4) and select the library that contains the Clips you want to use from the Clipbar.
+ The setting "Single Click to Paste" on the Clipbook tab in the Options box must be unchecked.
+ Click on the desired Clip label in the Clipbook window and drag it to the Clipbar. The button is added once you release the mouse button. You can reorder Clipbar buttons by holding the Shift key down and dragging them to the new position.
+ To change the button icon, click on it with the right mouse button to open the context menu and choose the "Button Properties" command. Choose a new icon from the list in the dialog box. You can either use the internal NoteTab icons, or your own custom icons. Your icons should be placed in the NoteTab Libraries folder. Accepted image formats are bitmaps (.bmp) and icons (.ico). Recommended maximum image size is 18x18 pixels. Larger images are shrunk to fit in the allocated space and may look distorted. The icon transparency color is determined by the pixel color at the bottom-left corner of the image.
+ A Clipbar can contain Clips from any library as long as they remain available in the Libraries directory. Note that the Clipbar reads the Clips from disk only. If you have edited a Clip in NoteTab and want to test it from the Clipbar, you will first have to save your library to disk.
+ To save the changes made to the Clipbar, click on it with the right mouse button to open the context menu and choose the "Save Clipbar" command. When the Clipbar is saved, the settings are stored in the Libraries directory in a text file with the .ctb extension. You can edit it manually by choosing the "Edit Clipbar" command from the context menu.

IMPORTANT: Currently, the Clipbar cannot handle Clips that use the ^$GetClipText(ClipName)$ function and user-made functions.

* The Clipbar supports the OnOpen and OnClose events. Just drag an OnOpen or OnClose Clip to it. The OnOpen event is triggered when a Clipbar is first opened, and when switching to another library. The OnClose event is triggered when switching to another library or starting a new one, and when closing NoteTab. The triggering of these events can be canceled by holding down the Shift key.

* Added command-line parameter to open a specific Clipbar when launching NoteTab:
   NoteTab /C=ClipbarName


Clip Language:
--------------
* Simple text Clips use the "^&" code to determine where selected text should be placed when pasting the Clip contents. If no text is selected, then it marks the position where the cursor should be placed. In NoteTab 4.6 and older, this method did not work in executable Clips. This issue has been addressed in version 4.8. See the HTML library for an example of this new functionality.

* You can now apply Clips on text that contains Clip code, without causing it to be interpreted by the Clip parser. Unfortunately, there is a small price to pay for this improvement. The following old function formats for dates: ^[mm/dd/yyyy^] and mathematical evaluation: ^$[Expression] will not work if their arguments are built from the values of variables and functions. Instead of those old function formats, you should use the more recent ^$GetDate(mm/dd/yyyy)$ and ^$Calc(Expression[;Decimals])$ functions.

* Conditional commands now accept a command statement instead of a label. The second command statement may not be another conditional command, and it may not be followed by an ELSE-type label. Examples:
^!If ^%Variable% < 0 ^!Set %Variable%=0
^!IfFileExist "^%Variable%" GoToLabelTrue ELSE ^!Prompt File does not exist

* You can now create your own Clip functions, using an approach that is similar to the ^!Clip command. Custom Clip functions must not have the same name as a pre-defined function. The function name corresponds to the name of the Clip that contains the code. You can create functions that take one parameter or none. You can access the parameter data in your function script by using the ^& code. Your function script must assign the result to the new ^!Result command, or by using the new pre-defined variable %RESULT%. Example:
H="Double"
^!IfTrue ^$IsNumber("^&")$ Multiply
^!Result ^&^&
^!Goto End
:Multiply
^!Result ^$Calc(^& * 2)$

H="TestDouble"
^!Prompt ^$Double(^?[Enter a number or some text])$


HTML Editing
¨¨¨¨¨¨¨¨¨¨¨¨
^!InsertHtml Any text with tokens (^p/^t)
Similar to ^!InsertText command, but converts HTML tags to Uppercase, Lowercase, or XHTML format (depending on settings in Options).  This command is sensitive to the "Indent on Paste" setting in the Options dialog box on the Clipbook tab. You can precede it with the command "^!SetPasteIndent Off" to make it ignore the indent setting.

^!InsertWizardHtml Any text with tokens (^p/^t)
Similar to ^!InsertHtml command, but removes attributes that have no value. This command is useful when used together with the Clip wizard. It allows the user to leave certain fields blank in the Wizard, and the corresponding tags are then automatically removed before being inserted in the document. Example:
  ^!InsertWizardHtml <TD ALIGN="" WIDTH="">
will insert the following tag in your document: <TD>

^!RunTidy [i|d]
^!RunTidy [Switches]
HTML Tidy is a free utility that cleans HTML code and fixes errors. This new Clip command will send your document text to the HTML Tidy program. The corrected output returned by HTML Tidy is then inserted into the document. The StdError stream is saved in a file called "StdError.err" in NoteTab's application directory, unless another file is specified with the SetStdError Name command. You can use the optional parameter "Switches" to specify Tidy command-line arguments; example:
   ^!RunTidy -f errs.txt -qiu
If no argument is specified and you have a Tidy.cfg file in the NoteTab folder, then HTML Tidy will be configured according to the settings in that configuration file. If NoteTab does not find the configuration file, it will determine the appropriate switches based on the settings in NoteTab. If you have a Tidy.cfg file, but you want NoteTab to ignore it and use default settings, then use the "d" argument (without the quotes). If you want NoteTab to determine the best settings, but would like to have your tags indented, just use the "i" argument; example:
^!RunTidy i
You can learn more about HTML Tidy and download the latest version by visiting the following Web page:
http://www.w3.org/People/Raggett/tidy/
The easiest setup is to install the Tidy.exe program file in the NoteTab folder, but you may place it anywhere else if you prefer.

^$GetTidyExe$
Returns full path and name of HTML Tidy application.

^$GetHtmlTagName("TagStr"[;Format])$
Returns the name of the HTML Tag, either in uppercase or lowercase. If the Format parameter is not specified, the character case is determined by the settings in NoteTab's Options. Use the Format parameter to control the format of HTML tags. It can have one of the following values: UPPERCASE, LOWERCASE, or XHTML. Example:
^$GetHtmlTagName("<TD ALIGN="left" WIDTH="250">";LOWERCASE)$ -> td

^$GetHtmlTagAttr("TagStr";Attr[;Format])$
Returns the value of the specified HTML attribute. If the Format parameter is not specified, the result is determined by the settings in NoteTab's Options. Use the Format parameter to control the case of minimized attributes (it has no effect on the value returned for normal attributes). It can have one of the following values: UPPERCASE, LOWERCASE, or XHTML. Example:
^$GetHtmlTagAttr("<DL COMPACT>;Compact;XHTML)$ -> compact
^$GetHtmlTagAttr("<DL COMPACT>;Compact;UPPERCASE)$ -> COMPACT
^$GetHtmlTagAttr("<TD ALIGN="left" WIDTH="250">";Width)$ -> 250

^$GetHtmlTagTidy("TagStr"[;Format])$
Returns a properly formatted HTML tag converted to uppercase, lowercase, or XHTML format. If the Format parameter is not specified, the result is determined by the settings in NoteTab's Options. Use the Format parameter to control the format of HTML tags. It can have one of the following values: UPPERCASE, LOWERCASE, or XHTML. Example:
^$GetHtmlTagTidy("<HR SIZE=2 NOSHADE>";XHTML)$ -> <hr size="2" noshade="noshade" />

^$GetHtmlTextTidy("Str"[;Format])$
Returns the string with HTML tags converted to Uppercase, Lowercase, or XHTML format. If the Format parameter is not specified, the result is determined by the settings in NoteTab's Options. Use the Format parameter to control the format of HTML tags. It can have one of the following values: UPPERCASE, LOWERCASE, or XHTML.


TopStyle
¨¨¨¨¨¨¨¨
NoteTab now supports Bradsoft's TopStyle CSS editor, version 1.51 and above -- a program for editing Cascading Style Sheets. You can learn more about this useful program and download the latest version by visiting the following Web page:
http://www.bradsoft.com/redir.asp?id=130
Note that the TopStyle commands described below are used in the TopStyle library packaged with NoteTab. There is also a convenient TopStyle Clipbar to access the Clip commands.

^$IsTopStyleEnabled$
Returns 1 if the TopStyle editor is available through NoteTab, and 0 if it is not.

^$EditStyleBlock("Str")$
Opens TopStyle in <style>..</style> block editing mode. Returns the updated style block. Note that the "Str" argument should not include the surrounding <style>..</style> tags.

^$EditStyleAttr("Str")$
Opens TopStyle in inline (STYLE attribute) editing mode. Returns the updated style. Note that the contents of the style attribute should only include the value assigned to the style attribute. For example, if you wish to edit the style attribute in the tag <span style="color:blue">, then you should only pass color:blue to this function.

^!EditStyleSheet [FileName]
Opens the specified style sheet file in TopStyle. If no file name is specified, this command will launch TopStyle without opening a specific style sheet. Note that unlike the EditStyleBlock and EditStyleAttr functions, which block the calling application until the user closes TopStyle, EditStyleSheet simply executes TopStyle and returns immediately.


Application
¨¨¨¨¨¨¨¨¨¨¨
^$GetAppFileName$
Returns the file and path name of the NoteTab program file. Example, with default folder for NoteTab Pro:
^$GetAppFileName$  -> C:\Program Files\NoteTab Pro\NotePro.exe

^!DirectPrint "Title" Data
Prints text directly to the printer, bypassing NoteTab's print procedure. Uses default printer settings. Title is the text shown in the Print manager and Data is the text to send directly to the printer. Data can contain printer control codes.

^!SetFocus [Clipbook|ClipEdit|Document|Frame1|Frame2|List_Clip|List_Disk|List_Docs|List_Favs|Outline|PasteBoard]
Moves the focus to the specified screen object. This command will fail if the NoteTab window is minimized. Example to move the focus to the Outline-headings window:
^!SetFocus Outline


Keyboard
¨¨¨¨¨¨¨¨
^$IsCtrlKeyDown$
Returns 1 if the Control key is pressed while the function is executed and 0 if it is not.

^$IsShiftKeyDown$
Returns 1 if the Shift key is pressed while the function is executed and 0 if it is not.

^$IsAltKeyDown$
Returns 1 if the Alt key is pressed while the function is executed and 0 if it is not.


Selection and Cursor Position
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
^!Select [EMAIL|HTMLTAG]
The Select command has two new switches. EMAIL extends the selection of an e-mail address under the cursor, and HTMLTAG selects a complete HTML tag.

^$GetWord[(SelectText)]$ and ^$GetBlock[(SelectText)]$
Added the optional Boolean argument "SelectText" to make NoteTab select the corresponding block of text.

^$GetHtmlTag[(SelectText)]$
Returns the HTML tag at cursor position. Use the optional Boolean argument "SelectText" to make NoteTab select the corresponding block of text.

^$GetQuoteBlock[(SelectText)]$
Returns the block of text between double quotes (") at the cursor position. Use the optional Boolean argument "SelectText" to make NoteTab select the corresponding block of text. This function is especially useful for retrieving attribute values within HTML tags.

^$GetColStart$
Returns the cursor column index in the current document. If some text is selected, then the beginning of the selection determines the column position.

^$GetRowStart$
Returns the cursor line index in the current document. If some text is selected, then the beginning of the selection determines the line index.

^$GetColEnd$
Returns the cursor column index in the current document. If some text is selected, then the end of the selection determines the column position.

^$GetRowEnd$
Returns the cursor line index the in current document. If some text is selected, then the end of the selection determines the line index.

^$GetColLeft$
Returns the leftmost column index visible in current document window.

^$GetRowTop$
Returns the index of the top line visible in current document window.

^!SetView RowTop:ColLeft
Moves the top line and leftmost column to the specified coordinates in current document window.


Clip Code
¨¨¨¨¨¨¨¨¨
^!SetDebug [On|Off]
When enabled, a dialog box pops up just before each statement and paste operation is executed. The dialog box shows the parsed instruction or the text about to be pasted in the document. There are three buttons; "Yes" is for continuing execution until the next instruction, "No" disables Debug mode, and "Cancel" ends Clip execution.

^!SetPasteIndent [On|Off]
Enables or disables automatic indenting when a Clip inserts text into a document. The scope of this command is limited to the Clip (and eventual sub-Clips) where it was invoked. When a Clip ends, the original user setting is automatically re-enabled.

^$IsPasteIndent$
Returns 1 if Clips insert text with automatic indenting and 0 if not.

^!DestroyLibrary [LibraryName]
Deletes the specified Clipbook library (path name and extension are not needed). If the optional LibraryName argument is not used, then the library currently running the Clip is closed and destroyed.

^!InsertText Any text with tokens (^p/^t)
Since version 4.8, this command is sensitive to the "Indent on Paste" setting in the Options dialog box on the Clipbook tab. You can precede it with the command "^!SetPasteIndent Off" to make it ignore the indent setting.



Clipbar
¨¨¨¨¨¨¨
^!OpenClipbar Name
Opens the specified Clipbar file.

^!CloseClipbar
Closes the current Clipbar.

^!ReloadClipbar
Reloads the current Clipbar.

^$GetClipbarName$
Returns the name of the current Clipbar file.


Files
¨¨¨¨¨
^$GetFileFirst(FilePath;FileSpecs[;Attr][;SortingOrder])$
Added optional Attr parameter. Attr can represent multiple values: A = Archive, H = Hidden, R = Read-only, S = System, * = All attributes. If the Attr parameter is not used, then file attributes are ignored.

^$GetFiles(FilePath;FileSpecs[;Attr][;SortingOrder])$
The parameters are identical to the ^$GetFileFirst$ function. Returns all matching files as a single string using the default separator (;), or the one defined by ^!SetListDelimiter. Note that ^$GetFileNext$ and ^!CloseFileFind do not work with this function. This new function is useful to assign the result to an array variable. Example:
^!SetArray %Files%=^$GetFiles("c:\Program Files\NoteTab Pro\Documents";*.txt;AR;DATE)$

^!SetFileAttr "FileSpecs" Attr
Changes the file attributes. FileSpecs is the file name, which may have wild cards. Attr can represent multiple values: A = Archive, H = Hidden, R = Read-only, S = System, * = All attributes. Use a minus sign in front of the letter to remove an attribute. The following example sets the Archive attribute and removes the Read-only attribute, if set:
^!SetFileAttr "c:\Scandisk.log" A-R

^!IfFileAttr "FileName" Attr GoToLabelTrue [ELSE GoToLabelFalse]
Compares FileName attributes with Attr. If Attr is equal or a subset of FileName's attributes, then GoToLabelTrue is activated. Attr can represent multiple values: A = Archive, D = Directory, H = Hidden, R = Read-only, S = System, V = VolumeID, * = All attributes. Example:
^!IfFileAttr "c:\Scandisk.log" AH LabelTrue ELSE LabelFalse
If Scandisk.log has at least the Archive and Hidden attributes set, then the instruction jumps to LabelTrue.

^$GetFileAttr(FileName)$
Returns the file attributes as a string of characters. A file can have zero, one, or several attributes. The string may contain the following characters: A = Archive, D = Directory, H = Hidden, R = Read-only, S = System, V = VolumeID, * = All attributes. Example:
^$GetFileAttr(c:\Scandisk.log)$ -> AH

^$GetRelativeName(FileName;BaseDir)$
Returns the relative name of FileName against BaseDir. If BaseDir is not defined, the active document path is used as the reference directory. Example:
^$GetRelativeName(c:\temp\test\MyFile.txt;c:\temp\)$ -> test\MyFile.txt

^$GetExpandedName(FileName;BaseDir)$
Returns the fully qualified name of FileName against BaseDir. If BaseDir is not defined, the active document path is used as the reference directory. Example:
^$GetExpandedName(..\MyFile.txt;c:\temp\test\)$ -> c:\temp\MyFile.txt

^$FileToUrl("FileName")$
Converts a Windows file name to a URL file name. Example:
^$FileToUrl("c:\program files\index.htm")$ -> file:///c|/program%20files/index.htm

^$UrlToFile("URL")$
Converts a URL file name to a Windows file name. Example:
^$UrlToFile("file:///c|/program%20files/index.htm")$ -> c:\program files\index.htm

* The following procedures will now also work with files in the form of URLs
  ^$GetName(FileName)$
  ^$GetFileName(FileName)$
  ^$GetPath(FileName)$


Text Processing
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
^!IfMatch "RegEx" "Value2" GoToLabelTrue [ELSE GoToLabelFalse]
Similar to ^!IfSame, but accepts a regular expression for the first value.

^$StrAnsiToAscii("Str")$
Returns Str with all extended ANSI characters converted to ASCII.

^$StrAsciiToAnsi("Str")$
Returns Str with all extended ASCII characters converted to ANSI.

^$IsLowercase("Str")$
Returns 1 if Str does not contain any uppercase characters, and 0 if it does.

^$IsUppercase("Str")$
Returns 1 if Str does not contain any lowercase characters, and 0 if it does.

^$IsCapitalized("Str")$
Returns 1 if Str does not start with a lowercase character and is not followed by any uppercase characters, and 0 if this condition is not met.

^$IsMixedCase("Str")$
Returns 1 if Str contains both lowercase and uppercase characters, and 0 if it does not.

^$IsAlpha("Str")$
Returns 1 if Str contains only characters from the alphabet, and 0 if it does not.

^$IsAlphaNumeric("Str")$
Returns 1 if Str contains only numbers and characters from the alphabet, and 0 if it does not.

^$IsBlank("Str")$
Returns 1 if Str contains only blank characters (tabs, spacebar, line breaks, etc.), and 0 if it does not.

^$StrCapitalize("Str")$
Capitalizes all words in Str and returns the resulting string.

^$StrInvertCase("Str")$
Converts all uppercase characters to lowercase, and lowercase characters to uppercase, and returns the resulting string.

^$StrSentenceCase("Str")$
Capitalizes all words following a period, exclamation, and question mark and converts all other words to lowercase.

^$CharToDec(Character)$
Returns the decimal value of Character. Example:
^$CharToDec(S)$ -> 83

^$DecToChar(Decimal)$
Returns the character corresponding to the decimal value. Example:
^$DecToChar(83)$ -> S
Note that you should avoid converting the following decimal values 1, 4, 5, and 6 to characters as they have a special meaning for the Clip interpreter.

^$IntToHex(Char)$
Now also returns the ANSI hex code of single character if Char does not represent a number.


Windows
¨¨¨¨¨¨¨
^$GetSpecialPath(TypeFolder)$
Returns the path name of the specified Windows folder. TypeFolder can have one of the following values:
   AppFolder
   Desktop
   DesktopDir
   StartMenu
   Programs
   Startup
   SendTo
   Favorites
   Recent
   CommonDesktopDir
   CommonStartMenu
   CommonPrograms
   CommonStartup
   CommonFavorites

^!MakeShortcut ShortcutLocation "Target" ["Arguments"] ["Description"] [CmdShow]
Creates Windows shortcuts. Syntax:

- ShortcutLocation is the place where the shortcut is created. It accepts the same values as the TypeFolder argument used in the ^$GetSpecialPath(TypeFolder)$ function.
- "Target" is the program to execute, or the document to launch.
- "Arguments" are eventual command-line switches you might want to use with the target program.
- "Description" is an optional parameter you can use to identify the shortcut. If it is left blank, the shortcut name will be the same as the target program name.
- CmdShow defines how the program is opened. It can have one of the following values:
   Normal (default if no value specified)
   Maximized
   Minimized

Example:
  ^!MakeShortcut SendTo "^$GetAppFileName$" "" "Open in NoteTab" MAXIMIZED


Registry:
¨¨¨¨¨¨¨¨¨
^!SaveRegValue [BaseRoot\]Key[:Name]=Value
Saves the specified value under the key entry in the Windows Registry. If BaseRoot is not defined, then HKEY_CURRENT_USER is used. If no value is specified for Name, the "(Default)" name is used. The maximum amount of text that can be saved this way is 1024 characters. Use with care! Example:
^!SaveRegValue HKEY_CURRENT_USER\Software\Beta:UserName=Raymond
^!SaveRegValue Control Panel\International:sDate=/
^!SaveRegValue HKEY_CLASSES_ROOT\.386=vxdfile

^$GetRegValue("[BaseRoot\]Key[:Name]")$
Returns the value stored under the specified key in the Windows Registry. If BaseRoot is not defined, then HKEY_CURRENT_USER is used. If no value is specified for Name, the "(Default)" name is used. Returns an empty string if the key does not exist. Example based on ^!SaveRegValue example:
   ^$GetRegValue(HKEY_CURRENT_USER\Software\Beta:UserName)$  -> Raymond
   ^$GetRegValue(Control Panel\International:sDate)$  -> /
   ^$GetRegValue(HKEY_CLASSES_ROOT\.386)$  -> vxdfile

^!ClearRegValue [BaseRoot\]Key[:Name]
Deletes the specified name or key in the Windows Registry. If BaseRoot is not defined, then HKEY_CURRENT_USER is used. If a Name is specified, then only that name will be deleted from the Registry. If no Name is specified (no colon), then the key and all Names under it will be deleted. Use with care!

BaseRoot can be any of the following values:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS


Bug fixes:
----------
* Made changes to the code underlying the Clip commands ^!RunPerl, ^!RunGawk, ^!RunScript, as well as the functions ^$GetOutput("Command")$, ^$GetInputOutput("Command")$, ^$GetDosOutput("Command")$. These should run better under all versions of Win32, and especially Windows NT.
* Selecting text containing the characters "^&" (without quotes) in a document and running a Clip using the "^&" code no longer causes NoteTab to freeze.
* Fixed several problems in the spell-checker.
* Fixed access violation error when second document window was closed.
* Fixed regex bug when used with Count Occurrences and Replace All.
* Fixed NoteTab Pro bug that caused file truncation when a paragraph exceeded a length of 65,500 characters.
* Fixed a glitch in NoteTab Pro when printing text with tabs.
* Blank lines at end of text are now ignored when printing.
* Hyperlinks using the format [test.html#anchor] are now correctly converted from OTL to HTML.
* The Clip command ^!Find no longer attempts to translate NoteTab tokens (^P, ^T, etc.) when a regular expression is specified.
* Can now run NoteTab from copy-protected disks.


___________________________________________________________________
NoteTab is a trademark licensed to Fookes Software Ltd, Switzerland 
      Copyright © 1995-2009, Fookes Holding Ltd, Switzerland
                       - All Rights Reserved -

Fookes is a registered trademark of Fookes Holding Ltd.
Windows is a trademark of Microsoft Corporation registered in the U.S. and other countries.  
All other trademarks and service marks, both marked and not marked, are the property of their respective owners.
