ABHack++ PHASE THREE: Proactive Completion in the AppBuilder - Wiki - OpenEdge General - Progress Community

ABHack++ PHASE THREE: Proactive Completion in the AppBuilder

ABHack++ PHASE THREE: Proactive Completion in the AppBuilder

ABHack is a kind of demon 4GL procedure to run with the PERSISTENT option in a development session.

The strongest points of ABHack are:

  1. It does not require any setup nor any recompilation of the Application Development Environment (AppBuilder, Procedure Editor...). One just need to unzip the files to a directory and launch it with the Protools. Ideal for a consultant on site.
  2. It is made in pure 4GL (very few simple win32 API's, and a few PSTimers).
  3. Source code is given.
  4. No need to pre-tag a database schema. Everything is found on the fly.

Its main strenght is to provide proactive completion for table, buffer, temp-table, fields and variable names, or internal procedures and functions.

It includes many other features like a query analyzer for a selected text, open text-selected source file-names an improved navigation by words, ++ insertion, quick comment out, list of internal proc in another external and parameter insertion, completion for the OO ABL NEW Statement procedure, ability to make the data dictionary resizable...

ABHack has been tested and used fine with Version 9.1E, OE 10 and OE11


27-APR-2012 APR-2012: Added attrTabCompletion11.txt and attrGuessObjType11.txt to support OE11.  The OE10 files have also been improved.  The parser has also been refined for OO STATIC members

26-OCT-2009: Added completion for OO static members.  These are pretty handy in modern code.  Also refined a few details, such as the link to this doc on communities.

13-FEB-2009: A few new directives and better handling of VERRIDE STATIC or FINAL before the access mode of OO ABL  Please  read ABHackWin.releaseNotes.txt in the attached zip file for more  information

16-DEC-2008 Fix for a few improvements for Record Buffer completion.

14-NOV-2008 A few improvements and new Generate Debug Listing on  Ctrl-alt-D.

21-OCT-2008 Added new feature "No completion in comment (single line)", and a few other points.

20-OCT-2008 Support of Progress.Lang.* objects, error Object defined in a CATCH Statement, the STATIC keyword.

23-JUL-2008 Rather important stability fix for the Query Analyzer.

23-SEP-2008 Support of OO ABL Chaining, and refined a few aliases.

23-JUL-2008 Rather important stability fix for the Query Analyzer.

09-JUL-2008 Field completion after BY, plus revision of a few aliases to be more compatible with the Hype Strike mode.

6-JUN-2008 Completion for DYNAMIC-FUNCTION('<andThere>' IN <here>)

20-JAN-2008 ABHack now supports completion for preprocessor names. New ability to show sPecial characters on ctrl-Alt-P.

19-NOV-2007 Big release: *New "Hypes' Strike" mode and a few other advanced completion features.

21-SEP-2007: A] Completion with parameters for external procedures (.p's and .w's) B] Completion on OS files names based on the abhack Database, which is much faster than scanning the file system, especially when using networked drives C] A few other improvements and fixes...

03-SEP-2007 Major Release  . ABHack has now reached Phase THREE with a fast catalog database for both V9 and OE 10.* The picture bellow shows how aBHack is aware of your library handles and can suggest a list of internal procedures coded in another source file, and of course... insert the parameters:

21-AUG-2007 Last update with a few new features and minor fixes. Doc slightly revised and package rebuilt to include a custom version of pure4gltv

16-AUG-2007 ABHack HAS NOW REACHED PHASE TWO with Proactive Completion for OO ABL Extented Types (classes)

21-AUG-2007 Last update with a few new features and minor fixes. Doc slightly revised and package rebuilt to include a custom version of pure4gltv

13-AUG-2007 Two new Major features: 1) ABHack can now dump and load XML Global Definition Description Files. A GUI Bulk Dump Utility has also been implemented to generate the files for a large project (see the Misc Page) 2) ABHack now reports the scope of record buffers in the section treeview, based on the info that come at the end of a compile listing file. It also shows a warning when suspicious buffers a reported with a global scope. Plus: a) abilities to define aliases with large texts and new %\fileName and %\userName directives b) Method/Procedure/UDF completion: ABHack can now split a long line of parameters in aligned lines. c) flashes when a global load hits a compile error

29-JUL-2007 A few fixes and a few screen shots to get a very convenient ADE when maximizing code windows.

09-JUN-2007: Big Release:

1) ABHack can now manage an unstructured file (or structured open in a large simple editor)

2) New ABHack finder facility at the bottom of the current editor window. It behaves like the FireFox search (search on keystroke, turn red if can't find) and can limit the search to a local section

3) New Section Layout Window. Note this one uses latest version of pureabltv !473!

