Open Tools API
Warren Postma showed us different ways to write plug-ins for the Rad Studio IDE and explained the pros and cons of each approach.
One of his examples uses the Castalia Delphi Parser to look for badly aligned begin/end statements or evil WITHs in the current unit. For the purposes of this discussion, an “evil WITH” is defined as absolutely any use of the statement. This alone made the whole night worth while. Nick Hodges would be proud.
Here are his notes:
Each sample repository contains a readme in html format with some notes and links. You can browse the code online or grab a copy (clone) with mercurial, using the repo link, or you can go to the download tab (links shown below) to download a zip copy.The recommended way to use the helloworld samples is to open them up and build them, then install them and try them, then poke around the code and find how it works by reading it. There’s not so much code there, and almost all of it is important, except you can ignore the castalia parser code which was put in there just to make it easier to get it integrated when you want to have a pascal parser library in a real world expert, as shown in the last of the three demos.The first of our three demos, the hello world Wizard sample shows in Package (BPL) form, how to use the open tools api Wizard interface.It may seem easier to use but the limitations and annoyances of a BPL wizard are severe and it is not a recommended approach for most IDE plugin requirements.The second demo, the hello world Expert sample shows in an Expert DLL form, how to use the most central open tools api Expert interfaces. It shows how to export the registration function from the DLL, how to integrate with the IDE about box and IDE splash screen including a little icon that shows while Delphi starts up, and how to add a menu item in the main menu and add a menu item in the project right click menu, how to integrate with the IDE Insight feature, and how to make keyboard shortcuts (hotkeys) work.Finally a third demo that actually tries to do something interesting using the open tools APIs. Since the above helloworld expert is only a skeleton, and while useful as a starting place for someone who wants to write a wizard, doesn’t actually do anything that you might want to do and is certainly not something you would find you couldn’t live without, I wanted to make a demo that while not yet an invaluable tool, shows some of the potential for wizards. This one implements a custom parser, grabs the currently selected editor window and checks the code inside for two kinds of problems. The first is incorrect use of the WITH statement. All uses of WITH are incorrect, and should be killed with fire. Secondly, it tries to line up your begin and end statements and see if they match up. If they don’t match up, it tells you. If your code is nicely formatted and free of With statements, it is pronounced good.
If you are interested in more information on this subject, there is a Google+ Group dedicated to the Open Tools API.
If you really want to dig in to it, then David Hoyle has written The Delphi Open Tools API Book.
Delphi 10.1 Berlin
Embarcadero released the latest version of Delphi on Tuesday, April 19th – Delphi 10.1 Berlin. Just in time for Warren to give us a first look.
Embarcadero had an introduction webinar. If you missed it, the replay is available now.
Aside from the features, Malcolm Groves commented on the the progress with regards to bug fixes and Delphi’s “Quality, Performance and Stability” efforts.
This meeting was at a new location, the Fairview Library, which is in the north of the Fairview Mall plaza. The Sheppard subway ends here and free parking is available. And apparently, it’s easier to book rooms.
Rick Dermont gets credit for finding this location. We will probably use it for future meetings.
Please let us know what you think.
Our next meeting will be Wednestay May 25 in Room 1 from 6pm to 8pm at the North York Central Library. Please join us.