27 July 2005

Lynx version 2.4.0.2 is now released - see the Version History below for details.

 

24 April 2005

Lynx version 2.4.0.0 is now released - see the Version History below for details.

Lynx is now FREE for everyone. Yup, that's right, completely free . Anyone who has purchased Lynx during 2005 has been re-imbursed. There's more on offer too... read on.

Why is Lynx now free ? Well, it's not really about falling in line with the other PowerBASIC add-ons that have recently become free. My life has moved on, and I now find it almost impossible to find any time to devote to Lynx (..or indeed to PowerBASIC), and development - by me at least - is stopping here. Therefore there will be another free release - I will be releasing the entire project source code to the public domain.

That's a ton of code - 36 well-documented source files, plus all the graphics etc, representing about 10 man-months' solid work, and all ready to compile. However, before I do that I want to review the code, and there's a lot to review. Therefore, the code release will take place later in the summer.

The Zippety website will continue, and I will remain contactable via my Zippety e-mail address. Support for existing customers remains unchanged, and for new users I will answer e-mails as best I can.

Finally, I'd just like to say what a super community PowerBASIC is - truly unique on this internet - and my involvement with it has been a lot of fun. It gives me a good feeling now to hand over Lynx and its source code to the community, and I hope it will continue to enhance your enjoyment of PowerBASIC programing for a long time to come.

 

12 March 2004

The JellyFish Pro promotion is now closed. Thankyou to everyone who took part.

 

18 January 2004

JellyFish Pro promotion. Also updated site's index page and added a new Testimonials page.

 

12 September 2003

Added new 'set options' tool from Chris Bristow to the download page

 

01 June 2003

Lynx version 2.3.0.0 is now released - see the Version History below for details.

 

16 Jan 2003

Added user-submitted tool OpenFolder to the download page

 

09 Sep 2002

Lynx version 2.2.3.0 is now released - see the Version History below for details.

 

29 Aug 2002

Added TreeView Drag & Drop demo project to the download page, ahead of the forthcoming minor Lynx update  

 

11 June 2002

Following the release of new PowerBASIC compilers (PB/Win 7.0 and PB/CC 3.0), Lynx version 2.2.2.0 is now released - see the Version History below for details.

 

02 May 2002

The special-offer bundle with the JellyFish Pro editor has now been closed.

 

27 April 2002

A few small bugs arose in the last update, and these have been addressed. I have also taken the opportunity to make a few small enhancements to the program at the same time. Details are at the top of the Version History table (lower down this page).

 

16 April 2002

Lynx's user-defined tools can help you debug an application with only the tiniest effort on your part. How ? Well, do you ever find yourself in the situation where you insert message boxes into an application when developing, with messages like "OK up to here" and "x = 3" etc ? The problem with message boxes is that at the very least, they grab the focus. Alternatively, do you ever find yourself wondering what sequence of events occurred - and in what order - to arrive at a given place in code ? Try this -

 

Insert STDOUT commands into your code at points where you want to test/record a value (You don't have PBCC ? No problem - use the equivalent STDOUT routine for PBDLL, whch can be found in several of the free downloadable tools, such as FindText on the downloads page).

 

 

For example : STDOUT "x = " & format$(x)

 

Create a user-defined tool on Lynx's tab 2, specifiying the executable you want to watch (ie: your application), and check 'Capture Output' (vital !) in the Tool definition dialog.

 

Run the tool (your application). You will see your STDOUT strings get posted onto Lynx's Results pane. (Note: You must run the application as a tool - if you run it any other way, Lynx won't know to capture its output).

 

That's it. What's more, because Lynx is running in a separate process, if your application GPFs (...it happens to all of us <g>), your data is preserved on the Results pane. And you can of course copy data off the Results pane to the Clipboard anyway.

A few people have raised support questions which were easily answered when I realised they had copied the bare Lynx.exe to another PC and were using that. The point is that if you want to do that, you need to run the *installation* on the new PC, since Lynx uses a small number of files placed in its own folder by the installation. For instance ehook.dll, which allows it to track the editor. Without these files, Lynx will simply not work correctly.

