The Semware Editor

Link to SemWare

The SemWare Editor (TSE) is a general purpose plain text editor from Semware Corporation.

Me, I am just an active user of their editor. On this page I share TSE-related information and opinions, as well as tools and extensions I created for it. The tools and extensions are provided "as is" in the form of installable source code. Feel free to use and change them as you like. For editor-related topics you can email me by adressing its three letters at

Disclaimer: Despite my best efforts and intentions I make mistakes, and my intentions might not match your expectations. The tools and extensions on this page are not professional software and are provided "as is" without any garantee. They may contain errors, and they may damage files and thereby anything depending on those files. Use them at your own risk, or simply do not use them at all.

Claimer: All tools and extensions here were at one point tested and used. Most of them are well documented. The modern ones describe and enforce which types and versions of the editor they can be used with. All of them are intended to do what they describe and contain no ads, tracking (*) or malicious functionality.

(*) About no tracking

Obviously the KeyboardLogger and EventLogger extensions are exceptions, because tracking is their purpose. For that they would need to be installed explicitly. They can only track TSE's own keys and TSE's own events, and they only log these to a file on your local computer. In some rare cases I have found them useful as an additional form of debugging.

The editor's key feature is, that its makers first created a programming language of editing commands, and then wrote the editor in that language. This makes the editor itself quite extendible and adaptable, and also allows for creating text oriented tools more easily and quickly than with a generic programming language.

The programming language is called the Semware Application Language (SAL) and is referred to as the editor's macro language. Its production version is well documented in the editor's internal Help system, which is a delight to use. The language is compiled into intermediate code that is interpreted by the editor's core, which comes with a good interactive debugger.

Alas, while TSE is officially still being maintained, its last production release was TSE Pro v4.4 in 2005, and based on its flawed last beta release in March 2021 its maintenance is now down too. The editor missed out on Unicode, and has some other old limits in its language and functionality.

Using its macro programming language users have written extensions for its standard functionality (including a Unicode extension), as well as tools to perform both small and major editing tasks.

TSE beta releases

Beta releases of TSE are not publicly available. You can request them from Semware. I do not know what their criteria for honoring such requests are, but my impression is that these are pretty broad.

There is a Windows TSE Beta
It adds small functional and programming language features.
In my opinion its best new features are its bug fixes, its ability to open more and larger files, and its programmatic capability to determine the current user interface file.
The beta's built-in documentation is hardly and badly maintaned. There now is a file that lists the core functionality of changes.
Alas, the latest beta was released over half a year ago in March 2021 with a bug in both the editor's own syntax hiliting file and in the macros that maintain it.

There is a Linux TSE Beta
As of Linux TSE Beta v4.41.35 it supports ANSI and the Unicode and Keys extensions, which in my humble opinion makes it work well. That said, there are still some minor things that do not work. I mostly notice its lack of support for some Alt and Ctrl key combinations. I think this is because Linux TSE is a console application.

WSL v1
Linux TSE is not compatible with the Windows Subsystem for Linux version 1, because TSE is a 32-bit program.

WSL v2
The latest Linux TSE Beta is compatible with "WSL2", except for one known problem:

From a WSL distribution the Linux TSE Beta cannot browse a Windows folder. It can open a Windows file using its fully qualified name. For example, from Linux TSE you cannot see what files are in the folder /mnt/c/Windows, but you can open a file like /mnt/c/Windows/win.ini by providing its fully qualified name yourself.

One WSL browsing work-around: You can start the Windows version of TSE from a WSL distribution, for example by executing /mnt/c/Users/Carlo/Tse/g32.exe

Another WSL browsing work-around: You can access a WSL distribution's file system from a Windows version of TSE, for example by opening \\wsl$\Debian\ . The 4th backslash is mandatory too!

Default my tools and extensions are not intended to be compatible with the Linux TSE Beta unless stated otherwise. Only some are, though those include some of the most useful ones.

General tools and extensions info

My tools and extensions can be found further on on this page.

Nowadays when I create and maintain tools and extensions I default make them compatible with Windows TSE Pro v4.0 upwards for both the GUI and Console versions of the editor, unless stated otherwise, and I do not support them for lower versions of TSE.

Other people's tools and extensions can be found on SemWare's macro download page.
On the bright side, those macros are distributed as source code too.
On the dark side, those macros

  • are old (January 2012 and older),
  • have not been maintained,
  • might be for old versions of TSE Pro,
  • have a wide range of quality.
Though some of those old macros may not compile in newer TSE versions because of now obsolete statements, the ones that do have a reasonnable chance of being upwards compatible.
When browsing those ancient macros it might be good to know TSE's history.

TSE Pro History

  • TSE Pro v2.5 and below were 16-bit editor versions. Macros written for it might contain 16-bit-specific code that will not run on 32-bit and 64-bit computers.
  • TSE Pro v2.6 and above were 32-bit editor versions.
  • TSE Pro v2.8 was the first stable 32-bit editor version. Macros written for TSE Pro v2.8 and above are likely to be compatible with current TSE versions.
  • TSE Pro v3.0 added undo/redo capability.
  • TSE Pro v4.0 added a GUI version of the editor, besides still fully supporting its old Console version. These are two separate programs.
    Older TSE versions were all Console programs, meaning the editor runs in a Windows console, just like the cmd prompt.
    The main TSE Console-specific features are:
    • It has the same window properties as a cmd prompt, so to resize it you have to enter size numbers in the console window's properties' layout's size fields.
    • Its close button closes TSE regardless of unsaved files.
    • It does have line drawing support, but be aware that these line characters are not compatible with ANSI or Unicode.
    • It does not support ANSI, whatever font you choose, so if you use anything other than ASCII characters then you are a lot less likely to be compatible with other people and software.
    The GUI version of the editor adds better Windows integration.
    The main TSE GUI-specific features are:
    • TSE runs in its own window with GUI window properties. The window is resizable by dragging the borders.
    • It has a user-friendly Close button, that asks to save unsaved files, and can be cancelled if you want to check them first.
    • ANSI support for ANSI-compatible fonts! The GUI's default font is "Courier New", which is ANSI-compatible. ANSI, also known as Windows-1252 and CP1252, is a character set that is natively supported by Windows, and it gives TSE much better compatibility with other software and people. ANSI fully supports the characters of these languages: Bahasa Indonesian, Danish, Dutch, English, Finnish, French, German, Hungarian, Icelandic, Italian, Norwegian, Portuguese, Spanish, Swedish.
    • No more line drawing support when using an ANSI compatible font.
    • Optionally a vertical bar cursor between characters.
    There are some macros written specifically for the GUI version of the editor that will not run in the Console version.
  • TSE Pro v4.2 and v4.4 each added small functional and programming language features.

TSE Pro v4.4 documentation

TSE Pro v4.4 Generated Manual

The above linked manual was generated from the editor's built-in interactive Help system by using the Hlp2txt tool, and is published here with Semware's permission.

The manual was generated as a list of topics based on TSE's built-in Help's Index. Topics are therefore described alphabetically. With the exception of two minor topics, missing because they do not occur in the Index, the content of the manual is otherwise very complete, containing all topics that formerly occurred in the "The User's Guide" and "The Macro Reference Guide".

The main flaw of this generated manual is missing links, mainly from overview topics to detail topics. So the information is there, but the topics are not linked. This is for example painfully obvious in the "Table of Contents" topic.

Nice feature: Notice that selecting a topic provides its URL in the browser's address bar. We can copy and use that URL to provide a link to the topic from an email or document.

TSE Pro v4.4 Undocumented Features

Version: v0.48

Date: 8 Oct 2021

For: TSE PRo v4.4

This document describes features and errata for TSE Pro v4.4, that are not documented in the built-in Help system.

The document's information is subject to updates and tweaks without notice. Only substantially new information is listed below.

v0.47 Made code snippets uniformly syntax highlighted.

v0.48 Added ChrSet() and WordSet.

