TKE Text Editor

Summer Roadmap

Well, now that the summer is here and version 3.2 is out the door, TKE development is going to slow down a bit. I am planning on getting 3.3 out towards the end of August.

The main focus of the 3.x releases thus far have been a steady improvement to editing features, focusing mostly on Vim editing. This will continue with version 3.3; however, more focus and attention will be placed on the non-Vim editing experience. To that end, I have a new, keyboard-focused selection mode that I'm working on which will greatly improve the selection process. As a result, the Edit / Delete menu will be removed (since selected text can be quickly deleted using the Delete/Backspace key on the keyboard.

Additionally, I have been improving the built-in regression test and this will also continue in the 3.3 release, helping to improve the quality of the release and all future releases.

Of course, if there are any community submitted bugs that need to fixed prior to the end of August, I'll address those and get a smaller release put out there sooner.

Stable Version 3.2 Released

Stable version 3.2 has now been released. The required Tcl/Tk version has been updated from 8.5 to 8.6. Full Emmet action support has been added for CSS syntaxes. Vim selection/operation motion support has now been added.

Important Note: If you are upgrading TKE on a Linux machine, it is recommended that you update TKE by downloading the tarball and using the installation script rather than use the "Help / Check for Update" menu option.

Here's a full list of the new features, changes and bug fixes available in this release.

New:

  • Added Vim support for all object selection/operation motions (i.e., `iw`, `a{`, etc.).
  • Added `Select Next/Previous Item` Emmet support for CSS.
  • Added `Toggle Comment` Emmet support for CSS.
  • Added `Update Image Size` Emmet support for CSS.
  • Added `Encode/Decode Image to Data:URL` Emmet support for CSS.
  • Added `Reflect CSS Value` Emmet support.
  • Added tkcon package to TKE installation bundle for enhanced console support on all platforms without requiring external installations.
  • Added support for Stylus, LaTeX, IDL, Elixir, MathML and Boo syntax.
  • Added new `Markdown Table Beautifier` plugin.
  • Added ability to specify increment/decrement value for enumeration insertion.

Changes:

  • Updated macOS Tcl/Tk version to 8.6.6.
  • Updated Linux installation to use Tcl/Tk 8.6.
  • Added View preference option to display a hierarchical syntax menu.
  • Changed undo behavior when the Return key is pressed and Vim mode is disabled.
  • When line wrapping is enabled, lines will now wrap at the column ruler (if one exists and is in view) instead of wrapping at the editing buffer edges.
  • Added support for a persistent search bar with next/previous search buttons.
  • Small enhancements to current_line plugin.
  • Changed the enumeration insertion to not include the b, o, d, x or h characters that immediately preceed the starting value in the inserted text.
  • Updated User Guide.
  • Updated Developer Guide.

Bug Fixes:

  • Fixed HTML automatic syntax detector.
  • Fixed hidden syntax error when a tab is closed by clicking the `X` button.
  • Fixed issue with displaying favorited files/directories that do not exist on the current filesystem.
  • Fixed potential issues with undo functionality.
  • Fixed syntax highlighting issues with Markdown and MultiMarkdown syntaxes.
  • Fixed menu state handling of Emmet `Toggle Comment` and `Select Next/Previous Item` menu options.
  • Fixed syntax issue with `code_view` plugin.
  • Fixed issue with using Vim up/down motions when line wrapping is enabled.
  • Fixed issue of opening a non-existent file from the command-line.
  • Fixed state of `Show in Sidebar` menu when the associated tab's file does not exist in the file system.
  • Fixed case-sensitivity handling for text searches.

Stable Version 3.1 Released

Stable version 3.1 has now been released. Vim support has been overhauled and greatly improved. Full Emmet action support has been added for HTML/XML syntaxes.

Feel free to update the application through the "Help / Check for Update" menu option or download your copy from our website. Also feel free to leave a review on our SourceForge page if you enjoy using TKE.

Here's a full list of the new features, changes and bug fixes available in this release.

