*version8.txt*  For Vim version 8.0.  Last change: 2016 Jun 04


		  VIM REFERENCE MANUAL    by Bram Moolenaar

NOTE: THIS FILE IS STILL BEING WORKED ON

				*vim8* *vim-8* *version-8.0* *version8.0*
Welcome to Vim 8!  A large number of bugs have been fixed and several
features have been added.  This file mentions all the new items and changes to
existing features since Vim 7.4. Bug fixes, the patches for Vim 7.4, can be
found below |vim-7.4|.  Use this command to see the version you are using: >
	:version

See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0.
See |version4.txt|, |version5.txt|, |version6.txt| and |version7.txt| for
differences between other versions.

INCOMPATIBLE CHANGES			|incompatible-8|

NEW FEATURES				|new-8|

Vim script enhancements			|new-vim-script-8|

IMPROVEMENTS				|improvements-8|

COMPILE TIME CHANGES			|compile-changes-8|

PATCHES					|patches-8|


==============================================================================
INCOMPATIBLE CHANGES				*incompatible-8*

These changes are incompatible with previous releases.  Check this list if you
run into a problem when upgrading from Vim 7.4 to 8.0.

The support for MS-DOS has been removed.  It hasn't been working for a while
and removing it cleans up the code quite a bit.

The support for Windows 16 bit (Windows 95 and older) has been removed.

Minor incompatibilities:

For filetype detection: ...

==============================================================================
NEW FEATURES						*new-8*

First a list of the bigger new features.  A comprehensive list is below.


Asynchronous I/O support, channels ~

Vim can now exchange messages with another process in the background.  The
messages are received and handled while Vim is waiting for a character.  See
|channel-demo| for an example, communicating with a Python server.

Closely related to channels is JSON support.  JSON is widely supported and can
easily be used for inter-process communication, allowing for writing a server
in any language.  The functions to use are |json_encode()| and |json_decode()|.


Jobs ~

Vim can now start a job, communicate with it and stop it.  This is very useful
to run a process for completion, syntax checking, etc.  Channels are used to
communicate with the job.  Jobs can also read from or write to a buffer or a
file.  See |job_start()|.


Timers ~

Also asynchronous are timers.  They can fire once or repeatedly and invoke a
function to do any work.  For example: >
	let tempTimer = timer_start(4000, 'CheckTemp')
This will make a call four seconds (4000 milli seconds) later, like: >
	call CheckTemp()


Partials ~

Vim already had a Funcref, a reference to a function.  A partial also refers
to a function, and additionally binds arguments and/or a dictionary.  This is
especially useful for callbacks on channels and timers.  E.g., for the timer
example above, to pass an argument to the function: >
	let tempTimer = timer_start(4000, function('CheckTemp', ['out']))
This will a make call four seconds later, like: >
	call CheckTemp('out')


Packages ~

Plugins keep growing and more of them are available than ever before.  To keep
the collection of plugins manageable package support has been added.  This is
a convenient way to get one or more plugins, drop them in a directory and
possibly keep them updated.  Vim will load them automatically, or only when
desired.  See |packages|.


New style tests ~

This is for Vim developers.  So far writing tests for Vim has not been easy.
Vim 8 adds assert functions and a framework to run tests.  This makes it a lot
simpler to write tests and keep them updated.  Also new are several functions
that are added specifically for testing.

These functions have been added:
	|assert_equal()|
	|assert_notequal()|
	|assert_exception()|
	|assert_fails()|
	|assert_false()|
	|assert_match()|
	|assert_notmatch()|
	|assert_true()|
	|test_alloc_fail()|
	|test_disable_char_avail()|
	|test_garbagecollect_now()|
	|test_null_channel()|
	|test_null_dict()|
	|test_null_job()|
	|test_null_list()|
	|test_null_partial()|
	|test_null_string()|


Window IDs ~

Previously windows could only be accessed by their number. And every time a
window would open, close or move that number changes.  Each window now has a
unique ID, so that they are easy to find.  See |win_getid()| and |win_id2win()|.


Wrapping lines with indent ~

The 'breakindent' option has been added to be able to wrap lines without
changing the amount of indent.


Windows: Direct-X support ~

This adds the 'renderoptions' option to allow for switching on Direct-X
(DirectWrite) support on MS-Windows.


GTK+ 3 support ~

GTK+ 2 is getting old, GTK+ 3 is here.  Support has been added and it already
works quite well, mostly just like GTK+ 2.


Vim script enhancements					*new-vim-script-8*
-----------------------

In Vim script the following types have been added:

	|Special|	|v:false|, |v:true|, |v:none| and |v:null|
	|Channel|	connection to another process for asynchronous I/O
	|Job|		process control

Many functions and commands have been added to support the new types.



Various new items					*new-items-8*
-----------------

Normal mode commands: ~


Insert mode commands: ~


Options: ~


Ex commands: ~


Ex command modifiers: ~


Ex command arguments: ~


New and extended functions: ~



New Vim variables: ~

|v:vim_did_enter|	Set when VimEnter autocommands are triggered


New autocommand events: ~



New highlight groups: ~


New items in search patterns: ~


New Syntax/Indent/FTplugin files: ~


New Keymaps: ~


New message translations: ~


Others: ~


==============================================================================
IMPROVEMENTS						*improvements-8*

The existing blowfish encryption turned out to be much weaker than it was
supposed to be.  The blowfish2 method has been added to fix that.  Note that
this still isn't a state-of-the-art encryption, but good enough for most
usage.  See 'cryptmethod'.

==============================================================================
COMPILE TIME CHANGES					*compile-changes-8*

Dropped the support for MS-DOS.  It was too big to fit in memory.


==============================================================================
PATCHES						*patches-8* *bug-fixes-8*

The list of patches that got included since 7.4.0.  This includes all the new
features, but does not include runtime file changes (syntax, indent, help,
etc.)

TODO: INCLUDE PATCH LIST.

 vim:tw=78:ts=8:ft=help:norl:
