Code covered by the BSD License  

Highlights from
LOOK4

4.66667

4.7 | 6 ratings Rate this file 18 Downloads (last 30 days) File Size: 15.3 KB File ID: #9963
image thumbnail

LOOK4

by

 

12 Feb 2006 (Updated )

LOOKFOR substitute that uses a database for quick searching of MATLAB® files.

Editor's Notes:

This file was a File Exchange Pick of the Week

| Watch this File

File Information
Description

LOOK4 Quick-search M-files with keywords using a database.

LOOK4 ABC XYZ ... looks through a database of help files (H1 lines in m-files) for keywords ABC, XYZ, ... There can be as many keywords as desired. For all files in which a match occurs, the H1 line is displayed. CLASS METHODS will be indented by one space, and PRIVATE function will be indented by two spaces.

LOOK4 is very similar to LOOKFOR, except that it searches through a database file named mfileDatabase#.mat (where # is the version number), so it is much faster. Also, unlike LOOKFOR it accepts multiple keywords. The search is case-insensitive.

mfileDatabase#.mat is created the first time LOOK4 is executed. It catalogs helt texts of all m-files in the MATLABPATH (including class methods and private functions). The database file is stored in the same directory as this file. The generation of the database file may take a few minutes depending on the number of m-files and the speed of the computer.

LOOK4 ABC XYZ ... -all : searches the entire first comment block of m-files.
LOOK4 ... -link : displays the results with hyperlinks to full help texts

LOOK4 -new : re-creates the database file.
LOOK4 -new -noverbose : does not show the name of the directory in progress.
LOOK4 -update : updates the database file for the current directory. This is useful for updating personal m-files.
LOOK4 -autoupdate : sets up auto-updating feature.

How Auto-Updating of Database Works:
 The database can be set to tomatically update (re-hash) daily or weekly. LOOK4 accomplishes this by creating a function called look4_autoUpdateFcn.m that gets run during startup (The call is appended to startup.m. If startup.m does not exist, it creates one). This function creates a TIMER object (tagged 'look4AutoUpdateTimer') that gets executed at the appropriate time and interval. Matlab needs to be running at the time of execution. If Matlab is launched after the scheduled update time, then the timer will be scheduled to execute at the next update time.
 LOOK4 also checks the age of the database file (by checking the modification date), and gives a warning when 2 weeks has passed since the last modification. This feature creates a dummy file "mfileDatabase#_vt.txt" which is used to store the time when the warning was displayed.

[H, P] = LOOK4('ABC', 'XYZ', ...) returns the H1 lines and the paths of the corresponding m-files, respectively.

LOOK4 by itself invokes a GUI version of the search program. The GUI incorporates a "key stroke" search feature. Each key stroke updates the search result, but only after 0.5 seconds of non-keypress. This allows fast, continuous typing. Only alphabets and numbers (and quotes) are allowed in the GUI version. Click on results list, or use arrow keys to navigate through results. The full help text is displayed in the bottom panel.

Example:
  look4 root locus
  look4 root locus -all
 
See also LOOKFOR, HELP, DOC.

This is a remake of my WHEREIS code (also found in FEX).

MATLAB release MATLAB 6.5.1 (R13SP1)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (10)
02 Nov 2011 Dan K

A few recommendations:
On line 654: disable 'resize','off' if you use dual monitors (and might want to use look4 on your second monitor). Also, if you default to docked figures, include 'WindowStyle','docked'

As a bug note: in R2011b, if I hit the clear button in the GUI, then look4 becomes completely unresponsive, and I must close it and start over.

27 Apr 2011 Brian Katz

The try-catch syntax has changed in MatLab. This file needs to be revised to function correctly.

>> look4
??? Warning: File: look4.m Line: 1044 Column: 11
This try-catch syntax will continue to work in R2007a,
but may be illegal or may mean something different in future releases of MATLAB.
See Release Notes for MATLAB Version 7.4, "Warning Generated by try-catch" for details.

>> version
ans =
7.4.0.287 (R2007a)

14 Dec 2006 Ludger Fork

Thank you for sharing this. Love it.

26 May 2006 Óttar Ísberg  
29 Mar 2006 Jiro Doke

A new version is on the way. This version allows auto-updating of the database, and other minor improvements. The version number should be v1.4 (shown below the first comment block).

24 Mar 2006 Jiro Doke

Iram,

It's not quite obvious, but you can find whole words by typing:

look4 'sinc ' -all

Note the quotes and the forced space after the word.

Thanks for your idea about hyperlinks. I'll try to incorporate it in the next version.

24 Mar 2006 Iram Weinstein

A problem: I tried look4 sinc -all and generated 85 hits because look4 accepts partial word hits like since. I suggest making full word the default.

Also, here's a way to make the path to the hits more accessible, using matlabcolon. It presents the keywords as hyperlink text. Clicking on the keword shows the full path to the file.

function look4wrap(varargin)

[H,P]=look4(varargin{:});

if isempty(H)
disp('None found.')
else
for k=1:length(H)
disp(['<a href="matlab: disp(''' P{k} ''')">' H{k} '</a>'])
end
end

14 Feb 2006 Michael Robbins

Much needed function. LOOKFOR is painfully slow.

13 Feb 2006 John D'Errico

A splendid enhancement over lookfor if your files are spread over a network. The initial cache call will take a while, but then its fast. Allowing multiple keywords is also nice. Just remember to renew its cache periodically. (An idea would be to add a time stamp in the database, then have it redo the database whenever it is called and the database is over the uder settable age limit. Another idea would be an option to have it establish a timer to redo the database at user specified times. Thus if you leave your matlab process running over night, you could set it to kick in at midnight.)

13 Feb 2006 Jiro Doke

Already found a silly bug. I didn't use NORMALIZED units for the GUI, so it may not show up properly on screen resolutions smaller than 1400x1050. I fixed it and uploaded a new version (should be up in a couple of days). Meanwhile, you can download the newest version from here:

http://www-personal.umich.edu/~jdokeh/mfiles/look4.m

Updates
14 Feb 2006

Fixed GUI window size (use normalized to fit to any screen). Fixed the use of multi-word search (use single quotes instead of double quotes)

30 Mar 2006

1. Added "key stroke" search feature.
2. Display hyperlink in command line.
3. Added auto-update feature for the database. Allows daily or weekly update.
4. Display warning when the database is 2 weeks old.

02 Nov 2010

Minor bug fix and license update

Contact us