Update runtime files.
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index c52a7f5..43f7f40 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.4.  Last change: 2015 Jul 20
+*autocmd.txt*   For Vim version 7.4.  Last change: 2015 Aug 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1072,7 +1072,7 @@
 Examples: >
     :au CursorHold <buffer>  echo 'hold'
     :au CursorHold <buffer=33>  echo 'hold'
-    :au CursorHold <buffer=abuf>  echo 'hold'
+    :au BufNewFile * CursorHold <buffer=abuf>  echo 'hold'
 
 All the commands for autocommands also work with buffer-local autocommands,
 simply use the special string instead of the pattern.  Examples: >
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 79aa179..a7c8a27 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.4.  Last change: 2015 Jun 25
+*change.txt*    For Vim version 7.4.  Last change: 2015 Aug 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -634,9 +634,9 @@
 			may add [flags], see |:s_flags|.
 			Note that after `:substitute` the '&' flag can't be
 			used, it's recognized as a pattern separator.
-			The space between `:substitute` and the 'c', 'g' and
-			'r' flags isn't required, but in scripts it's a good
-			idea to keep it to avoid confusion.
+			The space between `:substitute` and the 'c', 'g',
+			'i', 'I' and 'r' flags isn't required, but in scripts
+			it's a good idea to keep it to avoid confusion.
 
 :[range]~[&][flags] [count]					*:~*
 			Repeat last substitute with same substitute string
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 27d9e42..94fe977 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.4.  Last change: 2015 Jul 21
+*cmdline.txt*   For Vim version 7.4.  Last change: 2015 Jul 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -750,13 +750,13 @@
 example, "%" stands for the current file name, while CTRL-R % inserts the
 current file name right away.  See |c_CTRL-R|.
 
-Note: If you want to avoid the special characters in a Vim script you may want
-to use |fnameescape()|.  Also see |`=|.
+Note:  If you want to avoid the effects of special characters in a Vim script
+you may want to use |fnameescape()|.  Also see |`=|.
 
 
 In Ex commands, at places where a file name can be used, the following
 characters have a special meaning.  These can also be used in the expression
-function expand() |expand()|.
+function |expand()|.
 	%	Is replaced with the current file name.		  *:_%* *c_%*
 	#	Is replaced with the alternate file name.	  *:_#* *c_#*
 		This is remembered for every window.
@@ -792,6 +792,7 @@
 	   \#			#
 	   \\#			\#
 Also see |`=|.
+
 			       *:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
 			       *:<sfile>* *<sfile>* *:<afile>* *<afile>*
 			       *:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
@@ -812,7 +813,7 @@
 		   <afile> only when the file name isn't used to match with
 		   (for FileType, Syntax and SpellFileMissing events).
 	<sfile>    When executing a ":source" command, is replaced with the
-		   file name of the sourced file.  *E498* 
+		   file name of the sourced file.  *E498*
 		   When executing a function, is replaced with
 		   "function {function-name}"; function call nesting is
 		   indicated like this:
@@ -881,7 +882,7 @@
 	:gs?pat?sub?
 		Substitute all occurrences of "pat" with "sub".  Otherwise
 		this works like ":s".
-	:S	Escape special characters for use with a shell command (see 
+	:S	Escape special characters for use with a shell command (see
 		|shellescape()|). Must be the last one. Examples: >
 		    :!dir <cfile>:S
 		    :call system('chmod +w -- ' . expand('%:S'))
@@ -934,9 +935,8 @@
 
 Note: Where a file name is expected wildcards expansion is done.  On Unix the
 shell is used for this, unless it can be done internally (for speed).
-Backticks also work, like in >
+Unless in |restricted-mode|, backticks work also, like in >
 	:n `echo *.c`
-(backtick expansion is not possible in |restricted-mode|)
 But expansion is only done if there are any wildcards before expanding the
 '%', '#', etc..  This avoids expanding wildcards inside a file name.  If you
 want to expand the result of <cfile>, add a wildcard character to it.
@@ -973,6 +973,7 @@
 	\$home		file "$home" in current directory
 	/\$home		file "$home" in root directory
 	\\$home		file "\\", followed by expanded $home
+
 Also see |`=|.
 
 ==============================================================================
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 1ac7f64..1be6a6d 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.4.  Last change: 2015 Jul 21
+*editing.txt*   For Vim version 7.4.  Last change: 2015 Jul 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -412,22 +412,34 @@
 	/usr/include/sys/types.h
 	/usr/inc_old/types.h
 					*backtick-expansion* *`-expansion*
-On Unix and a few other systems you can also use backticks in the file name,
-for example: >
-	:e `find . -name ver\\*.c -print`
-The backslashes before the star are required to prevent "ver*.c" to be
-expanded by the shell before executing the find program.
+On Unix and a few other systems you can also use backticks for the file name
+argument, for example: >
+	:next `find . -name ver\\*.c -print`
+The backslashes before the star are required to prevent the shell from
+expanding "ver*.c" prior to execution of the find program.  The backslash
+before the shell pipe symbol "|" prevents Vim from parsing it as command
+termination.
 This also works for most other systems, with the restriction that the
 backticks must be around the whole item.  It is not possible to have text
 directly before the first or just after the last backtick.
 
 							*`=*
