Home  Downloads  Documentation  Project page  Contact Us 

General
Demonstrations
License
History
Future
Downloads
(There's no downloads available yet.)
Latest Binaries (Win32)
Source Code
Help
FAQ
Forums
Known Bugs
Report Bug
Useful projects
Synergy2
SourceForge.net
This project is hosted on SourceForge.net. SourceForge.net Logo   Support This Project
If you find this project valuable to you, please consider donating what you see fit to the project.
Donate code :-) (Integrations anyone?)
Donate graphics
Donate web support
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.

OptionWhat happens?
Ignore path hintsThe 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 hintsThe 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 hintsThe 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

OptionWhat happens?
LevelThis 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.
HistoryLimits 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
OptionWhat happens?
NameName of a new Search Group that you want to create.
Add Search GroupAdds the new Search Group, with the name given in the Name field.
Remove Selected Search GroupsRemoves the selected Search Groups.
Select AllSelects all the Search Groups in the view.
Select NoneUnselects all the Search Groups in the view.

Data Gather Thread

OptionWhat happens?
Initial update delayThis 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.
PriorityAdjusts 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

OptionWhat happens?
PathA full path which you want to include to the current Search Group.
Browse (...)Opens a dialog to browse for a directory path.
Add PathAdds the path to the Search Group.
Remove Selected PathsRemoves the selected paths from the Search Group.
Select AllSelects all the paths in the Search Group.
Select NoneUnselects all the paths in the Search Group.

Filters

OptionWhat happens?
File AcceptThis 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 RejectThis 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 AcceptThis 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 RejectThis 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

OptionWhat happens?
IntervalSpecifies 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):

  • $(QO_EDITOR)
  • $(EDITOR)

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:

  • QuickOpen([keywords])

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() to <F12>.

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