diff --git a/README.txt b/README.txt
index 647e7c6..e706d75 100644
--- a/README.txt
+++ b/README.txt
@@ -94,8 +94,9 @@
 The latest news about Vim can be found on the Vim home page:
 	http://www.vim.org/
 
-If you have problems, have a look at the Vim FAQ:
-	http://vimdoc.sf.net/vimfaq.html
+If you have problems, have a look at the Vim documentation or tips:
+	http://www.vim.org/docs.php
+	http://vim.wikia.com/wiki/Vim_Tips_Wiki
 
 If you still have problems or any other questions, use one of the mailing
 lists to discuss them with Vim users and developers:
diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim
index 6dcddfd..ec48251 100644
--- a/runtime/autoload/phpcomplete.vim
+++ b/runtime/autoload/phpcomplete.vim
@@ -3,7 +3,7 @@
 " Maintainer:	Dávid Szabó ( complex857 AT gmail DOT com )
 " Previous Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
 " URL: https://github.com/shawncplus/phpcomplete.vim
-" Last Change:  2015 Apr 02
+" Last Change:  2015 Jul 03
 "
 "	OPTIONS:
 "
@@ -1659,7 +1659,7 @@
 
 			" function declaration line
 			if line =~? 'function\(\s\+'.function_name_pattern.'\)\?\s*('
-				let function_lines = join(reverse(lines), " ")
+				let function_lines = join(reverse(copy(lines)), " ")
 				" search for type hinted arguments
 				if function_lines =~? 'function\(\s\+'.function_name_pattern.'\)\?\s*(.\{-}'.class_name_pattern.'\s\+'.object && !object_is_array
 					let f_args = matchstr(function_lines, '\cfunction\(\s\+'.function_name_pattern.'\)\?\s*(\zs.\{-}\ze)')
@@ -1700,7 +1700,7 @@
 
 				" try to find the next non-comment or string ";" char
 				let start_col = match(line, '^\s*'.object.'\C\s*=\zs&\?\s\+\(clone\)\?\s*'.variable_name_pattern)
-				let filelines = reverse(lines)
+				let filelines = reverse(copy(lines))
 				let [pos, char] = s:getNextCharWithPos(filelines, [a:start_line - i - 1, start_col])
 				let chars_read = 1
 				let last_pos = pos
@@ -1876,7 +1876,7 @@
 	let i = 1
 	while i < line('.')
 		let line = getline(line('.')-i)
-		if line =~? '^\s*\(abstract\s\+\|final\s\+\)*\s*\(class\|interface\|trait\)\s*'.a:classname.'\(\s\+\|$\)' && tolower(current_namespace) == search_namespace
+		if line =~? '^\s*\(abstract\s\+\|final\s\+\)*\s*\(class\|interface\|trait\)\s*'.a:classname.'\(\s\+\|$\|{\)' && tolower(current_namespace) == search_namespace
 			return expand('%:p')
 		else
 			let i += 1
@@ -2123,7 +2123,7 @@
 			elseif classlocation != '' && filereadable(classlocation)
 				let full_file_path = fnamemodify(classlocation, ':p')
 				let result += phpcomplete#GetClassContentsStructure(full_file_path, readfile(full_file_path), class)
-			elseif tolower(current_namespace) == tolower(namespace)
+			elseif tolower(current_namespace) == tolower(namespace) && match(join(a:file_lines, "\n"), '\c\(class\|interface\|trait\)\_s\+'.class.'\(\>\|$\)') != -1
 				" try to find the declaration in the same file.
 				let result += phpcomplete#GetClassContentsStructure(full_file_path, a:file_lines, class)
 			endif
@@ -2407,8 +2407,8 @@
 	while i < file_length
 		let line = file_lines[i]
 
-		if line =~? '^\s*namespace\s*'.namespace_name_pattern
-			let current_namespace = matchstr(line, '\c^\s*namespace\s*\zs'.namespace_name_pattern.'\ze')
+		if line =~? '^\(<?php\)\?\s*namespace\s*'.namespace_name_pattern
+			let current_namespace = matchstr(line, '\c^\(<?php\)\?\s*namespace\s*\zs'.namespace_name_pattern.'\ze')
 			break
 		endif
 
@@ -2571,7 +2571,7 @@
 
 function! phpcomplete#ExpandClassName(classname, current_namespace, imports) " {{{
 	" if there's an imported class, just use that class's information
-	if has_key(a:imports, a:classname) && (a:imports[a:classname].kind == 'c' || a:imports[a:classname].kind == 'i')
+	if has_key(a:imports, a:classname) && (a:imports[a:classname].kind == 'c' || a:imports[a:classname].kind == 'i' || a:imports[a:classname].kind == 't')
 		let namespace = has_key(a:imports[a:classname], 'namespace') ? a:imports[a:classname].namespace : ''
 		return [a:imports[a:classname].name, namespace]
 	endif
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 2b7b987..8a968b9 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 Mar 21
+*autocmd.txt*   For Vim version 7.4.  Last change: 2015 Jul 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 4923273..beb0137 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.4.  Last change: 2015 Feb 03
+*diff.txt*      For Vim version 7.4.  Last change: 2015 Jul 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -132,8 +132,9 @@
 		if the current window does not have 'diff' set then no options
 		in it are changed.
 