-You can have the backticks expanded as a Vim expression, instead of an
-external command, by using the syntax `={expr}` e.g.: >
+You can have the backticks expanded as a Vim expression, instead of as an
+external command, by putting an equal sign right after the first backtick,
+e.g.: >
 	:e `=tempname()`
 The expression can contain just about anything, thus this can also be used to
 avoid the special meaning of '"', '|', '%' and '#'.  However, 'wildignore'
 does apply like to other wildcards.
+
+Environment variables are expanded before evaluating the expression, thus this
+does not work: >
+	:e `=$HOME . '.vimrc'`
+Because $HOME is expanding early, resulting in: >
+	:e `=/home/user . '.vimrc'`
+This does work: >
+	:e `=expand('$HOME') . '.vimrc'`
+
 If the expression returns a string then names are to be separated with line
 breaks.  When the result is a |List| then each item is used as a name.  Line
 breaks also separate names.
@@ -1365,7 +1377,7 @@
 - <Nul> characters are shown on the screen as ^@.  You can enter them with
   "CTRL-V CTRL-@" or "CTRL-V 000" {Vi cannot handle <Nul> characters in the
   file}
-- To insert a <NL> character in the file split up a line.  When writing the
+- To insert a <NL> character in the file split a line.  When writing the
   buffer to a file a <NL> will be written for the <EOL>.
 - Vim normally appends an <EOL> at the end of the file if there is none.
   Setting the 'binary' option prevents this.  If you want to add the final
@@ -1395,7 +1407,8 @@
 You could do this to edit very secret text: >
 	:set noundofile viminfo=
 	:noswapfile edit secrets.txt
-Keep in mind that without a swap file you risk losing your work in a crash.
+Keep in mind that without a swap file you risk loosing your work in the event
+of a crash or a power failure.
 
 WARNING: If you make a typo when entering the key and then write the file and
 exit, the text will be lost!
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 85149b5..893624a 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1822,6 +1822,7 @@
 				any	variable {varname} in buffer {expr}
 getchar( [expr])		Number	get one character from the user
 getcharmod( )			Number	modifiers for the last typed character
