What's New in Version 4.81
__________________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
(Released on March 22, 2000)

Major Changes in Latest Versions
================================
Only the most significant feature changes are listed under this topic. See the next main topics for a more comprehensive explanation of the changes.

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.

NoteTab v4.6/a (released: 22/30 March 1999)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯
* Text drag-and-drop editing added to NoteTab Pro
* AutoCorrect/AutoReplace mode similar to Microsoft® WinWord
* Support MS-Office sound events
* Icons in menus
* Option to show nonprinting characters in NoteTab Pro
* Option for incremental backups
* Read and write EBCDIC files
* Improved response to the Intellimouse wheel
* Improved Find/Replace dialog boxes
* Programmable templates
* Powerful new Clip commands and functions
* NoteTab Pro:
  + winner of the 1999 Shareware Industry Awards
   ("Best Web Enhancement" category)
  + winner of the 1999 People's Choice Award

NoteTab v4.52 (released: 16 November 1998)
¯¯¯¯¯¯¯¯¯¯¯¯¯
* Menu command to insert HTML links and images
* Disk Search command supports regular expressions
* Support for WordStar key mapping in NoteTab Pro

NoteTab v4.51 (released: 14 October 1998)
¯¯¯¯¯¯¯¯¯¯¯¯¯
* Improved Favorites menu
* Improved "Strip HTML Tags" command
* Search Disk accepts multiple file masks
* Added support for regular expressions

NoteTab v4.5 (released: 31 August 1998)
¯¯¯¯¯¯¯¯¯¯¯¯¯
* Justify command
* Reformat Lines command
* Count command to count the frequency of a text criteria
* HTML-Color picker to insert color codes in web page
* Programmable Clipbook tool
* Many enhancements to the Clipbook syntax
* Improved Clip Assistant
* Integrated support for Perl and Gawk scripts
* Improved HTML-tag highlighting in NoteTab Pro
* Left-margin ruler to display line numbers in NoteTab Pro
* Hyperlinks in documents can now launch other programs
* New NoteTab subdirectory structure
* Super NoteTab renamed NoteTab Light/Std

NoteTab v4.011 (released: 04 April 1998)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯
* NoteTab Pro:
  + winner of the 1998 PC Magazine Shareware Awards (Applications category)
  + winner of the 1998 People's Choice Award
  + nominated in the 1998 Shareware Industry Awards
* Super NoteTab:
  + nominated in the 1998 PC User (Australia) Shareware Awards



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, like 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 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 places 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 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" as 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 untill 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(BaseDir;FileName)$
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(BaseDir;FileName)$
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 "RegExp" "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 RegExp 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.



Changes in Version 4.6a
=======================
Fixed an upgrade problem that could, under certain conditions, result in a document being saved in EBCDIC format. This glitch only affected documents that had been previously opened in NoteTab 4.52 or earlier, and that did not use Default Properties (see under the Document menu), and that were configured to use the "Original" Save As format.

If you have experienced this glitch and some of your documents are saved in EBCDIC format, you can use the following procedure to convert them back to the normal Windows format:
1. Open the Utilities library (click on the Utilities button at the bottom of the NoteTab screen);
2. double-click on the "Open EBCDIC document" Clip; click on the [...] button in the Wizard and select all the documents that were saved in EBCDIC format;
3. once you have opened those documents (the text should be readable in NoteTab), use the menu command Document|Properties for each one of them and change the "Save As" setting from EBCDIC (or Original) to DOS/Windows;
4. then use the File|Save As menu command to save them to disk using the same file name so that you overwrite the EBCDIC versions.



Changes in Version 4.6
======================
* Previous versions of NoteTab were compiled with Delphi 3.02. This new release is compiled with Delphi 4.02. According to Inprise (the company that produces Delphi), support for new features in Windows 98 have been added, including multiple screen setups, the Intellimouse wheel, etc. Many bugs have been fixed too, though it is not clear whether they affected NoteTab or not.

* NoteTab uses a new release of the spell-checker component (a third-party product). According to the company, bugs have been fixed and performance improved.

* The NoteTab program file is now much smaller (reduced by nearly 1 MB). As a result, it will load faster and you can even put NoteTab on a diskette for use on other computers without installing it. NoteTab only requires two files to run (though you will probably also want to use some of the Clipbook libraries); these are NotePro.exe (NoteTab Pro) or NoteTab.exe (NoteTab Std/Light), and EfoMacro.dll.

* Updated and reorganized the Clipbook libraries. Most Clips now contain explanatory comments. The following libraries duplicate Clips added to the new libraries and have been removed from the NoteTab package: Acronyms.clb, CaptureLinks2.clb, Convert.clb, HTML-Chr.clb, Launch.clb, Maths.clb, Samples.clb, and VarDemo.clb.

