Vim with KDE: kvim

ON THE INTERNET
===============

	The homepage is http://www.freehackers.org/kvim/
	The core is build around the official vim-6.x releases and patches

	KVim CVS is full and does not need extra package. Just download and compile it.

INSTALL :
=========
	We now use Vim's configure to configure, compile and install KVim.

	Don't forget, that you need to have QT and KDE headers and tools installed, otherwise it won't
	work ! (these can commonly be found in kde-devel/qt-devel packages)
	
	Enter the 'src' directory and configure it your way (you need to add at least these flags to the configure command line : --enable-gui=kde --with-qt-dir=$QTDIR ) then make and make install as root.
	We added to configure some options for KDE / QT detection, it will for example, find whether you use KDE 2.x or KDE 3.x automatically. For now, QT is _not_ autodetected. I hope to fix this soon.
	From KVim 6.1, you can now use a KDE toolbar instead of Vim's Toolbar, to enable it, use the --enable-kde-toolbar configure flag.


=> If it fails : (yes it still can, the configure script i wrote is still experimental and probably not
perfect ;p)
	or 'how to make a bug report' :

	In some cases, I can imagine it will fail, if this happens then send to marchand@kde.org :
		->auto/config.mk (important one)
		->your configure command line with your options
		->your paths : where KDE is (which version ?), where QT is (version ?), and find where your
			libs are (your kdelibs, your QT libs and QT headers)
		->the output of 'kde-config --version'
		->your OS / Linux Distribution version
		->in case of a compilation error : the full error output.
		->the compiler used (gcc 2.95, 2.96, 3.1 ...)
		->any stuff you think could be usefull to me :)

	Thanks for giving KVim a try, we hope you'll enjoy it !


DEVELOPMENT STATE AND KNOWN BUGS:
=================================
Most Vim GUI features are now implemented, only multibyte support is incomplete.
We are working on this and this is our primary goal after KVim 6.1 release.
We hope to get it to work before we include KVim into the core Vim which we want to
do before the end of the year 2002 if possible.

We would be happy to hear from you if you've tried kvim. Tell us
what is missing, what you like and don't like, and what you want.

As people have wished it for a while, Philippe developped a component for Vim.
The component is now fully usable with GVim and KVim and can be found on KDE's CVS
in the kdeextragear-1 module.

SOURCE ACCESS:
==============
Releases and maybe snapshots are/will be found on http://freehackers.org/kvim/
The CVS is CVSROOT=:pserver:anonymous@cvs.tuxfamily.org:/cvsroot/kvim
(with no password)
You'll find there a full vim 6.x package (with runtime files included).

MAILING LIST:
=============
As we released KVim 6.0, we created a public mailing list, for feedback,
user help and development related discussions : "kvim-dev@freenux.org",
 to subscribe send a mail to "kvim-dev-subscribe@freenux.org" with
"subscribe" as the subject and just reply to the mail you will receive.
(sorry the admin messages are in french, but the list discussions are in
english)

THANKS :
========
To all the guys on #kde@opn (Neil, Malte and many other) and to all the people who
tried, debugged, compiled and recompiled again KVim to bring now a much more robust KVim
and of course to all of you who send patchs and comments :)
And of course to Vim Authors :)

CURRENT MAINTAINER:
===================
	Mickael Marchand <marchand@kde.org>
	
DEVELOPERS (CVS accounts):
==========
	Mickael Marchand <marchand@kde.org> (marchand)
	Mark Westcott <mark@houseoffish.org> Qtopia GUI (mark)
	Thomas Capricelli <orzel@kde.org> Initial KVim author (orzel)
	Philippe Fremy <pfremy@chez.com> Initial KVim author (pfremy)

AUTHORS
=========
	Thomas Capricelli <orzel@kde.org> Initial KVim author
	Philippe Fremy <pfremy@chez.com> Initial KVim author
	
CONTRIBUTORS
============
	David Spencer Tyree <celer@scrypt.net>
	Vince Negri <vince@bulbous.freeserve.co.uk> AntiAliasing support
	Kailash Sethuraman (hsaliak, #netbsd@opn) NetBSD configuration/compilation fixes
	Some other, see the About KVim dialog box in KVim...