+getcharsearch()			Dict	last character search
 getcmdline()			String	return the current command-line
 getcmdpos()			Number	return cursor position in command-line
 getcmdtype()			String	return current command-line type
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 83a73d6..6969354 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -6183,6 +6183,7 @@
 getbufvar()	eval.txt	/*getbufvar()*
 getchar()	eval.txt	/*getchar()*
 getcharmod()	eval.txt	/*getcharmod()*
+getcharsearch()	eval.txt	/*getcharsearch()*
 getcmdline()	eval.txt	/*getcmdline()*
 getcmdpos()	eval.txt	/*getcmdpos()*
 getcmdtype()	eval.txt	/*getcmdtype()*
@@ -7793,6 +7794,7 @@
 set-option	options.txt	/*set-option*
 set-spc-auto	spell.txt	/*set-spc-auto*
 setbufvar()	eval.txt	/*setbufvar()*
+setcharsearch()	eval.txt	/*setcharsearch()*
 setcmdpos()	eval.txt	/*setcmdpos()*
 setline()	eval.txt	/*setline()*
 setloclist()	eval.txt	/*setloclist()*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 42f2e58..66e9351 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4.  Last change: 2015 Jul 21
+*todo.txt*      For Vim version 7.4.  Last change: 2015 Aug 11
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -73,29 +73,23 @@
 Still using freed memory after using setloclist(). (lcd, 2014 Jul 23)
 More info Jul 24.  Not clear why.
 
-RXVT sends a different background color response. (Higashi, 2015 Jul 5)
-
-More tests for :diffoff. Olaf Dabrunz, (2015 Jul 4)
-
 Problem that a previous silent ":throw" causes a following try/catch not to
 work. (ZyX, 2013 Sep 28)
 
 Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
 
-Regression for v_b_A. (Ingo Karkat, 2015 May 18)
-
 ":cd C:\Windows\System32\drivers\etc*" does not work, even though the
 directory exists. (Sergio Gallelli, 2013 Dec 29)
 
-Invalid memory access in regexp.c. (Dominique Pelle, 2015 May 23)
-
 Using ":windo" to set options in all windows has the side effect that it
 changes the window layout and the current window.  Make a variant that saves
 and restores.  Use in the matchparen plugin.
 Perhaps we can use ":silent window"?
 
-C indent: should recognize C11 raw strings. (Mark Lodato, 2015 Mar 1)
-Need to recognize R"string" for 'cindent'.
+Illegal memory access, requires ASAN to see. (Dominique Pelle, 2015 Jul 28)
+
+Patch for better documentaiton of cmdline expansion. (Pavol Juhas, 2015 Jul
+24)
 
 Crash when changing the 'tags' option from a remote command.
 (Benjamin Fritz, 2015 Mar 18, stack trace Mar 20)
@@ -107,6 +101,9 @@
 
 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
 
+Patch to add CTRL-g U to not break undo for the following cursor movement
+command. (Christian Brabandt, 2015 Aug 4)
+
 MS-Windows: When editing a file with a leading space, writing it uses the
 wrong name. (Aram, 2014 Nov 7)  Vim 7.4.
 
@@ -130,25 +127,46 @@
 MS-Windows: Crash opening very long file name starting with "\\".
 (Christian Brock, 2012 Jun 29)
 
+Patch to improve IME handling in the MS-Windows console.
+(Ken Takata, 2015 Aug 8)
+
+Patch to support Unicode I/O in the MS-Windows console.
+(Ken Takata, 2015 Aug 8)  Also by Yasuhiro Matsumoto.
+
 The argument for "-S" is not taken literally, the ":so" command expands
 wildcards.  Add a ":nowild" command modifier?  (ZyX, 2015 March 4)
 
+Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5)
+
 Build with Python on Mac does not always use the right library.
 (Kazunobu Kuriyama, 2015 Mar 28)
 
 ml_updatechunk() is slow when retrying for another encoding. (John Little,
 2014 Sep 11)
 
+Patch to fix that "zt" in diff mode doesn't always work properly.
+(Christian Brabandt, 2015 Aug 6)  Doesn't fix the problem?
+
+Patch to fix checking global option value when not using it.
+(Arnaud Decara, 2015 Jul 23)
+
 When 'showbreak' is set repeating a Visual operation counts the size of the
 'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20)
 
+Patch to apply 'fileformats' when starting Vim. (Mike Williams, 2015 Jul 22)
+
+Patch for matchit plugin related to multibyte chars. (Ken Takata, 2015 Jul 22)
+
 Patch for multi-byte characters in langmap and applying a mapping on them.
-(Christian Brabandt, 2015 Jun 12)
+(Christian Brabandt, 2015 Jun 12, update July 25)
 Is this the right solution?
 
 Patch to add grepfile(). (Scott Prager, 2015 May 26)
 Work in progress.
 
+Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22)
+Is this right?
+
 Patch to make getregtype() return the right size for non-linux systems.
 (Yasuhiro Matsumoto, 2014 Jul 8)
 Breaks test_eval.  Inefficient, can we only compute y_width when needed?
@@ -162,6 +180,8 @@
 Patch for man.vim. (SungHyun Nam, 2015 May 20)
 Doesn't work completely (Dominique Orban)
 
+Patch to add a "literal" argument to bufnr().  (Olaf Dabrunz, 2015 Aug 4)
+
 When a session file is created and there are "nofile" buffers, these are not
 filled.  Need to trigger BufReadCmd autocommands.  Also handle deleting the
 initial empty buffer better. (ZyX, 2015 March 8)
@@ -608,7 +628,7 @@
 Patch to add ":ldo" and ":cdo", execute commands over quickfix list and
 location list. (Yegappan Lakshmanan, 2013 Jun 2, update 2015 Mar 21)
 Update by Florian Walch, 2015 Jul 1.
-Yegappan will send an update in July.
+Update by Yegappan, 2015 Jul 24.
 
 8   "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
     Patch by Christian Wellenbrock, 2013 Jul 5.
@@ -794,7 +814,7 @@
 Would also need to do this for spellbadword() and spellsuggest().
 
 Patch for variable tabstops.  On github (Christian Brabandt, 2014 May 15)
-Update Aug 16 (email).
+Update 2015 Jul 25 (email).
 
 On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
 64 bits value.  Change all number options to use nropt_T and define it to the
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 4d8b7d8..6bdedfd 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2015 Jun 06
+" Last Change:	2015 Aug 11
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1168,7 +1168,7 @@
   let n = 1
   while n < 10
     let line = getline(n)
-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\|//\)'
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\|//\)'
       setf objc
       return
     endif
@@ -1336,7 +1336,7 @@
   let n = 1
   while n < 10
     let line = getline(n)
-    if line =~ '^\s*\(#\s*\(include\|import\)\>\|/\*\)'
+    if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)'
       setf objcpp
       return
     endif
@@ -1858,7 +1858,7 @@
 
 " Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc.
 " Gentoo ebuilds are actually bash scripts
-au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,.bash_aliases*,*.bash,*.ebuild call SetFileTypeSH("bash")
+au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass call SetFileTypeSH("bash")
 au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
 au BufNewFile,BufRead */etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
 
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 29a25a2..b2f35b2 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -1,10 +1,11 @@
 " Vim indent file