Finally, this is the last release of Lynx I plan to make for a while now. The reason is that the whole Lynx project (including the web site, etc) now represents just over 9 man-months of work, and I need to return to the real world and start earning a proper living again. In addition, I am embarking on some substantial projects which are going to require all of my time and imagination. This doesn't affect support in any way, and in particular -

 

Any bugs which might arise will of course be addressed

 

I continue to welcome feedback, or suggestions for the program

 

26 February 2002

A couple of people have requested the ability to have user-defined tools in the Project tree. This is high on the 'to do' list, but is not implemented yet. In the meantime, here are some suggestions of ways to achieve this sort of functionality anyway -

 

You can of course add an executable file to the project tree

If the above doesn't give you enough flexibility, you can wrap the executable in a batch file, and add that to the Project tree instead

If you create a tool that has 'Show in menus' and uses a $F parameter macro (or one of the new $1 / $M / $S macros), you are generally able to pass enough information to a tool so that it can perform project-specific actions

The recent files (recent projects) menu makes the last 8 Lynx projects easily available to you, but what if you have acquired a good number of projects, located all over your hard disk ? Well, rather than hunting around your hard disk each time, you can use the Tools tree (tab 2) to help you. Lynx can accept a .lnx (Lynx project) file as a command line parameter, so you can build a sub-tree / list of your Lynx projects as a set of tools on the Tools tree, perhaps under a 'Projects' folder. All you have to do is create a tool specifying Lynx.exe (path-qualified) in the Tool dialog as the program to run, and the .lnx file (again, path-qualified) as the command line parameter. Then, any time you run that tool, the specified project will simply be loaded into Lynx as the current project.

 

27 November 2001

If you use UltraEdit and Lynx together, you may have noticed that when you command a go-to-line from Lynx, and the file in question is already open in UltraEdit *and* has unsaved edits, you get a message from UltraEdit saying "Reload file and lose changes (Y/N)".

Ian Mead, the author of UltraEdit, has incorporated a fix for this into the next (but yet to be released) version of UltraEdit. However in the meantime, Ian has very kindly agreed that any Lynx users affected by this are welcome to e-mail him, requesting version 8.20a++. This is necessary, because this is not an official release of UltraEdit. If you do upgrade to this version (or later) of UltraEdit, you will need to append a "/a" switch to the UltraEdit line syntax that you set up in Lynx's Global Settings dialog, so that the line syntax now becomes "$F/$L /a" (without the double-quotes).

Finally, please note that if you have an older version of UltraEdit, there may be an associated upgrade cost for upgrading to an 8.x version - details of such are on the UltraEdit web site which is at http://www.ultraedit.com

 

Lynx Version History

The version listed at the top of the table is the current release. Within Lynx, the version number is available in the About Box.

Version Number

Date

Details

2.4.0.2

27 Jul 2005

Catering for the THREADED keyword in the last release broke the parsing for the TYPE keyword, with the result that user-defined types were not appearing in the project tree. Now fixed. Thanks to Ralf Wuttig for pointing this out.

2.4.0.0

24 Apr 2005

This release of Lynx is mainly to provide compatibility with the recently-released PB/Win 8 and PB/CC 4 compilers. Inevitably, a few small changes and bug fixes are included too. Here is a summary of the changes -

Added compatibility with new compilers (..of course !)

 

Removed unwanted editors from AutoSetup (JellyFish, and intermediate-release PB editors such as 7.02)

 

Added 8.x / 4.x editors to AutoSetup

 

Added SED (editor) to AutoSetup

 

Added further errors file errors4.dat, and updated Lynx code to use it when appropriate

 

Added parsing for new-style variable list declarations

 

Added parsing for STATIC keyword at start of sub & function definitions

 

Added parsing for THREADED keyword

 

New image for tree (), for THREADED variables

 

Parsing adjusted to cater for new CASE IS construct

 