* Added an AutoCorrect/Code Completion feature (similar to WinWord) based on the Clipbook. This mode can be enabled through the "Tools|Auto-replace Mode" menu, or by using a Clipbook library with the AUTOREPLACE keyword in the header. When auto-replace mode is enabled, NoteTab will check for a matching item in the active library whenever you press any of the following characters (Clip activation keys):
   TAB SPACE RETURN ! " , . : ; = > ? ] }
If a matching Clip is found, the typed item in the document is automatically replaced according to the Clip instructions.

Note that if the Clip contains "^&" (without the quotes), the Clip activating key is discarded. You can also use the activating key in Clip code through the new predefined variable ^%AR_KEY%.

Try, for example, the libraries AutoCorrect.clb and HTML-ar.clb.

* Icons in main menu and editor shortcut menu. You can show/hide these menu icons by changing the setting "Show Menu Icons" in the Options dialog box on the View tab.

* New option "MS-Office Sounds" on View tab of Options dialog box. This feature is only enabled if MS-Office sounds have been installed. When set, NoteTab will play the sound assigned to the corresponding MS-Office events. Note that NoteTab sound events (Toolbar button and tab bar sounds) overrule the MS-Office events.

* NoteTab window now animated when minimized or restored from the task bar.

* NoteTab template files now accept Clip commands and functions embedded in the text. When such a file is opened, the text contained in it is interpreted and the resulting text is displayed in the document. To enable this feature, you will have to include the keyword "ClipCode" in the header line of the template file. See the template file HTML.tpl for an example of embedded functions. Example of header:
= DocTemplate ClipCode "Home%0.3d.htm"

* The Find and Replace dialog boxes have been improved. Note that the "All" option (in the combobox) means the search is done from the beginning of the document. However, with an outline file, the search will only start from the beginning of the current topic and span through the next topics if the searched text is not found. If you double-click on the Replace label, the content of the Find field is automatically copied to the Replace field.

* NoteTab Pro: now supports text drag-and-drop editing.

* NoteTab Pro: HTML-syntax highlighting now ignores <%...%> tags used to embed scripts in web pages.

* NoteTab Pro: New option "Highlight Clip Code" on Advanced tab of Options dialog box. When set, instruction, label, and comment lines in Clip code are highlighted.

* NoteTab Pro: Pressing the backspace key when in overwrite mode now replaces text with blank characters instead of deleting them. This is useful when editing formatted tables that should preserve their layout.

* NoteTab Pro: new option to show paragraph marks, tab and spacebar characters, and page breaks. This option can be set through the "Show Nonprinting Text" checkbox in Options dialog box on the View tab, or from the menu under View|Show Nonprinting Text, or from the toolbar if the button is enabled.

* NoteTab Pro: new keyboard command to scroll the text without changing the cursor's position. Press Shift+Ctrl+Up arrow to move the text downwards, and Shift+Ctrl+Down arrow to move it upwards.

* NoteTab Light/Std: improved method for left margin line selection area.

* Added option for incremental backups (Options|Files|Backup Type). For example, with a file called "NoName.txt", the following backup formats are produced depending on the chosen setting:
   ".bak extension"  ->  NoName.bak
   "Tilde after dot" ->  NoName.~txt
   "Incremental"     ->  NoName.~001.txt, NoName.~002.txt, etc.

* Two new menu commands for adding Clips to a library. These are available under the Tools|Clipbook submenu:
   Add New Clip (Ctrl+F2)
   Add from Clipboard (Shift+Ctrl+F2)

* The "Insert HTML Link" feature now inserts the filename automatically as the name of the link or ALT description.

* By default, NoteTab inserts links in lowercase. However, users creating web pages for servers that use case-sensitive links may want to keep the original case of the URLs they insert from the "Insert HTML Link" command or by drag-and-drop from the Quick List. NoteTab provides an option to preserve the original case of the file name. Currently, this option cannot be set from the Options dialog box. You will have to edit the NoteTab INI file. Look for the key "LowercaseUrls" under the [Options] section. If you find it, change its value from 1 to 0, otherwise add the following line under the [Options] section:
LowercaseUrls=0
If you edit the INI file in NoteTab, you must rename it by adding an exclamation mark in front of the name (e.g. !NoteTab.INI) to have your changes taken into account when you reopen NoteTab. Next time you run NoteTab, the content of the renamed INI file will be used and your setting will be taken into account.

* New "Save Format" submenu in the document-tab shortcut menu. Use it to change the default text format (line breaks and character set) applied when the corresponding document is next saved.

* EBCDIC files (from MVS and AS/400 systems) that do not contain packed-decimal fields can be opened and saved in NoteTab. Such files can either be opened through the new ^!OpenEbcdic Clip command, or by using a file filter containing the text "EBCDIC" (based on the same principle as opening DOS ASCII files; see Help). The Export command can also be used to save text in EBCDIC format. Although NoteTab supports EBCDIC files with line breaks and those with fixed-width text, it cannot correctly read EBCDIC files with variable-length records (i.e. those without line breaks).