-" Language:         Shell Script
-" Maintainer:       Currently unmaintained. If you want to take it, please
-" 		    email Bram
+" Language:            Shell Script
+" Maintainer:          Christian Brabandt <cb@256bit.org>
 " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
-" Original Author:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2014-08-22
+" Original Author:     Nikolai Weibull <now@bitwi.se>
+" Latest Revision:     2015-07-28
+" License:             Vim (see :h license)
+" Repository:          https://github.com/chrisbra/vim-sh-indent
 
 if exists("b:did_indent")
   finish
@@ -12,7 +13,7 @@
 let b:did_indent = 1
 
 setlocal indentexpr=GetShIndent()
-setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,),0=;;,0=;&
+setlocal indentkeys+=0=then,0=do,0=else,0=elif,0=fi,0=esac,0=done,0=end,),0=;;,0=;&
 setlocal indentkeys+=0=fin,0=fil,0=fip,0=fir,0=fix
 setlocal indentkeys-=:,0#
 setlocal nosmartindent
@@ -56,8 +57,8 @@
 
   let ind = indent(lnum)
   let line = getline(lnum)
-  if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\)\>'
-    if line !~ '\<\%(fi\|esac\|done\)\>\s*\%(#.*\)\=$'
+  if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>'
+    if line !~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$'
       let ind += s:indent_value('default')
     endif
   elseif s:is_case_label(line, pnum)
@@ -78,7 +79,7 @@
 
   let pine = line
   let line = getline(v:lnum)
-  if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\)\>' || line =~ '^\s*}'
+  if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\|end\)\>' || line =~ '^\s*}'
     let ind -= s:indent_value('default')
   elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1))
     let ind -= s:indent_value('default')
diff --git a/runtime/macros/matchit.vim b/runtime/macros/matchit.vim
index 74c1a1e..70867b1 100644
--- a/runtime/macros/matchit.vim
+++ b/runtime/macros/matchit.vim
@@ -303,7 +303,7 @@
       let regexp = s:Wholematch(matchline, a:1, currcol-1)
       let endcol = matchend(matchline, regexp)
       if endcol > currcol  " This is NOT off by one!
-	execute "normal!" . (endcol - currcol) . "l"
+	call cursor(0, endcol)
       endif
     endif " a:0
   endif " a:mode != "o" && etc.
diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim
index b78fdfd..839dbda 100644
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -177,6 +177,7 @@
 SynMenu DE.Doxygen.C++\ with\ doxygen:cpp.doxygen
 SynMenu DE.Doxygen.IDL\ with\ doxygen:idl.doxygen
 SynMenu DE.Doxygen.Java\ with\ doxygen:java.doxygen
+SynMenu DE.Doxygen.DataScript\ with\ doxygen:datascript.doxygen
 SynMenu DE.Dracula:dracula
 SynMenu DE.DSSSL:dsl
 SynMenu DE.DTD:dtd
diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim
index 2db72a2..76f6013 100644
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -161,6 +161,7 @@
 an 50.30.300 &Syntax.DE.Doxygen.C++\ with\ doxygen :cal SetSyn("cpp.doxygen")<CR>
 an 50.30.310 &Syntax.DE.Doxygen.IDL\ with\ doxygen :cal SetSyn("idl.doxygen")<CR>
 an 50.30.320 &Syntax.DE.Doxygen.Java\ with\ doxygen :cal SetSyn("java.doxygen")<CR>
+an 50.30.320 &Syntax.DE.Doxygen.DataScript\ with\ doxygen :cal SetSyn("datascript.doxygen")<CR>
 an 50.30.330 &Syntax.DE.Dracula :cal SetSyn("dracula")<CR>
 an 50.30.340 &Syntax.DE.DSSSL :cal SetSyn("dsl")<CR>
 an 50.30.350 &Syntax.DE.DTD :cal SetSyn("dtd")<CR>
diff --git a/runtime/syntax/datascript.vim b/runtime/syntax/datascript.vim
index 2b4ec51..a983b8e 100644
--- a/runtime/syntax/datascript.vim
+++ b/runtime/syntax/datascript.vim
@@ -1,11 +1,12 @@
 " Vim syntax file
-" Language:	Datascript
+" Language:	DataScript
 " Maintainer:	Dominique Pelle <dominique.pelle@gmail.com>
-" Last Change:	2014 Feb 26
+" Last Change:	2015 Jul 30
 "
 " DataScript is a formal language for modelling binary datatypes,
 " bitstreams or file formats. For more information, see:
