ABHack Book

ABHack++ PHASE THREE: Proactive Completion in the AppBuilder

Navigation: News | What is ABHack? | Change log | Screen-shots


  • mar, 15th 2014: a new version of ABHack is available! Cool new features have been implemented (see below for a screen-shot)
  • jan, 8th 2014: a new version of ABHack is available! You can download ABHack from this page (see attachments at the bottom)
  • jan, 7th 2014: screen shots have been restored
  • oct, 29th 2013: ABHack is now hosted on OEHive!

What is ABHack?

ABHack transforms the AppBuilder into an IDE. It is giving the procedure editor a section layout helping the navigation and giving the prototypes of methods, procedures and functions, scope of buffers and much more.

ABHack has a deep knowledge of ABL which allows it to propose the most proactive, comprehensive, and context adapted completion (table, buffer, temp-table, fields and variable names, preprocessors, and even internal procedures and functions with their parameters pre-filled).

A lot of predefined shortcuts ( user defined are also possible) help you save a lot of key strokes and keep you code tidy.

ABHack can also analyse your queries (FOR, FIND) and help you to optimize them and/or add indices. The Data Dictionary is also made resizeable which makes it useful again.

Tooltips on ABL functions can also remind you of the usage of the function.

Other important features include 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 resizeable...

For a demonstration of ABHack, check this webinar.

Technical advantages

  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 - even the treeview uses Pure4GLTV, a clone of MS treeview developed in ABL).
  3. Source code is given.
  4. No need to pre-tag a database schema. Everything is found on the fly.

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


* Make the find floating window more like a status bar; it will resize itself to match the width of the editor
* Add info about the position (line, column), the selection (length, nb of lines) and the file (lines, length) in the status bar
* Highlight the selected word throughout the opened files (à la Notepad++):
New status bar + Highlight selectionNew status bar + Highlight selection
Note: the selection highlight color and background color must be set through AppBuilder Options/Editing Options/Color Coding/Colors, then choose "User Defined Symbol" and set the colors.

* New functionality to save the current session: opened files (procedure or section editor) are saved to be restored at the next startup. Very useful when your session crashes or just to close your session (close AppBuilder) and find it restored when you open it again.
* Move AppBuilder window at ABHack startup so that it is not overlapped by the ABHack window

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

27-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 Analyser.

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

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

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('' IN )

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 catalogue 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 Extended 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 pop-up 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 pop-up 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: Pop-up to suggest used buffers after a defined list of keywords like AVAILABLE,WHERE,OF,AND,OR,DELETE.

A few screen-shots

Windows layout

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 comfortable than a traditional dialog box.

Layout and finderLayout and finder

By tradition, we launch ABHack with Tux:

Protools with ABHackProtools with ABHack


Database completion

enter "WHERE" + space:

Proactive WHEREProactive WHERE

just press "dot":

Proactive WHERE 2Proactive WHERE 2

press Space, enter "=" then Space:

Proactive WHERE 3Proactive WHERE 3

press "dot":

Proactive WHERE 4Proactive WHERE 4

In this case, ABHack will automatically scroll to the field that is referenced on the left side of the equal sign. Press "Enter" to select it.
The query has been entered with a very few key presses!

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

Proactive OFProactive OF

Other completions

Completion for preprocessors:

Completion for preprocessors in ABHackCompletion for preprocessors in ABHack

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

Completion on variable namesCompletion on variable names

Attributes completionAttributes completion

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

Class support: completion at assignation timeClass support: completion at assignation time

Class support: members & methodsClass support: members & methods

Dynamics adopters will appreciate the completion on FLA (Five Letter Acronym). Others may also use the table unique dump name like table aliases:


Other functionalities

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

Query analyserQuery analyser

ABHack also hacks the traditional Section Editor

Section editor hacked with ABHackSection editor hacked with ABHack
The cursor position is remembered when you switch between sections.

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

Syntax tooltipsSyntax tooltips

And last but not least, this one was fun:

ABHack fun on Linux: Wine was there!ABHack fun on Linux: Wine was there!

Organic Group

abhack091026.zip2.13 MB
abhack120703.zip2.15 MB
abhack140108.zip2.16 MB
abhack140315.zip2.16 MB