Stable Version 3.6 Released

A new stable release of TKE (3.6) is now available for download. This is first and foremost a bug fix release, but it is also one with a lot of small improvements made all around the application. The following is a list of improvements and changes made in this release. Enjoy!

New


  • Added support for function and variable syntax highlighting.
  • Added an uninstall script for Linux environments.
  • Added Terraform and TypeScript syntax highlighters.
  • Added `api::menu::get_value` API procedure which returns the current value of a checkbutton or radiobutton menu item.
  • Added advanced preference option to specify a default directory for exporting plugins.
  • Added support for using globbed file/directory names on the command-line for Windows users.
  • Added Plugins menu command to display the plugin source directory in the sidebar when in development mode.
  • Added `api::plugin::get_header_info` API function.
  • Added support for new plugin header fields: `display_name`, `website` and `category`.
  • Added the ability to clear the currently selected shortcut in the Shortcuts preference pane by hitting the `Delete` key.
  • Added copy (Control-c), cut (Control-x) and paste (Control-y) keyboard shortcuts to all entry, combobox and spinbox widgets.
  • Added support for changing the ordering display of files in the sidebar with the keyboard when manual ordering is enabled for a directory (Alt-Up/Down will move all selected files up/down, respectively).
  • Added preference option in Find panel that controls whether the find or find/replace panels are automatically closed when keyboard focus is given back to the editing buffer.
  • Added menu indicator in syntax menus when those menus display syntaxes using alphabetical categorization to help the user find the currently displayed syntax.
  • Added new `add_shortcut` and `open_glob` plugins.
  • Added support for setting a proxy server/port in the `Advanced` preferences panel.
  • Added ctext support for setting and hiding syntax highlighted with meta characters.

Changes

  • Changed the default font size of the command launcher text widget from 6 to 10 to improve readability.
  • Moved the text widget in the command launcher to be displayed below results to improve readability.
  • Updated built-in themes to provide color schemes for function/variable highlighting.
  • Updated all syntax descriptions to perform function and/or variable highlighting.
  • Minor UI improvements made to the About window.
  • Renamed `api::get_install_directory` to `api::get_plugin_source_directory`.
  • Renamed `api::get_plugin_directory` to `api::get_plugin_data_directory`.
  • Debug logfiles are no longer added to the recently opened list.
  • Improved command-line help information and formatting.
  • Enhanced macOS installation instructions to include the need for Tcl/Tk 8.6 installation.
  • Improved translation file checker.
  • Enhanced PluginHeader syntax description to allow the user to right-click on the category field value to change it to a different, supported value.
  • Improved plugin export facility to allow the user to change the version number (with combobox suggestions) and provide release notes.
  • Increased width of shortcuts search field.
  • Removed todo plugin items, markers, favorites and reference documents from the Shortcuts preferences menu.
  • Changed/Fixes keyboard traversal issues in the shortcuts preferences menu.
  • Improved the display of plugin names within the UI to improve readability.
  • Updated ptwidgets library.
  • Removed the strings `Windows`, `Unix` and `Emmet` from translations as they are proper names.
  • Improved automated translation utility.
  • Changed the session switcher and deletion submenus to display the current session.
  • Improved HTML display in application updater.
  • Removed support for watermark strings when creating plugin preference entry widgets.
  • Improved Markdown syntax highlighting to consider backslash characters as meta characters that can be hidden via the View menu.
  • Changed Markdown link syntax to treat the URL references as hideable text.
  • When a directory is added to the sidebar, it is now automatically selected and made visible.
  • Updated all copyright information to include 2019.
  • Enhanced e_menu and doctest plugins.
  • Updated translations.
  • Updated User Guide.
  • Updated Developer Guide.

