twinBASIC Update: October 29, 2023

Highlights include two new methods for tB IDE Add-in development and an upcoming rewrite of the standard library implementation.

twinBASIC Update: October 29, 2023

On April 23, 2021, I helped Wayne Phillips introduce the world to twinBASIC at the Access DevCon Vienna conference.  I boldly predicted that twinBASIC (along with the Monaco editor) would replace VBA and its outdated development environment by 2025.  With that goal in mind, this weekly update is my attempt to keep the project fresh in the minds of the VBA development community.

Every Sunday, I will be providing updates on the status of the project, linking to new articles discussing twinBASIC, and generally trying to increase engagement with the project.  If you come across items that should be included here, tweet me @NoLongerSet or email me at mike at nolongerset dot com.

Here are some links to get involved with the project:


Highlights

New Methods Added for Add-in Extensibility

Two new methods were added for developer use when creating twinBASIC IDE Add-ins:

  • CodeEditor.SetSelectionInfo
  • CodeEditor.RevealRange

Here's a brief explanation of the two methods:

SetSelectionInfo

It appears that this method allows addin developers to select arbitrary text within the twinBASIC code editor.  Before this feature was added, developers could only replace all of the text in the editor or whatever the user had selected.

Here's the original feature request:

[sokinkeso]: Is it possible to have in the addin functionality a SetSelection method? Right now, I think it is only possible to replace the whole text of the editor, or to replace the Selected from the user text.

[WaynePhillipsEA]: Yeah, I'll look at that

RevealRange

From the Discord chat:

[sokinkeso]: What is the functionality of RevealRange?

[WaynePhillipsEA]: It reveals the range of code lines in the editor... i.e. makes sure they are visible, with various options for the positioning, e.g. top / center etc

Upcoming Internal Changes to the Standard Library

Announcement from Wayne in Discord:

[WaynePhillipsEA]: Quite significant internal changes coming in the next release, to help simplify and standardise the standard library. Forewarning: there will likely be a few regressions.

The important change is that the VBA standard library will now be exposed to tB projects via a builtin package, similar to how VBRUN already is.

This gives many advantages for me at the source level of tB but also for end users since this will mean that standard library functions are no longer special beasts, with things like F12 goto-definition working without any special-casing at the heart of tB.  Naturally, some of the standard library functions are still "special"... just a lot less special as of the next update.

This will mark quite a milestone in the project, since it will soon be very easy to disable the VBA standard library entirely, leaving just the pure language syntax in place and then perhaps work can begin, as a community, on building the "future" standard library, with the VBA library eventually becoming the "compatibility standard library", perhaps.


Discord Chat Summary

* Auto-generated via Claude-2-100k on poe.com

General Chat

Here is a summary of the key points from the General channel transcript for twinBASIC development over the past week:

  • Several users discussed the need for Mac support in twinBASIC, indicating strong interest in a future Mac port. The Windows version is still the priority for now.

  • A one character bug causing programs to crash was fixed, illustrating how small issues can sometimes have big impacts.

  • There was discussion around inconsistencies in VB's parser regarding keywords like Open/Close that can be shadowed while Reset/Load cannot. This highlights the duct tape and baling wire nature of VB's original implementation.

  • A new release fixed GitHub not properly showing a recent release note. Keeping release notes up to date is critical.

  • Significant internal changes are coming to simplify the standard library implementation. This will be a major milestone, eventually allowing the legacy VBA library to be replaced.

  • The twinBASIC website going down briefly illustrated the need for monitoring and redundancy of critical infrastructure.

  • Several users discussed bugs leading to "unrecognized symbol" errors, with the team helping diagnose reference priority issues. Tracking down these bugs remains a high priority.

  • Support was added for VBA namespace qualifiers like VBA.VbVarType, improving compatibility. Ensuring high compatibility with VBA/VB6 is a continuing focus.

  • Work continues on quality of life IDE improvements like better indent preservation when pasting code. A polished IDE experience is important.

Overall, progress continues on bug fixes and new features while longer-term efforts like standard library improvements and Mac support are planned for the future. The community continues to provide valuable feedback to guide development.

tB IDE Add-ins

Here is a summary of the key points from the Addins channel transcript related to twinBASIC addins development over the past week:

  • A new SetSelection method was requested and implemented to allow programmatically setting the selection in the code editor without replacing all the text. This improves granular control over editor interactions.

  • There was confusion about how the Host.ActiveEditors collection works, but it was clarified that it only contains the single visible editor in twinBASIC right now. Understanding the editor API is critical for addin developers.

  • The new SetSelectionInfo method added recently was tested and confirmed working. Rapid iteration and feedback helps ensure a robust addin API.

Overall, progress continues on expanding the addin API capabilities based on community feedback. The ability to customize and extend the IDE via addins is an important part of the twinBASIC platform.

Around the Web

Nothing new to report.

Changelog

Here are the updates from the past week.  You can also find this information by visiting the GitHub twinBASIC Releases page.

Releases · WaynePhillipsEA/twinbasic
Contribute to WaynePhillipsEA/twinbasic development by creating an account on GitHub.

ChatGPT Changelog Summary

* Auto-generated via ChatGPT, sorted in order of ChatGPT's opinion of "most impactful changes."

Here's a summarized version of the provided updates:

  1. Enhanced Add-in Extensibility: Introduced two new methods for add-in extensibility, namely:
    • CodeEditor.SetSelectionInfo: Allows customized selection of code in the editor.
    • CodeEditor.RevealRange: Facilitates the revelation of a specific range of code in the editor.

These updates notably increase the power and flexibility of twinBASIC's add-in system, offering developers more control over code editing and navigation.


WARNING: The following issue is present in BETA builds 202 - 415 (the latest build as of publication):

  • there are known memory leaks in these versions, so memory usage will be higher than normal

BETA 415

  • added: (addin extensibility) CodeEditor.SetSelectionInfo method [ sokinkeso, discord ]
  • added: (addin extensibility) CodeEditor.RevealRange method

All original code samples by Mike Wolfe are licensed under CC BY 4.0