#COMPILER directive - Lynx won't use this, at least not at the moment. It simply conflicts with Lynx's own compiler-designation scheme (upon which Lynx relies heavily).

 

Improved : Following note from Bob Plymale, ensured that PB compiler paths retrieved from the registry are brought up to long-name form before attempting to match them with the user's specified compiler path.

 

Fix : The $A tool parameter macro was including project-tree tool IDs (eg: ":691") in its list of filenames ; now removed, so that $A now properly exports a list of all FILES in the project

 

New : Added 'Edit Tool' to project tree's context menu (saves you having to locate the tool in the Tools tree)

 

Fix : Context-menu compilation was found to be not working in some circumstances. Problem was due to the way later PB compilers name the log file. Only affected direct compilation of files that do not end in .BAS. Also the 'Run Program' button was not being disabled in the Compiler Results dialog, for context-menu compilations.

 

Improved : Following observation from Jim Padgett, adjusted behaviour following roll-down so that the tree is immediately receptive to mouse wheel commands

 

Improved : Lynx will now make all efforts to find a log file and extract a binary name, before attempting to deduce it from the source directives (this will not do anything for older compilers). The log file may be old (may be very old), but this is still overall a better guess than just going straight for the source directives, which Lynx will do next anyway if it can't find a log file.

 

Fix : Tool Definition dialog was clipped at right-hand edge, for font scaling = 105% (101 dpi).

 

Fix : SFNs were being seen as different files to their LFN equivalents, when arriving as candidates for the MRU.

 

Fix : When parsing, the bracket level wasn't being initialised at start of parsing a procedure, resulting in the first "(" getting ignored in certain circumstances. The result was (sometimes) a proc name with the first parameter name tacked onto the end.

 

Fix : Parsing of labels (first element of multistatement was being seen as a label)

 

Improved : Small error dialog is now modeless

 

 

2.3.0.0

01 Jun 2003

This Lynx update is primarily a maintenance release, triggered by changes that were made in PBEdit 7.02, the latest PowerBASIC GUI editor. As before, a number of useful new features accompany this release, these being the result of background work that had been done on Lynx up to the present date. These are the changes in summary form - full details are in the version notes supplied with Lynx.exe.

Added complete compatibility with the compilers and editors issued under version numbers 7.02 and 3.02

Added a 'Guest Extensions' feature, so that you can specify file extensions which Lynx understands as being displayable in the editor

When you right-click on a code item in the tree, the context menu now offers up to 2 new menu items -

 

Copy <item> to clipboard

 

Insert <item> into JellyFish Pro

Although <item> is taken from the tree, the text that is actually copied/inserted can be more : in the case of macros, subs, functions, you get the parameter list too, which can be useful.

Added new JellyFish Pro option ; you can elect to have JellyFish Pro close all its open files when you load a new project into Lynx

Added new 'anchored' docking modes. These modes allow you to have Lynx pegged relative to the editor's top left or, more usefully, top right corners. If you move Lynx to a new position, you effectively re-define the position it will maintain relative to the editor. If you move the editor, Lynx follows it, maintaining that relative position. Auto-rollup is available in these modes.

Added to Tools sub-menu of the main menu -

 

 

Command Prompt

(opens in current folder)

 

Explorer window

(opens in folder of main module)

You can now start Lynx directly into auto-rollup mode. If auto-rollup is active when Lynx shuts down, then when Lynx next starts up, it will start up directly into the rolled-up state.

Relative paths are now used in the .LNX file, useful if you find yourself transferring Lynx projects between work and home computers

Added an option to have Lynx automatically 'prune' missing items from your recents list on startup

Added a 'Recent files management dialog'. Allows you to manually prune entries out of your recents list.

Lynx now simply adopts the topmost status that it had at shutdown. The previous mechanism of a checkbox 'Start Lynx topmost' (Global Settings dialog, Program page) has been dropped.