Current TSE tools and extensions

30 Nov 2021
Windows TSE Pro GUI v4.2 upwards

This extension brightens or dims all the cursor line's existing foreground or background colors by a configurable percentage.

It is intended as an alternative to the TSE configuration options (text and block cursor line) that give the cursor line entirely different colors.

Because TSE can be configured with light text on a dark background or dark text on a light background, the extension can brighten or dim both separately.

It turns out that brightening or dimming the foreground colors requires a large percentage to be visible, and that my preference is to brighten or dim the background colors by a tiny percentage for a subtle cursor line effect.

v1.0.1 Fixed it not actually being backwards compatible with Windows TSE Pro GUI v4.2.

v1.0.2 Fixed the lag in brightening and dimming the cursor line. Improved the documentation.

28 Nov 2021
Windows TSE Pro v4.0 upwards
Windows TSE Beta v4.41.37a upwards

This TSE extension lets you recover a TSE session after a Windows crash.

A session consists of all its _NORMAL_ buffers: their content, file-changed state, and binary mode; all as close as possible to as they were at the moment of the crash.

I created this extension because historically all my Windows home PCs have tended to occasionally crash, especially during the summer months.

v1.0.1 Fixed: If you started typing immediately after starting TSE, then UnCrash could make TSE ignore those initial keystrokes.

v1.0.2 Documented the now known error, that on rare occasions UnCrash offers to restore a crashed session when there has been no crash.

21 Nov 2021
Windows GUI TSE PRo v4.0 upwards with an ANSI compatible font,
Linux TSE Beta v4.41.35 upwards

This extension enables TSE to recognize and edit files for all major Unicode encodings: UTF-8, UTF-16, UTF-32, including their variants; big endian (BE) and little endian (LE), and with or without a byte order mark (BOM).

The Unicode extension requires the Status extension to be installed.

IF you are a user of the EolType extension, then you need to upgrade it to EolType v7. The older EolType versions do not understand the newline characters in the UTF-16 and UTF-32 files we can now edit.

Key features:

  • For Unicode characters that have an ANSI equivalent the ANSI character is shown. Typically this already covers the most frequently used Unicode characters that are not ASCII characters:
    € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
  • Other Unicode characters are shown as quoted hexadecimal Unicode codepoints, using the DELETE character (shown as a square-like character) as quotes.
  • You do not have to remember these hexadecimal codes:
    • The character's Unicode description is shown as a status.
    • You can insert any character into your text by typing part of its Unicode name or description in a shrink-as-you-type list of characters.
  • Viewing the current character in its real Unicode form is possible but default disabled because it works imperfectly.
  • A file's character encoding (ASCII, ANSI, UTF-8/16/32[BE/LE][+BOM]) is shown as a status.
  • You can explicitly change a file's character encoding by right-clicking or pressing [Shift] F10 on the status. Note that this allows you to convert any ASCII, ANSI or Unicode character encoding to any (other) Unicode character encoding.
  • Conversions of character encodings are lossless!
  • ASCII or ANSI files are semi-automatically upgraded to another character encoding when you type a non-ASCII or non-ANSI character.
A lot of the above features can be tweaked in the configuration.

Key lacking features:

  • It does not display non-ANSI characters graphically. ANSI only fully covers languages like Bahasa Indonesian, Danish, Dutch, English, Finnish, French, German, Hungarian, Icelandic, Italian, Norwegian, Portuguese, Spanish and Swedish.
  • It only supports Unicode for the content of files, not for folder or file names.
  • Copying and pasting of non-ANSI characters from and to TSE is not supported.

v2.4 Updated the data files to "The Unicode Standard, Version 14.0" .
For TSE this means descriptions for new Unicode characters and some updated descriptions for existing characters.

v2.4.1 Fixed the rare bug that the extension caused TSE to hang due to a visible infinite loop when opening a specific type of binary file as a text file (i.e. opening it without the -b option).

2 Oct 2021
Windows TSE Pro GUI v4.2 upwards

TSE's color configuration menus refer to 1 fixed palette of 16 fixed foreground colors and 16 fixed background colors.

This extension allows you to make any number of named palettes of 16 foreground and 16 background colors, which each can be any of 16,777,216 RGB colors.

A selected palette is persistent across TSE sessions.

So, if you just want a different shade of red, or you want to match your TSE border and menu colors with your Windows theme colors, or you want to make your own TSE nature or party theme, or you want to create an old green, amber or black-and-white monitor theme, then this is the extension for you.

v1.1 If the ColorPicker tool is installed, then the Palette extension can now use it.
The <Ctrl P> key was replaced by the <Ctrl I> and <Ctrl E> keys to differentiate between using the internal and external color picker.

30 Sep 2021
Windows TSE Pro GUI v4.2 upwards

This tool lets you or your macro pick an RGB color by clicking in a palette of colors.

Theoretically there are 16,777,216 RGB colors. On my monitor the tool will only show about 200,000 colors.

The tool is very slow to start up. If that is not an acceptable price for its awesomeness, then you might want to use an online color picker instead.

Color picker

v1.0.1 Only tweaked the documentation.

11 Sep 2021
Windows TSE Pro GUI v4.0 upwards with an ANSI compatible font.
It partially works in other Windows TSE Pro v4 versions too.

This tool converts a text buffer to an unsaved HTML page including TSE's syntax highlighting.

The result can be used as (a snippet in) a web page.

The result can be also be used in an email, provided that your email client supports the necessary HTML formatting.
This works by saving the generated HTML page, opening it in a web browser, and copying the highlighted text from the web browser into an email.
If an email receiver's email client does not support this highlighting, they still tend to see the text, just not highlighted.

Email clients that have been reported to support this highlighting:

  • Outlook
  • iOS mail
  • Pegasus (if a message wrap option is set)
  • eM Client
  • Thunderbird

For example, the following is not a picture, but text, that can be marked and copied as text:

// Example highlighted code snippet
// generated with this tool.
proc Main()
  string  response [10] = ''
  integer number        = 0
  while Ask('Number?', response)
    number = Val(response)
    Warn('The square of'; number;
         'is'; number * number)
end Main

v1.2 Added a choice whether to generate "style attributes" or "class attributes with a stylesheet" for the HTML colors.

v1.2.1 The documentation was updated with a link to TSE PRO v4.4 Undocumented Features as a practical example of using class attributes with a stylesheet to uniformly highlight code snippets.

28 Aug 2021
TSE Pro v4.0 upwards

This include-file for macro programmers contains compiler directives and procedures that help us create "TSE Pro v4.2 and above"-specific macros that are backwards compatible down to TSE Pro v4.0.

It does so by implementing some of the new TSE Pro v4.2 and TSE Pro v4.4 macro COMMANDS as macro PROCEDURES, and by using compiler directives to only use those macro procedures for the TSE versions that do not support the new macro commands yet, and to use the faster macro commands for the TSE versions that do support them.

Additionally this file contains a group of compiler directives that make the compiler give a clear and specific message if someone compiles the macro with a TSE version before TSE Pro v4.0.

Also it adds backwards compatible names for the component bits of the return value of QueryEditState().

TSE commands implemented as procedures:   -   Their procedure versions:

  • integer proc isAutoLoaded() - 1.0
  • integer proc MkDir (string dir) - 1.0
  • integer proc RmDir (string dir) - 1.0
  • integer proc StartPgm (string pgm_name, string args, string start_dir, integer startup_flags) - 1.0
  • integer proc StrCount (string needle, string haystack) - 1.0
  • integer proc StrFind (string needle, string haystack, string options) - 1.0
  • integer proc StrFind5 (string needle, string haystack, string options, integer occurrence, var integer found_length) - 1.0
  • string proc StrReplace (string needle, string haystack, string replacer, string options) - 1.0
  • string proc VersionStr () - 1.1

Support procedures - Their procedure versions:
  • integer proc compare_versions(string version1, string version2) - 2.0
  • integer proc wurn(string text) - 1.0

