DoItNow & RevisionItNow
I’ve updated the Google Code repository for DoItNow with a newer version. I’ve removed all source control features from DoItNow and separated them into their own add-in. This should make it more compatible with other add-ins you may be using to handle source control. I’ve uploaded the Mercurial version of the add-in, but the full source is available should you want to change it back to Perforce.
I’m only using Visual Studio 2010 at home now, so the project files are all in that format at the moment. I provided Addin files which will work for Visual Studio 2008 as well though.
By request from someone at work, the open in solution dialog now performs matches on multiple (space-separated) search terms.
I’ve been testing out an idea for a replacement for the standard Visual Studio find-in-files. This is the first pass at it (let’s call it an alpha), so download at your own risk! It’s actually sits side-by-side with the existing find-in-files, so it’s pretty safe to install.
Here’s where it’s (possibly) better:
- It can match multiple search terms and will rank results accordingly.
- Remembers all settings from the previous searches. Pushing up or down will set things like ‘match case’ based on the search history.
- It populates the file types drop down based on the files in the solution, and sorts them by frequency.
Here’s where it’s (definitely) worse right now:
- It doesn’t remember the search paths you used in previous Visual Studio sessions.
- Since it ranks results, it doesn’t present them incrementally. This means you might have to wait longer to get results.
- You can’t cancel a search!
FindItNow ranks search results based on the number of hits on each line, as well as hits in the surrounding few lines. In order for a result to even show up, it must have all search terms present in a seven-line block.
The top matches (100% quality) have all search terms on the line in question. Worse quality matches have progressively fewer matches on the line.
e.g. Here are the results for a search I did looking for a quaternion conjugate function on some of my code:
Query: "quat conjugate" Options: case=ignore, match=partial Source: Entire solution Finding... Complete Match Quality: 100% -------------------- c:\Development.old\Libraries\C++\Math\Quaternion.h(79): inline Quaternion Conjugate(const Quaternion& quat) c:\Development.old\Libraries\C++\Math\Quaternion.h(96): return Conjugate(quat) / Length(quat); c:\Development.old\Libraries\C++\Math\Quaternion.h(101): const Quaternion result = quat * Quaternion(vec.x, vec.y, vec.z, 0) * Conjugate(quat); Match Quality: 62% ------------------- c:\Development.old\Libraries\C++\Math\Quaternion.h(76): return Quaternion(lhs.x / f, lhs.y / f, lhs.z / f, lhs.w / f); c:\Development.old\Libraries\C++\Math\Quaternion.h(81): return Quaternion(-quat.x, -quat.y, -quat.z, quat.w); c:\Development.old\Libraries\C++\Math\Quaternion.h(94): inline Quaternion Invert(const Quaternion& quat) c:\Development.old\Libraries\C++\Math\Quaternion.h(99): inline Vector3 Rotate(const Vector3& vec, const Quaternion& quat) Total files searched: 407 Matching lines: 34 Find Time: 90 ms Output Time: 9 ms
I’m finding it pretty useful when exploring for functions I think *should* exist in a large code-base since you don’t have to get the exact string to match.
If you’re interested in either of these, you can grab the binaries here.