Added an optional 'small error dialog' feature (Global Settings dialog, Program page)for when  compilation fails. You get a minimum-size dialog that sits in view, displaying both the error message and the PB explanation of that error.

Lynx has now been tested on Windows XP, and I am satisfied that it works normally on that OS

Lynx Help has of course been updated with all the changes. Most of them are in the topic for the Global Settings dialog (Program page). In addition, the vertical scroll response of the QHTM control which is bundled into LynxHelp.exe has been adjusted - pressing the up/down arrows (and also using the mouse wheel, if you have one) produces a more comfortable vertical scroll rate.

Fixed bug caused by not parsing correctly for TYPE SET

Fixed bug : occasional blank window used to occur if Lynx started under load.

Fixed a bizarre problem whereby file nodes in the project tree could appear more than once. This was reported by two users, and was caused by Lynx storing the return value from GetTickCount() in a signed LONG variable, which should instead have been a DWORD. The variable was overflowing, meaning that the problem would only appear on a PC that had been running for between 24 and 49.7 days (or a multiple of that range) (!)

 

 

 

2.2.3.0

07 Sep 2002

This Lynx update is primarily a maintenance release to address the reported problem where long filenames were not being handled correctly when Lynx was being used with a PowerBASIC editor. However, as usual, I have managed to squeeze some other goodies in as well, and these are the changes in this release -

 

 

The issue referred to above has been corrected, and where command lines use LFNs, they are now correctly sent to PB editors wrapped in double quotes. In addition, all use of long filenames with Lynx, for all editors listed in Lynx's Global Settings dialog, and for all compilers from PB/DLL 6.0 and PB/CC 2.0 onwards has been revisited and checked.

 

 

Adjusted the built-in line syntax for Programmer's File Editor (PFE) to use double-quotes. If you are using PFE from Lynx, please go to the Global Settings dialog, and re-select this editor - Lynx will automatically insert the new, correct line syntax for you.

 

 

Changed CCEdit 3.0 title ("PowerBASIC 32-bit Console Compiler" -> "PowerBASIC Console Compiler")

 

 

Removed inadvertent dependency on English-language version of Windows, which existed if you used PB editors

 

 

Fixed situation where a monitored tool wouldn't run if no Working Folder had been specified for that tool

 

 

Added a new feature to the Project Settings dialog, whereby Lynx will perform a recursive search, and validate the list of files in your project, looking for -

 

-

Files which you list, but which aren't needed

-

Files which your project links to (when compiling) but which aren't in the project

 

In other words, it allows you to bring the project's file list up to date at the click of a button. This is explained in more detail in the revised 'Project Settings dialog' topic in Lynx Help. To access this feature, just press '+' on the toolbar, then hit the new 'Validate List' button at top right of the Project Settings dialog when it appears.

 

 

