
viAllOver v0.1a
by Matt O'Brien - viallover at dabble.org
---
viAllOver is a loadable bundle. it uses the InputManager mechanism to try and load its self in all cocoa applications. viAllOver is a subclass of NSTextView which makes all textviews in a cocoa application behave more like vi.
 
viAllOver is currently in alpha, it is mostly a proof of concept. it may have memory leaks, it could crash your apps, it could do a lot of things. i haven't had any major problems, but use at your own risk. i take no responsibility for any damages or problems.


Installation
---
place the "viAllOver" folder into "~/Library/InputManagers/" or "/Library/InputManagers/" and restart your cocoa apps or you can restart your whole computer.


Usage
---
well it pretty much works like vi. once viAllOver is loaded you should see a non-blinking green block insertion point, this is insert mode. the insertion point will turn red when in command mode and gray when inactive. the "esc" key should put you into command mode, "i", "a", "o", "O", "c", and "s" should return you to insert mode.


Notes
---
"x", "d", "y", and "p" are tied to the cut and paste buffer.

you can use "option-esc" for completions in xcode. or "^n" if you install the key binding dict in the "extra files" section.

this software has only been tested under Mac OS X 10.3.9. it's less likely to work with older versions, but it might, and it might work with newer versions. if you try please let me know. - viallover at dabble.org


known problems
---
causes some text views to not allow input. "Crash Submitter" for instance. that is why there is an exclude list, see "extra files" section. only a problem if the app doesn't have an unique identifier and can't be added to the exclude list.

some commands aren't implemented or aren't implemented correctly. 


extra files
---
the following can be used as the custom key binding dict, ~/Library/KeyBindings/DefaultKeyBinding.dict

{
    /* Additional vi bindings */
    "^f" = "pageDown:";
    "^b" = "pageUp:";
    "^e" = "scrollLineUp:";
    "^y" = "scrollLineDown:";
   
    /* some vim bindings */
    "^n" = "complete:"; 
}


users can have a command file in their preferences folder named, org.dabble.viAllOver.commands.plist, which overwrites any defaults implementing the same command. this can be very useful for testing new commands.

here is an example, all of the following commands are implemented in the deafults,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>command</key>
	<dict>
		<key>c</key>
		<string>vAO_insertMode:</string>
		<key>d</key>
		<string>cut:</string>
	</dict>
	<key>movement</key>
	<dict>
		<key>+</key>
		<array>
			<string>moveDown:</string>
			<string>moveToBeginningOfLine:</string>
		</array>
		<key>w</key>
		<string>vAO_wordForward:</string>
	</dict>
	<key>other</key>
	<dict>
		<key>D</key>
		<string>d$</string>
		<key>a</key>
		<array>
			<string>moveRight:</string>
			<string>vAO_insertMode:</string>
		</array>
		<key>i</key>
		<string>vAO_insertMode:</string>
	</dict>
</dict>
</plist>


users can have an exclude file in their preferences folder named, org.dabble.viAllOver.exclude.plist, which is added to the default list. if you are having problems with an application you can get its bundle identifier from the console.log in the "Console" application. viAllOver outputs the bundle identifier to the console.log when the application starts up.

here is an example. 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>exclude</key>
	<array>
		<string>com.apple.CrashSubmitter</string>
		<string>com.company.BrokenApp</string>
	</array>
</dict>
</plist>


--

Copyright 2005 Matt O'Brien

 This file is part of viAllOver.
 
 viAllOver is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 
 viAllOver is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with viAllOver; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