v1.7 Added StrCount().

v1.7.1 Bug fix: For Linux WIN32 should be defined, but as FALSE.

25 Aug 2021
TSE Pro v4.0 upwards

This tool can be used to navigate and gain insight into large recursive lists and program source code.

It accomplishes this by compressing text into a list of lines with a certain maximum indentation, which you can control with the Right and Left keys.

For example, it compresses a shopping / todo / notes list of increasingly indented topics and subtopics into a new list of only the (sub)topic lines, where you control which level of subtopics you want to see.

As another example, programs typically use indentation to clarify their structure.
Top-down this tool works somewhat like TSE's "Function List" menu, but with the added capability that it can then include lines with ever increasing indentation, which gives some insight into the program's structure.
Bottom-up this tool shows lines with the current line's indentation or less, which gives insight into what the current line's place in the program structure is.

24 Aug 2021
TSE Pro v4.0 upwards

This is a tool for macro programmers to determine a buffer's best tab size.

Here tab size means how many SPACE and TAB characters are the most consistently used to increase the indentation of a next line. A TAB character is treated as one SPACE character.

For testing you can run it interactively to create a report of found tab sizes and the determined tab size.

It also comes with a GetTabSize_Test tool, which tests and demonstrates GetTabSize by listing the tab sizes for all text files in a folder, defaulting to your TSE folder.
(Aside: GetTabSize_Test has a neat is_text_file(filename) procedure.)

2 Jul 2021
Windows TSE Pro v4.0 upwards
Linux TSE Pro v4.41.43 upwards

This extension integrates some basic git functionality into TSE.

It requires that git is pre-installed on the computer and that the Status macro is pre-installed in TSE.

If the current file is in a git directory, then the its git status is shown on the right-hand side of the screen.

In Windows right-clicking the status (or in any OS executing the Git macro) pops up a menu, from which you can do explicit commits and list and open old versions of the current file.

You can configure the extension to automatically do a "git add" or "git add+commit" after each file save.

New: Open an old version of the current file by selecting it from a commit list.

Fixed: Backwards compatibility with TSE Pro v4.0.

Fixed: The extension is compatible again with Linux TSE Pro v4.41.43 upwards.
Fixed: Giving temporary files a unique name did not work in Linux.
Partial fix: The git extension aborted on git files on "\\" drives. The extension now treats them as not being git files.

Fixed: An occasional, random abort if on-file-save was configured.

11 Jun 2021
Windows TSE Pro v4.0 upwards,
Linux TSE Beta v4.41.35 upwards

This tool lists recent files' names into an editable buffer.

It shows the same content as TSE's "File List Recent" menu, but not as an interactive list from which you can pick and open a file, but as an editable buffer.

11 Jun 2021
Windows TSE Pro v4.0 upwards,
Linux TSE Beta v4.41.35 upwards

This tool lists all open files' names into an editable buffer.

More specifically, it creates a new TSE buffer, that contains a sorted list of the same files' and buffers' names that are interactively shown by TSE's "File List Open" menu.

v1.0.1 Gave the new buffer a significant name. Improved the documentation.

5 Apr 2021
Windows TSE Pro v4.0 upwards,
Linux TSE Beta v4.41.41 upwards

This tool encodes (compresses) or decodes (decompresses) the current buffer to a new buffer it creates.

Its main feature is, that it does so solely with TSE's capabilities, i.e. without any dependency on a non-TSE third-party tool.

It is not compatible with with any other compression tool. It is intended as a helper tool for TSE-specific applications.

v1 There was a v0.2 beta release of this tool. Here is what is new in the v1 version:

  • Changed: After an encoding or decoding error the tool no longer produces a new buffer.
  • Changed: Calling the "Huffman" macro (usage 1) no longer names the new buffer it creates, which pulls its behaviour in line with the other three usages.
  • Added: If their input buffer is 10,000 or more lines, then encoding and decoding show a progress message.
  • Fixed: Encoding plus decoding added an empty line to the end of a non-binary buffer.
  • Fixed: No error was given for the fact that the tool cannot encode a buffer with less than two different characters.
  • Fixed: No errors were given if the number of encoded and decoded/decodable characters did not match.
  • And: Various small tweaks.

11 Mar 2021
TSE PRo v4.0 upwards

This include-file provides macro programmers with the get_drive_type() function, which returns a drive's or a file's drive type, like whether it is on a removable disk, local disk, network drive, compact disk or RAM disk.

Because it uses a Windows function it has the same limits as Windows in recognizing drive types. My personal pet peeve is that Windows sees my harddisks and USB drives (not sticks) as the same drive type.

A get_drive_type_test macro is provided to test and demonstrate get_drive_type()'s use. It lists all your drives and their type.

13 Feb 2021
TSE PRo v4.4 upwards

This include-file for macro programmers provides us with the FastStrFind() procedure as a much faster (*) alternative to TSE 4.4's built-in StrFind() function.

(*) Qualifier 1: Much faster in computer terms. Only macros that use StrFind() thousands of times might become faster to us humans by the use of FastStrFind(). I use FastStrFind() to speed up some file conversions.

(*) Qualifier 2: FastStrFind() is just as fast as StrFind() when searching for a regular expression or a word; it is a lot faster when only using other search options.

A FastStrFind_Test macro is provided to demonstrate FastStrFind()'s use and speed.

1 Feb 2021
Windows TSE PRo v4.0 upwards,
Linux TSE Beta v4.41.12 upwards

Hlp2txt generates a readable help file from TSE's built-in Help system.

The help file can be generated in 4 text formats:

  • PLAIN - Plain text, without any formatting or special codes. It can be viewed with TSE.
  • HTML - This format is great for viewing the resulting document in a browser. The text is thoroughly hyperlinked: Wherever a topic is referenced in the text, selecting the reference will take you to the topic.
  • WORD - This format is HTML without hyperlinks, and with Word-specific things added: a .doc extension, extra headers for subtopics from which Word can create an index, Word-specific embellishment-tips. A document generated in this text format can be embellished with Word into a very professional looking printable manual.
  • GENERIC - This format is HTML without hyperlinks and without Word additions. It is intended for other applications that can print HTML documents.

The help file can now be generated in 3 character code formats:

  • UTF-8 - The default for the HTML, Word and Generic text formats.
  • ASCII - The default for plain text when you use an ANSI font like Courier New.
  • OEM - The default for plain text when you use an OEM font like Terminal.

Generating UTF-8 does NOT require the Unicode macro. Hlp2txt adapts to its presence and absence: If the Unicode macro is active, then Hlp2txt generates quoted Unicode codepoints for non-ANSI characters, otherwise it generates UTF-8 character bytes.

Changes in v2.5:
Fixed: If the user had their own <Grey +> key definition instead of SemWare's default one, then a mostly empty document was generated.
Reindented the source code from tabsize 3 to 2.
Reduced backwards compatibility to TSE Pro v4.0.
Added automatically determining TSE Pro's version for v4.0 and v4.2 too.
Added a selection screen to select the character code format to generate.
Added capability to generate the file in the UTF-8 character code format.
Fixed: Determining the TSE version did not work for the console version of TSE Pro v4.0.
Removed the underlining from HTML links.
Added compatibility with the beta version of Linux TSE.
Changes in v2.5.1:
A few tiny updates, mostly textual.
Changes in v2.5.2:
The overall goal of this release was to improve the usability of the generated manual on this website.
Changed HTML "name" attributes to "id" attributes.
Changed id values to be URL-encoded values to be web-compatible.
Made topic name headers in the text retain their parentheses. E.g. the description of AbandonFile() now starts with the header AbandonFile() instead of AbandonFile.
Fixed menu drawing imperfections involving vertical lines and triangles.
Documented better that this is not an official manual and that it has some minor imperfections.
Some minor tweaks.

22 Dec 2020
TSE PRo v4.0 upwards

