QUICKopen Documentation
Introduction
This document introduces QUICKopen, a tool for quickly finding files on your hard drive and using them for whatever purposes you want. You can load your files into your favorite editor or open them for editing in your source control system. In addition, you can delete, integrate, submit and diff the files or change your directory to. The possibilities are endless! (Which was the whole point of this application, to do whatever you want, !QUICK!)

QUICKopen main user interface, with all the whistles and bells

QUICKopen main user interface, with less bells but still all the whistles
Installing QUICKopen
Requirements
- Qt >= 4.1.1
- Perl (for console/shell scripts)
Windows
For your convenience, QUICKopen comes pre-compiled for the Windows platform. Please just use those binaries, instead of compiling your own. The pre-compiled version is a release build, linked with a static Qt library, and then compressed to the maximum effect with UPX (Ultimate Packer for eXecutables).
- Start QUICKopen by running quickopen.exe located in the project's bin directory.
If you experience crashes, or if QUICKopen happens to stall or get unresponsive, you may wish to recompile QUICKopen as a debug version. The project files are created in such a way that you may have both release and debug built at the same time. When compiled debug the application has "_debug" appended to the filename.
*nix / Mac
- Execute qmake in the project directory.
- Execute make.
- Add <project path>/bin to your path.
- Start QUICKopen by running quickopen located in the project's bin directory.
Editors / IDEs
Visual Studio .NET
In the bin directory of the project there are .msi files, which will install the client for Visual Studio .NET. The MSI packages are versioned after the version of the IDE, so chose the one corresponding to your Visual Studio .NET version. (Ei. QuickOpenClient2003Setup.msi for VS.NET 2003, and QuickOpenClient2005Setup.msi for VS.NET 2005)
After running the .msi file, the client will start the next time you start your IDE.
- Run QuickOpenClient200?Setup.msi
- Restart Visual Studio .NET
Visual Studio 6.0
This client should work on all version of Visual Studio based on the VS 6.0 framework:
- Visual Studio 6.0
- eMbedded Visual Studio 3.0
- eMbedded Visual Studio 4.0
In the bin directory of the project there is a quickopenclient_vs60.dll file. Simply go to
Tools
Customize...
Add-ins and Macro Files
Browse...
and select the DLL file to load the client. Ensure that the addin is checked. The client will load as soon as you close the Customize dialog.
- Add quickopenclient_vs60.dll as a Add-in
- Restart Visual Studio 6.0
(X)Emacs
In the bin directory of the project there is a quickopen.el file. Modify your .emacs file so that the quickopen.el file is parsed when you start your (X)Emacs.
- Add (load "path/to/quickopen/bin/quickopen.el") to your .emacs
- Restart (X)Emacs
VIM / GVIM
In the bin directory of the project there is a quickopen.vim file. Copy this file over to the plugin directory of your VIM / GVIM, or to you personal VIM / GVIM plugin path.
- Add quickopen.vim to your /path/to/VIM/or/GVIM/plugin/quickopen.vim or $(HOME)/.vim/plugin/quickopen.vim
- Restart VIM / GVIM
Configuring QUICKopen to your needs
Global

Client Hints
Clients connecting to the QUICKopen service can send certain hints to optimize the QUICKopen experience for the user. The QUICKopen service allows the user to ignore these hints if they become an annoyance, for example if the clients missuse the hints. Note, however, that not all clients provide all the hints for the QUICKopen service. For example, console scripts will usually not send the positioning hint to the client, as the scripts don't know where on the desktop they are located. GUI clients, such as the Visual Studio integration, are likely to send the positioning hint.
Option | What happens? |
Ignore path hints | The path hint is sent to the QUICKopen service to make it select the most appropriate Search Group. Some users find it annoying that the Search Group changes without their explicit concent, so they would select this option to ignore the path hint sent by all clients. |
Ignore positioning hints | The positioning hint is sent to the QUICKopen service to make it center itself around this point. GUI clients will most likely send this hint, while script clients will not. Users that want their QUICKopen window to remain in one position would select this option to ignore the positioning hint sent by all clients. |
Ignore keyword hints | The keyword hint is sent from clients which want to 'prime' the keywords for the user. For example, if the user has highlighted words in a text editor and triggers the QUICKopen service, the highlighted words would be primed in the keyword search field. Users that want to always keep the previous keywords in the search field would select this option to ignore keyword hints sent by all clients. |
Logging
Option | What happens? |
Level | This option indicates what level of debugging you want into the Log view. A level of 0 will turn logging off, while a level > 11 will overflow the log view, as all filtered files and directories will be logged, telling the user which filters accepted and rejected a file or directory. |
History | Limits the number of lines in the log view. A history of 0 will give you endless history, only limited by your computer's memory and may lead to crashes if used in normal operations. A level of ~50 lines should be sufficient. |
Search Groups

Names
This is the page where you enter the name of the different Search Groups that you want. (NOTE: You do not add any directories on this page!) Each Search Group may contain as many directories as you wish. Some suggestions to Search Group names:
- Qt 4.1
- Java code
- KDE codebase
- Personal Projects
- Documentation
- Logs
- Downloads
Option | What happens? |
Name | Name of a new Search Group that you want to create. |
 | Adds the new Search Group, with the name given in the Name field. |
 | Removes the selected Search Groups. |
 | Selects all the Search Groups in the view. |
 | Unselects all the Search Groups in the view. |
