Dead code
fix Off-by-one
Try not to change -[XVimMotion motion] gratuitously
+load really isn't the place to initialize a bundle

http://www.blackdogfoundry.com/blog/creating-an-xcode4-plugin/ says
-pluginDidLoad: is.
Add an NSObject(XVimAdditions) category for swizzling

Hooker is really a disgusting hack which uses Hook classes for no good
purposes and does no compile time check.

Let's use this to modify the behavior of (typically) NSTextView and
NSTextStorage if they have xvim_* objects associated with them.
Have an XVimView much like we have an XVimBuffer

+[XVimView initialize] swizzles NSTextView like we used to do on the DVT
one. Nothing was really DVT speciic in the DVTSourceTextViewHook in the
first place. The swizzling does nothing if there is no XVimView associated
with the NSTextView, or if XVim is disabled.  All that is non specific to
XCode.

Rewrite IDEEditorHook as an IDEEditor+XVim category with swizzling.
In the -didSetupEditor override, detect when there are
DVTSourceTextView's that are the one we know what to do with.

Check their document has a file:// URL (so that the script editor in the
Xcode rules are ignored). If the textStorage happens to already be
created, allocate the XVimBuffer right away.

In theory we would have to check when the document for a given TextView
changes whether we still support XVim, but XCode actually destroys and
recreates the view each time you switch documents, so it doesn't matter.
Get rid of many -performSelector:... and NSStringFromClass