New:

  • Added session memory for bird's eye view and split screen state.
  • Added support for Doxyfile, Elm, Kotlin and Nim syntaxes.
  • Added more customizable theme elements.
  • Added support for `g_`, `g0`, `g^`, `g$`, `ge`, `gm`, `_`, `+`, `e`, `E`, `W`, `B`, `gE`, `(`, `)`, `{` and `}` Vim motions.
  • Added support for `g?` Vim commands (generating rot13 values for text).
  • Added support for `gv` Vim command.
  • Added support for `@:` Vim command.
  • Added support for extended `vv` Vim command to enable visual block mode.
  • Added BIST filtering function to view All, Passing or Failing tests.
  • Added support for Emmet `Wrap With Abbreviation` action.
  • Added support for Emmet `Balance Outward` and `Balance Inward` actions.
  • Added support for Emmet `Go to Matching Pair` action.
  • Added support for Emmet `Next/Previous Edit Point` action.
  • Added support for Emmet `Select Next/Previous Item` action.
  • Added support for Emmet `Toggle Comment` action.
  • Added support for Emmet `Split/Join Tag` action.
  • Added support for Emmet `Remove Tag` action.
  • Added support for Emmet `Update Image Size` action.
  • Added support for Emmet `Increment/Decrement Number` actions.
  • Added support for Emmet `Encode/Decode Image from Data:URL` action.
  • Added support for CSS variable syntax highlighting.
  • Added new `browser_me` plugin which adds an item to the sidebar file contextual menu which will allow HTML and image files to be displayed within an external browser.
  • Added support for TkCon console for environments that have it installed (defaults to Tk console if TkCon is not found).
  • Added new api::edit namespace which contains procedures used for properly editing a buffer from plugin code.

Changes:

  • Improved Vim code base.
  • When multicursor motion mode is entered in Vim mode, the standard insertion cursor disappears and the multicursors will take on the look of the standard insertion cursor.
  • When multicursor motion mode is entered, the status bar will reflect the MULTIMOVE mode.
  • Allowing more than one Untitled tab to exist in the tabbar concurrently.
  • Completed support for all supported Vim motions to work with deleting, changing, yanking, text transforming, shifting and formatting Vim operations.
  • When `V` is entered in visual line mode, returns the mode to command mode.
  • When `v` is entered in visual block mode, returns the mode to command mode.
  • If a line number range is not specified in substitute command, selection range is used or the full document is used if the selection is not specified.
  • Added Emmet reference documentation to CSS, HTML and XML syntaxes.
  • Added Javascript syntax highlighting of `document` keyword.
  • Added syntax highlighting to URLs within syntax files.
  • Added ability to specify a count value when using the `.` Vim command.
  • Small enhancements to CSS syntax highlighting.
  • Adding option for macOS that should render cleaner fonts on high resolution displays.
  • Moving Window menu on macOS before Help menu.
  • Adding JSON embeded syntax in JavaScript.
  • Adding JSON key highlighting.
  • Adding syntax highlighting of XML/HTML tags in JavaScript.
  • Enhanced the XML syntax tag highlighter.
  • Improved performance of HTML highlighter.
  • Improved automatic embedded background color when importing TextMate themes.
  • Lots of BIST enhancements.
  • Updating User Guide.
  • Updating Developer Guide.

Bug Fixes:

  • Fixed issue with initializing file view to the same state when the application was exited.
  • Fixed potential highlighting issues with undo/redo.
  • Fixed issue allowing colon Vim command to be executed when in Vim mode.
  • Fixed issue when preference font selection buttons are clicked.
  • Fixed several issues with operations working properly when text is selected.
  • Fixed issue with the line number gutter display when fonts were changed.
  • Fixed CSS syntax highlighting for color values.
  • Fixed support for embedded CSS highlighting when a plain `style` HTML attribute is used.
  • Fixed Emmet `label` abbreviation expansion.
  • Fixed block selection if mouse cursor position is less than the anchor position.
  • Fixed status bar update issue when Vim mode was changed in some states.
  • Fixed issue with markers being synchronized between split views.
  • Fixed issue with deleting with `D` Vim command.
  • Fixed issues with using Shift key in menu bindings.
  • Fixed potential issue with syntax highlighting when undo is used.
  • Fixed issue where a plugin that was installed and then reloaded in the same session was uninstalled after the reload.
  • Fixed issue where opened files would not be highlighted in the sidebar on application start.
  • Fixed issue where closing a tab with modifications and responding with the `Cancel` button would still close the tab.
  • Fixed issues with title case functionality.