-The ":diffoff" command resets the relevant options to the values they had when
-using |:diffsplit|, |:diffpatch| , |:diffthis|. or starting Vim in diff mode.
+The `:diffoff` command resets the relevant options to the values they had when
+using `:diffsplit`, `:diffpatch` , `:diffthis`. or starting Vim in diff mode.
+When using `:diffoff` twice the last saved values are restored.
 Otherwise they are set to their default value:
 
 	'diff'		off
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index d139b12..b24a2a3 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.4.  Last change: 2015 Jun 26
+*eval.txt*	For Vim version 7.4.  Last change: 2015 Jul 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1468,7 +1468,9 @@
 		requires |+extra_search|. Setting this variable to zero acts
 		the like |:nohlsearch| command, setting it to one acts like >
 			let &hlsearch = &hlsearch
-<
+<		Note that the value is restored when returning from a
+		function. |function-search-undo|.
+
 					*v:insertmode* *insertmode-variable*
 v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
 		events.  Values:
@@ -4895,7 +4897,7 @@
 		separated with CR will result in a single long line (unless a
 		NL appears somewhere).
 		All NUL characters are replaced with a NL character.
-		When {binary/append} contains "b" binary mode is used:
+		When {binary} contains "b" binary mode is used:
 		- When the last line ends in a NL an extra empty list item is
 		  added.
 		- No CR characters are removed.
@@ -5853,6 +5855,24 @@
 		When {skipcc} set to 1, Composing characters are ignored.
 		Also see |strlen()|, |strdisplaywidth()| and |strwidth()|.
 
+		
+		{skipcc} is only available after 7.4.755.  For backward
+		compatibility, you can define a wrapper function: >
+		    if has("patch-7.4.755")
+		      function s:strchars(str, skipcc)
+			return strchars(a:str, a:skipcc)
+		      endfunction
+		    else
+		      function s:strchars(str, skipcc)
+			if a:skipcc
+			  return strlen(substitute(a:str, ".", "x", "g"))
+			else
+			  return strchars(a:str)
+			endif
+		      endfunction
+		    endif
+<
+
 strdisplaywidth({expr}[, {col}])			*strdisplaywidth()*
 		The result is a Number, which is the number of display cells
 		String {expr} occupies on the screen when it starts at {col}.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index e371a74..209e1ba 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.4.  Last change: 2015 Jun 19