Added %EXE as allowable specification of executable to run. This option becomes available in both the New Project Wizard (it's now inserted for you as the default, when creating a new project), and in the Project Settings dialog. What it means is that instead of you specifying the literal path of the executable associated with the project, you can specify %EXE, which means 'whatever executable results from compilation'. For DLL projects, of course, no executable is produced, and you will still need to enter the literal path of any testbed executable you might want to use.

 

 

Added API Sleep calls in loops that wait for tools to complete, to reduce Lynx's CPU usage when a non-captured tool is running.

 

 

Add a small Help button to the New Project Wizard, to explain %EXE

 

 

Context menu on Results pane was showing blank lines (instead of disabled lines) if you invoked it while a monitored tool was running.

 

 

I have re-written the search algorithm used when searching the tree from Lynx's Find Bar, resulting in a faster and improved search facility. So now, when searching the tree, Lynx will search from top to bottom, looking for matches in the following node types (in tree order) -

 

 

 

   Procedures, Macros, Declares, Types & Unions, Globals, Labels, COM Interfaces

 

 

 

This means that Variables (within a procedure), Select Case constructs and member names (of Types & Unions, Macros, Interfaces) are deliberately not searched. The reason for this is that these types of nodes contribute a lot of 'clutter' when performing a search, and it is felt that they are usually of little interest when performing a global search of the tree.

 

 

I have added support for JellyFish Pro's new 'locate sub/function' feature, which you invoke from JellyFish Pro by placing the cursor on a keyword and pressing F6. When this happens, Lynx will search the Project tree, scanning in this order -

 

-

All Procedure names

-

All Declared procedure names (Declares)

-

All Macro names

 

As soon as it finds a match, Lynx will command JellyFish Pro to display that item's definition or declaration. This is a superb feature that Paul Squires has introduced, and when JellyFish Pro is used in conjunction with Lynx, it works very well indeed.

 

 

A major improvement has been made to how Lynx interacts with PowerBASIC editors. Thanks to information provided by PowerBASIC, Inc, and thanks especially to the genius and kind help of Semen Matusovski, Lynx can now command PowerBASIC editors directly, without having to go through the File, Open dialog. This is a real boost for folks who use these editors in conjunction with Lynx.

 

 

2.2.2.0

11 Jun 2002

This Lynx update is primarily to adapt to the new PowerBASIC compilers, PB/Win 7.0 and PB/CC 3.0. However as usual, I have also taken the opportunity to sneak a few things in around the side. Changes are -

 

 

COM interfaces are now represented in the Project tree

 

 

Macros are now represented in the Project tree

 

 

The Global Settings dialog includes two new lines on the 'Project Tree' page, for setting display options for COM interfaces and Macros.

 

 

The Global Settings dialog also now includes the new IDEs/editors in the drop-downs on its 'Editor' page

 

 

Lynx now makes use of the /C command-line switch, if it detects that one of these new compilers is being used. This makes it possible to use a longer command line (this is transparent to the user).

 

 

The code for automatically setting up compilers on first use has been updated to include the new compilers

 

 

Adjusted parsing for new, enhanced SELECT CASE syntax

 

 

Adjusted parsing for new, enhanced TYPE declaration syntax

 

 

The error codes and descriptions have been updated, and a new file ERRORS3.DAT is supplied with this release.

 

 

Help has been updated -

 

 

 

-

Updated topic

...

\Miscellaneous\Lynx Command Line

-

New topic

...

\Miscellaneous\PowerBASIC Macros

-

New topic

...

\Miscellaneous\PowerBASIC Registry entries

-

Minor enhancements to other topics, reflecting changes

 

 

Several 'under the hood' adjustments have been made to ensure Lynx works transparently with the new compilers.

 

 

Before launching a compiler, Lynx now checks that it actually exists (!). Lynx makes many checks, as you might imagine - this one had simply been overlooked previously.

 

 

Before launching a compiler, Lynx will not now proceed if it cannot determine the compiler version. This is explained in detail in the new Help topic \Miscellaneous\PowerBASIC Registry entries ; please read.

 

 

I modified the behaviour where focus is automatically thrown to the editor when Lynx rolls up ; this now only happens if Lynx is topmost and the editor is the next window in the Z-order. Without this, a program launched by Lynx (eg: following a 'compile & run') would become obscured as the editor receives the focus.

 

 

I noticed that if you had opted for variables *not* to be shown in the Project Tree (selectable in Global Settings dialog, 'Project Tree' page), any variables then found by Lynx would get put under a "!ERRORS" node, which was clearly not right. I think most people want Lynx to display variables anyway, but this is now corrected.

 

 

I noticed that if you close Lynx down while a spawned HTML Help window was open, Lynx would often crash. Fixed.

 

 

Enhancements have been made to the underlying JellyFish Pro interface

 

 

Lynx is now more discriminating when processing any received WM_COPYDATA messages (JellyFish Pro sends these, for certain operations), so that Lynx doesn't now respond to messages sent with wParam = HWND_BROADCAST. This won't make any difference to most users.

 

 

If you use Borje Hagsten's excellent IncLean tool, you may have noticed that Lynx can contain out-of-date information for the contents of the file that IncLean outputs (typically WINCLEAN.INC). To cut a long story short, IncLean seems to use a special 2-stage technique, that causes Lynx to recognise only its first (incomplete) output. Anyway, I have added code to Lynx that now works around this, and Lynx now faithfully reports on the contents of any file generated by IncLean.

 

 

2.2.1.0

27 Apr 2002

Minor Lynx update. This is a maintenance release, correcting some small bugs. I have also taken the opportunity to add a few small enhancements to the program. Changes are -

 

 

When Lynx is launched as system handler for .LNX files, now strips off all single/double quotes, which could be present if user had set handler up manually in Explorer.

 

 

Resource compilation now includes command to JellyFish Pro to save all open files of type .RC, .H and .MC. Note : this requires JellyFish Pro 1.0.5 or later to become functional

 

 

If auto-rollup is enabled, Lynx now throws the focus back to the editor once it has rolled up.

 

 

Lynx now suspends auto-rollup if a menu is showing ; before, it would just rollup when the mouse moved away, leaving a 'stranded' menu.

 

 

The 'Fill screen' item under the Options menu now applies if Lynx is not in a docked mode ; in this case, Lynx's size and position don't change, but the editor is made to exactly fill the available desktop area.

 

 

Refinements made to some of the source code parsing. Also corrected incorrect parsing that could sometimes follow an array declaration where the array range was specified using colon notation, for example dim x(1:3) as long

 

 

Re-enabled go-to-line functionality for items under a "!ERRORS" node ; this had been inadvertently blocked by recent code.

 

 

PB compilers earlier than 6.1 or 2.1 did not contain name of binary in log file, so a compilation using F5 (JellyFish Pro only) was returning a blank filename. Fixed - now derives name by scanning for the #COMPILE statement.

 

 

Noticed code to automatically set up compilers on first use hadn't been updated to include compiler versions 6.11/2.11.

 

 

Launch parameters were not being passed in the command line, following a 'Compile & run' command (F8, project).

 

 

2.2.0.0

16 Apr 2002

Details of this release are listed separately in What's new in Lynx version 2.2 ?

2.1.0.0

26 Feb 2002

Added JellyFish Pro support. Within Lynx this principally means -

 

 

 

-

JellyFish Pro added to editor list in Global Settings dialog

-

New option : auto-save pre-compile, added to Global Settings dialog (Compiler tab). Note that this feature relies on you using JellyFish Pro, and it cannot be implemented for other editors, since there is no general way to tell an editor to 'save all files'.

-

Clicking on a file node takes you to last-seen line in that file (previously it went to line 1). This feature also relies on you using JellyFish Pro, and it cannot be implemented for other editors, since they don't make this information available to Lynx.

 

 

Added tool parameter macro $1 : path-qualified name of main project file

 

 

Added tool parameter macro $M : directory of main module

 

 

Added tool parameter macro $S : 'set to' folder for project

 

 

Added automatic horizontal scroll bar to Results pane

 

 

Added more checking code to definition / operation of user tools

 

 

Added finer control of confirmation / prompting, for when a tool is run. Previously it was 'Always Prompt' / 'Never Prompt'. Now, you can choose from 'Always', 'Only when run by user', 'Only when run by Lynx (project load and compiling)' and  'Never'.

 

 

Added ability to globally disable a tool. This might be useful for example if a tool depended on the presence of a network share, and was inappropriate if you were not in the office.

 

 

Lynx now displays project title in its title bar

 

 

Bug fix : Borland RE syntax was slightly incorrect, and was also processed incorrectly by Lynx. If you have this syntax set up for any tool, you should re-specify the line-structure syntax, using the list of stock syntaxes offered from within the Tool definition dialog.

 

 

Bug fix : a suggested resource script was not being displayed in the New Project Wizard (it had been broken by previous work)

 

 

Bug fix : if multistatements were used to separate variable declarations, only the first variable was being seen by Lynx

 

 

All use of MessageBox() API function has been protected in accordance with advice issued by PowerBASIC, Inc.