Ivan Čukić

VIDE (Vim with Qt Creator’s Quick Browse and more…)

As you probably don’t remember (it was a long time ago), I was inspired by one Qt Creator’s feature – namely the Quick Browser – which I wanted to add to Vim. I haven’t touched it in a while due to lack of time and the promise of Vim emulation in Qt Creator. Since I find the Vim emulation in QtC not mature enough (I’ll leave commenting the final QtC 1.0 for some other time), I decided to continue working on the Vim with Runners project, or VIDE, the Vim IDE.

Vim has many plugins available at www.vim.org/scripts/ but the thing that I find annoying is that most of them are not really meant to work well together. So, for example, the Project plugin and the tag browser plugin open separate panels instead of sharing the same one, thus using too much screen real-estate…

Vide Logo

Before I begin, I would just like to note that Vide is still in its infancy and not all things are yet working properly, or at all. To see what does work, keep reading.

The point of Vide is to provide some standard framework for people who want to use it, so that a greater integration can be achieved. It is written in Python (so Vim with +python compile-time option is required) so writing new runners is a breeze.

The runners (the name is taken from the Plasma project) are meant to provide results for the entered query. The difference between plasma’s runners and the ones in VIde is that Vide activates only one runner at a time. Personally, I find that to be a better solution in this case. To choose the runner you want to use, just prefix the query with the runner’s key. For example, to find a file in the source tree that contains ‘vide’ in its name, just enter “f vide” as the query (“f” being the key of the Find runner)

Runners

To open the Vide panel, press Ctrl+A (this can be changed, but I’ll cover that later)

Quick Browser

The Quick Browser is invoked with the ‘qb ‘ prefix, but since it is the default runner, you can omit the prefix, and enter only the class name you are searching for. For example, if your query is “Butto” (or “qb Butto”), you’ll get all classes named Butto. The Quick Browser uses a CTags file to retrieve the list of matches, so you need to keep the ctags file updated.

Currently, the only way to recreate the tags file is to call :QuickBrowserReloadTags but that will change soon. Vide is going to provide a quick automatic regeneration of the tags file thanks to the iNotify (optional – set via the vide project configuration file).

Apart from CTags, QB runner supports PTags (for python). Note that you need to have the ptags.py in your path for this to work.

Find and Grep

The other two existing runners are Find and Grep, whose keywords are “f” and “g” respectively.

Project organization

In order for Vide to be loaded, firstly you’ll need to add it to vim’s plugins, or do a manual :source /path/to/vide.vim. You can freely do the former one since Vide will not bother you if you’re not working on a vide-enabled project.

To make a vide-enabled project, you’ll need to create a .videproject directory in the project’s root. There is no UI for this at the moment, so it needs to be done manually. You have an example .videproject directory in the SVN (Vide contains its own .videproject – it can be used for other projects aswell).

When you start Vim (and load vide.vim script) it will check for the .videproject directory in the current working directory, and if it doesn’t exist, it will not be loaded, and you’ll get your regular Vim.

If the .videproject is found, with all necessary sub-items, Vide will be loaded. The another thing that is important to mention is that you can place Vim plugins/scripts inside the .videproject/plugin subdirectory – if you need those plugins only for that project.

Well, that is all for now, the project is located at http://sourceforge.net/projects/vide/, so you can grab the sources from the SVN there. Just note that it is not finished – this is just a pre-alpha-tech-preview-release :)

If you have any questions, feel free to ask.

Loading comments...