* New command-line parameter: /T=FileName
Loads the specified file containing the EBCDIC character tables for conversion to and from Windows ANSI. The NoteTab program path is added if you do not specify a fully qualified path name. The extension .ebc is added if you do not specify a filename extension. See the file Default.ebc for an example of the table format.

* Added a field to define a record length (for fixed-width lines) for the EBCDIC format in the Options/Properties and the Export dialog boxes.

* Many other minor enhancements.


Clip Language:
--------------
^!FarClip LibraryName:ClipName
or
^!FarClip "LibraryName:ClipName" [Text]
Similar to the ^!Clip command but invokes a Clip from a library on disk instead of the active library. Clips invoked through this method are stored in an internal cache memory to improve performance (the cache will reload the Clip to memory if it detects that the Library file has been modified). LibraryName name must be stored in the Libraries folder if you do not specify a path, but does not need to have the .clb extension (you can use a different extension if you don't want the library to be listed in the Clipbook tool or the button bar). This command is particularly useful within specialized Template files. You can also use it to invoke frequently used procedures. Example:
^!FarClip HTML:Center

^!SetArray %VariableName%=ArrayData
Similar to the ^!Set command but creates an array from the data assigned to it. By default, the data delimiter is a plain semi-colon (;), or a semi-colon and double-quotes separating each item. You can change the default delimiter with the command ^!SetListDelimiter (see below). During the assignment, the individual items from the ArrayData are each stored in a new variable with the same name as the base variable plus an index number reflecting their corresponding position. The variable at index 0 has a special purpose as it stores the actual number of items contained in the array. You can change the values of the individual indexed items by using the ^!Set, ^!Inc, ^!Dec commands, and the changes are reflected in the base variable. If you assign an empty value to an array variable, or use the ^!Set command to assign a new value to it, the array is automatically removed from memory.

Examples:
^!SetArray %Array%="Value 1";"Value 2";"Value 3"
The above instruction will create four new variables:
^%Array0% = 3
^%Array1% = Value 1
^%Array2% = Value 2
^%Array3% = Value 3
If we assign a new value to the second item, as follows:
^!Set %Array2%=New Value
then accessing the base variable ^%Array% will return:
"Value 1";"New Value";"Value 3"
The following assignment will destroy the array, and only the base variable will be preserved with the newly assigned value:
^!Set %Array%=Another Value

^!SetListDelimiter ^p
Defines a delimiter to be used by the ^!SetArray command or Clip Wizard fields using the new Checkbox list (see below). Tokens are accepted, but the delimiter must not be more than 10 characters. The scope of this command is limited to the current Clip. Assigning an empty value results in using the default semi-colon (;) delimiter. Example: ^!SetListDelimiter ^p^p

^!Open "File1";"File2";"File3"
The command has been enhanced to support parameters with multiple semicolon-delimited files. Useful in conjunction with the enhanced "Open file" Clip-wizard field.

^!OpenReadOnly FileName
Opens or selects the specified document "FileName". You can use wild cards with this command. Newly opened files are set as Read-Only.

^!RenameDoc NewName
Renames the active document. The disk file is also renamed if it exists.

^!SetNameFormat Mask
The name format is used when new documents are created. The code "%d" indicates where the incremental numbering is inserted in the name. In the following example, the "0.2" between the % and d tells NoteTab to format numbers smaller than 2 digits with leading zeroes: NoName%0.2d.txt

^$GetNameFormat$
This function returns the current name format.

^$GetProgName$
Returns the full name of the NoteTab variant.

^$GetProgVersion$
Returns the current version number.

^!ProgIniSave [IniName]
Saves the current program settings into the NoteTab ini file or registry. Optionally, you can specify an alternative INI file (it is automatically created if it does not exist).

^!ProgIniLoad [IniName]
Loads options from the NoteTab ini file or registry. Optionally, you can specify an alternative INI file (it must exist or else the command sets the error condition). Note that the [AutoLoad] section is ignored by this command.

^$GetParagraph$
or
^$GetParagraph(Index)$
or
^$GetParagraph(+/-Index)$
Returns the text contained in the specified paragraph (=single word-wrapped line). The "Index" parameter is optional. When it is not used, this function refers to the paragraph where the cursor is placed, otherwise it refers to the paragraph position from the start of the document. By preceding the number with a + or - sign, the Index value refers to the relative position with respect to the current paragraph (e.g. ^$GetParagraph(-1)$ refers to the previous paragraph).

^!ClipBoardSave
Saves the Clipboard contents (any type of data) in NoteTab's internal memory. This command is to be used in conjunction with ^!ClipBoardRestore. It is particularly useful when you want to use the Clipboard for temporary storage without permanently removing what the user may have initially stored in it.

^!ClipBoardRestore [+]
Restore the contents of clipboard saved through the ^!ClipBoardSave command. Use the optional "+" parameter if you want NoteTab to keep the saved Clipboard data in its internal memory (lets you restore it again at a later stage).

^$SetDefaultValue(ValueList;DefaultValue)$
This function can be used to set the default value displayed by the Clip Wizard in combobox or listbox fields. It returns the ValueList string with DefaultValue as the default value. If DefaultValue does not exist in the list, it is added to the ValueList text. If DefaultValue is an empty string, then the function returns a list with no default value set. Clip example (each time you activate this Clip, the previous default value is selected):
^!IfFalse ^$IsEmpty(^%ValueList%)$ Skip
^!Set %ValueList%=_1|2|3|4|5|6
^!Set %DefaultValue%=^?{Choose or enter a new default value=^%ValueList%}
^!InsertText Default value = ^%DefaultValue%^p
^!Set %ValueList%=^$SetDefaultValue(^%ValueList%;^%DefaultValue%)$

^$GetDefaultValue(ValueList)$
Returns the default value selected in ValueList. Example:
^$GetDefaultValue(1|2|_3|4|5|6)$ -> 3

^$GetSamplesPath$
Returns the path for NoteTab sample files (always ends with backslash).

^$GetClipName$
Returns the name of the currently interpreted Clip. This function returns an empty string within Clips run by the timer event and executable template.

^$StrSplit("Str";TextWidth;TrimLines)$
Returns the "Str" string with long lines split at specified width. TextWidth defines the maximum width of the text in each line; TrimLines is either True or False and determines if blank spaces at the end of each line are removed or not.

^$GetColScreen$
Returns actual column position on screen. Unlike ^$GetCol$, this function takes into account expanded tabs. This function is only meaningful in NoteTab Pro.

^$IsTrimBlanks$
Returns 1 if the option "Trim White Spaces" is enabled in current document and 0 if it is turned off.

^!Email Address;Subject[;+]
or
^!Email Address;Subject;MessageText
Enhanced the EMail command. The third parameter can be the actual text you want to use in the message body (for example, you can use a variable that contains a whole message.

^!Help
or
^!Help "FileName"
or
^!Help "[FileName]" Keyword
Displays the indicated Help file or the NoteTab Help file if no parameter is specified. Displays the topic in the keyword table that matches the specified keyword, if there is an exact match. If there is more than one match, displays the Index tab. The following example will display the topics discussing Perl in the NoteTab Help file: ^!Help "" Perl

^!KeyboardDelay nnn
Controls the speed of typing with the ^!Keyboard command. nnn specifies the approximate delay in milliseconds between each keystroke. Set nnn to 0 for maximum speed. The scope of this command is limited to the current Clip execution.

^!Keyboard &nnn
The keyboard command now supports delay settings between key instruction. The value represents milliseconds and should be preceded with the "&" symbol. Example: ^!Keyboard Alt+V O &1000 Ctrl+Tab &400 Ctrl+Tab

^!OpenAscii FileName
or
^!OpenAscii FileName1;FileName2;FileName3
Opens and translates the text from ASCII format to ANSI, or selects the specified document "FileName". You can use wild cards with this command.

^!SaveAscii FileName
Similar to the ^!Save command (and accepts the same parameters) but saves the document using the Dos extended Ascii character set instead of Windows ANSI.

^!OpenEbcdic FileName [/W=nnn]
or
^!OpenEbcdic FileName1;FileName2;FileName3
Opens and translates the text from EBCDIC format to ANSI, or selects the specified document "FileName". You can use wild cards with this command. The optional parameter "/W=nnn" can be used to define a line length for fixed-width EBCDIC files. "nnn" represents the width in characters; a value of 0 indicates variable line lengths delimited with carriage returns. Example: ^!OpenEbcdic /W=132

^!SaveEbcdic FileName [/W=nnn]
Similar to the ^!Save command (and accepts the same parameters) but saves the document in EBCDIC format. The optional parameter "/W=nnn" can be used to define a line length for fixed-width EBCDIC files. "nnn" represents the width in characters; a value of 0 indicates variable line lengths delimited with carriage returns. Example: ^!SaveEbcdic /W=132

^!Export "FileName" [EBCDIC][SELECTION|ALL][LRECL=nnn]
The ^!Export command now also supports the above syntax to create EBCDIC files. You can optionally define a record length (for fixed-width lines) by using the LRECL parameter followed by an equal sign and the width value.

^!LoadEbcdicCharTable FileName
Loads the specified file containing the EBCDIC character tables for conversion to and from Windows ANSI. The NoteTab program path is added if you do not specify a fully qualified path name. The extension .ebc is added if you do not specify a filename extension. You can reset the default character table by specifying the Default.ebc file.

^%AR_KEY%
Predefined variable containing the Clip activation key. It is empty if no activating key was used. Note that this variable cannot contain more than one character. You can clear this variable if you don't want NoteTab to paste it back into the document after the Clip action.

* Added predefined variables:
^%VBAR% = |
^%CARET% = ^

* ^!IfTrue and ^!IfFalse commands no longer allow the use of comparison operators to compare two values. In such cases, use the ^!If command instead.

* The StrPos, StrPosMid, StrPosRight, and StrReplace Clip functions now automatically convert tokens (^p, ^t, etc.).

* Using ^!SetIniFile without any argument now defaults to NoteTab's own ini file.

* ^!SaveValue, ^!ClearValue, and ^!ClearValues can now be used on any section in NoteTab's default INI file.

* The following commands will now force a screen refresh when screen updating has been disabled through the ^!SetScreenUpdate command: ^!Prompt, ^!Continue, ^!Skip, ^!Info, ^!StatusShow, and Clip Wizards based on ^?{...} type fields.

* Comment Clips are now displayed in Info window when invoked by ^!Clip command. If you have a Clip like H=";Comment", then you can display its content with the following instruction: ^!Clip Comment

* Improved behavior of ^!IfInRange, ^!PasteBack and ^!TypeBack.


Clip Wizard:
------------
* The font of the ^!Info box can be customized by the user. Just right click in the text window to open the shortcut menu, then choose the Font command to change the current text font.

* If the last field in a Clip Wizard is a listbox or memo control, then resizing the height of the dialog box will automatically adjust the size of that field.

Open file field, with support for multi-file selection:
^?[(T=O;S=M;F="Text Files (*.txt;*.ini)|*.txt;*.ini")Prompt]
The prompt definition is similar to the standard Open file field but adds the option "S=M". You can assign the result returned by this type of prompt to an array-type variable using the ^!SetArray command.

Checkbox list field:
^?[(T=A)Prompt=Value1|_CheckedValue2|Value3|_CheckedValue4|Value5]
This type of field is defined by the T=A option. Items that are checked by default are preceded by an underscore character. The result returned by this type of field contains all the checked items delimited with the delimiter defined by ^!SetListDelimiter, or a semi-colon with double-quotes around each item. The best way to handle the result returned by this type of prompt is to assign it as an array using the ^!SetArray command.


Bug fixes:
----------
* Fixed a bug that could cause loss of text (truncation) if a null character is inserted in a document.

* Fixed a bug in the HyperLink search command that could cause NoteTab to freeze when the backwards token was specified.

* Search Disk command ignored directories with the Read-Only or System attribute set when the "Include Subdirectories" option was set. Fixed.

* When the search criteria in Search Disk matched only a single item at the very start of the document, the document was skipped. Fixed.

* View | Options | Documents | Trim White Spaces
Now works with outline documents and the [Clip] editor when libraries are saved to disk.

* The Left Align command ignored tabs. Fixed.

* NTP: you could not toggle the bookmarks in NoteTab Pro if the word-wrap is on. Fixed.

* NTP: the "More" statistics was invisible if the default document background color is black (because it is written with black characters).

* Clip errors now indicate correct line number when comments are listed between instructions (note that the actual Clip name is not counted).

* Clip Language: lone "+" and "-" operators are no longer converted to numbers (always 0).

* Clip Language: ^!IfSame "^$GetChar$" "^%Space%" GotoTrue
Comparing spaces now works correctly.

* Clip Language: ^!Select URL
Selecting a URL in an HTML tag failed if there were no quotes around it. Example:
  <a href=http://www.notetab.com>NoteTab Home</a>
produced:
     href=http://www.notetab.com

* Clip Language: ^!Keyboard command now accepts constructs such as ##abc# (which types #abc). Note that the embedded # characters may not be followed by a blank space, otherwise the Clip interpreter will treat it as an end-of-text marker.

* Clip Language: StatusShow window was often displayed with an incorrect size. Fixed.

* Clip Language: The GetOutput and GetInputOutput Clip functions did not capture the standard error stream. Fixed.

* Changing the font color for the Clipbook from the Tools|Clipbook Properties menu had no effect. Fixed.

* Other minor bug fixes...



Changes in Version 4.52
=======================
*  Insert HTML links and images by way of the File Open dialog box. If text is highlighted when the command is chosen, the tags wrap around it. Note that the File Open dialog box always points to the last used directory. Menu:
Document|Insert HTML Link/Image (Shift+Ctrl+F5)

* NoteTab Pro: color of <!-- --> comment tags is now adjustable through the Options dialog box on the Colors tab.

* NoteTab Pro: supports WordStar key mapping (Options dialog box on Advanced tab).

* Disk Search now accepts regular expressions too. Set through the "Find what" field's shortcut menu.

* NoteTab now checks that the size of a newly saved file matches the size of the text. The reason behind this feature is that some people saving to certain servers sometimes experienced a loss of data (truncated files). Although this is not caused by NoteTab, this extra checking may help the eventual loss of data by warning you when the problem is detected.

* Quick List's shortcut menu now offers a "Copy Name" command to copy the file name to the Clipboard.

* Clips: the OnClipboardChange event no longer causes the listbox's selection bar to shift to it whenever it is invoked.

* Minor bug fixes.


Clip Language Enhancements:
--------------------------
* New default label type: Skip_xx
Use this label to skip a specified number of Clip instructions. xx represents a number (positive or negative). For example, Skip_3 will skip the next three lines in the Clip. "Skip" and "Skip_1" have the same effect. These labels do not work in NoteTab Light (unless it is in trial mode).

^!FocusApp AppTitle
Activates the application window with a title caption that matches the specified text. The error flag is set if no matching window is found. For example, if the Windows calculator utility is open, the following command will bring it to the front:
   ^!FocusApp Calculator
Most applications usually show other information in the title bar. For these cases, you can use an asterisk "*" either at the beginning or the end of the AppTitle text to specify that the text should match the end or the beginning of the title respectively. For example, MS Wordpad displays the document name in front of the program name, so the following instruction will work if Wordpad is open:
   ^!FocusApp *WordPad

^$GetAppTitle$
or
^$GetAppTitle(TitleText)$
Returns the full title of the active application window when no title is specified, or the window matching the specified text.

^!IfAppOpen AppTitle GoToLabelTrue [ELSE GoToLabelFalse]
Jumps to the specified label if a window with the indicated title caption is found. For example, if the Windows calculator utility is open, the following command will continue execution after the CalcOpen label:
    ^!IfAppOpen Calculator CalcOpen
Most applications usually show other information in the title bar. For these cases, you can use an asterisk "*" either at the beginning or the end of the AppTitle text to specify that the text should match the end or the beginning of the title respectively. For example, MS Wordpad displays the document name in front of the program name, so the following instruction will work if Wordpad is open:
   ^!IfAppOpen *WordPad WordPadOpen

^!IfLabelExist LabelName GoToLabelTrue [ELSE GoToLabelFalse]
Jumps to the specified label if the indicated label name exists in the active Clip.

^!SetScreenUpdate [On|Off]
Enables or disabled updating of the NoteTab application window. Disabling updating when a repetitive sequence of Clip commands affects the text layout can significantly improve the processing speed. The scope of this command is limited to the Clip (and eventual sub-Clips) where it was invoked. When a Clip ends, screen updating is automatically re-enabled.

^!SetErrorLabel LabelName
Defines a label to which execution should jump whenever the error flag is set. The scope of this command is limited to the Clip where it was invoked. When an error label is defined, the ^!IfError command is ignored.

^!SetCursorPara Row:Col
Similar to ^!SetCursor command but treats long word-wrapped lines as single lines. Both functions have the same effect if word wrap is turned off.

^!OpenFavorites CategoryName
Opens all the documents listed in the specified Favorites list. CategoryName should be specified without a path name or extension.

^!SaveFavorites CategoryName
Adds all the currently open document names to the specified Favorites list. The Favorites category is created if it doesn't exist. CategoryName should be specified without a path name or extension.

^!ShowHeadings [True|False]
Shows or hides Outline heading names in the editor window.

^!ReloadLibrary
Reloads the current Clipbook library. Useful if another application has modified it.

^$GetText$
Returns the whole text contained in the active document.

^$StrSort("Str";CaseSensitive;Ascending;RemoveDuplicates)$
Returns the specified text "Str" sorted according to the defined criteria. For example, the following instruction will sort the lines contained in the Clipboard, in ascending order, ignoring character case, and removing duplicates:
^$StrSort("^$GetClipboard$";False;True;True)$

^$StrPosRight("SubStr";"Str";CaseSensitive)$
Similar to the ^$StrPos()$ function but searches from right to left.

^$StrPosMid("SubStr";"Str";StartIndex;CaseSensitive)$
Similar to the ^$StrPos()$ function but starts searching from the specified index position.

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

^$IsShowHeadings$
Returns 1 if headings are displayed in the outline document window and 0 if they are not.

^$IsHex(Value)$
Returns 1 if specified text is a hexadecimal number and 0 if it is not.

^$HexToInt(Value)$
Returns the specified hexadecimal value as an integer.

^$IntToHex(Value)$
Returns the specified integer value as a hexadecimal number.

^$GetIndexTopicName(Index)$ renamed ^$GetTopicName[(Index)]$
The old name is still kept for compatibility purposes.

^$GetIndexDocName(Index)$ renamed ^$GetDocName[(Index)]$
The old name is still kept for compatibility purposes.

^!CopyFile "FileSpecs" "Destination"
Now overwrites the destination file if it exists (actually sends it to the recycle bin).



Changes in Version 4.51
=======================
* Improved Favorites menu: Category menu items now open up to display their content. Each Category submenu also includes a "Make Default" and "Open All" command.

* Added new functionality to Favorites feature: pressing "Ctrl + Favorites menu item" opens the Save As dialog box configured according to the directory and file name represented by the item. Useful for saving documents in a specific directory or with a predefined name.

* Improved "Strip HTML Tags" function. Comments using <!--...--> tags are now properly removed. List items are preceded with bullets or numbers depending on the nature of the list.

* Toolbar/shortcut menu now offer the Justify and Reformat commands.

* New option to disable warnings when binary characters are substituted in loaded files.

* Document tabs can be configured to make a sound when clicked with the mouse.

* Added support for multiple file masks when doing Search Disk operations: c:\NoteTab\*.txt;*.otl;*.htm*

* New shortcuts to move focus between the Clipbook and the active document: Shift+F4, and between the Quick List and the active document: Shift+F7

* NoteTab Pro now supports the following keyboard actions:
   Ctrl+Up/Down - moves cursor from one paragraph to the next
   Ctrl+Backspace - deletes the word to the left of the cursor

* Added support for basic regular expressions:
   + Find and Replace dialog box:
       click on empty area with right mouse button and choose "Regular Expression"
   + Find and Replace Clipbook commands:
       use new option: "R"
   - Important: the Replace criteria does not support regular expressions at this stage.

-> Regular Expression tokens:
  * = match zero or more of preceding character
  ^ = beginning of line
  $ = end of line
  \ = escape next character
  - = used in [a-z] type expressions
  ^ = negate next character/range in [a-z] expression
  [ = intro for [a-z] expressions
  ] = outro for [a-z] expressions
  . = match any single character

* New option for Find and Replace Clip commands: "C" forces command search for whole words only (see Help for details).

^!SetWordWrap ON/OFF
Clip command to change word wrap mode in active document.

^$Calc(Expression[;Decimals])$
Clip function for calculating mathematical expressions.

^$GetDate(DateMask)$
Clip function for configuring dates and time based on mask.

^$StrFixLines("AnyText")$
Clip function to correct carriage returns in text criteria.

^$IsBookmark(Index)$
Clip function to determine if specified bookmark is used.

^$GetTopicIndex[(TopicName)]$
The GetTopicIndex function can now optionally accept a topic name, and returns its index number.

^!SetHintInfo AnyText
Clip command to turn status bar Clip messages on or off. When you specify text, it will be displayed in the status bar instead of the usual Clip message. To re-enable the display of normal Clip messages, just invoke the command without any text. This command only has an effect during the time the Clip is running.

^!SetIniFile Name
Defines where Clip variables are saved when using the SaveValue command and other related functions/commands. By default, variables are saved in NoteTab's INI file (or registry if so configured). Use this command to define a different INI file. If you do not specify a path in the name, the specified INI file will be created in the Libraries directory. If you plan to distribute your library file, consider giving your INI file the same name as your library file (without the extension); you can use the ^$GetLibraryName$ for this purpose. The scope of this command is limited to the library in which is invoked. It is reset when you change libraries or close the Clipbook. Invoke the command with no name to save again in NoteTab's INI file.
The following commands and functions support an optional section name if you specify an alternative INI file with the SetIniFile command:
  ^!SaveValue [Section:]Key=Value
  ^$GetValue("[Section:]Key")$
  ^!ClearValue [Section:]Key
  ^!ClearValues [Section]

^$GetIniFile$
Returns the name of the INI file defined by the SetIniFile command. Returns a blank string if NoteTab's INI file is used.

^!IfError now supports ELSE labels.

^!Select Eol/Bol now extends the pre-existing selection.

* Improved speed when launching console applications.

* Improved behavior of TypeBack and PasteBack Clip commands.

* Maths parser now supports local decimal delimiter (e.g. Switzerland: PI = 3,14159).

* Added missing topic on "Mask Characters" to Help file.

* Fixed removal of Duplicates option which was ignored by the Sort command.

* Printing through NoteTab from Windows Explorer now works again.

* Fixed bracket matching bug.

* Fixed minor errors in the Clip Assistant library.

* Other minor enhancements and bug fixes.



Main Changes in Version 4.5
===========================
* Many enhancements to the Clipbook syntax. The Clipbook is now programmable. Some of the features are only available in the commercial and trial versions of NoteTab. A warning is displayed in NoteTab Light if you attempt to activate a Clip that uses enhanced code which is not available in the Freeware version.

* You can now double-click in listbox controls within a Clip Wizard as an equivalent to clicking on the OK button.

* Clip names can be "disabled" by placing an underscore (_) in front of the name. The color of the name changes to gray and the user cannot execute the Clip with the mouse or the keyboard. Disabled Clips can, however, be executed from other Clips. Just add another underscore in front if you want such a character displayed in the name but don't want the Clip to be disabled.

* The Clip Assistant now displays Clip Wizards to help develop Clip programs. Only fully operational in the commercial and trial versions of NoteTab.
Menu: Tools|Quick List Properties|Clip Assistant

* Integrated support for Perl and Gawk scripts (through Clipbook commands; see ^!RunPerl and ^!RunGawk).

* Significantly updated the HTML Clipbook library and improved several of the others.

* HTML-Color picker to insert color codes in web page.
Menu: Document|Insert HTML Color (Ctrl+F5)

* NoteTab Pro: Improved HTML-tag highlighting. Entity names are now highlighted, as well as tags containing carriage-returns. Comment tags are highlighted as disabled text (gray by default).

* NoteTab Pro: Optional left-margin ruler to display line numbers (menu: View|Line Numbers).

* NoteTab Pro: You can now jump to a specific paragraph number (as opposed to wrapped lines) with the Search|Go to Line command. Just place a letter "p" in front of the number to signify that it represents a paragraph number rather than a line number (no difference when word wrap is off). For example: "p20" will set the cursor at the beginning of the 20th paragraph. Note that a paragraph, as described here, represents a line that starts from the end of the previous paragraph or the start of the document, and ends with a carriage return or at the end of the document.

* Justify command. This command is only available in the commercial and trial versions of NoteTab.
Menu: Modify|Alignment|Justify

* Reformat Lines command (with option to justify). This command is only available in the commercial and trial versions of NoteTab.
Menu: Modify|Lines|Reformat Lines (Ctrl+Shift+M)

* Count command to count the frequency of a text criteria.
Menu: Search|Count Occurrences

* "Quick Open Links" option under the Tools menu; when set you do not have to hold down the Ctrl key to activate a hyperlink with the mouse.

* Hyperlinks in documents can now launch other programs.

* Improved launching of NoteTab when multiple copies are executed simultaneously.

* Added commands in system menu of Find/Replace/Search Disk dialogs to let you change the default opening position of the window. Set the command "Open Centered" to determine if the window should be opened centered in the screen; turning it off will cause it to open at the current position.

* Added "Round" function to Maths parser.

* "File List" tool renamed "Quick List". You can now specify multiple file-types in Quick List when displaying disk files. Each distinct criteria must be separated with a semi colon (;). Example: c:\images\*.gif;*.jpg;*.jpeg

* New command-line parameter to set Clipbook library: "/L=LibraryName".

* Clipbook: ^!Insert command has been renamed ^!InsertFile.

* New switch for ^!Find and ^!Replace Clip commands: "H", limits search within highlighted text. The option is ignored if no text is highlighted.

* You can now set the font of the Find/Replace fields in the corresponding dialog boxes. Right click on a blank area of the dialog box to open the shortcut menu with the Font command.

* By default, tab drag-and-drop reordering is now disabled when the document tabs are stacked. You can enable drag-and-drop reordering through the tab bar's shortcut menu command "Allow Reordering" or by double-clicking on the tab (toggles the setting).

* Certain NoteTab file types are now organized in subdirectories. The following structure is used:
 NoteTab\
   |_ Libraries\       (takes all *.clb files)
   |_ Scripts\         (can use for Perl, Gawk, and other scripts)
   |_ Sounds\          (takes all *.wav files)
   |_ Favorites\       (takes all *.fvr files)
   |_ Dictionaries\    (takes thesaurus and all dictionary files: *.thr, *.dct, *.udt)
   |_ Documents\       (can use for NoteTab documents: *.txt, *.otl, etc.)
   |_ Templates\       (takes all *.tpl files)

* Changed the way the toolbar icons are loaded. This new method should fix the display problem on systems not running Internet Explorer 4.0 or higher.

* Many minor enhancements and glitch fixes.



The NoteTab Mailing List
========================
The mailing list is a great place to meet other NoteTab users -- friendly people from all walks of life, and ranging from complete beginners to experts. If you are a "newbie", ask some of the "old timers" some basic questions to help get you started. Also use this list to exchange ideas, share neat tips and tricks, ask questions, suggest new features, etc. Whether you are a registered NoteTab user or not, you are welcome to join. And best of all, it is free. You will find more information about this list on the following web page:

   http://www.notetab.com/maillist.htm (main site)
or
   http://www.notetab.ch/maillist.htm (Swiss site)



Hope you enjoy the new features!
--Eric G.V. Fookes

________________________________________________________
NoteTab™ is a trademark of Eric G.V. Fookes, Switzerland 
 Copyright © 1995-2000, Eric G.V. Fookes, Switzerland
              - All Rights Reserved -

Windows is a trademark of Microsoft Corporation registered in the U.S. and other countries.  
All other trademarks and service marks are the property of their respective owners.
