This project is read-only.

GoFish 5.0

Advanced search tool
for FoxPro code

Version 5.0.162 Released 2016-12-06
Requires VFP9

Note: this project has moved to GitHub:

GoFish is an advanced code search tool for fast searching and replacing of Visual FoxPro source code.

What’s new in version 5:

  • Saved Search History – You can now save the history of your searches, either automatically (for all searches) or selectively, and can restore the search parameters and results grid from these saved searches.  You can also selectively delete your saved searches or use the GF Janitor to automatically delete old ones.
  • More powerful filter options – You can filter on secondary matches in the code “in the neighborhood” (that is, in the same statement or same procedure) of the original match; the filter form has been re-organized to provide clarity; and filters can be combined using logical operators AND or OR.
  • Handling of PRG-based classes – Special attention has been paid to matches in PRG-based classes, which now are treated as much as possible like VCX-based classes. Their names appear in the “Class”, “Base Class”, and “Parent Class” columns in the grid and also in the new category “Classes” in the Treeview.
  • Treeview changes – There are a few new categories: “Classes”, “Menus”, and “Projects”. The “Classes” category, unlike all the other categories which have files as sub-nodes, has classes as sub-nodes. 
  • Column Changes  – There are two new columns, “Parent Class VCX” and “Containing Class”; the column headings for some of the other columns have been reworded; and the contents of some of the class-related columns have been enhanced.
  • Plug-In to control the grid display – You can set the use the plug-in to set the Dynamic* (or any other) properties of the grid. The sample provided changes the colors used for each row.
  • Other UI changes – There are many, many other UI changes, including the ability to select the location of the Code View window relative to the grid.

              More about what's new

Download App and Source: Download the latest build and source here

Discussions: Post questions, bug reports, discussions in the GoFish Discussion Group

Video: (1024 x 768)  (800 x 600) 

Podcast: Interview with GoFish 4 author, Matt Slay, on The Fox Show Podcast Episode #72 

Download Source: Source code (.zip)

View Change Log: View Change Log 

Search Results Form:


New features in version 4.3…

  • New  Wildcard Search Mode allows * and ? in Search Expression
  • Wildcards (* and ?) and the NOT operator (!) can be now used on the Filter Form
  • Added option for confirming "Whole Word" search if it is marked when starting a new search.
  • Added option for clearing the 'Apply Filter' checkbox with each new search
  • Added option to specify number of MRU entries to display in Scope/Search Expression dropdowns.
  • Fixed Report so that it will correctly use the same filter that is in place on the main grid.


Feature List


  • Super FAST code searches are powered by the new GoFish Search Engine class
  • Search scope can be a Project or a Path
  • Recent Search Expressions and Search Scopes are maintained in dropdown combos
  • Can maintain a list of files to skip
  • Uses XML files to store settings and options between sessions. See GoFish Config Files Help for more info.
  • Code Replacements - See GoFish Replace Help for more info.
  • Performs backups during Replace operations  - See GoFish Backup Help for more info.
  • Colorized code view and highlighting of matched line.
  • TreeView provides quick filtering on the results grid by filetype or specific file.
  • Filter Button provides advanced filtering across multiple columns after initial search if performed.
  • Search Expression supports Regular Expressions (use Advanced button on main form).
  • Form is resizable, and dockable (if desired).
  • Column order and width can be changed.
  • Columns are sortable.
  • Window panes are resizable using the vertical and horizontal splitter controls.
  • Double-click a row to open the file and edit the code in native FoxPro method windows.
  • Integrates with PEM Editor IDE Tools to open files through Source Code Control Checkout.

Learn more about...

Further options can be accessed on the Advanced Search form: 

  • Supports searching Active Project, user selected Project, Current Directory, or user selected Directory.
  • Allows searching on TimeStamp of changed objects on forms and classes, as well as file dates.
  • Initial file type filtering limits which files are searched.
  • Whole word/partial match, match case, include/exclude comments.
  • Supports Regular Expressions.
  • All user settings are saved between sessions, including column display, width, and order, as well as form size and position on the screen.
  • Can specify a filename temple (i.e.  job* )

Technical References


Advanced Search Dialog



Filename template

  • Supports wildcard matching (* and ?) on filename pattern to be searched.



Filter Form

  • Allows post-search filtering across multiple grid columns.
  • Wildcards (* and ?) and the NOT operator (!) can be used on the Filter Form


Options Form 

  • Column Selection - Allows choosing from over 20 fields of data to show in the Results Grid.
  • Preferences - Basic user preferences for font size, docking, and message display and more.
  • Advanced - View and manage the XML Config Files used by GoFish to save settings.
  • Replace – To enable Replace Mode and learn how it works
  • Backups – To enable GoFish Backups and learn how they work.
  • Thor – Explains that GoFish will self-register with Thor to create a launch tool and Thor menu for GoFish.
  • Update – Explains that GoFish can be updated using Thor “Check for Updates” feature.




About screen contains additional links to the GoFish project



Thanks to original GoFish author, Peter Diotte, for granting me permission to create this version 4 update.