-" http://datascript.berlios.de/DataScriptLanguageOverview.html
+"
+" http://dstools.sourceforge.net/DataScriptLanguageOverview.html
 
 if version < 600
   syntax clear
@@ -19,6 +20,8 @@
 syn keyword dsType         bit bool string
 syn keyword dsType         int int8 int16 int32 int64
 syn keyword dsType         uint8 uint16 uint32 uint64
+syn keyword dsType         varint16 varint32 varint64
+syn keyword dsType         varuint16 varuint32 varuint64
 syn keyword dsType         leint16 leint32 leint64
 syn keyword dsType         leuint16 leuint32 leuint64
 syn keyword dsEndian       little big
@@ -32,7 +35,8 @@
 syn keyword dsStorageClass const
 syn keyword dsTodo         contained TODO FIXME XXX
 syn keyword dsSql          sql sql_table sql_database sql_pragma sql_index
-syn keyword dsSql          sql_integer sql_metadata sql_key foreign_key
+syn keyword dsSql          sql_integer sql_metadata sql_key sql_virtual
+syn keyword dsSql          using reference_key foreign_key to
 
 " dsCommentGroup allows adding matches for special things in comments.
 syn cluster dsCommentGroup  contains=dsTodo
@@ -61,6 +65,8 @@
 syn region  dsString
   \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
 
+syn sync ccomment dsComment
+
 " Define the default highlighting.
 hi def link dsType              Type
 hi def link dsEndian            StorageClass
diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim
index 48b5956..6183f33 100644
--- a/runtime/syntax/synload.vim
+++ b/runtime/syntax/synload.vim
@@ -60,8 +60,8 @@
 endfun
 
 
-" Handle adding doxygen to other languages (C, C++, C#, IDL)
-au Syntax c,cpp,cs,idl,php
+" Handle adding doxygen to other languages (C, C++, C#, IDL, java, php, DataScript)
+au Syntax c,cpp,cs,idl,java,php,datascript
 	\ if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)
 	\	|| (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)
 	\   | runtime! syntax/doxygen.vim
diff --git a/src/po/eo.po b/src/po/eo.po
index 2070991..b7816ff 100644
--- a/src/po/eo.po
+++ b/src/po/eo.po
@@ -23,8 +23,8 @@
 msgstr ""
 "Project-Id-Version: Vim(Esperanto)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-05 21:12+0100\n"
-"PO-Revision-Date: 2014-11-05 21:12+0100\n"
+"POT-Creation-Date: 2015-07-30 17:54+0200\n"
+"PO-Revision-Date: 2015-07-30 18:00+0200\n"
 "Last-Translator: Dominique PELLÉ <dominique.pelle@gmail.com>\n"
 "Language-Team: \n"
 "Language: eo\n"
@@ -103,10 +103,6 @@
 msgid "E85: There is no listed buffer"
 msgstr "E85: Estas neniu listigita bufro"
 
-#, c-format
-msgid "E86: Buffer %ld does not exist"
-msgstr "E86: La bufro %ld ne ekzistas"
-
 msgid "E87: Cannot go beyond last buffer"
 msgstr "E87: Ne eblas iri preter la lastan bufron"
 
@@ -222,6 +218,9 @@
 msgid "E821: File is encrypted with unknown method"
 msgstr "E821: Dosiero estas ĉifrata per nekonata metodo"
 
+msgid "Warning: Using a weak encryption method; see :help 'cm'"
+msgstr "Averto: uzo de malfortika ĉifrada metodo; vidu :help 'cm'"
+
 msgid "Enter encryption key: "
 msgstr "Tajpu la ŝlosilon de ĉifrado: "
 
@@ -554,6 +553,9 @@
 msgid "E697: Missing end of List ']': %s"
 msgstr "E697: Mankas fino de Listo ']': %s"
 
+msgid "Not enough memory to set references, garbage collection aborted!"
+msgstr "Ne sufiĉa memory por valorigi referencojn, senrubigado ĉesigita!"
+
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
 msgstr "E720: Mankas dupunkto en la vortaro: %s"
@@ -617,13 +619,13 @@
 msgid "&Ok"
 msgstr "&Bone"
 
+msgid "extend() argument"
+msgstr "argumento de extend()"
+
 #, c-format
 msgid "E737: Key already exists: %s"
 msgstr "E737: Ŝlosilo jam ekzistas: %s"
 
-msgid "extend() argument"
-msgstr "argumento de extend()"
-
 msgid "map() argument"
 msgstr "argumento de map()"
 
@@ -1319,13 +1321,12 @@
 msgid "E174: Command already exists: add ! to replace it"
 msgstr "E174: La komando jam ekzistas: aldonu ! por anstataŭigi ĝin"
 