This tool asks for a directory and generates a TSE buffer with "rmdir" commands for those directories there that contain no files. Directories containing only empty directories are listed too.

You can examine and edit the resulting TSE buffer, and rename it to a .cmd file to execute it to remove the listed directories.

21 Oct 2020
TSE Pro v4.0 upwards

This tool lists TSE's internal editor version number for one specific file or for all files in a folder.

Fair warning: Even for uber-TSE-nerds it takes an exceptional situation for this tool to be of any practical use.

Context: For different but close TSE releases, the editor and compiler executables and .mac files might still be compatible with each other. This means that macros do not always need to be recompiled for a new release, as is currently already sometimes skipped for .si macros. Whether this is the case is administratively determined by the "internal editor version number" of these executables and .mac files. This tool can list the internal editor version numbers of these files.

20 Sep 2019
TSE Pro v4.0 upwards

This extension makes the use of TSE history lists a lot more efficient.

When in a history list, just start typing a part what you search for to reduce the list to matches with what you typed.

Example 1: This often allows me to only type a file's name without having to supply its folder.

Example 2: By typing "-a" in the history list I can quickly select the previously entered string again that opens all TSE macros.

v1.0.1 fixes the bug, that if you deleted a history entry and without leaving the list immediately tried picking an entry below that, then you got the wrong entry.

29 Aug 2020
TSE PRo v4.0 upwards

This tool shows a list of all files in memory including hidden and system buffers.

You can select a normal file to view it directly, and select a hidden or system buffer to view a copy of its content.

v1.3 recognizes more Semware system buffers and shows a better name for the copy of a selected system and hidden buffer.

26 Aug 2020
TSE PRo v4.0 upwards

This extension will be included in TSE versions released after 23 May 2020. For older TSE versions down to TSE Pro v4.0 you can download it here.

When reopening a file this TSE extension restores the file's previous cursor position.

A regular file is remembered based on its full path and file name.

A temporary file is remembered just based on its file name. This makes it work with tools, that give access to a file outside the local file system by copying the file to an each time differently named temporary subfolder and then call the editor.

The macro is an expanded version of the former TmpState macro, that only remembered cursor positions for temporary files. If you previously installed the TmpState macro, then you are advised to uninstall it in favour of this macro.

v1.4.1 Fixed: Cursor positions should not be remembered for TSE's "<unnamed-n>" files.

7 Aug 2020
TSE PRo v4.0 upwards

This macro logs changes in TSE settings.

At any time you can execute the macro for a report of the history of changes in your settings.

It also had the now obsolete functionality, that it could automatically restore our TSE settings after a TSE upgrade. As of Settings v1.3 this obsolete functionality is configurable and default turned off.

As of TSE Pro v4.41.41 TSE releases will themselves retain the same user settings as the Settings macro formerly did.

If enabled again, then this gets automatically restored after a TSE upgrade:

  • The configuration settings.
  • The window and font position and sizes.
  • The descriptions of your own Potpourri macros (*).
  • Your own user interface if you had one (* and **).

(*) If they have non-SemWare names.
(**) If your old version is at least TSE Pro v4.4.

v1.2 Documented the Settings macro's dependency on using setup.exe for TSE upgrades, if you want Settings to also restore Potpourri descriptions.

v1.3 Default no longer automatically restore TSE settings after a TSE upgrade, because new TSE releases will do that themselves.

24 Jul 2018
Windows GUI versions of TSE Pro v4.0 upwards with a not maximized screen

This TSE extension allows you to temporarily zoom in and out by using Ctrl MouseWheel up and down, and to go back to the original size by clicking Ctrl MouseWheel.

While zooming, the screen size is kept as much the same as possible.

To make a screen zoom size permanent, use the TSE menu "Options -> Save Current Settings".

Zooming out is limited to where letters (have) become to small to read.

Zooming in is limited to where a screensize of 80 x 25 characters would no longer fit, because that might stop TSE's menus from working.

v1.3 Allows disabling its incompatibility warning for TSE's Console version.

27 May 2020
TSE Pro v2.80h upwards

An implementation of Conway's "Game of Life".

v1.2.1 It makes Life also compatible with TSE Pro v4.41.38 upwards.

27 May 2020
GUI versions of TSE Pro v4.2 upwards

This tool tries to lock access to Windows until a password is re-entered.

It has a screensaver!

v1.0.1 It makes ScreenLocker also compatible with TSE Pro v4.41.38 upwards.

27 May 2020
TSE Pro v4.0 upwards

When executed it draws a Christmassy picture.

A.k.a. an experiment in programmed fine-textured drawing with TSE.

Based on a user's input I have extended its claimed compatibility to also include the Console version of TSE, but be aware that unless you yourself pre-set a large screen size and a small font size, the generated picture will have a too low resolution in the Console version of TSE.

v1.0.2 It makes Xmas also compatible with TSE Pro v4.41.38 upwards.

30 apr 2018
Windows TSE Pro v4.0 upwards,
Linux TSE Beta v4.41.35 upwards

This TSE extension enhances TSE by enabling other macros to display extra statuses on the right hand side of the screen, and by enabling them to handle typing and clicking on such a displayed status.

The colour for these statuses, which defaults to the menu colour, can be configured.

The "other macros" should explicitly inform you, that for them to work they require you to install the Status macro first.

v1.2 Added Linux compatibility and some minor improvements, bug fixes and tweaks.

30 Apr 2018
Windows TSE Pro v4.0 upwards
Linux TSE Beta v4.41.35 upwards

This TSE extension enhances TSE by displaying the lengths of the current line, string and word on the right hand side of the screen.

Which of these lengths you want to see can be configured.

The Lengths macro requires the Status macro to be installed.

v1.1 Added Linux compatibility. Added direct access to the status colour in the configuration menu.

1 May 2020
Windows TSE PRo v4.0 upwards
Linux TSE Beta v4.41.35 upwards

This extension will be included in TSE versions released after 30 April 2019. For older TSE versions down to TSE Pro v4.0 you can download it here.


  • When a Find or Replace hilites one of its matches, then all other matches currently on the screen are hilited too.
  • It does so as a side effect to using existing Find and Replace keys without interfering with their functionality.
  • It can hilite once, or it can keep hiliting the last search while you continue editing, and stop hiliting when a configured "stop key" is pressed.

Strong points:

  • It also hilites during a Replace's (Yes/No/...) prompts.
  • You can configure different hiliting colours for the extra matches.
  • It hilites a Replace with the Replace search options.

Weak point:

  • It only hilites for commands started with a configured key.

v1.1 Added Linux TSE compatibility. Increased the existing backwards compatibility with TSE 4.0 upwards.

25 Apr 2020
Windows TSE Pro v4.0 upwards,
Linux TSE Beta v4.41.12 upwards

This tool recompiles all macros in TSE's "mac" folder.

With the exception of macros with an ampersand or parentheses in their name. SemWare has one such macro: "find&do".

v1.0.1 Solves a Linux bug.