Release history

  • Ver 5.0.162 -2016-12-06
  • Ver 4.3.012 – 2012-06-11
  • Ver 4.3.011 – 2012-06-03
  • Ver 4.3 - 2012-05-07
  • Ver 4.2 - 2012-01-21
  • Ver 4.1 Beta 1 - 2011-11-17
  • Ver 4.1 Alpha 1  - 2011-08-11  (474 download)
  • Ver 4.0 Beta 1 - 2011-06-07 GoFish 4 Beta 1 released on VFPx. (698 downloads)
  • Ver 4.0 Beta - 2011-05-14
  • Ver 4.0  Alpha - 2010-11-25 - By Matt Slay - Initial work on Ver 4.0 begins, 6 years after last release by Peter Diotte.
  • Ver 3.1b - 2005-07-23
  • Ver 3.0 - 2002-12-04
  • Ver 2.0 - 2002-03-05 - Ability to do a REPLACE
  • Ver 1.0 - 2001-03-01 - By Peter Diotte
    Code named "Thong" (find the string...)
    Park Ave Marketing firm suggests rename - "Go Fish"

Last edited Aug 22 at 2:51 PM by DougHennig, version 187


PatrickJMurtaugh Oct 11, 2016 at 8:05 PM 
I have gofish5 installed now, how do I remove / uninstall gofish4?

Neugebauer Apr 22, 2016 at 9:09 AM 
Who can help, I have a problem with the timestamp. Here is the set 14, resulting in an error. See Image

mattslay Feb 17, 2015 at 6:59 PM 
@VladimirMaska - GoFish makes backups before any Replace operations (unless you have disabled this feature). So, you should have been able to get copies of your original files.

The backups paths is: C:\Users\<<UserName>>\AppData\Roaming\Microsoft\Visual FoxPro 9\GoFishBackups\

You can learn more in the documentation for backups:

VladimirMaska Feb 26, 2013 at 8:36 PM 
Warning. Version 4.3.014 corrupt my VCX file. Work for a few days is lost!!!!!!!

mattslay Jun 8, 2012 at 7:41 PM 
HynekM - Thanks for reporting this. I have applied your changes (with a slight modification) and it seems to work correctly. I will be posting this fix in 4.3.012 coming up soon.

HynekM Mar 16, 2012 at 12:02 PM 
First I like this tool, but I find 2 bugs in "Edit" button action in 4.0.066 version:

1) Editing forms, it opens form at correct method but not at correct object. I downloaded source and find place that open the form, edit some code and it works properly:

class gofishsearchengine.editfromcurrentrow after line 40 i add this line:

lcMethodString = Lower(JustStem(lcFileToEdit)) + '.' + lcMethodString

2) Editing classes, it just open class browser.

class gf_peme_basetools.editsourcex i changed the line 39:

Case lcExt $ ' VCX SCX FRX LBX MNX '

(i added 'VCX')

fpuyuelo Feb 22, 2012 at 1:49 PM 

mattslay Jan 22, 2012 at 3:21 AM 
"I have been changing a legacy system 500+forms to use classes.
I have used Gofish 1000+ times this last week for searching and using replace quite a bit. (lots more to do)
Absolutely brilliant.
Regards - Andrew (2012-01-21)"

Sent to me via e-mail

Jacklieb Jun 8, 2011 at 11:15 PM 
Very nice. It even picks up my old DOS reports (code references didn't). It ran about 3 times faster than code references in one test I did. One problem, when I did a new install and just click on the GoFish button I got an error. Once I looked at the video and learned how to use it it worked great. Thanks.

abergquist Jun 7, 2011 at 11:20 PM 
Very easy ER: To make them easier to read, I recommend "camel-notating" all column names that contain 2 or more words in the 'Column Selection' tab/page of the GoFish Options dialog (e.g., replace 'Objectbaseclass' with 'ObjectBaseClass', etc.).

abergquist Jun 7, 2011 at 11:07 PM 
In the GoFish Filter Builder, I recommend re-arranging some of the options into a more natural order:
- FilePath first, then FileName (also, please capitalize the "n" in 'FileName' as I just did)
- ParentClass, then BaseClass, then Class
- ObjectBaseClass, then ObjectClass, then ObjectName, then MethodName

Also, after having done the above, if you moved the TimeStamp section to the left of the FilePath section, then the following would all be nicely "right-aligned":
- FileName
- Class
- MethodName
(An alternative would be to move the TimeStamp section to the left of ObjectBaseClass.)

abergquist Jun 7, 2011 at 10:49 PM 
ER for the [Filter] commandbutton: set its .ToolTipText to a summary of all the filter criteria currently set (and whether they're applied or not) or 'No filter criteria currently set', if that's the case. The .ToolTipText will, of course, need to be initially set when you first run the form and changed each time you make a change in the GoFish Filter Builder.

abergquist Jun 7, 2011 at 10:41 PM 
I love the HTML window that highlights the line of code that matches the search criteria!

abergquist Jun 7, 2011 at 10:40 PM 
To correct the casing, "JAVA" needs to be replaced with "Java".

abergquist Jun 7, 2011 at 10:34 PM 
Looks like a great tool!

1. Looking at the choices for Filetypes, I recommend that you implement a checkbox option to search *all* files. When checked, it would immediately disable all the other filetype options (just like when you enter an extension in the 'File template' textbox; speaking about the 'File template' textbox, that would need to be disabled as well as when the 'Search all files' [suggested name] checkbox is checked).

2. I recommend implementing a calendar commandbutton to go with the 'From' and 'To' date textboxes in the TimeStamp Filter section.

dkreuzen May 24, 2011 at 5:14 PM 
I use GoFish all the time. This new version will be a welcome update.

jrfrye1 May 21, 2011 at 7:10 PM 
This wil be a great tool! Any closer to beta releas?