-# DP: malfacilas traduki tion, kaj samtempe honori spacetojn
 msgid ""
 "\n"
-"    Name        Args Range Complete  Definition"
+"    Name        Args       Address   Complete  Definition"
 msgstr ""
 "\n"
-"    Nomo        Arg Interv Kompleto  Difino"
+"    Nomo        Argumentoj Adreso    Kompleto  Difino"
 
 msgid "No user-defined commands found"
 msgstr "Neniu komando difinita de uzanto trovita"
@@ -1345,6 +1346,9 @@
 msgid "E179: argument required for -complete"
 msgstr "E179: argumento bezonata por -complete"
 
+msgid "E179: argument required for -addr"
+msgstr "E179: argumento bezonata por -addr"
+
 #, c-format
 msgid "E181: Invalid attribute: %s"
 msgstr "E181: Nevalida atributo: %s"
@@ -1363,6 +1367,10 @@
 msgstr "E184: Neniu komando-difinita-de-uzanto kiel: %s"
 
 #, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Nevalida valoro de tipo de adreso: %s"
+
+#, c-format
 msgid "E180: Invalid complete value: %s"
 msgstr "E180: Nevalida valoro de kompletigo: %s"
 
@@ -2196,8 +2204,8 @@
 msgid "Vim: Received \"die\" request from session manager\n"
 msgstr "Vim: Ricevis peton \"die\" (morti) el la seanca administrilo\n"
 
-msgid "Close"
-msgstr "Fermi"
+msgid "Close tab"
+msgstr "Fermi langeton"
 
 msgid "New tab"
 msgstr "Nova langeto"
@@ -2255,9 +2263,6 @@
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: Ne eblas malfermi fenestron interne de aplikaĵo MDI"
 
-msgid "Close tab"
-msgstr "Fermi langeton"
-
 msgid "Open tab..."
 msgstr "Malfermi langeton..."
 
@@ -4321,6 +4326,10 @@
 msgid "E539: Illegal character <%s>"
 msgstr "E539: Nevalida signo <%s>"
 
+#, c-format
+msgid "For option %s"
+msgstr "Por opcio %s"
+
 msgid "E529: Cannot set 'term' to empty string"
 msgstr "E529: Ne eblas agordi 'term' al malplena ĉeno"
 
@@ -6648,6 +6657,10 @@
 msgid "E749: empty buffer"
 msgstr "E749: malplena bufro"
 
+#, c-format
+msgid "E86: Buffer %ld does not exist"
+msgstr "E86: La bufro %ld ne ekzistas"
+
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: Nevalida serĉa ŝablono aŭ disigilo"
 
@@ -6923,6 +6936,3 @@
 msgstr ""
 "Agordo de serĉvojo malsukcesis: sys.path ne estas listo\n"
 "Vi nun devas aldoni vim.VIM_SPECIAL_PATH al sys.path"
-
-#~ msgid "[blowfish]"
-#~ msgstr "[blowfish]"
diff --git a/src/po/fr.po b/src/po/fr.po
index 0ae8327..755147b 100644
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -6,7 +6,7 @@
 #  FIRST AUTHOR  DindinX         <David.Odin@bigfoot.com>     2000.
 # SECOND AUTHOR  Adrien Beau     <version.francaise@free.fr>  2002, 2003.
 #  THIRD AUTHOR  David Blanchet  <david.blanchet@free.fr>     2006, 2008.
-# FOURTH AUTHOR  Dominique Pellé <dominique.pelle@gmail.com>  2008, 2014.
+# FOURTH AUTHOR  Dominique Pellé <dominique.pelle@gmail.com>  2008, 2015.
 #
 # Latest translation available at:
 #   http://dominique.pelle.free.fr/vim-fr.php
@@ -15,8 +15,8 @@
 msgstr ""
 "Project-Id-Version: Vim(Français)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-05 21:12+0100\n"
-"PO-Revision-Date: 2014-11-05 21:23+0100\n"
+"POT-Creation-Date: 2015-07-30 17:54+0200\n"
+"PO-Revision-Date: 2015-07-30 18:00+0200\n"
 "Last-Translator: Dominique Pellé <dominique.pelle@gmail.com>\n"
 "Language-Team: \n"
 "Language: fr\n"
@@ -101,10 +101,6 @@
 msgid "E85: There is no listed buffer"
 msgstr "E85: Aucun tampon n'est listé"
 
-#, c-format
-msgid "E86: Buffer %ld does not exist"
-msgstr "E86: Le tampon %ld n'existe pas"
-
 # AB - Je ne suis pas sûr que l'on puisse obtenir ce message.
 msgid "E87: Cannot go beyond last buffer"
 msgstr "E87: Impossible d'aller après le dernier tampon"