Bug Fixes

  • Fixed missing/incorrect language reference document links in syntax definition files.
  • Fixed issue with left-clicking the mouse when Vim mode is disabled (UI updates were not occurring).
  • Fixed About window sizing issue on different platforms that could cause UI elements to not be displayed.
  • Fixed clipboard history issue where inserting from clipboard history did not update the order of elements in the clipboard history.
  • Fixed issues with creating a new directory from the sidebar using an absolute pathname.
  • Fixed sidebar issue where a newly created directory might not be immediately displayed.
  • Fixed potential issue with trashing a sidebar item.
  • Fixed issue with Linux installation script that can cause in-app updates to no longer work.
  • Fixed and improved code support for moving the cursor to the next or previous start/end of a word that could cause the application to crash.
  • Fixed issues with tab asterisk display when editing in non-Vim mode.
  • Fixed redo issue when it caused a line to be deleted.
  • Fixed issue when a tab is modified and the application is exited, TKE will not prompt the user if a save is needed.
  • Fixed issue with `Sort By` sidebar submenu activation status in Linux environments.
  • Fixed issues with using parenthesis in exact searches.
  • Fixed issue that could cause the `Todo` plugin to crash the application if a todo name contained colon characters.
  • Fixed issue with the shortcuts column width when a menu path exceeds the width of the preferences window.
  • Fixed permission issues with exporting themes/bundles.
  • Fixed issue where the editing buffer was disabled from editing after a find/replace operation took place.
  • Fixed issue where plugin I/O operations would not complete when the plugin called 'close' on a file channel.
  • Fixed issue where attempting to mark a blank line in a file would not display the mark (blank lines are no longer markable).
  • Fixed issue where a line being named with a mark could be cleared before the mark was named.
  • Fixed issue where a plugin preference pane required the dropdown menu to be selected twice before showing the panel.
  • Fixed keyboard focus issue in Shortcuts preference panel where after a shortcut was edited, the table wasn't receiving input focus.
  • Fixed issues where keyboard shortcuts were incorrectly activatable when keyboard focus is in a different window or widget.
  • Fixed issue where the find and find/replace panels could be displayed on top of each other (only one should be displayed at a time).
  • Fixed an issue calculating the plugin directory when exporting a file.
  • Fixed button width display issue in preference window when non-English translations are used.
  • Fixed initial startup wizard layout when non-English translations are used.
  • Fixed issues with the display of the syntax selection menu when they are sorted within alphabetic submens.
  • Fixed display issues with the `dir_popup`, `root_popup` and `file_popup` plugin actions.
  • Fixed issue where multiple startup windows could be displayed simultaneously.
  • Fixed issue where clicking on the window close button of the startup window did not exit the application.
  • Fixed issue where plugin header data could get stored incorrectly.
  • Fixed issues around using the tablelist widget in plugins.
  • Fixed issue where the `.` and `..` directory items on Linux and macOS could be displayed in the sidebar if the "Show hidden files" preference option was set.
  • Fixed display of cursor when a search panel was closed.
  • Fixed issue where changing snippet options in a named session was not allowing the preference changes to take effect.
  • Fixed cursor snippet insertion string in snippet editor insert menu.
  • Fixed issue with http downloader procedure on Windows.
  • Fixed issues with preference entry widgets not displaying their values and saving their values properly.
  • Fixed issues with sidebar menu plugins with submenus.
  • Fixed issues with theme exporter displaying an error message.
  • Fixed Markdown display issues with `Show Installed` plugin menu output by placing backslashes in front of Markdown characters that come from the plugin header where Markdown syntax is not supported.
  • Fixed PluginHeader syntax description to ignore hashtags that are not at the beginning of a line.
  • Fixed theming issues with the code editing widgets within the preferences window.
  • Fixed preference window display issue when the current panel is the plugins panel and we change the session/language menubutton value.
  • Fixed snippet parsing issue that would not allow snippet variables to be used in snippet shell commands.
  • Fixed issue where the sidebar did not show a newly added file to a directory.
  • Fixed issue where a global preference that was changed when we are in a named session did not cause that preference change to be immediately reflected in the tool.
  • Fixed issue with zipping themes/bundles in Windows.
  • Fixed issue where preferences were being saved to session preferences that should not be there.
  • Fixed issue where closing the preference window would incorrectly prompt the user to save to the session/global preferences.

Stable Version 3.5.2 Released

Well, right on the heels of the 3.5 stable release, we have a bug fix release to take care of a few nagging issues that were missed in the making of 3.5. The following notes show the changes:

New

  • Added ability to change search method used in `Find in Files` panel.
  • Added preference option to set default search method used in `Find in Files` panel.

Changes

  • Cleaning up Linux packaged contents.
  • Updated User Guide.

Bug Fixes

  • Fixed issue where the `Find in Files` search method for glob and exact wasn't working.
  • Fixed issue where the Plugins menu didn't open when developer mode was disabled.
  • Fixed issue where the Plugins menu showed incorrect menu items when developer mode was disabled after it was enabled.
  • Fixed drawing issue where only an untitled document is displayed and a file is immediately opened in the other pane.
  • Fixed application hang when the `Find in Files` pane is displayed and the application is exited.

Stable Version 3.5 Released

Well, after a little over a year, stable release 3.5 is finally released. We have done a ton of code cleanup, made some important and noticeable optimizations, improved the quality of the syntax highlighting, added a bunch of new features, included several new plugins to help speed up your workflow, and even updated the TKE icon.

The following is a listing of all of the changes that went into this version.