Data Gather Thread
Option | What happens? |
Initial update delay | This shows how long the QUICKopen services waits after it has started to initiate the first Search Group update. This is useful if the QUICKopen service is started automatically when you log in and you want your computer to have the time to finish loading all components before updating the Search Groups, which requires significant IO. |
Priority | Adjusts the priority of the data gathering thread, allowing you to adjust speed vs responsiveness. Most likely you'll want it to stay at the Idle priority, to allow for maximum responsiveness of your computer. |
Search Group

Paths
Option | What happens? |
Path | A full path which you want to include to the current Search Group. |
Browse (...) | Opens a dialog to browse for a directory path. |
 | Adds the path to the Search Group. |
 | Removes the selected paths from the Search Group. |
 | Selects all the paths in the Search Group. |
 | Unselects all the paths in the Search Group. |
Filters
Option | What happens? |
File Accept | This filter indicates which files the Search Group may include. This is the first filter when processing files, and the files may be rejected by the file rejection filter. Default filter is "^.*\.(h|c|cpp|cxx|hxx|C|java)$" |
File Reject | This filter specifies which files, of the ones accepted, should be rejected. This filter is run after the File Accept filter, and may be empty to not reject any files. A filter of ".*" would reject all files. |
Directory Accept | This filter indicates which directories the Search Group may include. This is the first filter when processing directories, and the directories may be rejected by the directory rejection filter. This filter should never be empty, as that would not accept any directories, and your Search Group would be completely empty. Default filter is ".*" to match all directories. |
Directory Reject | This filter specifies which directories, of the ones accepted, should be rejected. This filter is run after the Directory Accept filter, and may be empty to not reject any directories. A filter of ".*" would reject all directories. Default filter is "^(include|tmp|.moc|.obj)$" to reject all "include", "tmp", ".moc", ".obj" directories. |
Updating
Option | What happens? |
Interval | Specifies how often the Search Group should be updated. |
Modes of operation
QUICKopen has several modes of operation so that you can locate your files the fastest way possible. Below we'll discuss the various ways to operate QUICKopen.
Keyword Mode (KM)
In this mode, the whole list of files in a defined Search Group is displayed, and will be narrowed down in real-time as you type characters to match. There are three character matching options: case-sensitive, case-insensitive, or part of a regular expression. A single keyword will be matched against the whole file path, not just the filename and extention.
The first time you run QUICKopen, this mode is set as the default operation mode, with mode auto-detection turned on.
File Mode (FM)
In this mode, you simply search for a file by writing out the path of the file. If mode auto-detection is turned on, the File Mode is selected when the keyword search string starts with:
- "@~", Indicating at $HOME directory
- "@/", Indicating at ROOT directory (*nix / Mac)
- "@C:", Indicating at C: drive (Windows only)
If you're already in File Mode (FM), you may skip the initial '@' character, and just start typing. In FM, QUICKopen will assist you with path completion so the TAB key in this mode will not change the focus to another control, but rather try to complete your current path. The Views will show you the possible choices you have in the current path. If your path is incorrect, the views will be empty. Simply press Alt + Backspace to delete up to the previous separator. So,
/some/path/which/is/not/correct # Current input
<Alt + Backspace> <Alt + Backspace> # Press this combo
/some/path/which/is/ # New input
Code-model Mode (CM)
Warning: NOT IMPLEMENTED YET
In this mode, you search for Code Elements in parsed source code, by writing out the name of the symbols. If mode auto-detection is turned on, this mode is selected when the keyword search string starts with:
- "|", Indicating only global functions and classes.
- "||", Indicating the above, and rolling out nested structures.
As you type, the views will narrow down the symbols list. Note that since symbols might be ambiguous, you will seldom have a single match in the view.
Normal use-cases
From console
These are a collection of scripts, mostly written in perl (with binding Batch and Shell scripts), to let a user quickly locate files, and open them. You will need to include the QUICKopen's bin directory in your $(PATH) to be able to use these commands.