@@ -236,6 +232,10 @@
 msgid "E821: File is encrypted with unknown method"
 msgstr "E821: Le fichier est chiffré avec une méthode inconnue"
 
+msgid "Warning: Using a weak encryption method; see :help 'cm'"
+msgstr ""
+"Alerte : utilisation d'une méthode de chiffrage faible ; consultez :help 'cm'"
+
 msgid "Enter encryption key: "
 msgstr "Tapez la clé de chiffrement : "
 
@@ -618,6 +618,10 @@
 msgid "E697: Missing end of List ']': %s"
 msgstr "E697: Il manque ']' à la fin de la Liste %s"
 
+msgid "Not enough memory to set references, garbage collection aborted!"
+msgstr ""
+"Pas assez de mémoire pour les références, arrêt du ramassage de miètes !"
+
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
 msgstr "E720: Il manque ':' dans le Dictionnaire %s"
@@ -683,13 +687,13 @@
 msgid "&Ok"
 msgstr "&Ok"
 
-#, c-format
-msgid "E737: Key already exists: %s"
-msgstr "E737: un mappage existe déjà pour %s"
-
 msgid "extend() argument"
 msgstr "argument de extend()"
 
+#, c-format
+msgid "E737: Key already exists: %s"
+msgstr "E737: La clé existe déjà : %s"
+
 msgid "map() argument"
 msgstr "argument de map()"
 
@@ -1512,10 +1516,10 @@
 
 msgid ""
 "\n"
-"    Name        Args Range Complete  Definition"
+"    Name        Args       Address   Complete  Definition"
 msgstr ""
 "\n"
-"    Nom         Args Plage Complet.  Définition"
+"    Nom         Args       Adresse   Complet.  Définition"
 
 msgid "No user-defined commands found"
 msgstr "Aucune commande définie par l'utilisateur trouvée"
@@ -1535,6 +1539,9 @@
 msgid "E179: argument required for -complete"
 msgstr "E179: argument requis avec -complete"
 
+msgid "E179: argument required for -addr"
+msgstr "E179: argument requis avec -addr"
+
 #, c-format
 msgid "E181: Invalid attribute: %s"
 msgstr "E181: Attribut invalide : %s"
@@ -1554,6 +1561,10 @@
 msgstr "E184: Aucune commande %s définie par l'utilisateur"
 
 #, c-format
+msgid "E180: Invalid address type value: %s"
+msgstr "E180: Valeur de type d'adresse invalide : %s"
+
+#, c-format
 msgid "E180: Invalid complete value: %s"
 msgstr "E180: Valeur invalide pour \"-complete=\" : %s"
 
@@ -2406,8 +2417,8 @@
 msgid "Vim: Received \"die\" request from session manager\n"
 msgstr "Vim : Une requête \"die\" a été reçue par le gestionnaire de session\n"
 
-msgid "Close"
-msgstr "Fermer"
+msgid "Close tab"
+msgstr "Fermer l'onglet"
 
 msgid "New tab"
 msgstr "Nouvel onglet"
@@ -2467,13 +2478,6 @@
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: Impossible d'ouvrir une fenêtre dans une application MDI"
 
-# DB - Les quelques messages qui suivent se retrouvent aussi ici :
-#      gui_gtk_x11.c:3170 et suivants.
-#      Les libellés changent un peu (majuscule par exemple).
-#      La VF tâche de les unifier.
-msgid "Close tab"
-msgstr "Fermer l'onglet"
-
 msgid "Open tab..."
 msgstr "Ouvrir dans un onglet..."
 
@@ -4058,7 +4062,7 @@
 "    to recover the changes (see \":help recovery\").\n"
 msgstr ""
 "\"\n"
-"    pour récupérer le fichier (voir \":help recovery\").\n"
+"    pour récupérer le fichier (consultez \":help recovery\").\n"
 
 msgid "    If you did this already, delete the swap file \""
 msgstr "    Si vous l'avez déjà fait, effacez le fichier d'échange \""
@@ -4568,6 +4572,10 @@
 msgid "E539: Illegal character <%s>"
 msgstr "E539: Caractère <%s> invalide"
 
+#, c-format
+msgid "For option %s"
+msgstr "Pour l'option %s"
+
 msgid "E529: Cannot set 'term' to empty string"
 msgstr "E529: 'term' ne doit pas être une chaîne vide"
 
@@ -4944,7 +4952,7 @@
 msgstr ""
 "VIMRUN.EXE est introuvable votre $PATH.\n"
 "Les commandes externes ne feront pas de pause une fois terminées.\n"
-"Voir  :help win32-vimrun  pour plus d'informations."
+"Consultez  :help win32-vimrun  pour plus d'informations."
 
 msgid "Vim Warning"
 msgstr "Alerte Vim"