Stable Version 3.0 Released

Stable version 3.0 has now been released. This is by far and away the largest single release of TKE to date. This version focused on fixing bugs, improving code base for performance and maintenance purposes, and filling out or improving upon existing features. The following is a summary of new features, changes and bug fixes.

New:

  • Added Changelog, DesktopEntry, Fountain, PropertyList, Specman/E and Xojo syntax support
  • Added support for line wrapping for markdown-like syntaxes.
  • Added new regular expression checker plugin.
  • Added new URL validation plugin.
  • Added support for f, F, t and T Vim motion commands.
  • Added current language development documentation to Help menu.
  • Added support for clipboard history snippet variables.
  • Added support for deleting user/session language preferences.
  • Added ability to jump to a file within the sidebar by entering the beginning characters of the file's name.
  • Added new `General/PromptCrossSessionSave` and `Sidebar/KeySearchTimeout` preference items.
  • Added `-ending` option for plugins when creating spinbox preference widgets which adds text to the right side of the spinbox value, if specified.
  • Added new `Edit/Format` menu with the ability to insert bold, italics, underline, overstrike, highlight, superscript, subscript, code, header1-6, unordered/ordered list items and checkboxes.
  • Added new `formatting` syntax descriptor.
  • Added support for using function keys in menu bindings.
  • Added `Use Default` button in the shortcut preference panel for reverting shortcuts to those that are set by default.
  • Added Vim support for moving multicursors with motions with numerical values (i.e., '3j' moves all multicursors down by three lines).
  • Added support for `{count}%` where `{count}` is a percentage of the file to jump to.
  • Added support for `{count}G` where `{count}` is to a specific line within a file to jump to.
  • Added `General/DefaultThemeExportDirectory` item in Advanced preference panel.
  • Added `General/HiddenThemes` preference value with allows the user to limit the number of displayed themes in the menu and command launcher.
  • Added new `Manage Themes` tab in Appearance preference panel which can allow the user to toggle the visibility of themes, add new themes, delete themes or edit themes in the Theme Editor.
  • Added new `Get More Themes` button in the `Manage Themes` preference tab which will launch a web browser to the TKE themes webpage.
  • Added new `Close Other Tabs in Pane` and `Close All Tabs in Pane` menu items to tab contextual menus.
  • Added `selection` Vim option and added support for `inclusive` and `exclusive` selection modes.
  • Added new `Documentation` language preference panel to allow users to include additional documentation URLs to the `Help/Language Reference` menu on a per language basis.
  • Added new documentation search panel.
  • Added support for K Vim command which displays language documentation in a web browser when invoked.
  • Added ability to remove markers from current tab.
  • Added ability to associate a number with a `d$` Vim command to delete more than one line of text.
  • Added support for `g~~`, `guu` and `gUU` Vim commands.
  • Added support for Vim numerical multiplication used in various commands (i.e., 2d3l: deletes 6 characters to the left of the insertion cursor).
  • Added support for providing a license file when exporting a theme.
  • Added support for `zD` and `zF` Vim folding commands.
  • Changing behavior of setting the Vim `foldenable` option so that it setting it causes the previous folds to be reapplied to the buffer.
  • Added ability to show/hide a named buffer gutter in the ctext widget.
  • Added support for `c0`, `c$` and `c^` Vim commands.

