🏠

The Semware Editor

In Development or Planned

v0.0.0.28
1 Aug 2025
Windows GUI TSE v4.2
Windows Console TSE v4.2 (Hiliting does not work)
Linux TSE v4.50 rc 13 (No hiliting if no RGB)

"Paragraph" is in development!

Latest development changes:

  • Completely changed the user experience by introducing "paragraph edit mode". In normal edit mode Paragraph default does nothing except hiliting the cursor line if that is configured. Paragraph edit mode continuously hilites the current paragraph, and formats it if you modify in it.
  • Show paragraph character ¶ in the status line when in paragraph edit mode.
  • New configuration options for keys. ( Cool nerdy fact: These menu options have 2 values; 1 for their function and 1 for their key! )
  • Tested Paragraph to work in Console TSE and Linux TSE within their limitations.
  • Added/removed bugs to/from the todo list.

 

TODO

  • MUST
    • A lot more testing of paragraph formatting.
    • Minor positioning bug if you modify farther past the end of a line.
    • Facilitate external key definitions.
    • Try fixing the cursor line's delayed hiliting update.
  • SHOULD
    • Make bullet points configurable. Currently only "-" is an understood bullet point character.
    • Limited functionality to export/import "Text" files to/from Word (et al.)
      I am thinking just paragraph-format and some bullet-points.
    • Mark a paragraph or a sequence of paragraphs.
  • COULD
    • Implement comment-based "Program" formatting.
      For a file of type "Program" this will use the comment delimiters from TSE's syntax hiliting definitions to comment-aware format one paragraph in a comment.
    • Implement extension-based formatting for text between tags.
      For example "plain" text between HTML or XML tags.
      Here "plain" could allow some tags but not others, which could lead to a flood of required implementation.
      This might also need a new format type.
    • A key directly to a menu to set the current file's format type?
    • In a program in a to-end-of-line comment make the <Enter> key create a new to-end-of-line comment line.
    • Recognize numbered lists.
  • WONT
    • Reduce the annoyingly wide menu proportionally to the actual widths of the key name fields. Doing this would cost an even more annoying amount of time.

 

HISTORY

  • v0.0.0.28   1 Aug 2025
    • You can now configure a key to directly invoke the format type submenu.
  • v0.0.0.27   24 Jul 2025 (3)
    • Fixed all remaining bugs regarding the paragraph edit mode indicator.
  • v0.0.0.26   24 Jul 2025 (2)
    • Fixed the bug, that if no other mode indicators were shown (insert mode, autoindent mode, ...), then the paragraph edit mode indicator was not shown.
  • v0.0.0.25   24 Jul 2025
    • Show paragraph character in status line when in paragraph edit mode.
    • Tested Paragraph to work in Console TSE and Linux TSE within their limitations.
    • Added new bugs to the todo list.
  • v0.0.0.24   23 Jul 2025
    • Removed the format type "AutoText" from the configuration menu. I no longer see a use for it.
  • v0.0.0.23   22 Jul 2025
    • Completely changed the user experience by introducing "paragraph edit mode". In normal edit mode any paragraph hiliting is turned of, and nothing special happens. In paragraph edit mode the current paragraph is hilited and is reformatted if you type in it.
    • A new configuration option facilitates this.
      ( Cool nerdy fact: It is a menu option with 2 values! )
    • Fixed 2 bugs in paragraph formatting.
  • v0.0.0.22   18 Jul 2025
    • Extended the documentation.
    • Completely rewrote paragraph formatting, and turned it on again.
    • Added a strong warning to never indent the first paragraph's first line.
  • v0.0.0.21   15 Jul 2025
    • Also warns if "Paragraph" is loaded after "Unicode".
    • Completely rewrote paragraph recognition. It should work better now.
    • Temporarily disabled paragraph formatting, because it is broken now.
    • Abandoned Console TSE for now, because it does not support RGB colors.
    • Added enforcing TSE variant and version restrictions.
  • v0.0.0.20   24 Jun 2025 (2)
    • Fixed yet another text formatting bug.
  • v0.0.0.19   24 Jun 2025
    • Fixed another text formatting bug.
  • v0.0.0.18   23 Jun 2025 (2)
    • Fixed 3 text formatting bugs.
  • v0.0.0.17   23 Jun 2025
    • While making errors it did format its first text paragraph.
  • v0.0.0.16   17 Jun 2025 (2)
    • Make paragraph hiliting immediate instead of delayed.
      There is some partially delayed cursor line hiliting, but I think the result looks nice.
  • v0.0.0.15   17 Jun 2025
    • Fixed that I got the macro load order wrong.
      If both are used, then "Paragraph" needs to be (auto)loaded before FileTabWidth, because TSE executes macro hooks in reverse macro load order.
  • v0.0.0.14   16 Jun 2025
    • Now checks for and ignores files with tab characters.
    • If FileTabWidth is installed, Paragraph now checks FileTabWidth to be loaded before Paragraph, so FileTabWidth can remove tab characters before Paragraph engages.
  • v0.0.0.13   15 Jun 2025
    • Paragraph hiliting works per my current requirements.
      This implies that paragraphs are accordingly correctly recognized.
  • v0.0.0.12   14 Jun 2025 (3)
    • Paragraph hiliting reacts better. At least one minor flaw remains.
  • v0.0.0.11   14 Jun 2025 (2)
    • Cursor line hiliting now works without lag.
  • v0.0.0.10   14 Jun 2025
    • Paragraph hiliting is now officially incompatible with CursorLine brightening/dimming.
      If their configurations conflict, then the user gets a warning and the CursorLine extension is purged from the current TSE session.
    • Paragraph can now do cursor line hiliting itself, and better, because you can configure a positive or negative percentage per RGB color, making the line more or less redder, greener and bluer.
    • Paragraph's paragraph hiliting and cursor line hiliting are cumulative, meaning their combined coloring for a cursor line in a paragraph is a color that differs from both.
    • Remaining issues:
      • Paragraph hiliting needs finishing up.
      • Cursor line hiliting is laggy.
  • v0.0.0.9   11 Jun 2025
    • Unhiliting a previously hilited paragraph now works.
  • v0.0.0.8   6 Jun 2025
    • The configurable paragraph hiliting is beginning to work. Imperfectly, but not horribly any more. There is no proper unhiliting yet.
  • v0.0.0.7   5 Jun 2025
    • IMPORTANT Some configuration was moved from "Paragraph.dat" to "tse.ini", and will need to be redone. In "Paragraph.dat" only the "Extensions" and "Files" sections are still used. My advice is to simply delete the whole "Paragraph.dat" file once to get rid of its no longer used sections.
    • Added configuring an RGB filter to color an active paragraph.
    • For a "Text" file, if the paragraph key is used, then it colors the active paragraph's background red. The new color configuration is not used yet. The paragraph's original color is not restored yet.
  • v0.0.0.6   23 May 2025
    • Reassigned type "Text" to not format automatically, and added a new type "AutoText" which is to be formatted automatically. This will allow us to more gradually try out paragraph formatting.
  • v0.0.0.5   3 May 2025 (2)
    • Added cleaning up redundantly configured files.
  • v0.0.0.4   3 May 2025
    • Added configuring "Program" and "Text" extensions.
  • v0.0.0.3   2 May 2025 (2)
    • Fixed the bug, that configuring a key did not work if the menu was started with its configured key.
  • v0.0.0.2   2 May 2025
    • In the menu merged the key definition line and the description line.
    • Added ability to configure a key for the menu itself.
    • It now remembers keys and a file's format type across TSE sessions.
  • v0.0.0.1   28 Apr 2025
    • Initial "in development" release. Just allows some ineffectual configuration. Has a new way to do key configuration.

v0.27.3   PROTOTYPE
22 Apr 2025 (2)
TSE v4.49e upwards works best, all TSE variants

This is a PROTOTYPE of the future tool.

eHelp displays an editable .ehelp file using TSE's help-engine.