@@ -5120,7 +5128,7 @@
 "sera utilisé "
 
 msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Moteur RE avec backtracking utilisé pour le motif : " 
+msgstr "Moteur RE avec backtracking utilisé pour le motif : "
 
 msgid "E865: (NFA) Regexp end encountered prematurely"
 msgstr "E865: (NFA) Fin de regexp rencontrée prématurément"
@@ -6916,6 +6924,10 @@
 msgid "E749: empty buffer"
 msgstr "E749: tampon vide"
 
+#, c-format
+msgid "E86: Buffer %ld does not exist"
+msgstr "E86: Le tampon %ld n'existe pas"
+
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: Délimiteur ou motif de recherche invalide"
 
@@ -7203,95 +7215,3 @@
 msgstr ""
 "Impossible d'initialiser le chemin : sys.math n'est pas une liste\n"
 "Vous devez maintenant ajouter vim.VIM_SPECIAL_PATH à sys.path"
-
-#~ msgid "[blowfish]"
-#~ msgstr "[blowfish]"
-
-#~ msgid "only string keys are allowed"
-#~ msgstr "seule une chaine est autorisée comme clé"
-
-#~ msgid "Vim: preserving files...\n"
-#~ msgstr "Vim : préservation des fichiers...\n"
-
-#~ msgid "Vim: Finished.\n"
-#~ msgstr "Vim : Fini.\n"
-
-#~ msgid "Vim: Double signal, exiting\n"
-#~ msgstr "Vim : Double signal, sortie\n"
-
-#~ msgid "Vim: Caught deadly signal %s\n"
-#~ msgstr "Vim : Signal mortel %s intercepté\n"
-
-#~ msgid "Vim: Caught deadly signal\n"
-#~ msgstr "Vim : Signal mortel intercepté\n"
-
-#~ msgid "E999: (NFA regexp internal error) Should not process NOT node !"
-#~ msgstr ""
-#~ "E999: (erreur interne du regexp NFA) Un noeud 'NOT' ne devrait pas être "
-#~ "traité !"
-
-#~ msgid "softspace must be an integer"
-#~ msgstr "softspace doit être un nombre entier"
-
-#~ msgid "writelines() requires list of strings"
-#~ msgstr "writelines() requiert une liste de chaînes"
-
-#~ msgid "Cannot delete DictionaryObject attributes"
-#~ msgstr "Impossible d'effacer les attributs de DictionaryObject"
-
-#~ msgid "Cannot set this attribute"
-#~ msgstr "Impossible d'initialiser cet attribut"
-
-#~ msgid "can only assign lists to slice"
-#~ msgstr "seules des tranches peuvent être assignées aux listes"
-
-#~ msgid "can only concatenate with lists"
-#~ msgstr "on ne peut que concaténer avec des listes"
-
-#~ msgid "'self' argument must be a dictionary"
-#~ msgstr "l'argument 'self' doit être un dictionnaire"
-
-#~ msgid "object must be integer"
-#~ msgstr "objet doit être un nombre entier"
-
-#~ msgid "object must be string"
-#~ msgstr "objet doit être de type string"
-
-#~ msgid "<tabpage object (deleted) at %p>"
-#~ msgstr "<objet onglet (effacé) à %p>"
-
-#~ msgid "<tabpage object (unknown) at %p>"
-#~ msgstr "<objet onglet (inconnu) à %p>"
-
-#~ msgid "<tabpage %d>"
-#~ msgstr "<onglet %d>"
-
-#~ msgid "<window object (deleted) at %p>"
-#~ msgstr "<objet fenêtre (effacé) à %p>"
-
-#~ msgid "<window object (unknown) at %p>"
-#~ msgstr "<objet fenêtre (inconnu) à %p>"
-
-#~ msgid "<window %d>"
-#~ msgstr "<fenêtre %d>"
-
-#~ msgid "<buffer object (deleted) at %p>"
-#~ msgstr "<objet tampon (effacé) à %p>"
-
-#~ msgid "key must be integer"
-#~ msgstr "la clé doit être un nombre entier"
-
-#~ msgid "E860: Eval did not return a valid python 3 object"
-#~ msgstr "E860: Eval n'a pas retourné un object python 3 valid"
-
-#~ msgid "E861: Failed to convert returned python 3 object to vim value"
-#~ msgstr "E861: Conversion d'objet python 3 à une valeur de vim a échoué"
-
-#~ msgid "E863: return value must be an instance of str"
-#~ msgstr "E863: valeur de retour doit être une instance de Str"
-
-#~ msgid "Only boolean objects are allowed"
-#~ msgstr "Seuls les objets booléens sont autorisés"
-
-#~ msgid "no such key in dictionary"
-#~ msgstr "cette clé est inexistante dans le dictionnaire"