Changes:

  • Refactored various parts of the code base for better maintainability.
  • Added ability to specify text widget to api::reset\_txt\_focus to reset the focus for the associated text tab.
  • When line numbering scheme (i.e., absolute or relative) are changed in preferences, TKE will now update all existing editing buffers to display the line numbers appropriately.
  • Improved performance of search/replace and multicursor insert/delete.
  • Removed partial support for an embeddable tke widget.
  • Changed backward/forward button states in the remote file viewer to change after the new directory contents are displayed.
  • Improved editing performance when bracket auditing is enabled.
  • Improved drawing performance of Vim command entry, find panel, find/replace panel, find in files panel and user input panel.
  • When a named session preference is changed when the current session is global, prompt the user to save the preference changes to the global session.
  • When the global preference is changed when the current session is a named session, prompt the user to save the preference changes to the named session.
  • When auto-indent or smart-indent mode is enabled, hitting the backspace key will delete to the last tabstop.
  • Changed `H`, `J`, `K` and `L` Vim commands for moving multicursors and changed multicursor moving to hitting the `m` key while multicursors are set and then using the standard Vim motion keys.
  • When the Tab key is entered when the text between the beginning of the insertion line and the current insertion point, the insertion cursor will now move to the first whitespace character after the insertion point.
  • Enhanced default menu bindings.
  • Changed default menu binding of the indent/unindent commands.
  • When a file is being renamed, only select the basename portion of the file pathname in the entry field instead of the entire pathname.
  • Improved performance of Vim `j` command.
  • Displaying multicursor move mode in information bar.
  • Improved YAML syntax highlighter.
  • Added `HighlightEndProc` keyword to syntax files to help improve embedded Tcl syntax support within syntax description files.
  • Removed ability to create menu shortcuts on macOS that would lead to 'dead keys' being invoked.
  • Minor enhancements to various syntax files.
  • When parsing TextMate theme files, grab authorship information (if available) and add it to the tketheme file.
  • Changed `Find/Markers/Remove All Markers` to remove all markers from all opened tabs (instead of just the current tab).
  • Added `View/Set Syntax` menu back into View menu on macOS.
  • Changed default keybinding for `Show/Hide Sidebar` from Control/Command-K to Control-Y.
  • Enhanced the `ciBRACKET` Vim commands to allow either the left or right bracket to be used.
  • Updated tablelist widget to version 5.17 (improved performance in theme editor).
  • Added support for `zf` Vim command when text is selected in visual mode.
  • Improved support for deleting selected text with `x`, `d`, `c` and `Delete` Vim commands.
  • Changed `zj` and `zk` Vim commands to not buffer wrap.
  • Changed line gutter selection to set insertion cursor to end of selected text.
  • Changed `Find / Select Next Occurrence` menu item to `Find / Find Next` to reflect actual functionality.
  • Changed `Find / Select Previous Occurrence` menu item to `Find / Find Previous` to reflect actual functionality.
  • Changed `Find / Select All Occurrences` menu item to `Find / Select All Matches`
  • Changed `Find / Append Next Occurrence` menu item to `Find / Select Current Match` and changing its function to append the matched item that the insertion cursor is on.
  • Changed `Save As` behavior when saving a buffer tab such that it becomes and behaves like a normal file tab.
  • Enhanced BIST suite.
  • Updated user guide.
  • Updated development guide.
  • Updated translations.