4) ABHack now lists the open source files so you can easily switch between them !449!

5) ABHack can now handle the new OO constructs like METHOD block, PROPERTY definitions and PUBLIC PROTECTED and PRIVATE resources

22-APR-2007: Reorganized UI, and a few new powerful features like quick find next/prev occurrence of selected text on alt-right/left.

21-MAR-2007 Important improvement to combine the order of suggested buffers together with simple buffer/table popup lists. Alignment of Procedure parameters on Ctrl-Alt-L, plus a few fixes for last minor improvements

14-MAR-2007 New features: Move line on Alt-Down like Eclipse does, Maximize/Restore on Ctrl-M, improved table completion on '.' and a few fixes

11-MAR-2007 New features: duplicate line on Alt-Ctrl-Down like Eclipse does, and better handling of full stop when inserting closing guy

05-MAR-2007 New features: completion for block labels

26-FEB-2007 Three big new features: Make the popup field list scroll to the most likely interesting field after an equal sign. Improved suggested list of buffers after '=' equal operator. Ability to 'Keep track of Section Cursor Position'. ABHack restores the previous row and col of a section you visited earlier when you go back to it. This boosts your productivity when you often jump to different sections of your code.

19-FEB-2007 New %\wBuffer directive in aliases to make powerful pseudo macros. The new floating info window gives more info about a text-selected table/buffer/temp-table

15-FEB-2007 Big New feature: We can now launch a new floating Information Window from ABHack, with a "Info Win" button that is available in the tiny window.
This floating window can display information about selected text, like field information (data type, label, initial value...), the parent buffer (local or global buffer, temp-table or database name), or type of variable or buffer.


22-JAN-2007 TREMENDOUS BIG NEW FEATURE: Popup to suggest used buffers after a defined list of keywords like AVAILABLE,WHERE,OF,AND,OR,DELETE.


3-JUL-2012 fixed package and provided a few new OE10 and 0E11 attributes

A few screenshots:

ABHack is composed of 4 floating windows to look a bit like an Eclipse based ADE, with a resource layout on the left.  Note also the Firefox-like finder window that is far more confortable than a traditional dialog-box.



ABHack can manage completion for OO ABL ressources, and even resolve complex type chaining



Dynamics adopters will appreciate the completion on FLA (Five Letter Accronym).  Other may alos use the table unique dump name liek table aliases


After an OF operator, ABHack suggest only buffers that can satisfy an OF join (it tries all combinations with dynamic queries)


In this case, ABHack will automatically scroll to the field that is already refered on the left side of the equal sign


By tradition, we launch ABHack with Tux


The Query analyzer will help you to check index usage.  Note it can also handle non default buffers and temp-table buffers


ABHack also hacks the traditional Section Editor


Yes, completion for preprocessors


Who can manage to remember the syntax for these CAN-DO()  INDEX() and LOOKUP() animals:


Now you have no excuse to not use long and explicit variable names.


That one was fun:




  • So who did the bad joke with the French flag

  • Who did that bad joke with low rating ?

  • The PSDN authorities have acknowledged that the strange rating of this package was unfair.  Many thanks for their prompt handling of this concern.

  • Unfortunately, I had to remove the image at the top of the document. I would have like to keep it as it was kind of fun. But it was causing some very strange side effects with the Jive document.

  • I also had to change the title back to the way it was. The newer title was creating problems on the home page.Phil

  • Sure ABHack will handle extensions... it is just a matter of time...please send comments, wishes (or even praises   ) to abhack@peg.com, otherwise this page is going to be too long

  • Nice tool Litle bug in field list afterDEFINE TEMP-TABLE tt-order LIKE order.tt-order. >> Error 9033 9044 9049

  • Solved for next release.  This problem could occur only if there was a full stop right after the db-table name (no additional option or field).Untill tomorrow, you may do :DEF TEMP-TABLE ttOrder LIKE order .

  • Hi, thanks for this nice work.i am also wondering about OO extensions.it will be much nicer if it works with custom classes. (for OE 10+ versions)

  • Joke?  I am actually thinking at adding other flags for the countries of ABHack contributers.  The next ones on the list are probably Belgium and the Netherlands.

  • Please add-on CLASS & METHOD function like persistent procedure....i am waiting for that release..

  • Kartikeya, ABHack already supports the completion of Class names or of methods/property for this-object or for another class variable (implemented in phase 2 I believe, whic was easier than persistent proc stuff).I mean, if you do:myClass = NEW someClass.myClass:

    To enable it, you must use a ABHack catalog (I recommand the ABHack database because it is much faster)  =>]]> See the Misch page and the "Open AbhackDbReadme.txt" button.

  • please add on -- when we run external procedure that time search all dir not only first propath dir.