Currently it cannot replace TSE's built-in help from within TSE, meaning it cannot provide help for TSE's menus, but it can be used in parallel to TSE's built-in help, for example by assigning a key to it.

It comes with tools to create a .ehelp copy of TSE's built-in help, to build an index, and/or to build your own TSE-like help for anything.

Run-time syntax:
      ExecMacro("eHelp [ helpfile [ (sub)topic ] ]")

For example:
      ExecMacro("eHelp tsehelp")
      ExecMacro("eHelp tsehelp index")
      ExecMacro('eHelp tsehelp "table of contents"')
      ExecMacro("eHelp tsehelp execmacro")

There is no integration between any help files.

Typical use would be

  • to provide TSE-like help for a tool,
  • to provide an independent alternative to TSE's built-in help,
  • to provide TSE-like help for anything else.

The tool has almost all features of TSE's built-in help, as well as some advantages regarding indexing and searching:

  • Index advantages:
    • The index starts with a "first letter index".
    • Topics and their subtopics are cross-linked.
  • Search advantages:
    • A jumped-to subtopic or search result will be hilited.
    • The "Search & View Topics" menu shows a "View Finds"-like list of search results and their topics, all of them with links!
    • The help's "Back" function will also go back to the "Search & View Topics" list.

History: Recently the new tool's work name was changed from "sHelp" to "eHelp". In 2023 there was an old unfinished eHelp tool, which ambitiously tried to support multiple concurrent help files for TSE itself, the development of which was paused in October 2023, which will not be continued, and which is now replaced by this new much simpler eHelp tool, which will only support one independent help file at a time.




Remaining high-level steps:

  • A minimum viable product (MVP) (The very basics, usable but limited).
  • Versions with extra features.

Low-level steps towards an MVP:

  • Must:
    • Several minor details to investigate and prioritize.
    • More testing and bug fixing.
    • Further documentation improvement.
  • Could, but I am leaning toward wont:
    • Maybe at this stage already make eHelp capable of replacing TSE's built-in help?
    • Maybe at this stage already include my own extended, up-to-date version of tsehelp?




v0.27.3   22 Apr 2025 (2)
Only updated the eHelp.s file.
Fully implemented the "Search & View Topics" menu option. It now creates a "View Finds"-like list of search results and their topics, all of them with links! After selecting a link <Alt B> goes back to the list. I have not done much testing yet.

v0.27.2   22 Apr 2025
Only updated the eHelp.s file.
Partially implemented the "Search & View Topics" menu option. Search results are preceded by a line number and pairs of found positions and lengths.

v0.27.1   16 Apr 2025
Only updated the eHelp.s file.
Added the help's search menu, but currently you can only select the options for searching in the current topic.