Bug Fixes:

  • Fixed issues with tab selection when a tab is closed.
  • Fixed FTP/SFTP issues when the connection name contains whitespace.
  • Fixed plugin issue with tag bind handling.
  • Fixed issues with the ci}, ci) and ci] Vim commands.
  • Fixed icons within remote file viewer when buttons are disabled.
  • Fixed directory foreground images.
  • Fixed file reloading.
  • Fixed syntax variable table in user guide.
  • Fixed support for user snippets in preferences window.
  • Fixed snippet saving issue within the preferences window.
  • Fixed keyboard traversal focusing issues within the sidebar.
  • Fixed issue when closing tab in the pane that is not the current pane.
  • Added missing `else` keyword in Perl syntax descriptor.
  • Fixed issue where title bar in window would not always match the current tab.
  • Fixed issue where all tabs are hidden and the `View` menu is displayed.
  • Fixed potential issues with showing/hiding incorrect files from the sidebar.
  • Fixed issue with updating preference widgets when session/language is changed within the window.
  • Fixed issue where selection would be lost when indenting/unindenting selected text.
  • Fixed issue where snippet is not available within editor without a restart.
  • Fixed issue when an editing buffer syntax is changed, the new syntax tabsallowed indicator was being ignored.
  • Fixed issue with replacing text with tabs and newline characters.
  • Fixed issue with bracket completion for brackets that were escaped.
  • Fixed memory leaks that occurred when a tab was closed.
  • Fixed issues related to using menu bindings with the minus character.
  • Fixed issue with using Alt in menu bindings on Linux and Windows.
  • Fixed potential issue when a menu binding is attached to a menu that contains development options.
  • Fixed issue where menu bindings could be duplicated within the UI.
  • Removed single Shift modifier from shortcut editor in preferences UI.
  • Fixed errors with comment/uncomment functionality from menu.
  • Fixed issues with using asterisk, question mark and arrow characters in menu bindings.
  • Fixed syntax discovery algorithm to be case-insensitive and only consider the tail of a filepath against the syntax file pattern.
  • Fixed ctext issues with undo/redo and bracket auditing.
  • Fixed issue with bracket auditing and code folding in multicursor mode.
  • Fixed issue where entering `{count}j` Vim command where `{count}` is a number that exceeds the number of available lines down from the insertion cursor.
  • Fixed issue using the `$` Vim command when using a numerical value with it.
  • Fixed various issues with multicursor cursor movements.
  • Fixed space and backspace Vim commands to move forward/backward by a given number of characters, line wrapping when needed (instead of working like the l/h vim commands).
  • Added missing keywords and added auto-completion support for backtick characters in JavaScript syntax.
  • Fixed YAML syntax to use indentation based code folding.
  • Fixed bug when the user changed the `Logfile Directory` value in the Advanced preferences panel.
  • Fixed issue with dragging and dropping a TKE and TextMate theme package onto the TKE sidebar or text widget to import the file.
  • Fixed issues with menu bindings not working when the key focus is in an editing buffer.
  • Fixed issue with Option key menu bindings on macOS.
  • Fixed an issue with the default colors in images when importing a TextMate theme.
  • Fixed issue when the console is closed via the window manager button but TKE menu still displayed `Hide Console` instead of `Show Console`.
  • Fixed UI issue when a tab contextual menu is displayed and then retired without selecting a menu option.
  • Fixed issue with using the `.` Vim command on macOS.
  • Fixed an issue where clearing a menu shortcut in the preferences window would not be remembered between application sessions.
  • Fixed `0` and `$` Vim commands in visual mode.
  • Fixed language disabling feature in preferences window to properly remember which languages are disabled.
  • Fixed several issues with marker support.
  • Fixed issues with displaying syntax menus which could cause the application to crash.
  • Fixed issue with syntax highlighting embedded languages which use advanced parsing.
  • Fixed visual mode support with `^` Vim command.
  • Fixed issues with bubbling text down.
  • Fixed selection state when visual line mode is started.
  • Fixed `gg` Vim command to work properly when we are in visual mode.
  • Fixed `==` Vim command to work properly when a number preceds the command.
  • Fixed `cc` Vim command when a count value is used in conjunction with it.
  • Fixed issue with deleting last line and then restoring the cursor to the correct position upon an undo operation.
  • Fixed bracket matching when two or more brackets are listed back-to-back and the first bracket is escaped.
  • Fixed issue where an escape character would not cause bracket auditing to be performed when it mattered.
  • Fixed folding issue where a foldable line would not be marked as such.
  • Fixed issue with closing all folds when at least one fold was already closed.
  • Fixed issue with updating the syntax highlighter when a file was renamed such that the extension of the file is changed.
  • Fixed issue with installing TKE through the `Check for Updates` menu option when a password is required for installation.
  • Fixed code folding issues when in manual mode and text is edited.
  • Fixed issue with closing a fold range.
  • Fixed issue with search highlighter foreground color where it could be hard to read the highlighted text.
  • Fixed state of the Find menu items to reflect the correct state.
  • Fixed issue with not highlighting the `default` keyword in Tcl syntax.
  • Fixed several issues with Vim modeline support.
  • Fixed session loading issue when the current tab of a pane is deleted from the file system and TKE is started with that saved session.