New

  • Added new plugins from Alex Plotnikov (doctest, e_menu, edit_utils, highlight_matches).
  • Added editorconfig plugin for automatic handling of .editorconfig files as well as providing syntax highlighting support for .editorconfig file syntax.
  • Added support for changing file encodings.
  • Added syntax support for Meson, Puppet and Squirrel.
  • Added preference option to keep information panel automatically in sync with sidebar selection.
  • Added preference option to control whether line numbers are left or right justified.
  • Added space between line numbers and gutter elements to help improve readability.
  • Added support for specifying additional information in the source files to help translators see where internationalized strings are located in the UI for contextual purposes.
  • Added snippet support for a CURRENT_DATE2 variable which is substituted with the date in the form of 2001/01/13.
  • Added new 'syntax' and 'is' commands to ctext namespace.
  • Added proper syntax highlighting support for triple-double/single/backtick quotes.
  • Added Valadoc to the list of references in the Vala syntax definition file.
  • Added support for triple-double/single/backtick quote auto-completion.
  • Added support for exporting and importing plugins to/from external sources.
  • When a TKE theme or plugin bundle is opened, TKE will automatically prompt the user if the file should be imported.
  • Added plugin support for exposing Tcl procedures to be called from other plugins.
  • Added plugin API procedures for checking the existence of a menu item, checking the state of a menu item and executing a menu item.
  • Added support for trashing files using `gio trash` if that tools exists on the system.
  • New application icons.
  • Added new mimetypes for TKE theme and plugin bundle files in Linux environments so that these files (when opened in a file browser) will automatically launch TKE and be prompted for import. Additionally, these filetypes will be displayed with their own icons.
  • Added support for regexp, glob and exact matching in Find and Find/Replace UI.
  • Added preference item in Find panel that allows the user to choose the default matching method on application startup.
  • Enhanced todo plugin to allow list and todo title to be edited as well as added the ability to delete all completed todos.
  • Added `Replace` button in the Find/Replace UI which will allow search matches to be replaced one at a time.
  • Added `View Emmet reference guide` option to the `Edit/Emmet` menu.
  • Added preference item in Sidebar panel that allows the user to set the default sidebar width to a given pixel width (includes the ability to set this value from the current sidebar width).

Changes

  • Upgraded tablelist widget to version 6.3.
  • Added installation instructions to README file.
  • Enhanced syntax description files.
  • Improved performance of syntax descriptions that use advanced syntax highlighting.
  • Improved syntax theming performance.
  • Theming improvements.
  • Removed Updates tab from preferences when running on Windows (known to cause bad things to happen and we do not currently support in-app Windows updates anyways).
  • Enhanced the number_converter plugin to change all found numbers within a selection to the specified number base.
  • Changed language preference table to display file patterns instead of extensions.
  • Improved translation support in source files.
  • Improved HTML-style rendering performance by an order of magnitude.
  • Improved HTML-style syntax highlighting quality.
  • Changed startup behavior when TKE is started up with a file or directory. It now adds it to the last session rather than replacing it.
  • Improved Markdown syntax handling.
  • If a file is loaded that will cause an issue with syntax highlighting (i.e., a file contains a line which exceeds 8K characters), syntax highlighting will not be applied to the file.
  • Removed plugin api::invoke_menu procedure (replace with api::menu::invoke).
  • Changed api::get_user_input to display a value in the entry field if the passed variable contains a value.
  • Updated Find and Find/Replace UI.
  • Improved application startup time when a TKE session contains files whose language type was manually changed in a previous session.
  • Made the background color of current matched item different from other matched items to improve their control.
  • Removed menu items that are preceded by whitespace from the shortcuts preference table.
  • When Find, Find/Replace, Find in Files or Document Search panels are displayed, don't disable the rest of the UI.
  • Updated user guide
  • Updated development guide