v1.0.2 Solves a Linux bug in solving the Linux bug :-(.

20 Apr 2020
Windows TSE Pro v4.0 upwards
Linux TSE Beta v4.41.31 upwards

This TSE extension allows you to assign an editing action to a quickly typed sequence of defined keys or mouseclicks.

It uses a Keys.ui interface definition file in TSE's "mac" folder. Its syntax is like a standard TSE .ui file with some minor restrictions. It does not compile with Macro Compile, but is compiled when you save the file.

For example, I use it in the Windows GUI version of TSE to assign a triple tap of the <.> key to the "…" (ellipsis) character, a triple tap of the <e> key to the "€" (euro) character, a triple tap of the <?> key to the "¿" character, and the tapping of <1></><2> to the "½" character.

Likewise you could for example assign different actions to a double, triple and quadruple tap of the <Home> key.

In Linux it is ideal for typing characters with diacritical marks in the same way Windows does for "international" keyboards. For example, you can enter an "é" by quickly typing the <'> and <e> keys.

More such examples are given in the example Keys.ui file that is included with the macro.

v1.0.1 Solves compile error for the <'> key.

v1.0.2 Adds lots of key definitions in the example file: Especially the diacritics (accented characters) should be a useful addition for Linux TSE Beta v4.41.31 upwards.

21 Mar 2020
TSE Pro v4.0 upwards

For a folder or for a space separated list of folders this tool creates a list of groups of those files, the names of which only differ by a version suffix in the name.

This tool was requested by one user. I created it in the hope that it might have general benefits, but my conclusion is that it does not.

In v2.0 the recognition of versions was rewritten. This was much improved, and is expected to function much better for its requested purpose and type of folders. That said, for general usage it functions slightly better but still poorly.

3 Feb 2020
Windows TSE Pro v4.0 upwards
Linux TSE Beta v4.41.24 upwards

This power tool searches for a list of search terms in a list of files or in all open files.

v1.0 No more known bugs, no new features planned: Out of beta.

v1.0.1 Semware fixed a TSE Linux bug. I fixed BulkFind to no longer work around it. For Linux BulkFind now requires TSE Beta v4.41.24 upwards.

16 Jan 2020
Windows TSE Pro v4.0 upwards
Linux TSE Beta v4.41.20 upwards

This tool is an TEST and EXAMPLE macro for the epoch_to_datetime() procedure, that given a time zone in hours can convert unix's epoch seconds (seconds since 1 Jan 1970 0:00:00) to a year, day, month, hours, minutes and seconds.

v1.0.1 Fixed: Apparently only February can have a leap day.

v1.0.2 Fixed: Apparently November 2019 has no 31st day for 1 second.

8 Jan 2020
TSE Pro v4.0 upwards

This tool asks for a space separated list of folder paths, and creates a new file inside TSE containing a list of the full paths and names of all files in those folders and their subfolders.

Explicitly annotates those top folders and files as "inacessible", that it cannot access because of TSE's 255 character path limit or because a folder or file name is not ANSI compatible. As this implies, the contents of inaccessible folders remain unlisted.

Groups the digits of file sizes.
Now shows the correct size for files larger than 2,147,483,647 bytes for TSE versions from v4.40.95 upwards.

7 Jan 2020
TSE PRo v4.0 upwards

This tool is included in TSE Pro v4.41.37a upwards. For older TSE versions down to TSE Pro v4.0 you can download it here.

Given a marked column block of integers of at most 255 characters wide, this tool will add a line below the block with the sum of the integers.

v1.1 Ignores lines where the column block marks nothing.

6 Jan 2020
TSE PRo v4.0 upwards

This tool can be used as a simple calculator for signed integers of up to 255 characters.

It supports addition, subtraction, multiplication, division, and comparison.

It also contains a separate file for macro programmers, the content of which can be copied as a whole into our own macros to do calculations on big integers.

v1.3 is a finished version.

29 Dec 2019
GUI version of TSE PRo v4.4 upwards

This TSE extension allows you to use the ampersand ("&") as a menu quick-key.

Included is a test macro to test and demonstrate this functionality.

This is a very niche extension for a very, very specific "problem".

19 Dec 2019
TSE PRo v4.0 upwards

This extension lets macros receive parameters from the command line, without TSE trying to load them as files.

Also included is a macro to test and demonstrate this functionality.

11 Dec 2019
TSE Pro v4.0 upwards

This tool assumes that you want to subtract the lines in the current file case-insensitively from the lines in the previous file, putting the result in a new file.

6 Dec 2019
TSE PRo v4.0 upwards

This tool makes ("mak") one file or all files in a folder read-only ("ro"), or it does the opposite.

Note that the read-only attribute is a very light protection in Windows: It is often and easily ignored. Occasionally it is honoured, which makes it slightly better than no protection at all.

v1.0.1 fixed the bug of the tool stopping on the meta-folders "." and ".." being system or hidden folders.

13 Nov 2019
TSE PRo v4.0 upwards

This tool changes a file's indentation primarily by changing its tab size.

Note that the program name has become 1 letter shorter from version 1.

This macro refuses to work for a file with tab characters. If a file has them, then first use any of the many other solutions to get rid of those pesky things.

Some indentation theory I made up:
Indentation can be tab-size-based or alignment-based.
In natural text tab-size-based indentation is typically used for lists of points or to make a block of text stand out as a block.
In programming tab-size-based indentation is typically used to visually group a sequence of statements as the subject of a condition or iteration by indenting lines one single extra tab-size unit.
Alignment-based indentation however can have any size, including not conforming to any multiple of the current tab-size. Alignment-based indentation is generally used to align the first character of a line with a character on a previous line to visually indicate a semantic similarity between the content at those two positions. A rule of alignment-based indentation is, that between the alignment-indented line and the line of the content it aligns with there can be no lines with a lesser indentation.
Based on this theory this tool (and we) can reasonnably recognize these two types of indentation and differentiate between them.
However, if a text uses tab characters instead of space characters, then we would at the same time have to recognize both alignment types and the tab size. That would be non-trivial.
Luckily the days that computer memory was so expensive that the tab character's disadvantages were acceptable have passed. Modern plain text editors default to inserting the appropriate amount of space characters when we use the tab key.
Therefore I chose for this tool not to cater to tab characters and their users.

v2.0 adds, that (typically in program source code) aligned lines are correctly reindented too.

v2.1 changes no functionality. It adjusts the source file extension from .si back to the standard .s. Also its array implementation was completely rewritten to, while more verbose, to be usable in normal macros.

31 Oct 2019
TSE Pro v4.0 upwards

With this TSE extension you can better see control characters, like null, bell, backspace, tab, line feed, form feed, carriage return, and others.

Better: Default the GUI version of TSE with an ANSI compatible font "hides" control characters by showing them as spaces. The Console version of TSE and e.g. the Terminal font show most control characters as regular characters, which is better but does not differentiate them from those regular characters. This TSE extension always shows all control characters and always makes them recognizable and distinguishable.

Note, that in normal/non-binary mode TSE has stripped carriage returns and line feeds from lines, and what is not there will not be shown. Open a file in binary mode -3 (prefix opening a file with " -b-3 ") to see any carriage returns and line feeds too.

In the TSE menu "ASCII Chart" you see control characters 0, 1, 2, 3 ... 31 also as the column "^@", "^A", "^B", "^C", ..., "^Z", ..., "^_". This TSE extension consistently shows a control character as the second character from that last column in the inverted text colour. This way you can always reference the ASCII Chart for the now visible control characters.

v1.0.1 Improved the documentation.

8 Sep 2019
Windows TSE Pro v4.0 upwards,,
Linux TSE Beta v4.41.12 upwards

This TSE extension makes TSE more user-friendly with regard to the case of a file's folder and name.

For Windows it makes TSE show a file's path as it is cased on disk. For example, in Windows TSE has no problem opening "tse\MAC\adjust.s", but by itself it would keep showing "MAC" in upper case.

Its first Linux feature allows you to case-insensitively open a specific folder or file.

Its second Linux feature adds, that if you renamed only a file's case in the editor, then upon saving it to disk the disk file is renamed too, just like in Windows.

8 Sep 2019
Windows TSE Pro v4.0 upwards,,
Linux TSE Beta v4.41.12 upwards

I have written and downloaded lots of macros for Windows with upper case letters in their names. My user interface file has lots of ExecMacro commands that reference them. And lots of those macros reference each other with ExecMacro commands. Whether these references were in the same case did not matter, because Windows is case-insensitive.

Now there is a case-sensitive Linux TSE beta.   Oops!   Porting problem!

This tool repairs ExecMacro commands in all opened files that contain an ExecMacro with a differently cased macro name than its disk filename.

Linux-specific example:
In a UI or macro file the command ExecMacro('Adjust') does not work if the macro's disk name is tse/mac/adjust.s .

With this macro you can repair one or all ui and macro files in one go, check its report and unsaved changed files first, and if you are satisfied with the result, then you can save them all and e.g. use the Recompile macro to recompile them all.

14 Jun 2019
TSE Pro v4.0 upwards
Without this TSE extension, if you do not type for some seconds, then the cursor stops blinking.

The problem is not TSE-specific. It was introduced by a new Windows version, and occurs in other applications as well unless they started compensating for it. For instance, Notepad still has the same problem.

17 May 2019
TSE PRo v4.0 upwards

ReplaceUnCom emulates TSE's Replace command but only replaces in uncommented text.

v0.2 == v1.0:

- Optimized the comment colour check with a regular expression.

- Added the three ToEOL attributes as comment attributes too.

- Added the check that comment colours must differ from other editing colours.

9 May 2019
9 May 2019
TSE PRo v4.0 upwards

This tool will be included in TSE versions released after 9 May 2019. For older versions down to TSE Pro v4.0 you can download it here.

This tool is a minor update to SemWare's standard Potpourr macro that implements TSE's Potpourri menu.

This version of the tool only differs in that it accepts macro names of up to 12 characters instead of 8.

8 Feb 2019
TSE PRo v4.0 upwards

This is a TSE extension that enhances TSE's end of line type handling when editing non-Windows files with TSE.

The EolType macro requires the Status macro to be installed.

TSE itself already does a reasonable job of handling end of lines for those non-Windows files that:

  • AND exist on disc,
  • AND are not empty,
  • AND have a correct end of line type.
It does so implicitly: You don't know a file's end of line type.

This macro fills the gaps:

  • It also lets you CREATE non-Windows files,
  • it adds the correct end of line type to files that were empty,
  • it can be configured to repair files with the wrong end of line type,
  • it lets you change a file's end of line type.
It does so explicitly: Default it shows you everything concerning a file's end of line type.

You might edit non-Windows files for instance:

  • on a network drive that is mapped to a Unix, Linux or Mac machine.
  • by using a remote-machine-browsing-tool like WinSCP or Total Commander, which you have configured to use TSE as its editor.
  • when editing a file you downloaded from the internet.

v7 Added understanding the newline characters in UTF-16 and UTF-32 files.

21 Jan 2019
TSE PRo v3.0 upwards

This tool creates a new file from the current file, where every line containing a supplied regular expression is put before itself and before every next line that does not contain that regular expression.

Afterwards you can use existing TSE functionality to search all lines in combination with their tag lines, or to sort the now ubiquitous tag lines on their columns.

When you are done you have the option to remove the inserted tag lines with a column block to get the original file format back.

For example, given the file content:
  street="Main street"
  street="Station street"
It can create the new file content:
  id=1 id=1
  id=1 name="Bob"
  id=1 street="Main street"
  id=1 city="Metropolis"
  id=2 id=2
  id=2 name="Alice"
  id=2 street="Station street"
  id=2 city="Gotham"

16 Jan 2019
TSE PRo v4.0 upwards

This tool is included in TSE Pro v4.41.37a upwards. For older TSE versions down to TSE Pro v4.0 you can download it here.

This tool is an alternative to TSE's built-in List() and lList() commands.

As you type the list shrinks to those lines matching what you typed.

It also works as a stand-alone macro or command to dynamically search the current file.

In my humble opinion it is a more useful alternative to TSE's own incremental search functionality.

What you type is interpreted as a TSE regular expression.

v1.0.1 Solves the problem of how to supply a list title when using the macro as an include-file.

3 Jan 2019
TSE PRo v4.0 upwards

This TSE extension logs all your TSE keystrokes and which file you did them in, default to a Log\Tse\KeyboardLogger folder in your personal folder.

Each TSE session creates a unique logfile YYYYMMDD_HHMMSS_WWWWW.txt based on the start-time of the session.

v1.1.1 Documented that and why KeyboardLogger needs to be installed below CuaMark in TSE's Macro AutoLoad List.

8 Nov 2018
Windows GUI versions of TSE PRo 4.0 upwards

This TSE extension is a near-perfect solution to the problem, that if you access many files at once, and many or all of them have longer lines than TSE's limit, then TSE forces you to press "OK" on a separatete warning for each such file.

With this macro installed you only get a warning for the first such file, after which ALL warnings are disabled, but only for the duration of the current user command.

For instance, if you open a 100 files using the "-a" option and a wildcard character, and you then search them all at once using the "a" search option; then this macro ensures that that you have to press OK at most once on a "Long lines split: ..." warning, even if all 100 files have them.

11 jul 2017
TSE Pro v4.0 upwards

Out of the box this TSE extension enhances the editing of TSE macro source code by setting its keywords to their default UPPER, lower, and CamelCase as you type.

Its configuration uses the delimiters and the casing of keywords from TSE's syntax hiliting configuration.

For TSE's macro language it can set keyword casing back to its default values if you ever lost them, which unfortunately a hidden TSE feature can trick you into doing.

It can be turned on and off per mapping set of TSE extensions. As this implies it can be enabled for other languages as well.

With one of those other languages in mind; you can configure non-keywords to be UPPER or lower cased.

v6 of this TSE extension does not support all TSE syntax hiliting configuration's delimiters and their options.

Elsewhere on this page there is a BETA v7 version of this TSE extension that only works for TSE Beta v4.41.19 upwards.

29 jun 2017
TSE Pro v4.0 upwards

This TSE extension does the following:

When you double tap the F1 key when editing a TSE program, then TSE's Help is called for the word at the cursor, otherwise the F1 key works as usual.

v1.0.1 Fixed: It did not work in .ui files.

21 apr 2017
TSE Pro v4.0 upwards include-file

TSE itself is "only" capable of sorting lines by sorting them alphabetically on a marked block of text.

With the help of this include-file it is relatively easy to create or modify your own macro to sort lines on any criteria.

All you need to do, is to write a "quicksort_compare" function that accepts two line numbers, and returns -1, 0, or 1 whether you want the first line to be before, whereever or after the second line.

The include-file contains a "quicksort(line_from, line_to)" function that by calling your function sorts ALL requested lines.

An example macro QuickSortTest.s is included.

Warning Later usage revealed, that TSE runs into irregularly occurring memory problems when quick-sorting large files.

1 jan 2010
1 jan 2010
This macro takes the current column-position, and uses this for the rest of the file.

If two consecutive lines have case-insensitive the same word overlapping the above column-position, then the second line is deleted, from the current line onwards.

If there is no word on the column-position, then no line is deleted.

4 oct 2009
TSE Pro v2.5e upwards
This search-macro will show a list of the found lines, with additional lines before and after the found lines.

v1.3 adds hiliting the search-results and some minor improvements.
5 jun 2008
5 jun 2008
Not tested, but at least TSE Pro v4.0 (GUI) upwards
This is not a stand-alone macro.

It could be used by other macros to browse directories and select one.

Its source is useful as an example of what a macro can achive with mouse clicks.

6 apr 2008
TSE Pro v2.5 upwards
Find double lines case- and whitespace-insensitive in an unsorted current file, and report them in a "ViewFinds buffer", leaving the current file unchanged.

Here whitespace-insensitive means that any non-empty string of consecutive whitespace-characters matches any other such string.

Here the whitespace characters are space, horizontal tab, and formfeed.

FndDubLn ignores characters past column 255.

v1.0.1 Fixed: The macro could not handle empty lines, resulting in erroneous reports. The macro now ignores empty lines and lines containing only whitespaces.

28 oct 2007
TSE Pro v3.0 upwards
This macro changes the date/time of all files in a given directory and all its subdirectories by adding or subtracting an amount of time.

It was originally written to make the files on a LAN server an hour older (by adding -1 hour) to solve a synchronization problem when the outside world was about to switch from summertime to wintertime.

When the outside world switched from summertime to wintertime, and clocks went an hour back, then file-times on Windows pcs also went an hour back (*), but file-times on a LAN did not. So if files on Windows pcs were synchronized from a LAN-directory based on date/time, then the switch to wintertime suddenly made files on Windows pcs appear one hour older than the same files on a LAN, which inadvertenly triggered synchronization.

(*) There are also advantages to this: A running Windows process doesn't see a just created file suddenly becoming an hour older or newer. Which for instance also means that a process cannot create files "in the future" :-)

The macro prompts for:
  • The directory.
  • The type of time-unit: years, months, days, hours, minutes, seconds.
  • The positive or negative number of time-units to add.
  • Whether to Simulate or Make the changes.
Use this macro at your own risk. It is not perfect.
Always do a simulation first, and especially search the resulting report for "overflow", which means that a certain date/time will not be changed.
12 aug 2007
TSE Pro v3.0 upwards
This macro protects you against (accidentally) opening unwanted files, like "*.bak" files, or like files in Subversion's "\.svn\" meta-directories, or whatever.

Especially when you use TSE's -a and -s options and wildcards you can and want to open whole direcories or directory trees of files, but without those pesky exceptions.

This macro notices it when you try to open such files, and asks your confirmation to NOT open them.

You get one question for each File Open command that results in opening such files, and your answer applies to all files opened by that specific File Open command.

You are asked the question only when the editor is otherwise idle, so that the macro doesn't interfere with other macros.

For the same reason the macro internally works by letting TSE open the files, and then closing the unwanted ones.

The macro works by matching the names of opened files against a TSE regular expression, and asks the user a question to confirm to not open the matching files.

You can configure your own regular expression and question by executing the macro. The default configuration is for .bak and Subversion metafiles.
3 aug 2007
TSE Pro 2.5e upwards
When executed it abandons or keeps opened files based on a certain string in their drive, path and/or filename.

v3.0.1 Improves the warning if too many files were opened. v3.0.2 Solves a nasty bug which sometimes caused AbanName to incorrectly load one file as if it were an empty file.
1 jul 2007
TSE Pro 2.5e upwards
This macro allows you to search in a gigantic amount of files.

TSE lets you open files without loading them, thus avoiding a memory limit. Contrary to TSE's own Find command, this macro can search across files only temporarily loading one file at a time, thus also avoiding a memory limit.

The macro can also "Find and Do" to Keep or Abandon files containing a certain string: You can do this multiple times, thus step by step zeroing in on a smaller and smaller selection of opened files.

Improves the warning if too many files were opened.

Removed the dependency on and
Added a pre-emptive check (including for regular expressions) to warn the user, that there is no use in searching for an empty string.
6 Jun 2011
TSE Pro 2.5e upwards

This tool lets you run TSE commands from the Macro Execute menu. From TSE v4.40.25 onwards you can alse run Execute as a macro to apply from from the corresponding Find&Do submenu.

Used from the Macro Execute menu it is great for testing a TSE command, or short sequences thereof.
For example:

Macro Execute: Execute Warn('Hello world at'; GetTimeStr())

You can not download here.

I chose not to duplicate it here, because it has not changed since it was uploaded to SemWare's TSE Pro macro files page.

Beta versions of TSE macros

v7.0.0.0 BETA
28 Apr 2021
TSE Pro v4.41.19 upwards

This SynCase BETA was initially created to address a bug in TSE Beta v4.41.45. That TSE bug is not solved by this TSE extension; that awaits Semware's solution. This BETA does address all of SynCase's own known failings, and should work well with .syn files from before TSE v4.41.45.

Out of the box this TSE extension enhances the editing of TSE macro source code by setting its keywords to their default UPPER, lower, and CamelCase as you type.

Its configuration uses the delimiters and the casing of keywords from TSE's syntax hiliting configuration.

For TSE's macro language it can set keyword casing back to its default values if you ever lost them, which unfortunately a hidden TSE feature can trick you into doing.

It can be turned on and off per mapping set of TSE extensions. As this implies it can be enabled for other languages as well.

With one of those other languages in mind; you can configure non-keywords to be UPPER or lower cased.

New in SynCase v7 is, that it now supports all delimiters and delimiter options from TSE's syntax hiliting configuration.

7 May 2020
Windows TSE Pro v4.4 upwards

This TSE extension allows us to open URLs that occur in the text.

This is a very early beta with known imperfections and lots of missing features.

Planned features include: Opening URLs that do not start with "http", opening files, highlighting openable URLs and files in the text, some backwards compatibility, some Linux compatibility.

22 Sep 2019
Windows TSE Pro v4.0 upwards,,
Linux TSE Beta v4.41.12 upwards

This TSE extension can log TSE events visually and/or to a file.


This occurs in the window's title bar, where it does not interfere with what happens in the editor. It is very slow, because it has to pause for you slow user, but it lets you see everything simultaneously as it happens.

In Linux for me using Putty the visual logging appears in the Putty title bar, but it works very badly. Perhaps Linux needs a Message() instead of SetWindowTitle(), but that would interfere with the screen.


This is fast, but reviewing the log afterwards requires more interpretation.

The macro can be configured by adjusting "Configuration Constants" at the start of the source code before compiling and loading the macro.

In development

Demo TSE macros

26 Feb 2021
Windows TSE Pro v4.4 upwards
Linux TSE Beta probably any version

This is an include-file for macro programmers, that provides the functions repeatable_lFind() and repeatable_lRepeatFind(), that unlike their TSE counterparts do not loop infinitely for a search with the "a" search option.

A demo/test macro is included too.

v1.0 - 20 May 2020
Windows TSE Pro v4.0 upwards
Linux TSE Beta probably any version

This tool lists what keys TSE can send to itself, when it is not interfered by an operating system or other software, and without the limitations of a keyboard.

It gives some insight into TSE's internal key capabilities and limitations, but otherwise has no practical use.

v0.1 - 6 Apr 2020
TSE Pro v4.4 upwards

This is a quick&dirty adaptation of Semware's "match" macro dd 6 Apr 2020.

Like the Match macro, for the bracket under the cursor it jumps to its counterpart, but as requested by a user it ignores any in between commented brackets. So it "matches uncommented" brackets. [Is that even English?]

I do NOT recommend substituting Match by MatchUnCom. MatchUncom has known flaws:

  • It blindly assumes that comment colours are always delimiter colours, which for some configurations might be false.
  • It is badly tested. The user's example test case worked on the first try, and I didn't test any further.

Version: Unknown
4 may 2006
Compatibility: Unknown

This example macro asks for a regular expression, and calculates the minimum length it can match.

The usefulness of this macro lies primarily in that it contains a procedure which can be copied into your own macros.

Often regular expressions that can match an empty string are not useful. Worse, they can also be dangerous when used for searching inside a loop, which can then become infinite because the empty string always matches without advancing the cursor. This macro [procedure] returns zero for such regular expressions, and thus helps you and your macro recognize and avoid useless and dangerous searches.

Not maintained and experimental TSE macros, in various states

23 Jul 2021
TSE PRo v4.0 upwards

This tool was created for one specific user at their request. I generalized their request a bit, but I doubt this tool is useful to others.

From a file with search-recognizable keywords, generate keyword-named files, each containing the lines with their keywords.

13 Sep 2019
TSE PRo v4.0 upwards

This is neither a finished nor a well-working macro.

I do not see a way forward, so I am abandoning this one.

The intention was to show "best matches first" for a search string applied to the current file, BUT:

  • Intentions turned out to be hard to catch in programming logic. I experimented with applying a weight to results, but this did not work satisfactory.
  • Implementing intentions turned unavoidably into implementing my own biases, and worse, my current biases based on my current purposes. That made it impossible to make this a generic tool.
  • For larger files it worked too slowly. I reduced the searched number of results, but that reduced the results. Sadness and pun intended.

6 jan 2008
The LoadTime macro.       Compatibility:   TSE Pro 4.0 upwards.

Shows not only the current date/time of the current file on disk, but also the date/time the current file had on disk at the time it was loaded.

If TSE warns a user "Disk file has been changed by another program. Save Anyway?", then this macro lets a user verify that warning.

29 mar 2009
v1.1 of the WinWrap macro.       Compatibility:   TSE Pro 4.0 upwards.

This macro lets you view long lines window-wrapped while still editing the original unwrapped lines.

Disclaimer: No it doesn't. This macro works imperfectly.


v1.1       29 March 2009
A tilde indicator in the statusline shows if the file is in WinWrap mode. That only means that the file contains wrapped lines somewhere, not necessarily in the visible window.

v1.0.2       26 March 2009
Solved: Auto-wrapping wasn't delayed when the macro was autoloaded and TSE was started with a file.

v1.0.1       26 March 2009
Solved: The macro didn't compile for TSE Pro 4.0: the isAutoloaded() function doesn't exist yet in that version of TSE.

16 mar 2009
The CurColr macro.       Compatibility:   TSE Pro 4.0 upwards.

This macro changes the color of the cursor position: if the background color equals the one configured for TSE's cursorline, and: either only when the cursor is not on a visible character, or always.

The occasion for this macro was a user who uses a TSE color "intense ... ... on black" (which means a dark grey background): for this background color TSE doesn't show the cursor if the cursor position is a whitespace.

10 mar 2009
Version 1.1 of the CblComnt macro.       Compatibility:   TSE Pro 2.8 upwards.

This macro remedies three potential Cobol issues:
  • All TSE Pro versions are not capable of coloring columns, neither column 1 thru 6, nor column 73 to the end of line.
  • Cobol versions up to and including Cobol-85 indicate comments by putting an asterisk or a slash on column 7. Since version 3.0 TSE Pro supports this with to-end-of-line syntax hiliting if a configurable character is present at a configurable column. TSE Pro 2.8 users need this macro to do the same.
  • For old versions of TSE (but >= 2.8), which don't have a Cobol syntax hiliting file yet, you can install one.
Note: the macro can also be configured for syntax-hiliting Fortran comments.

25 Feb 2013
An incomplete but fast Subversion browser.       Compatibility:   TSE Pro 4.0 upwards.

I consider this macro OBSOLETE. It was written because TortoiseSVN versions prior to 1.8 needed minutes to open a folder with thousands of files in it. This macro could do it immediately.

In TortoiseSVN 1.8 this problem was solved, so I saw and see no reason to finish or maintain this macro.

For Subversion repositories I recommend TortoiseSVN instead of this macro.

13 dec 2009
v1.3.9.1 (not-working failure) of the eVwFinds macro.       Compatibility:   None.

The idea was to create a menu with both fillable fields and normal menu lines, but I cannot get it to work correctly. Usually I like the challenge of taking a tool past its intended use, but this has by now wasted way too much of my time, so I'm dropping it indefinitely.
26 nov 2009
v1.3.9 (working beta) of the eVwFinds macro.       Compatibility:   TSE Pro 2.5e upwards.

It isn't even a real beta: it is just a half-built version 1.4.

You could also look upon it as a progress report.
1 apr 2007

v5.1 (beta) of the EolType macro.       Compatibility:   TSE Pro 2.5e upwards.

This OLD macro version is kept for OLD TSE versions.

I downgraded this macro to beta status, because the 5.0 to 5.1 changes were not tested yet. Please report any reproducible errors you might find.

Save files with a unix/microsoft end-of-file-type based on configurable substrings that do/don't occur in the files' full filenames.
Possibly handy when working with a Samba drive, Total Commander, WinSCP and other such tools.

Version 5.1:
Since the previously to SemWare's website released version was 1.0, the "new" features are:
  • The substrings no longer have to start with a drive letter.
  • Configuration file tse32\eoltype.dat became tse32\mac\eoltype.cfg.
  • You can now configure what end-of-line-type warnings and questions you want when saving a file whose end-of-line-type is as configured being changed by the EolType macro.
7 dec 2006
v0.1.0 of the SyncDir macro.       Compatibility:   TSE Pro 2.8b upwards (probably).

This macro synchronizes (by ftp) directories from a pc to a server and/or back.

I use it after changing my offline website to update my identical online website. I have a syncdir.bat file that simply contains:
      @call \tse32\g32.exe -eSyncDir

The macro needs from SemWare's website to be installed first.

Like the version number indicates, the macro was and is a bit of a hack for my personal use, and is provided as is, with no garanty whatsoever.
12 nov 2006
v0.0.1 of the sFind macro.

Purpose:   Search for a string which might span lines.

This is not a working macro! It is only half built. I am just sharing what I have been working on.

This macro's theory is, that you can search for a string which spans lines by putting a "slide" of lines under a "microscope", and moving the slide from the beginning to the end of the file in such a way, that the macro can use TSE's own Find command search each slide as if it was one line!

Well, the slide part is largely implemented, the search part not at all. When implementing the search part, it will have impact on the slide part, which probably needs a little extending then.
9 nov 2006
v0.10 of the MLformat macro.   Actually, this is a not implemented macro!   It is just a documented plan of attack for a first version of an HTML and XML formatter.

Given Tidy as an alternative, I won't proceed with building this macro.
13 sep 2005
Database v0.01 for TSE Pro 4.0 upwards.   Specific perpose: allows TSE to be configured as an external tool of PL/SQL Developer .   For starters for the viewing or editing of a package (body) that is active in the browser-pane of PL/SQL Developer.   Requirement: the macro needs an Oracle MsDos SqlPlus client.
5 sep 2005

This version is for historical purposes while the new version is being developed.

V0.5 (a buggy beta) of the WinWrap macro, formerly known as the ScrnWrap and LongLine macro.   This is a windowwrapper, as opposed to a filewrapper.   It wraps lines that are longer than the current window is wide, but it only wraps them on-screen, not in the editing buffer or the disk-file.   It therefore does not interfere with most editor functions.   However, it therefore does interfere with syntax hiliting, block marking, find marking, the "[End of File]" indicator, and the WhtSpc macro.

New in Version 0.5:   Made the macro deactivate itself when there is blockmarking in the current window, and reactivate itself as soon as there isn't any more.   If the WhtSpc macro is loaded, then it is deactivated during wrapping, and reactivated as soon as there is no more wrapping.   Executing the macro now toggles it on and off. Alas, turning it on again is subject to a known bug.

I will not not develop this macro any further, because I have concluded that the current approch is not fully compatible with TSE's implementation. TSE has a (for this macro's purpose) nasty habit. "Normal" screen updates can immediately be corrected and overwritten by hooks, but screen updates as the result of scrolling can only be corrected with the _idle_ hook, which happens so much later that it causes the screen to flicker. Besides that there is a "no screen updating" bug.   I have concluded that the current approach of creating a reformatted screen over the image of the original file will never work satisfactory. Another approach might be temporarily formatting the file itself, and (e.g. before saving) being able to reformat it back. A second alternative might be to show a formatted shadow-file to the user.   That said, this macro's functionality is so low on my list of priorities, that its development is hereby stopped.
7 jun 2005
ReadReg macro.   This is not a practical macro, just a demo for macro programmers.   It demonstrates how to read the values of a Windows registry key from TSE.
18 apr 2005
Just an exchange of ideas, this macro has no permanent value.   This zipfile contains new2.ui, based on Sammy's new.ui from his   New2.ui does not have fixed menus for menu_styles and key_bindings, but those menus are generated based on the existence of *.menus.s and *-keys.s files.   All a user has to do is copy a *-menus.s or *-keys.s file to another *-menus.s or *-keys.s file (with a new name of course), and TSE will instantly offer it as a new menu choice.
14 jan 2003
Example of User Interface adjustment outside .ui file.
30 mar 2001
Convert EBCD to ASCII, or back.
16 nov 1998
Sorts an ASCII file in EBCD order.

These webpages are created and maintained with The SemWare Editor Professional