+*options.txt*	For Vim version 7.4.  Last change: 2015 Jul 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 37cd8a2..caf1f1f 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5210,6 +5210,7 @@
 complete_CTRL-Y	insert.txt	/*complete_CTRL-Y*
 complete_add()	eval.txt	/*complete_add()*
 complete_check()	eval.txt	/*complete_check()*
+completed_item-variable	eval.txt	/*completed_item-variable*
 completion-functions	usr_41.txt	/*completion-functions*
 complex-change	change.txt	/*complex-change*
 complex-repeat	repeat.txt	/*complex-repeat*
@@ -8492,6 +8493,7 @@
 v:charconvert_to	eval.txt	/*v:charconvert_to*
 v:cmdarg	eval.txt	/*v:cmdarg*
 v:cmdbang	eval.txt	/*v:cmdbang*
+v:completed_item	eval.txt	/*v:completed_item*
 v:count	eval.txt	/*v:count*
 v:count1	eval.txt	/*v:count1*
 v:ctype	eval.txt	/*v:ctype*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 4a09f17..6c60708 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 Jun 25
+*todo.txt*      For Vim version 7.4.  Last change: 2015 Jul 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -76,6 +76,12 @@
 Better .ico file for Windows. (Pat Suwalski, 2015 Feb 13)
 Waiting for response on remark from Edward Fox.
 
+Add Tera Term language plugins. (Ken Takata, 2015 Jul 3)
+
+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)
 
@@ -96,11 +102,6 @@
 C indent: should recognize C11 raw strings. (Mark Lodato, 2015 Mar 1)
 Need to recognize R"string" for 'cindent'.
 
-Updated phpcomplete. (Mikolaj Machowski, 2015 May 6)
-
-Patch to make ":difoff" not reset the saved values, so that it can be used
-twice. (Olaf Dabrunz, 2015 Jun 21)
-
 Crash when changing the 'tags' option from a remote command.
 (Benjamin Fritz, 2015 Mar 18, stack trace Mar 20)
 
@@ -121,9 +122,6 @@
 (Christian Brabandt, 2015 Jun 12)
 Is this the right solution?
 
-Patch for langmap not working properly with mapping in Command-line mode.
-Issue 376.
-
 Patch to add grepfile(). (Scott Prager, 2015 May 26)
 Work in progress.
 
@@ -136,21 +134,22 @@
 
 Better greek spell checking.  Issue 299.
 
-Patch to make :diffoff work twice. (Olaf Dabrunz, 2015 Jun 23)
-
-Patch to add 'completeselect' option.  Specifies how to select a candidate in
-insert completion. (Shougo, 2013 May 29)
-Update to add to existing 'completeopt'. 2013 May 30
-Updated update: Shougo 2015 Jun 12
+Add 'fixeol' option, default on, so that people who have problems with fixing
+the missing EOL can switch it off?
 
 When complete() first argument is before where insert started and 'backspace'
 is Vi compatible, the completion fails. (Hirohito Higashi, 2015 Feb 19)
 
 Patch to fix equivalence classes in regexp. (Dominique Pelle, 2015 Jun 2)
 
+Test 44 fails when [[=A=]] is changed to [[=À=]].  Caused by getcmdline() not
+handling the 0x80 as a second byte correctly?  (Dominique Pelle, 2015 Jun 10)
+
 Weird encryption problems on Windows. (Ben Fritz, 2015 Feb 13)
 Goes away when disabling the swap file. (might1, Feb 16)
 
+Patch to add an OptionSet autocommand event. (Christian Brabandt, 2015 Jun 25)
+
 MS-Windows: Crash opening very long file name starting with "\\".
 (Christian Brock, 2012 Jun 29)
 
@@ -188,9 +187,6 @@
 Patch for an extra argument to matchadd() for conceal. (Christian Brabandt,
 2015 Feb 17, update Feb 19)
 
-Patch to add v:completed_item. (Shougo Matsu, 2013 Nov 29).
-Update 2015 Jun 20.
-
 Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25)
 OK to not block marks?
 
@@ -430,8 +426,6 @@
 Several syntax file match "^\s*" which may get underlined if that's in the
 highlight group.  Add a "\zs" after it?
 
-Go through more coverity reports.
-
 The undo file name can get too long. (Issue 346)
 For the path use a hash instead of dir%dir%dir%name  hash%name.
 
@@ -639,6 +633,8 @@
 
 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.
 
 8   "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
     Patch by Christian Wellenbrock, 2013 Jul 5.
@@ -1088,8 +1084,8 @@
 ":function f(x) keepjumps" creates a function where every command is executed
 like it has ":keepjumps" before it.
 
-Coverity: ask someone to create new user: Dominique.
-Check if there are new reported defects: http://scan.coverity.com/rung2.html
+Coverity: Check if there are new reported defects:
+https://scan.coverity.com/projects/241
 
 Patch to support :undo absolute jump to file save number. (Christian Brabandt,
 2010 Nov 5)
@@ -1125,7 +1121,7 @@
 
 Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
 
-For running gvim on an USB stick: avoid the OLE registration.  Use a command
+For running gvim on a USB stick: avoid the OLE registration.  Use a command
 line argument -noregister.
 
 When using an expression in 'statusline' leading white space sometimes goes
diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man
index 5b9b83c..9390caa 100644
--- a/runtime/doc/vim.man
+++ b/runtime/doc/vim.man
@@ -1,4 +1,4 @@
-VIM(1)                                                                  VIM(1)
+VIM(1)                      General Commands Manual                     VIM(1)
 
 
 
@@ -21,13 +21,13 @@
        to edit all kinds of plain text.  It is especially useful  for  editing
        programs.
 
-       There  are a lot of enhancements above Vi: multi level undo, multi win-
+       There  are a lot of enhancements above Vi: multi level undo, multi win‐
        dows and buffers, syntax highlighting, command line  editing,  filename
        completion,   on-line   help,   visual  selection,  etc..   See  ":help
        vi_diff.txt" for a summary of the differences between Vim and Vi.
 
        While running Vim a lot of help can be obtained from the  on-line  help
-       system,  with the ":help" command.  See the ON-LINE HELP section below.
+       system, with the ":help" command.  See the ON-LINE HELP section below.
 
        Most often Vim is started to edit a single file with the command
 
@@ -38,44 +38,44 @@
             vim [options] [filelist]
 
        If the filelist is missing, the editor will start with an empty buffer.
-       Otherwise  exactly  one out of the following four may be used to choose
+       Otherwise exactly one out of the following four may be used  to  choose
        one or more files to be edited.
 
-       file ..     A list of filenames.  The first one  will  be  the  current
-                   file  and  read  into the buffer.  The cursor will be posi-
+       file ..     A  list  of  filenames.   The first one will be the current
+                   file and read into the buffer.  The cursor  will  be  posi‐
                    tioned on the first line of the buffer.  You can get to the
-                   other  files with the ":next" command.  To edit a file that
+                   other files with the ":next" command.  To edit a file  that
                    starts with a dash, precede the filelist with "--".
 
-       -           The file to edit is read from  stdin.   Commands  are  read
+       -           The  file  to  edit  is read from stdin.  Commands are read
                    from stderr, which should be a tty.
 
        -t {tag}    The file to edit and the initial cursor position depends on
-                   a "tag", a sort of goto label.  {tag} is looked up  in  the
+                   a  "tag",  a sort of goto label.  {tag} is looked up in the
                    tags file, the associated file becomes the current file and
-                   the associated command is executed.  Mostly  this  is  used
-                   for  C  programs,  in  which case {tag} could be a function
+                   the  associated  command  is executed.  Mostly this is used
+                   for C programs, in which case {tag}  could  be  a  function
                    name.  The effect is that the file containing that function
-                   becomes  the  current  file and the cursor is positioned on
+                   becomes the current file and the cursor  is  positioned  on
                    the start of the function.  See ":help tag-commands".
 
        -q [errorfile]
-                   Start in quickFix mode.  The file [errorfile] is  read  and
-                   the  first  error is displayed.  If [errorfile] is omitted,
+                   Start  in  quickFix mode.  The file [errorfile] is read and
+                   the first error is displayed.  If [errorfile]  is  omitted,
                    the  filename  is  obtained  from  the  'errorfile'  option
-                   (defaults  to  "AztecC.Err"  for the Amiga, "errors.err" on
-                   other systems).  Further errors can be jumped to  with  the
+                   (defaults to "AztecC.Err" for the  Amiga,  "errors.err"  on
+                   other  systems).   Further errors can be jumped to with the
                    ":cn" command.  See ":help quickfix".
 
-       Vim behaves differently, depending on the name of the command (the exe-
+       Vim behaves differently, depending on the name of the command (the exe‐
        cutable may still be the same file).
 
        vim       The "normal" way, everything is default.
 
-       ex        Start in Ex mode.  Go to Normal mode with the ":vi"  command.
+       ex        Start  in Ex mode.  Go to Normal mode with the ":vi" command.
                  Can also be done with the "-e" argument.
 
-       view      Start  in read-only mode.  You will be protected from writing
+       view      Start in read-only mode.  You will be protected from  writing
                  the files.  Can also be done with the "-R" argument.
 
        gvim gview
@@ -87,102 +87,102 @@
                  be done with the "-y" argument.
 
        rvim rview rgvim rgview
-                 Like the above, but with restrictions.  It will not be possi-
-                 ble  to  start  shell  commands, or suspend Vim.  Can also be
+                 Like the above, but with restrictions.  It will not be possi‐
+                 ble to start shell commands, or suspend  Vim.   Can  also  be
                  done with the "-Z" argument.
 
 OPTIONS
-       The options may be given in  any  order,  before  or  after  filenames.
+       The  options  may  be  given  in  any order, before or after filenames.
        Options without an argument can be combined after a single dash.
 
-       +[num]      For  the  first  file the cursor will be positioned on line
-                   "num".  If "num" is missing, the cursor will be  positioned
+       +[num]      For the first file the cursor will be  positioned  on  line
+                   "num".   If "num" is missing, the cursor will be positioned
                    on the last line.
 
-       +/{pat}     For  the  first  file  the cursor will be positioned on the
-                   first occurrence of {pat}.  See ":help search-pattern"  for
-                   the available search patterns.
+       +/{pat}     For the first file the cursor will  be  positioned  in  the
+                   line  with  the  first  occurrence  of  {pat}.   See ":help
+                   search-pattern" for the available search patterns.
 
        +{command}
 
        -c {command}
-                   {command}  will  be  executed after the first file has been
-                   read.  {command} is interpreted as an Ex command.   If  the
-                   {command}  contains  spaces  it  must be enclosed in double
-                   quotes (this depends on the shell that is used).   Example:
+                   {command} will be executed after the first  file  has  been
+                   read.   {command}  is interpreted as an Ex command.  If the
+                   {command} contains spaces it must  be  enclosed  in  double
+                   quotes  (this depends on the shell that is used).  Example:
                    Vim "+set si" main.c
                    Note: You can use up to 10 "+" or "-c" commands.
 
-       -S {file}   {file}  will be sourced after the first file has been read.
-                   This is equivalent to -c "source  {file}".   {file}  cannot
+       -S {file}   {file} will be sourced after the first file has been  read.
+                   This  is  equivalent  to -c "source {file}".  {file} cannot
                    start with '-'.  If {file} is omitted "Session.vim" is used
                    (only works when -S is the last argument).
 
        --cmd {command}
-                   Like using "-c", but the command is  executed  just  before
-                   processing  any  vimrc file.  You can use up to 10 of these
+                   Like  using  "-c",  but the command is executed just before
+                   processing any vimrc file.  You can use up to 10  of  these
                    commands, independently from "-c" commands.
 
-       -A          If Vim has been compiled with ARABIC  support  for  editing
-                   right-to-left  oriented  files and Arabic keyboard mapping,
-                   this option starts Vim in Arabic  mode,  i.e.  'arabic'  is
+       -A          If  Vim  has  been compiled with ARABIC support for editing
+                   right-to-left oriented files and Arabic  keyboard  mapping,
+                   this  option  starts  Vim  in Arabic mode, i.e. 'arabic' is
                    set.  Otherwise an error message is given and Vim aborts.
 
-       -b          Binary  mode.  A few options will be set that makes it pos-
+       -b          Binary mode.  A few options will be set that makes it  pos‐
                    sible to edit a binary or executable file.
 
-       -C          Compatible.  Set the 'compatible' option.  This  will  make
-                   Vim  behave  mostly  like  Vi,  even  though  a .vimrc file
+       -C          Compatible.   Set  the 'compatible' option.  This will make
+                   Vim behave mostly  like  Vi,  even  though  a  .vimrc  file
                    exists.
 
-       -d          Start in diff mode.  There should be  two,  three  or  four
-                   file  name arguments.  Vim will open all the files and show
+       -d          Start  in  diff  mode.   There should be two, three or four
+                   file name arguments.  Vim will open all the files and  show
                    differences between them.  Works like vimdiff(1).
 
-       -d {device} Open {device} for use as a terminal.  Only  on  the  Amiga.
+       -d {device} Open  {device}  for  use as a terminal.  Only on the Amiga.
                    Example: "-d con:20/30/600/150".
 
-       -D          Debugging.   Go  to debugging mode when executing the first
+       -D          Debugging.  Go to debugging mode when executing  the  first
                    command from a script.
 
-       -e          Start Vim in Ex mode, just like the executable  was  called
+       -e          Start  Vim  in Ex mode, just like the executable was called
                    "ex".
 
        -E          Start Vim in improved Ex mode, just like the executable was
                    called "exim".
 
-       -f          Foreground.  For the GUI version, Vim  will  not  fork  and
+       -f          Foreground.   For  the  GUI  version, Vim will not fork and
                    detach from the shell it was started in.  On the Amiga, Vim
-                   is not restarted to open a new window.  This option  should
-                   be  used  when  Vim is executed by a program that will wait
-                   for the edit session to finish (e.g. mail).  On  the  Amiga
+                   is  not restarted to open a new window.  This option should
+                   be used when Vim is executed by a program  that  will  wait
+                   for  the  edit session to finish (e.g. mail).  On the Amiga
                    the ":sh" and ":!" commands will not work.
 
-       --nofork    Foreground.   For  the  GUI  version, Vim will not fork and
+       --nofork    Foreground.  For the GUI version, Vim  will  not  fork  and
                    detach from the shell it was started in.
 
-       -F          If Vim has been compiled with  FKMAP  support  for  editing
-                   right-to-left  oriented  files  and Farsi keyboard mapping,
-                   this option starts Vim in  Farsi  mode,  i.e.  'fkmap'  and
-                   'rightleft'  are  set.  Otherwise an error message is given
-                   and Vim aborts.
-
-       -g          If Vim has been compiled  with  GUI  support,  this  option
-                   enables  the  GUI.   If  no GUI support was compiled in, an
-                   error message is given and Vim aborts.
-
-       -h          Give a bit of help about the  command  line  arguments  and
-                   options.  After this Vim exits.
-
-       -H          If Vim has been compiled with RIGHTLEFT support for editing
-                   right-to-left oriented files and Hebrew  keyboard  mapping,
-                   this  option  starts  Vim  in Hebrew mode, i.e. 'hkmap' and
+       -F          If  Vim  has  been  compiled with FKMAP support for editing
+                   right-to-left oriented files and  Farsi  keyboard  mapping,
+                   this  option  starts  Vim  in  Farsi mode, i.e. 'fkmap' and
                    'rightleft' are set.  Otherwise an error message  is  given
                    and Vim aborts.
 
+       -g          If  Vim  has  been  compiled  with GUI support, this option
+                   enables the GUI.  If no GUI support  was  compiled  in,  an
+                   error message is given and Vim aborts.
+
+       -h          Give  a  bit  of  help about the command line arguments and
+                   options.  After this Vim exits.
+
+       -H          If Vim has been compiled with RIGHTLEFT support for editing
+                   right-to-left  oriented  files and Hebrew keyboard mapping,
+                   this option starts Vim in Hebrew  mode,  i.e.  'hkmap'  and
+                   'rightleft'  are  set.  Otherwise an error message is given
+                   and Vim aborts.
+
        -i {viminfo}
-                   When  using  the  viminfo file is enabled, this option sets
-                   the filename to use, instead of the  default  "~/.viminfo".
+                   When using the viminfo file is enabled,  this  option  sets
+                   the  filename  to use, instead of the default "~/.viminfo".
                    This can also be used to skip the use of the .viminfo file,
                    by giving the name "NONE".
 
@@ -190,92 +190,92 @@
 
        -l          Lisp mode.  Sets the 'lisp' and 'showmatch' options on.
 
-       -m          Modifying files is disabled.  Resets  the  'write'  option.
-                   You  can still modify the buffer, but writing a file is not
+       -m          Modifying  files  is  disabled.  Resets the 'write' option.
+                   You can still modify the buffer, but writing a file is  not
                    possible.
 
-       -M          Modifications not allowed.  The  'modifiable'  and  'write'
-                   options  will be unset, so that changes are not allowed and
-                   files can not be written.  Note that these options  can  be
+       -M          Modifications  not  allowed.   The 'modifiable' and 'write'
+                   options will be unset, so that changes are not allowed  and
+                   files  can  not be written.  Note that these options can be
                    set to enable making modifications.
 
-       -N          No-compatible  mode.   Reset the 'compatible' option.  This
-                   will make Vim behave a bit better, but less Vi  compatible,
+       -N          No-compatible mode.  Reset the 'compatible'  option.   This
+                   will  make Vim behave a bit better, but less Vi compatible,
                    even though a .vimrc file does not exist.
 
-       -n          No  swap file will be used.  Recovery after a crash will be
-                   impossible.  Handy if you want to edit a  file  on  a  very
-                   slow  medium  (e.g.  floppy).   Can also be done with ":set
+       -n          No swap file will be used.  Recovery after a crash will  be
+                   impossible.   Handy  if  you  want to edit a file on a very
+                   slow medium (e.g. floppy).  Can also  be  done  with  ":set
                    uc=0".  Can be undone with ":set uc=200".
 
-       -nb         Become an editor server for NetBeans.   See  the  docs  for
+       -nb         Become  an  editor  server  for NetBeans.  See the docs for
                    details.
 
        -o[N]       Open N windows stacked.  When N is omitted, open one window
                    for each file.
 
-       -O[N]       Open N windows side by side.  When N is omitted,  open  one
+       -O[N]       Open  N  windows side by side.  When N is omitted, open one
                    window for each file.
 
        -p[N]       Open N tab pages.  When N is omitted, open one tab page for
                    each file.
 
-       -R          Read-only mode.  The 'readonly' option will  be  set.   You
-                   can still edit the buffer, but will be prevented from acci-
-                   dently overwriting a file.  If you do want to  overwrite  a
-                   file,  add  an  exclamation  mark  to the Ex command, as in
-                   ":w!".  The -R option  also  implies  the  -n  option  (see
-                   below).   The  'readonly'  option  can  be reset with ":set
+       -R          Read-only  mode.   The  'readonly' option will be set.  You
+                   can still edit the buffer, but will be prevented from acci‐
+                   dently  overwriting  a file.  If you do want to overwrite a
+                   file, add an exclamation mark to  the  Ex  command,  as  in
+                   ":w!".   The  -R  option  also  implies  the -n option (see
+                   below).  The 'readonly' option  can  be  reset  with  ":set
                    noro".  See ":help 'readonly'".
 
-       -r          List swap files, with  information  about  using  them  for
+       -r          List  swap  files,  with  information  about using them for
                    recovery.
 
-       -r {file}   Recovery  mode.  The swap file is used to recover a crashed
-                   editing session.  The swap file is a  file  with  the  same
+       -r {file}   Recovery mode.  The swap file is used to recover a  crashed
+                   editing  session.   The  swap  file is a file with the same
                    filename as the text file with ".swp" appended.  See ":help
                    recovery".
 
-       -s          Silent mode.  Only when started as "Ex" or  when  the  "-e"
+       -s          Silent  mode.   Only  when started as "Ex" or when the "-e"
                    option was given before the "-s" option.
 
        -s {scriptin}
-                   The  script file {scriptin} is read.  The characters in the
-                   file are interpreted as if you had typed  them.   The  same
+                   The script file {scriptin} is read.  The characters in  the
+                   file  are  interpreted  as if you had typed them.  The same
                    can be done with the command ":source! {scriptin}".  If the
                    end of the file is reached before the editor exits, further
                    characters are read from the keyboard.
 
        -T {terminal}
-                   Tells  Vim  the  name  of the terminal you are using.  Only
-                   required when the automatic way doesn't work.  Should be  a
-                   terminal  known  to Vim (builtin) or defined in the termcap
+                   Tells Vim the name of the terminal  you  are  using.   Only
+                   required  when the automatic way doesn't work.  Should be a
+                   terminal known to Vim (builtin) or defined in  the  termcap
                    or terminfo file.
 
-       -u {vimrc}  Use the commands in the file {vimrc}  for  initializations.
-                   All  the  other  initializations  are skipped.  Use this to
-                   edit a special kind of files.  It can also be used to  skip
-                   all  initializations by giving the name "NONE".  See ":help
+       -u {vimrc}  Use  the  commands in the file {vimrc} for initializations.
+                   All the other initializations are  skipped.   Use  this  to
+                   edit  a special kind of files.  It can also be used to skip
+                   all initializations by giving the name "NONE".  See  ":help
                    initialization" within vim for more details.
 
-       -U {gvimrc} Use the commands in the file {gvimrc} for  GUI  initializa-
-                   tions.   All the other GUI initializations are skipped.  It
-                   can also be used to skip all GUI initializations by  giving
-                   the  name "NONE".  See ":help gui-init" within vim for more
+       -U {gvimrc} Use  the  commands in the file {gvimrc} for GUI initializa‐
+                   tions.  All the other GUI initializations are skipped.   It
+                   can  also be used to skip all GUI initializations by giving
+                   the name "NONE".  See ":help gui-init" within vim for  more
                    details.
 
-       -V[N]       Verbose.  Give messages about which files are  sourced  and
-                   for  reading and writing a viminfo file.  The optional num-
+       -V[N]       Verbose.   Give  messages about which files are sourced and
+                   for reading and writing a viminfo file.  The optional  num‐
                    ber N is the value for 'verbose'.  Default is 10.
 
-       -v          Start Vim in Vi mode, just like the executable  was  called
-                   "vi".   This  only has effect when the executable is called
+       -v          Start  Vim  in Vi mode, just like the executable was called
+                   "vi".  This only has effect when the executable  is  called
                    "ex".
 
        -w {scriptout}
-                   All the characters that you type are recorded in  the  file
-                   {scriptout},  until  you  exit  Vim.  This is useful if you
-                   want to create a script file to be used with  "vim  -s"  or
+                   All  the  characters that you type are recorded in the file
+                   {scriptout}, until you exit Vim.  This  is  useful  if  you
+                   want  to  create  a script file to be used with "vim -s" or
                    ":source!".  If the {scriptout} file exists, characters are
                    appended.
 
@@ -285,27 +285,27 @@
        -x          Use encryption when writing files.  Will prompt for a crypt
                    key.
 
-       -X          Don't  connect to the X server.  Shortens startup time in a
-                   terminal, but the window title and clipboard  will  not  be
+       -X          Don't connect to the X server.  Shortens startup time in  a
+                   terminal,  but  the  window title and clipboard will not be
                    used.
 
        -y          Start Vim in easy mode, just like the executable was called
-                   "evim" or "eview".  Makes Vim behave like a  click-and-type
+                   "evim"  or "eview".  Makes Vim behave like a click-and-type
                    editor.
 
-       -Z          Restricted  mode.   Works  like  the executable starts with
+       -Z          Restricted mode.  Works like  the  executable  starts  with
                    "r".
 
-       --          Denotes the end of the options.  Arguments after this  will
-                   be  handled  as  a  file  name.  This can be used to edit a
+       --          Denotes  the end of the options.  Arguments after this will
+                   be handled as a file name.  This can  be  used  to  edit  a
                    filename that starts with a '-'.
 
        --echo-wid  GTK GUI only: Echo the Window ID on stdout.
 
        --help      Give a help message and exit, just like "-h".
 
-       --literal   Take file name arguments literally,  do  not  expand  wild-
-                   cards.   This has no effect on Unix where the shell expands
+       --literal   Take  file  name  arguments  literally, do not expand wild‐
+                   cards.  This has no effect on Unix where the shell  expands
                    wildcards.
 
        --noplugin  Skip loading plugins.  Implied by -u NONE.
@@ -315,18 +315,18 @@
                    is given and the files are edited in the current Vim.
 
        --remote-expr {expr}
-                   Connect to a Vim server, evaluate {expr} in  it  and  print
+                   Connect  to  a  Vim server, evaluate {expr} in it and print
                    the result on stdout.
 
        --remote-send {keys}
                    Connect to a Vim server and send {keys} to it.
 
        --remote-silent
-                   As  --remote,  but  without  the  warning when no server is
+                   As --remote, but without the  warning  when  no  server  is
                    found.
 
        --remote-wait
-                   As --remote, but Vim does not exit  until  the  files  have
+                   As  --remote,  but  Vim  does not exit until the files have
                    been edited.
 
        --remote-wait-silent
@@ -337,31 +337,31 @@
                    List the names of all Vim servers that can be found.
 
        --servername {name}
-                   Use {name} as the server name.  Used for the  current  Vim,
+                   Use  {name}  as the server name.  Used for the current Vim,
                    unless used with a --remote argument, then it's the name of
                    the server to connect to.
 
        --socketid {id}
-                   GTK GUI only: Use the GtkPlug  mechanism  to  run  gvim  in
+                   GTK  GUI  only:  Use  the  GtkPlug mechanism to run gvim in
                    another window.
 
        --version   Print version information and exit.
 
 ON-LINE HELP
-       Type  ":help"  in Vim to get started.  Type ":help subject" to get help
-       on a specific subject.  For example: ":help ZZ" to  get  help  for  the
-       "ZZ"  command.   Use <Tab> and CTRL-D to complete subjects (":help cmd-
-       line-completion").  Tags are present to jump from one place to  another
+       Type ":help" in Vim to get started.  Type ":help subject" to  get  help
+       on  a  specific  subject.   For example: ":help ZZ" to get help for the
+       "ZZ" command.  Use <Tab> and CTRL-D to complete subjects  (":help  cmd‐
+       line-completion").   Tags are present to jump from one place to another
        (sort of hypertext links, see ":help").  All documentation files can be
        viewed in this way, for example ":help syntax.txt".
 
 FILES
        /usr/local/lib/vim/doc/*.txt
-                      The Vim documentation files.  Use ":help  doc-file-list"
+                      The  Vim documentation files.  Use ":help doc-file-list"
                       to get the complete list.
 
        /usr/local/lib/vim/doc/tags
-                      The  tags file used for finding information in the docu-
+                      The tags file used for finding information in the  docu‐
                       mentation files.
 
        /usr/local/lib/vim/syntax/syntax.vim
@@ -381,7 +381,7 @@
        ~/.gvimrc      Your personal gvim initializations.
 
        /usr/local/lib/vim/optwin.vim
-                      Script used for the ":options" command, a  nice  way  to
+                      Script  used  for  the ":options" command, a nice way to
                       view and set options.
 
        /usr/local/lib/vim/menu.vim
@@ -391,11 +391,11 @@
                       Script to generate a bug report.  See ":help bugs".
 
        /usr/local/lib/vim/filetype.vim
-                      Script  to  detect  the type of a file by its name.  See
+                      Script to detect the type of a file by  its  name.   See
                       ":help 'filetype'".
 
        /usr/local/lib/vim/scripts.vim
-                      Script to detect the type of a  file  by  its  contents.
+                      Script  to  detect  the  type of a file by its contents.
                       See ":help 'filetype'".
 
        /usr/local/lib/vim/print/*.ps
@@ -410,8 +410,8 @@
 AUTHOR
        Most of Vim was made by Bram Moolenaar, with a lot of help from others.
        See ":help credits" in Vim.
-       Vim is based on Stevie, worked on by: Tim Thompson,  Tony  Andrews  and
-       G.R.  (Fred) Walter.  Although hardly any of the original code remains.
+       Vim  is  based  on Stevie, worked on by: Tim Thompson, Tony Andrews and
+       G.R. (Fred) Walter.  Although hardly any of the original code remains.
 
 BUGS
        Probably.  See ":help todo" for a list of known problems.
diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man
index 057c8e9..7e1097f 100644
--- a/runtime/doc/xxd.man
+++ b/runtime/doc/xxd.man
@@ -1,4 +1,4 @@
-XXD(1)                                                                  XXD(1)
+XXD(1)                      General Commands Manual                     XXD(1)
 
 
 
@@ -14,30 +14,29 @@
        xxd  creates a hex dump of a given file or standard input.  It can also
        convert a hex dump back to its original binary form.  Like  uuencode(1)
        and  uudecode(1)  it allows the transmission of binary data in a `mail-
-       safe' ASCII representation, but has the advantage of decoding to  stan-
+       safe' ASCII representation, but has the advantage of decoding to  stan‐
        dard output.  Moreover, it can be used to perform binary file patching.
 
 OPTIONS
-       If no infile is given, standard input is read.  If infile is  specified
-       as  a  `-'  character,  then input is taken from standard input.  If no
+       If  no infile is given, standard input is read.  If infile is specified
+       as a `-' character, then input is taken from  standard  input.   If  no
        outfile is given (or a `-' character is in its place), results are sent
        to standard output.
 
-       Note  that  a  "lazy" parser is used which does not check for more than
-       the first option letter, unless the option is followed by a  parameter.
-       Spaces  between  a single option letter and its parameter are optional.
+       Note that a "lazy" parser is used which does not check  for  more  than
+       the  first option letter, unless the option is followed by a parameter.
+       Spaces between a single option letter and its parameter  are  optional.
        Parameters to options can be specified in decimal, hexadecimal or octal
        notation.  Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent.
 
-
        -a | -autoskip
-              toggle  autoskip: A single '*' replaces nul-lines.  Default off.
+              toggle autoskip: A single '*' replaces nul-lines.  Default off.
 
        -b | -bits
               Switch to bits (binary digits) dump, rather than hexdump.   This
               option  writes octets as eight digits "1"s and "0"s instead of a
               normal hexadecimal dump. Each line is preceded by a line  number
-              in  hexadecimal and followed by an ascii (or ebcdic) representa-
+              in  hexadecimal and followed by an ascii (or ebcdic) representa‐
               tion. The command line switches -r, -p, -i do not work with this
               mode.
 
@@ -50,25 +49,34 @@
               to EBCDIC.  This does not change the hexadecimal representation.
               The option is meaningless in combinations with -r, -p or -i.
 
+       -e     Switch to little-endian hexdump.  This option treats byte groups
+              as words in little-endian byte order.  The default grouping of 4
+              bytes may be changed using -g.  This option only applies to hex‐
+              dump,  leaving  the  ASCII (or EBCDIC) representation unchanged.
+              The command line switches -r, -p, -i do not work with this mode.
+
        -g bytes | -groupsize bytes
               separate the output of every <bytes> bytes (two  hex  characters
-              or eight bit-digits each) by a whitespace.  Specify -g 0 to sup-
-              press grouping.  <Bytes> defaults to 2 in normal mode and  1  in
-              bits  mode.   Grouping  does  not apply to postscript or include
-              style.
+              or eight bit-digits each) by a whitespace.  Specify -g 0 to sup‐
+              press grouping.  <Bytes> defaults to 2 in normal mode, 4 in lit‐
+              tle-endian  mode and 1 in bits mode.  Grouping does not apply to
+              postscript or include style.
 
        -h | -help
               print a summary of available commands and exit.  No hex  dumping
               is performed.
 
        -i | -include
-              output  in C include file style. A complete static array defini-
+              output  in C include file style. A complete static array defini‐
               tion is written (named after the input file), unless  xxd  reads
               from stdin.
 
        -l len | -len len
               stop after writing <len> octets.
 
+       -o offset
+              add <offset> to the displayed file position.
+
        -p | -ps | -postscript | -plain
               output  in  postscript  continuous  hexdump style. Also known as
               plain hexdump style.
@@ -76,8 +84,8 @@
        -r | -revert
               reverse operation: convert (or patch) hexdump into  binary.   If
               not  writing  to stdout, xxd writes into its output file without
-              truncating it. Use the combination -r -p to read plain hexadeci-
-              mal dumps without line number information and without a particu-
+              truncating it. Use the combination -r -p to read plain hexadeci‐
+              mal dumps without line number information and without a particu‐
               lar column layout. Additional  Whitespace  and  line-breaks  are
               allowed anywhere.
 
@@ -101,7 +109,7 @@
 CAVEATS
        xxd -r has some builtin magic while evaluating line number information.
        If the output file is seekable, then the linenumbers at  the  start  of
-       each  hexdump  line may be out of order, lines may be missing, or over-
+       each  hexdump  line may be out of order, lines may be missing, or over‐
        lapping. In these cases xxd will lseek(2) to the next position. If  the
        output  file  is  not  seekable,  only  gaps are allowed, which will be
        filled by null-bytes.
@@ -112,8 +120,8 @@
        input line after reading enough columns of hexadecimal data (see option
        -c). This also means, that changes to the printable ascii  (or  ebcdic)
        columns  are  always  ignored.  Reverting a plain (or postscript) style
-       hexdump with xxd -r -p does not depend on the correct  number  of  col-
-       umns.  Here  anything  that  looks  like a pair of hex-digits is inter-
+       hexdump with xxd -r -p does not depend on the correct  number  of  col‐
+       umns.  Here  anything  that  looks  like a pair of hex-digits is inter‐
        preted.
 
        Note the difference between
@@ -218,7 +226,6 @@
        % stty < /dev/term/b -echo -opost -isig -icanon min 1
        % echo -n foo > /dev/term/b
 
-
 RETURN VALUES
        The following error values are returned:
 
@@ -256,7 +263,4 @@
        <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
        Small changes by Bram Moolenaar.  Edited by Juergen Weigert.
 
-
-
-
 Manual page for xxd               August 1996                           XXD(1)
diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim
index 0394ee2..29a25a2 100644
--- a/runtime/indent/sh.vim
+++ b/runtime/indent/sh.vim
@@ -1,6 +1,8 @@
 " Vim indent file
 " Language:         Shell Script
-" Maintainer:       Peter Aronoff <telemachus@arpinum.org>
+" Maintainer:       Currently unmaintained. If you want to take it, please
+" 		    email Bram
+" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
 " Original Author:  Nikolai Weibull <now@bitwi.se>
 " Latest Revision:  2014-08-22
 