Bug Fixes

  • Fixed error caused when a file is not able to be written.
  • Fixed translation issues with German translation (thanks to Joachim Moskalewski).
  • Fixed issues with all translations that caused TKE to not start.
  • Fixed issue where the file modified indicator was not being cleared when undoing the last change since the file was saved/loaded.
  • Fixed bug when a non-existent filename is used to lookup the EOL character when in auto mode.
  • Fixed theming issue when editor scrollbar background color does not match editor background color.
  • Fixed theming issue with text scrollbars.
  • Fixed an undo issues that could cause unexpected results.
  • Fixed the positioning of the warning width indicator when the font/font size was changed.
  • Fixed issue with bubbling selected lines up/down.
  • Fixed issues with the automated translator to eliminate bad translation files that can cause the application to crash on start.
  • Fixed syntax highlighting issues with embedded languages.
  • If the -n option is specified on the command-line, the opened files list, window geometry and command launcher information is loaded from the previous session.
  • Fixed issue with finding symbols with the command launcher.
  • Fixed issue with importing a theme that already exists in the user's themes directory.
  • Fixed default syntax highlighting to be used for tclIndex files.
  • Fixed pattern matching issue in the default syntax language lookup.
  • Fixed ipanel display issue in regards to file type.
  • Fixed issue with default file browser directory handling when application was relaunched.
  • Fixed combobox theming to always be a white background with black text to improve readability.
  • Fixed line number selection issue where text was selected when the gutter was clicked.
  • Fixed issue with find/replace GUI that kept text from being replaced.
  • Fixed issue with syntax highlighting Markdown highlight syntax (i.e., ::foobar::).
  • Fixed current\_line plugin to not display over text that has background colors set.
  • Fixed error in preferences search menu.
  • Fixed selection issues with sentences and paragraphs.
  • Fixed issues with todo plugin that caused it to not remember tasks between TKE sessions.
  • Fixed issues where the language of the current tab was not set correctly.
  • Fixed issues with `Edit/Cursors/Move cursor to next/previous` functionality.
  • Fixed menu state issues with `Add next/previous lines to selection` when a selection did not exist.
  • Fixed issue with moving multicursors up/down via the menu command.
  • Fixed issue with jumping to a matching bracket when the operation is performed in a file that does not handle brackets.
  • Fixed issues with calling a plugin syntax highlighter procedure.
  • Fixed issue with a sorted directory in the sidebar which has files deleted from the directory.
  • Fixed various issues related to setting shortcuts when using a non-English translation.
  • Fixed potential issue with multicursors disappearing when certain keys are pressed.
  • Fixed issue with displaying menu items that are used as separators in the shortcuts preference table.
  • Fixed issue with removing menu bindings.
  • Fixed issue with menu bindings associated with plugin-generated menu items not be applied/removed properly when a plugin is installed, uninstalled or reloaded.
  • Fixed issues that kept plugin files from being properly detected by the syntax highlighter.
  • Fixed issue that could cause some regular expression highlighting to be suppressed.
  • Fixed issues that kept some syntax highlighted when the syntax was changed.
  • Fixed issues that caused the ctext internal data to not be deleted when a tab is closed.
  • Fixed issue with traversing documentation search history.
  • Fixed issue with not displaying correct information in message area of information bar.

Happy New Year!

The TKE project just wants to wish all of you a Happy New Year!

If you are anxiously awaiting the next stable release of TKE, hang in there. The under-the-hood changes have been steadily increasing and we now have most of the major changes now in place. There is still plenty of work to do before we are calling anything "stable" at this point. I'm currently guessing it will take another month or two to get everything ready for all of you. The performance improvements are already substantial in initial testing and there are still plenty of opportunities to improve in the future. There are also a few new pieces of functionality and some functional improvements over 3.4.

Thanks for your interesting in the TKE editor and here's to a great 2018!

Roadmap for Version 3.5

Every once in a while I like to give all of you a sneak peak at what is being worked on in TKE. In the 3.5 stable release cycle, the goal is to focus on application performance, especially editing performance. There are two main factors in the success of a code editor: functionality and performance. One is not more important than the other, so it is important that TKE's development does not exclude one for the other. TKE's performance is adequate at the moment, but I would like to see improvements in a few key areas.

First, application startup performance needs to be improved again. Ideally, I would like to the see the application start in around 2 seconds or less depending on the number of previously opened tabs and the currently displayed file(s). I've noticed that the application startup time has begun to slip in recent stable releases. On Linux, I'm seeing pretty good startup time results, but on macOS and Windows, things need to be improved. Some of this is going to be in my direct control and some is not (wish interpreter startup time is out of my hands).

Second, I would like to see the time to initially view a file come down dramatically. TKE lazy loads the contents of a tab currently to help with startup performance which is a good thing; however, if you are switching tabs to a larger file, it can look like the application is locked up for several seconds. Not good.

Third, I need to greatly speed up the rendering time for markup-style languages, including Markdown and its derivatives. The language parsing that is required to highlight HTML/XML/Markdown requires a lot of custom language parsing which is much less efficient than standard built-in parsing support. I have spent a good amount of time focusing on adding functionality for writing documents in these types of languages, but it is all for not if the tool cannot process them quickly.

Fourth, I would like to attempt to speed up operations that are run as text is being entered/deleted. Some functions such as code folding, mismatched bracket highlighting, and comment/string highlighting are a bit expensive in their current implementations. Ultimately, this makes entering and deleting text feel a bit sluggish at times. Additionally, I would like to improve these performance issues so that we can add other "as you type" features such as auto-completion and code linting in the future.

As you can see, our goals are ambitious in this release period. I have been busy coding and analyzing various solutions to some of these problems already, and there is excellent promise that these performance goals can be met. However, I also need to make sure that new code doesn't come at the cost of lots of bugs and/or reduced functionality. I would like version 3.5 to be functionally equivalent if not slightly better than 3.4. To that extent, the 3.5 release date is yet to be determined. I expect this work to take a several months to complete. I don't anticipate the Changelog file for 3.5 to be as lengthy as its predecessors, but you should notice a big difference when using TKE compared to previous versions.