quickask
quickask is an application written to expose all the features of the QUICKopen service. Scripts will often use this application to query for the files to open, and parse its output. The application can therefor output the files in many different formats, to allow easy parsing.
Usage: quickask [-AcceptSingle] [-FullInfoCommaSeperated]
[-FullInfoLineSeperated]
[-OnlyFilesCommaSeperated]
[-OnlyFilesLineSeperated]
[-ReturnAll] [-ReturnFirst] [-client
<value>] [-help] [-host <value>]
[-keyword <value>] [-path
<value>] [-port <value>]
[-position <value>] [-single]
-a, -AcceptSingle
Tells QUICKopen to automatically accept a
QUICKopen which result in a single file,
without showing the GUI. If there's more
than one match the GUI will be shown.
-C, -FullInfoCommaSeperated
Reports with full information, and comma
separated items, where each item is quoted
-L, -FullInfoLineSeperated
Reports with full information, and line
separated items, items are not quoted
-c, -OnlyFilesCommaSeperated
Only report comma separated items, where
each item is quoted
-l, -OnlyFilesLineSeperated
Only report line separated items, items are
not quoted
-r, -ReturnAll
Tells QUICKopen to return all items which
has been filtered.
-f, -ReturnFirst
Tells QUICKopen to return the first file
matching the provided keywords. (An "I'm
Feeling Lucky" mode)
-t, -client <value>
Sets client name for the script/application
using the QUICKopen service. (Default: Shell
Script)
-?, -help
Display help
-h, -host <value>
Sets the hostname of the machine running the
QUICKopen service (default: localhost)
-k, -keyword <value>
Sets keyword hint for the QUICKopen service.
If the service is not set to ignore this
hint, the QUICKopen dialog show this keyword
as the initial keyword and filter on it.
-d, -path <value>
Sets path hint for the QUICKopen service. If
the service is not set to ignore this hint,
the QUICKopen dialog will try to find the
most relevant search group, and select that
by default.
-p, -port <value>
Sets the port number for the QUICKopen
service (default: 9696)
-s, -position <value>
Sets position hint (s@x,y) for the QUICKopen
service. If the service is not set to ignore
this hint, the QUICKopen dialog will move
the screen (s) at position (x,y).
-1, -single
Tells QUICKopen to only allow a single
selection of file (default is multiple)
Note: The screen number in the -position option is not yet supported, and that there can only be one -keyword option: quickask -k "many keywords in one option .cpp"
qo
Usage: qo <keywords>
qo is simply triggers the GUI so the user may locate the file(s) he wants to open, and then starts the editor which the user uses, which these files as the argument. The editor is picked up from the enviroment variables (in this order):
If no editor is found in the enviroment, the following is used:
- Notepad - On Windows
- VI - On all other platforms
For example, if you set QO_EDITOR to be gnuclient, the qo will open the files in your currently running Emacs, is you're using gnuserver.
qocd
NOTE: On non-Windows OS' you'll need to source the qocdrc file, to get the
qocd function in your shell.
Usage: qocd <keywords>
qocd is used to change the current directory to the item found in the Search Groups, given the provided keywords. Given that a set of keywords can produce more than one result, the first item is always used. If the directory is not the correct one, simply try again with a more specific keyword.
qocd uses pushd to change a directory, which means that popd will bring you back to the previous directory.
qop4
Usage: qop4 <keywords>
qop4 will check out the selected file(s) from your Perforce depot.
qpe
Usage: qpe <keywords>
qpe will check out the selected file(s) from your Perforce depot, and open them in your favorite editor (like the qo command).
From Editors / IDEs
The editor/IDE clients are either libraries, plugins, or scripts which provide functionality to let the editors/IDEs query the QUICKopen service for files to open.
Visual Studio .NET

The Visual Studio .NET client exposes only two commands:
- QuickOpenClient200?.Configuration
- QuickOpenClient200?.QuickOpenKeyword
It is best, and most efficient to bind these two commands to keys which is comfortable and quick to reach. I bind them to
- QuickOpenClient200?.Configuration to <Alt + Q, Alt + P>
- QuickOpenClient200?.QuickOpenKeyword to <Alt + Q, Alt + O>
You can setup your own keybindings by going to
Tools
Customize...
Keyboard...
and enter "QuickOpenClient" in the "Show commands containing" field.
Visual Studio 6.0

The Visual Studio 6.0 client exposes only two commands:
- QUICKOpen.Preferences
- QUICKOpen.QuickOpenKeyword
It is best, and most efficient to bind these two commands to keys which is comfortable and quick to reach. I bind them to
- QUICKOpen.Preferences to <Ctrl + Alt + P>
- QUICKOpen.QuickOpenKeyword to <Ctrl + Alt + O>
You can setup your own keybindings by going to
Tools
Customize...
Keyboard
and chose Category "Add-ins".
(X)Emacs

The (X)Emacs client exposes only two commands:
- quickopen-get-singleselect
- quickopen-get-multiselect
It is best, and most efficient to bind the last command to a key which is comfortable and quick to reach. I bind it to
- quickopen-get-multiselect to <F10>.
You can setup your own keybinding by editing your .emacs file, and add:
(define-key global-map [(f10)] 'quickopen-get-multiselect)
VIM / GVIM
NOTE: This plugin requires quickask in the path to work!
 The VIM / GVIM client exposes only one commands:
It is best, and most efficient to bind the last command to a key which is comfortable and quick to reach. I bind it to
You can setup your own keybinding by editing your .vimrc file, and add:
map <unique> <F12> <Plug>QuickOpen
Other ways to trigger QUICKopen from VIM / GVIM, is through the use of binding <Leader>qo. In most cases the <Leader> is configured to the '\' key, so when in Visual mode, simply type \qo to trigger QUICKopen. You can also use the QO command, so
- :QO<Enter> - Show QUICKopen without any keywords (so use previous keyword)
- :QO some keywords to command<Enter> - Show QUICKopen and pass keywords to initial filtering
|