v0.27   14 Apr 2025
Updated all 4 .s files.
Calling eHelp without parameters now gives a proper message.
Added the "Help on Help" topic to generating tsehelp.ehelp.
(In TSE's built-in help "Help on Help" is an exception: It does not come from the .hlp files.)
Made eHelp_Hlp2eHelp call eHelp_CreateIndex after generating tsehelp.ehelp.
Made eHelp_CreateIndex save the newly-indexed .ehelp file.
Improved the documentation.

v0.26.3   10 Apr 2025
Only updated the eHelp.s file.
Fixed: A pop-up topic (like "Info->INTEGER") no longer shows the "Info->" part in its window title.

v0.26.2   9 Apr 2025
Only updated the eHelp.s file.
Fixed: Using a down-key in an Index now works properly.

v0.26.1   8 Apr 2025
Only updated the eHelp.s file.
Partially fixed: Using a down-key in an Index in some cases skipped a lot of lines. Now it skips only one line.
Improved: In the index: In subtopic-lines their topic is now justified against the right side of the help window. It looks much better.

v0.26   6 Apr 2025

Added the eHelp_CreateIndex tool, which can (re)create an "Index" topic in an existing .ehelp file.

It differs in a few details from TSE's own Index:

  • All topics and subtopics are indexed.
    At the top of eHelp's tsehelp's Index you will immediately notice some links to subtopics that TSE's own Index does not show.
  • Subtopics are cross-indexed with their topics:
    • They get their own entry with a parenthesized reference to their topic.
    • They also get an indented entry below their topic.
  • The index starts with an index of the first letters of (sub)topics.
    For example, to find "OneWindow" in the index, you can first select "O" in the letter index, and then scroll down.

Known minor issues:

  • Using the arrow keys in the index can go too fast.
  • The index does not show "()" behind functions.

v0.25.3   30 Mar 2025
Tiny documentation improvements.
Improved eHelp so that compiling it does not result in notes.
Set the debugging-check to FALSE to not waste performance.
Documented how TSE's debugger can be used on eHelp.

v0.0.0.2
10 Feb 2025
Windows GUI TSE v4 upwards

This tool shows a selectable font and its settings in a 16 x 16 character table.

The characters are shown as TSE shows them based on TSE settings.

The TSE session is temporarily shrunk to simplify a side-by-side comparison of different fonts and/or settings using 2 or more TSE sessions.

To do:

  • Add font size as a selectable setting.
  • Above the table, instead of the font and settings we chose, show the font and settings that Windows actually set based on our request. Or both.

v1.0.1.4
31 Jan 2025
TSE v4 upwards, all variants

9 Nov 2024 a user made a request, that I interpret as that eList should not always start at line 1, but instead on a list line based on the source's current line, like a search with the "v" option does.

v1.0.1.1
As requested eList now starts at the source file's current line.
When "zooming in" on a longer search string by typing a character, the list's new current line is set at or as close as possible above the list's previous current line.
It no longer uses the clipboard, which reduces memory usage, increases speed, and leaves the clipboard intact.

v1.0.1.2
Disabled the main menu and help line during eList, which loses us nothing and gains us an extra line of list space
Added numerous progress indicators, useful for processing big buffers.
Emptied the temporary helper buffers when finished to improve memory usage.

v1.0.1.3
Two huge speed optimizations:

  • A search will stop and restart when you type another character.
  • When the search string is empty or matches an empty string, the source buffer itself is listed instead of making and listing a copy.

v1.0.1.4
Fixed the major bug in v1.0.1.3, that when eList had just been started and the first typed character was <Escape>, then the current buffer became empty.

Git bug

While editing, the Git macro sporadically makes TSE ignore typed keys.

This is a very elusive and hard to confirm bug, because it almost never occurs.

My main suspect is the Git macro updating the git status of the current buffer.
My suspicion is, that the macro's Dos('git.exe … status -s …', _RUN_DETACHED_|…) call makes TSE ignore keyboard input for a fraction of a second.

My first goal is to find a reliable way to reproduce the bug.

Aside, thinking ahead, I found this way out of the box possible solution/work-around, that also might make Git usable in the Console variant of TSE as well.
Currently Git "works" in the Console variant of TSE, but with user-unfriendly updates of the current buffer's git status.

Uniview bug

7 Nov 2024 a user reported that Uniview sometimes only displays a too short part of the front of a line.

Tests confirm, that this typically happens for longer lines with lots of "Unicode characters".

A review of the Uniview extension makes me want to do a structural improvement of the implementation and documentation.

The upcoming eHelp project would also benefit from this, because the plan is to use UTF-8 for the new help file format.

v0.0.0.1
12 Dec 2024
TSE v4 upwards, all TSE variants

Nota bene: This extension has no functionality yet, that is not already present in the Unicode extension.

Done:

  • Identify a opened file's Unicode encoding if it has a byte order mark (which is rare).
  • Simplisticly display the result with a message.

Todo:

  • Identify an opened file's Unicode encoding or code page for all other cases.
  • Display a pretty result somewhere.
  • Give a signal when the Unicode encoding / the code page does not match the user's default.
  • Make it configurable which signal types are used.

Research into 1-byte code pages suggests to me, that it is probably possible to in a useful way detect the three most used ones:

  • Code page 437: Windows prompt, English (United States).
  • Code page 850: Windows prompt, Other.
  • Code page 1252: Windows GUI.

Code pages exist for Unicode too:

  • Code page 65001: UTF-8
  • Code page 1200: UTF-16LE
  • Code page 1201: UTF-16BE
  • Code page 12000: UTF-32LE
  • Code page 12001: UTF-32BE

Tentative conclusion:
One separate "code page detector", that detects both Unicode and the three most used 1-byte code pages, seems like a good plan.
This limited functionality should work in all TSE variants.

UniConv

UniConv will be a newly written ASCII/CodePage/Unicode conversion tool.

It will have none of the interactive and responsive capabilities of the Unicode extension, and will purely focus on the conversion of character encodings.

If it can do a file-to-file conversions without loading a file into TSE, then it will be able to do much larger conversions, and users will be able to load much larger Unicode files. That does require a rewrite of the old code from Unicode.

Deprived from screen interaction, it would be nice if it could be started in these ways:

  • From TSE as a macro to convert a string, (line?,) buffer, or file.
  • From the command line as a macro.
  • From the command line as an executable.

Unicode

There will exist a critical macro load order dependency between the existing Unicode extension and the future BrowseMode extension below.

(Henceforth in short referred to as Unicode and BrowseMode.)

This requires Unicode to be updated to do its part in enforcing adherence to this dependency.

To be able to test this well, I am first going to try to finally fix the following technical debt.

Unicode is too big to be debugged in TSE's macro debugger.

(TSE's macro debugger starts but malfunctions for too big macros.)




Considered Unicode optimizations:

  • Obsolete code:

    Unicode contains flawed, default disabled macro code for displaying the current character's real Unicode form in the the top-left corner of the screen.
    This is a remnent from before UniView extisted.
    Hopefully this can simply be deleted.


  • UniList:

    Unicode contains macro code for displaying a list of all Unicode characters, for optionally selecting one, and for inserting it into the text.
    Hopefully this can be split-off into a separate macro, perhaps named UniList.


  • UniClip:

    Unicode contains macro code for copying, cutting and pasting TSE text to and from a Windows Unicode clipboard.
    Hopefully this can be split-off into a separate macro, perhaps named UniClip.


  • UniConv:

    Unicode contains macro code for displaying Unicode text in TSE, and for converting texts between ASCII, Windows-1252, and the major Unicode formats.
    For a long time I have wished to split the conversion macro code off into a separate macro, perhaps named UniConv.
    Hmm, now that I am thinking about this, there are a lot of arguments in favor of UniConv:

    • It would reduce Unicode's macro code.
    • Its use could be shared by Unicode and UniClip.
    • I already have other macros that currently use macro code copied from Unicode: They too could call UniConv instead.
    • UniConv could be given the capability to convert "unlimited" file sizes.
    • TSE could edit much larger Unicode files for two reasons:
      • Currently Unicode uses at least twice a file's size in memory for the conversion.
      • If they mostly contain Western-European languages, then UTF-16 and UTF-32 files will shrink 2 and 4 times respectively when converted to TSE text.


BrowseMode

23 Oct 2024 a user published their wish list for TSE, which included a wish for a "Write protected edit error".

I already needed to update my old "BrowsMod" extension, which helps to fulfill that wish.

I decided to completely rewrite my old "BrowsMod" extension into a new "BrowseMode" extension.

The old "BrowsMod" extension can still be found on Semware's "Classic" website.

The new "BrowseMode" will extend the old capabilities and add a new one.

The extended capabilities are, that it will automatically activate TSE's browse mode once for:

  • Read-only files.
  • Buffers with names containing user-configured strings.
    You can use this to automatically put an opened file in browse mode if its name contains a certain string.
    For example, if a file exists in a certain directory, or on a certain drive or network share.

The new capability regards the following.

  • In browse mode TSE itself often already gives a warning if you try to use a function that would change text, for example duplicating a line or pasting a block.
    However, in browse mode TSE does nothing if you simply type text.
    The new extension can give you three types of signal for typing in browse mode: A sound, a shortly shown pop-up message, or a warning that needs to be acknowledged.




Status 28 Nov 2024:

  • All stated functionality has been programmed.
  • I dare not publish a provisional version until I have also added enforcement of the macro load order of BrowseMode and Unicode.
    A wrong macro load order opens the door for a not-attentive user to save a mutilated Unicode file.
    For example, if BrowseMode sets the browse mode for a Unicode file before Unicode can convert it to TSE text, then a mutilated file is loaded into TSE, and it would be horrible if the user would save it.
  • Macro load order enforcement between BrowseMode and Unicode requires that Unicode will be improved too.
  • There will be the minor annoyance, that executing BrowseMode via the "Execute..." menu in order to configure it will also change the macro load order of BrowseMode and Unicode.
    This will disable BrowseMode until TSE is restarted, which will restore the macro load order.
    A solution of sorts that I found, is to offer a public "BrowseMode -> setup" procedure, like the "cuamark" macro has, which can be accessed via TSE's "Macro -> Show Loaded" menu, and which does not require a TSE restart afterwards.
  • I want to add the browse mode optimization, that for a group of rapidly typed characters just one signal per configured signal-type is enough.

v4.0.0.7
11 Mar 2024
Windows TSE v4.50 rc 18 upwards (to be expanded),
Linux TSE v4.50 rc 18 upwards (not expandable).

"DirList41" is the development version of the future "DirList" v4.1.

New so far:

  • In Windows DirList is now default independent of its environment's language settings.
    This is achieved by retrieving link targets with Windows functions instead of dir commands.
    This is a major step forward, even if it did create new loose ends.
    Example loose ends:
    - Link targets starting with weird prefixes.
    - The Windows functions and the dir command each do not retrieve some of the other's details. The now default Windows functions do not retrieve some details of the link type. So I will still have to apply the dir command too for those languages for which the dir output can be interpreted.
  • Gained a small but significant speed optimization by optimizing BigInt.
    The access status column is now an access error column. Therefore when there is no error, "ok" is replaced by "-". When sorting this sorts all access errors together.
    The "no link" indicator was changed from "." to "-". It subjectively looks better, and "-" is in my TSE WordSet, which helps accessing the column.
    DirList's speed was increased again by only retrieving link targets for the link types that have them: junctions and symbolic links.
    The --alllinktargets parameter generates the old list.
    The --folowlinks parameter makes DirList list the child objects of directory links again. This is not recommended.
  • Links are no longer followed.
    This greatly reduces the run time and list size, and linked subdirectories are no longer counted multiple times in a common parent's directory size.
    The following of links will later become a non-default option.
  • The link type column was condensed to be smaller.
  • The column for TSE accessility is now a string indicating a reason.
  • A link indicator (Linux) or type (Windows) column was added. Windows has a lot of link types.
  • Windows: For junctions and symbolic links the link type and the link's target is now shown. It is shown between square brackets after the name, like "dir /al" does.

Still todo for DirList v4.1:

  • Lots of (hopefully small) loose ends.

Math

I found my excuse for writing a Math macro that can do floating point operations: I will need it for the Image extension for when it needs to scale images itself.

To make optimal use of TSE's native capabilities and limitations, it makes sense to limit floating point numbers to either MAXSTRINGLEN, MAXLINELEN, or a TSE buffer size (255, 32000, or some value below 3.9 GB).

I cannot think of an excuse to make them longer than MAXSTRINGLEN, as the longer lengths would decrease calculation speed per digit. Tell me if you do know of such an excuse.




Alternatively, for others, if you do not mind installing new executables in Windows, then there is Eckhard Hillmann's FppPack_1_01.zip package on Semware's server. It was last updated on 12 Apr 2025.

From reading its documentation I gather that it provides high-level math functionality in TSE, like a calculator-like expression-evaluator shell and a (block?) sum function, and that it provides basic math operators and functions by calling (closed-source) executables from the Windows command prompt.


These webpages are created and maintained with The SemWare Editor Professional