diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index c26d927..a858be5 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.4a.  Last change: 2013 Mar 19
+*change.txt*    For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -71,9 +71,21 @@
 			"D" deletes the highlighted text plus all text until
 			the end of the line.  {not in Vi}
 
-					*:d* *:de* *:del* *:delete* *:dl*
+					*:d* *:de* *:del* *:delete* *:dl* *:dp*
 :[range]d[elete] [x]	Delete [range] lines (default: current line) [into
 			register x].
+			Note these weird abbreviations:
+			   :dl		delete and list
+			   :dell	idem
+			   :delel	idem
+			   :deletl	idem
+			   :deletel	idem
+			   :dp		delete and print
+			   :dep		idem
+			   :delp	idem
+			   :delep	idem
+			   :deletp	idem
+			   :deletep	idem
 
 :[range]d[elete] [x] {count}
 			Delete {count} lines, starting with [range]
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index c06f22a..69de80d 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 7.4a.  Last change: 2013 Jun 28
+*if_pyth.txt*   For Vim version 7.4a.  Last change: 2013 Jul 10
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -23,6 +23,7 @@
 |+python| feature.
 The Python 3 interface is available only when Vim was compiled with the
 |+python3| feature.
+Both can be available at the same time, but read |python-2-and-3|.
 
 ==============================================================================
 1. Commands						*python-commands*
@@ -711,7 +712,7 @@
 3. Python 3 support only    (-python, +python3 or +python3/dyn)
 4. Python 2 and 3 support   (+python/dyn, +python3/dyn)
 
-Some more details on the special case 4:
+Some more details on the special case 4:  *python-2-and-3*
 
 When Python 2 and Python 3 are both supported they must be loaded dynamically.
 
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 61e37b8..9df8f95 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.4a.  Last change: 2013 Jun 21
+*index.txt*     For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1191,9 +1191,12 @@
 |:digraphs|	:dig[raphs]	show or enter digraphs
 |:display|	:di[splay]	display registers
 |:djump|	:dj[ump]	jump to #define
-|:dlist|	:dl[ist]	list #defines
+|:dl|		:dl		short for |:delete|
+|:dl|		:del[ete]l	short for |:delete|
+|:dlist|	:dli[st]	list #defines
 |:doautocmd|	:do[autocmd]	apply autocommands to current buffer
 |:doautoall|	:doautoa[ll]	apply autocommands for all loaded buffers
+|:dp|		:d[elete]p	short for |:delete|
 |:drop|		:dr[op]		jump to window editing file or edit file in
 				current window
 |:dsearch|	:ds[earch]	list one #define
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index e7368fc..4599b78 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.4a.  Last change: 2013 Jul 04
+*insert.txt*    For Vim version 7.4a.  Last change: 2013 Jul 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1359,7 +1359,7 @@
 
 Completion works in separate JavaScript files (&ft==javascript), inside of
 <script> tag of (X)HTML and in values of event attributes (including scanning
-of external files.
+of external files).
 
 DOM compatibility
 
@@ -1515,8 +1515,7 @@
     let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated'
 
 The PHP language has an enormous number of items which it knows how to syntax
-highlight.  These these items will be available within the omni completion
-list.  
+highlight.  These items will be available within the omni completion list.
 
 Some people may find this list unwieldy or are only interested in certain
 items.  There are two ways to prune this list (if necessary).  If you find
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 95f75d9..8762f48 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.4a.  Last change: 2013 Mar 07
+*motion.txt*    For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -236,6 +236,8 @@
 			the line is not on the screen or when a count is used.
 			Additionally, vertical movements keep the column,
 			instead of going to the end of the line.
+			When 'virtualedit' is enabled moves to the end of the
+			screen line.
 			{not in Vi}
 
 							*bar*
@@ -1083,7 +1085,8 @@
 
 When the |:keepjumps| command modifier is used, jumps are not stored in the
 jumplist.  Jumps are also not stored in other cases, e.g., in a |:global|
-command.  You can explicitly add a jump by setting the ' mark.
+command.  You can explicitly add a jump by setting the ' mark with "m'".  Note
+that calling setpos() does not do this.
 
 After the CTRL-O command that got you into line 1154 you could give another
 jump command (e.g., "G").  The jump list would then become:
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index cf2299b..37f7e50 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.4a.  Last change: 2013 Jul 07
+*options.txt*	For Vim version 7.4a.  Last change: 2013 Jul 09
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -7863,8 +7863,9 @@
 	if the line was empty.  But it is far from Vi compatible.  It may also
 	break some plugins or Vim scripts.  For example because |l| can move
 	the cursor after the last character.  Use with care!
-	Using the |$| command will move to the last character in the line, not
+	Using the `$` command will move to the last character in the line, not
 	past it.  This may actually move the cursor to the left!
+	The `g$` command will move to the end of the screen line.
 	It doesn't make sense to combine "all" with "onemore", but you will
 	not get a warning for it.
 
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 69c5796..17030ed 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.4a.  Last change: 2013 Jun 26
+*spell.txt*	For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1133,7 +1133,7 @@
 
 The slash is used in the .dic file to separate the basic word from the affix
 letters and other flags.  Unfortunately, this means you cannot use a slash in
-a word.  Thus "TCP/IP" is not a word but "TCP with the flags "IP".  To include
+a word.  Thus "TCP/IP" is not a word but "TCP" with the flags "IP".  To include
 a slash in the word put a backslash before it: "TCP\/IP".  In the rare case
 you want to use a backslash inside a word you need to use two backslashes.
 Any other use of the backslash is reserved for future expansion.
@@ -1382,7 +1382,7 @@
 
 Another way to restrict compounding was mentioned above: Adding the
 |spell-COMPOUNDFORBIDFLAG| flag to an affix causes all words that are made
-with that affix not be be used for compounding.
+with that affix to not be used for compounding.
 
 
 UNLIMITED COMPOUNDING					*spell-NOBREAK*
diff --git a/runtime/doc/tags b/runtime/doc/tags
index ae5860a..592fb17 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2124,6 +2124,7 @@
 :doautoa	autocmd.txt	/*:doautoa*
 :doautoall	autocmd.txt	/*:doautoall*
 :doautocmd	autocmd.txt	/*:doautocmd*
+:dp	change.txt	/*:dp*
 :dr	windows.txt	/*:dr*
 :drop	windows.txt	/*:drop*
 :ds	tagsrch.txt	/*:ds*
@@ -4850,6 +4851,7 @@
 beos-unicode	os_beos.txt	/*beos-unicode*
 beos-utf8	os_beos.txt	/*beos-utf8*
 beos-vimdir	os_beos.txt	/*beos-vimdir*
+better-python-interface	version7.txt	/*better-python-interface*
 beval_bufnr-variable	eval.txt	/*beval_bufnr-variable*
 beval_col-variable	eval.txt	/*beval_col-variable*
 beval_lnum-variable	eval.txt	/*beval_lnum-variable*
@@ -7382,6 +7384,7 @@
 pyeval()	eval.txt	/*pyeval()*
 python	if_pyth.txt	/*python*
 python-.locked	if_pyth.txt	/*python-.locked*
+python-2-and-3	if_pyth.txt	/*python-2-and-3*
 python-Dictionary	if_pyth.txt	/*python-Dictionary*
 python-Function	if_pyth.txt	/*python-Function*
 python-List	if_pyth.txt	/*python-List*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index 2093a34..9ccac0d 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 7.4a.  Last change: 2011 Oct 28
+*tagsrch.txt*   For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index b1e8128..0e26980 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.4a.  Last change: 2013 Jul 08
+*todo.txt*      For Vim version 7.4a.  Last change: 2013 Jul 17
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,6 +34,18 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Edit changed-7.4 text.
+
+Patch for this bug: (Ken Takata, 2013 Jul 17)
+8   Win32: When mouse is hidden and in the toolbar, moving it won't make it
+    appear. (Sami Salonen)
+
+This results in 'fileformat' set to "dos" instead of "unix". (Ingo Karkat,
+2013 Jul 16)
+    :set fileformats=dos,unix
+    :new ++ff=unix
+Also for ++bin and ++enc.
+
 Python: ":py raw_input('prompt')" doesn't work. (Manu Hack)
 
 Patch to add "acl" and "xpm" as a feature. (Ken Takata, 2013 Jul 8)
@@ -102,6 +114,9 @@
 Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep
 28)  With tests: Oct 9.
 
+Patch from Christian Brabandt to make the "buffer" argument for ":sign place"
+optional. (2013 Jul 12)
+
 Patch to allow setting w:quickfix_title via setqflist() and setloclist()
 functions. (Christian Brabandt, 2013 May 8, update May 21)
 Patch to add getlocstack() / setlocstack(). (Christian Brabandt, 2013 May 14)
@@ -118,9 +133,7 @@
     the two into a regex for searching. (Ned Konz)
 Patch by Christian Brabandt, 2013 Apr 20, unfinished.
 
-Bug: findfile("any", "http://;") returns http://any. (Andrew Pimlott, 2013 May
-7)  Not sure if that can be fixed, but when using "file://" it should be
-possible to check if the file exists.
+Bug: findfile("any", "file:///tmp;") does not work.
 
 v:register is not directly reset to " after a delete command that specifies a
 register.  It is reset after the next command. (Steve Vermeulen, 2013 Mar 16)
@@ -130,8 +143,6 @@
 Patch to set antialiasing style on Windows. (Ondrej Balaz, 2013 Mar 14)
 Needs a different check for CLEARTYPE_QUALITY.
 
-Issue 72: 'autochdir' causes problems for :vimgrep.
-
 In the ATTENTION message about an existing swap file, mention the name of the
 process that is running.  It might actually be some other program, e.g. after
 a reboot.
@@ -169,10 +180,14 @@
 Win32: The Python interface only works with one version of Python, selected at
 compile time.  Can this be made to work with version 2.1 and 2.2 dynamically?
 
+Python: Extended funcrefs: use func_T* structure in place of char_u* function
+names. (ZyX, 2013 Jul 15 and later)
+
 Python: Be able to define a Python function that can be called directly from
 Vim script.  Requires converting the arguments and return value, like with
 vim.bindeval().
 
+
 Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers,
 2012 Aug 4)
 
@@ -192,6 +207,17 @@
 Crash in autocmd that unloads buffers in a BufUnload event. (Andrew Pimlott,
 2012 Aug 11)  Disallow :new when BufUnload is being handled?
 
+Issue 72: 'autochdir' causes problems for :vimgrep.
+
+'autochdir' causes problems for setbufvar(). (Ben Fritz, 2013 Jul 16)
+
+Session file creation: 'autochdir' causes trouble.  Keep it off until after
+loading all files.
+
+Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
+line are opened again, but from the wrong directory.  Apply 'autochdir' only
+after starting up?
+
 Patch to add ":ldo" and ":cdo", execute commands over quickfix list and
 location list. (Yegappan Lakshmanan, 2013 Jun 2)
 
@@ -217,6 +243,7 @@
 
 It should be possible to make globpath() return a list instead of a string,
 like with glob(). (Greg Novack, 2012 Nov 2)
+Patch by Adnan Zafar, 2013 Jul 15.
 
 The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O.
 Suggestion for another map. (Philip Mat, 2012 Jun 18)
@@ -271,8 +298,6 @@
 
 Update for vim2html.pl. (Tyru, 2013 Feb 22)
 
-Issue 48: foldopen error can't be caught by try/catch
-
 Patch to sort functions starting with '<' after others.  Omit dict functions,
 they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11)
 
@@ -281,6 +306,9 @@
 Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011
 Nov 20)
 
+Windows 7 confirm() dialog can be taller than the screen. (David Fishburn,
+2013 Jul 9)  Does not count the height of the buttons?
+
 Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26)
 Update Jun 2.
 
@@ -330,9 +358,6 @@
 Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012
 Jan 19)
 
-Win32: default for 'backupcopy' is wrong for a symbolic link. (mklink one
-two). (Benjamin Fritz, 2012 Mar 15)
-
 Need to escape $HOME on Windows?  (ZyX, 2011 Jul 21, discussion 2013 Jul 4)
 Can't simply use a backslash, \$HOME has a different meaning already.
 Would be possible to use $$HOME where $HOME is to be used.
@@ -342,27 +367,9 @@
 
 Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
 
-Using "p" in Visual mode while specifying the small delete register "-
-overwrites the register before it is put. (Marcin Szamotulski, 2012 Nov 23)
-
 With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty
 register. (Michael Seiwald, 2011 Jun 28)  I can't reproduce it.
 
-In GTK Gvim, setting 'lines' and 'columns' to 99999 causes a crash (Tony
-Mechelynck, 2011 Apr 25).  Can reproduce the crash sometimes:
-   gvim -N -u NONE --cmd 'set lines=99999 columns=99999'
-(gvim:25968): Gdk-WARNING **: Native Windows wider or taller than 65535 pixels are not supported
-The program 'gvim' received an X Window System error.
-This probably reflects a bug in the program.
-The error was 'RenderBadPicture (invalid Picture parameter)'.
-  (Details: serial 313 error_code 161 request_code 149 minor_code 8)
-  (Note to programmers: normally, X errors are reported asynchronously;
-   that is, you will receive the error a while after causing it.
-   To debug your program, run it with the --sync command line
-   option to change this behavior. You can then get a meaningful
-   backtrace from your debugger if you break on the gdk_x_error() function.)
-Check that number of pixels doesn't go above 65535?
-
 Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
 
 When using a Vim server, a # in the path causes an error message.
@@ -409,6 +416,9 @@
 
 When doing "redir => s:foo" in a script and then "redir END" somewhere else
 (e.g. in a function) it can't find s:foo.
+When a script contains "redir => s:foo" but doesn't end redirection, a
+following "redir" command gives an error for not being able to access s:foo.
+(ZyX, 2011 Mar 27)
 
 When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim
 doesn't jump to the correct line with :cfirst. (ZyX,  2011 Sep 18)
@@ -441,10 +451,6 @@
 
 Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30)
 
-When a script contains "redir => s:foo" but doesn't end redirection, a
-following "redir" command gives an error for not being able to access s:foo.
-(ZyX, 2011 Mar 27)
-
 Problem with "syn sync gouphere". (Gustavo Niemeyer, 2011 Jan 27)
 
 Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
@@ -471,9 +477,6 @@
     avoid matching something up to a time 11:22:33.
 Patch by Christian Brabandt, 2011 Jul 27.
 
-Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
-Update Nov 19.  James Vega: still not right.  Christian: it's difficult.
-
 Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
 Also add named groups: \%{name}(re)  and \%{name}g
 
@@ -506,14 +509,6 @@
 "L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle,
 2011 Feb 27)
 
-Copy/paste between Vim and Google chrome doesn't work well for multi-byte
-characters. (Ben Haskell, 2010 Sep 17)
-When putting text in the cut buffer (when exiting) and conversion doesn't work
-properly, Prepend "ENC==={value of 'enc'}:" to the text and don't convert?
-Then it should at least work from Vim to Vim and in other applications it's
-clear why it doesn't work.
-Experimental patch by Christian Brabandt, 2012 Apr 19.
-
 Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
 ^M is displayed as ^J sometimes.  Getting 'ff' value from wrong window/buffer?
 
@@ -530,6 +525,9 @@
 Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
 crash? (Raiwil, 2010 Nov 17)
 
+Patch to add FoldedLineNr highlighting: different highlighting for the line
+number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15)
+
 Does not work with NFA regexp engine:
 - \%u, \%x, \%o, \%d followed by a composing character
 
@@ -593,10 +591,6 @@
 When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
 Oct 22)  'isprint' is set to "@,161-255".
 
-Test 73 fails on MS-Windows when compiled with DJGPP and run twice.  How to
-delete the Xfind directory?  Add an rmdir() function, just like we have
-mkdir().
-
 ":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
 
 'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
@@ -619,10 +613,6 @@
 Don't call check_restricted() for histadd(), setbufvar(), settabvar(),
 setwinvar().
 
-Echo starts in the wrong column:
-    while 1 | let s = input('A') | echo 'R' | endw
-(Boyko Bantchev, 2010 Aug 9)
-
 Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
 
 When writing a file > 2Gbyte, the reported number of bytes is negative.
@@ -821,9 +811,6 @@
 Cursorline highlighting combines with Search ('hlsearch') but not with
 SpellBad. (Jim Karsten, 2009 Mar 18)
 
-When 'foldmethod' is "indent", using >> on a line just above a fold makes the
-cursor line folded. (Evan Laforge, 2009 Oct 17)
-
 When 'foldmethod' is "indent", adding an empty line below a fold and then
 indented text, creates a new fold instead of joining it with the previous one.
 (Evan Laforge, 2009 Oct 17)
@@ -852,8 +839,6 @@
 file names. (Kikuchan, 2010 Oct 5).  Useful on a latin1 or double-byte Asian
 system when 'encoding' is "utf-8".
 
-Win32 GUI: Changing manifest helps for dpi changes (Joe Castro, 2009 Mar 27)
-
 Win32 GUI: last message from startup doesn't show up when there is an echoerr
 command. (Cyril Slobin, 2009 Mar 13)
 
@@ -994,9 +979,6 @@
 Win32: associating a type with Vim doesn't take care of space after a
 backslash? (Robert Vibrant, 2008 Jun 5)
 
-Win32: bold font doesn't work when 'guifontwide' has been set. (Yue Wu, 2010
-Aug 23)
-
 When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a
 line.  It's also wrong in folds. (Dominique Pelle, 2010 Aug 21)
 
@@ -1293,10 +1275,6 @@
 Win32: compiling with normal features and OLE fails.  Patch by Mathias
 Michaelis, 2006 Jun 4.
 
-Win32: echo doesn't work for gvim.exe.mnf.  Use inline file.  Patch by Mathias
-Michaelis.  http://groups.yahoo.com/group/vimdev/message/43765
-Patch that includes this and does more by George Reilly, 2007 Feb 12
-
 Win16: include patches to make Win16 version work. (Vince Negri, 2006 May 22)
 
 Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis,
@@ -1445,13 +1423,6 @@
 
 The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3)
 
-Session file creation: 'autochdir' causes trouble.  Keep it off until after
-loading all files.
-
-Win32: When 'autochdir' is on and 'encoding' is changed, files on the command
-line are opened again, but from the wrong directory.  Apply 'autochdir' only
-after starting up?
-
 When showing a diff between a non-existent file and an existing one, with the
 cursor in the empty buffer, the other buffer only shows the last line.  Change
 the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27)
@@ -1544,8 +1515,6 @@
 the cursor line.  It works OK after some other commands.
 
 Win32: Is it possible to have both postscript and Win32 printing?
-Does multi-byte printing with ":hardcopy" work?  Add remark in documentation
-about this.
 
 Check: Running Vim in a console and still having connect to the X server for
 copy/paste: is stopping the X server handled gracefully?  Should catch the X
@@ -1932,8 +1901,6 @@
     console, go back to Vim and click "reload" in the dialog for the changed
     file: Window moves with the cursor!
     Put focus event in input buffer and let generic Vim code handle it?
-8   Win32: When mouse is hidden and in the toolbar, moving it won't make it
-    appear. (Sami Salonen)
 8   Win32 GUI: With maximized window, ":set go-=r" doesn't use the space that
     comes available. (Poucet)  It works OK on Win 98 but doesn't work on Win
     NT 4.0.  Leaves a grey area where the scrollbar was.  ":set go+=r" also
@@ -3920,7 +3887,6 @@
 
 
 Command line completion:
-8   Completing ":r ~br" should find matching user names.
 8   Change expand_interactively into a flag that is passed as an argument.
 8   With command line completion after '%' and '#', expand current/alternate
     file name, so it can be edited.  Also with modifiers, such as "%:h".
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index ab2482c..aa674c6 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.4a.  Last change: 2013 Jul 07
+*version7.txt*  For Vim version 7.4a.  Last change: 2013 Jul 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -70,6 +70,7 @@
 
 VERSION 7.4			|version-7.4|
 New regexp engine			|new-regexp-engine|
+Better Python interface			|better-python-interface|
 Changed					|changed-7.4|
 Added					|added-7.4|
 Fixed					|fixed-7.4|
@@ -10163,6 +10164,9 @@
 This release has hundreds of bug fixes and there are a few new features.  The
 most notable new features are:
 
+- New regexp engine			|new-regexp-engine|
+- A more pythonic Python interface	|better-python-interface|
+
 
 New regexp engine					*new-regexp-engine*
 -----------------
@@ -10183,15 +10187,169 @@
 More information here: |two-engines|
 
 
+Better Python interface				*better-python-interface*
+-----------------------
+
+Added |python-bindeval| function. Unlike |python-eval| this one returns 
+|python-Dictionary|, |python-List| and |python-Function| objects for 
+dictionaries lists and functions respectively in place of their python 
+built-in equivalents (or None if we are talking about function references).
+   For simple types this function returns python built-in types and not only 
+python `str()` like |python-eval| does. On python 3 it will return `bytes()` 
+objects in place of `str()` ones avoiding possibility of UnicodeDecodeError.
+   Interface of new objects mimics standard python `dict()` and `list()`
+interfaces to some extent. Extent will be improved in the future.
+
+Added special |python-vars| objects also available for |python-buffer| and 
+|python-window|. They ease access to VimL variables from python.
+
+Now you no longer need to alter `sys.path` to import your module: special 
+hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and 
+{rtp}/pythonx directories (for python 2, python 3 and both respectively). 
+See |python-special-path|.
+
+Added possibility to work with |tabpage|s through |python-tabpage| object.
+
+Added automatic conversion of vim errors and exceptions to python 
+exceptions.
+
+Changed the behavior of |python-buffers| object: it now uses buffer numbers 
+as keys in place of the index of the buffer in the internal buffer list. 
+This should not break anything as the only way to get this index was 
+iterating over |python-buffers|.
+
+Added |:pydo| and |:py3do| commands.
+
+Added |pyeval()| and |py3eval()| functions.
+
+Now in all places which previously accepted `str()` objects in both python 
+version both `str()` and `unicode()` (python 2) or `bytes()` and `str()` 
+(python 3) are accepted.
+
+|python-window| has gained `.col` and `.row` attributes that are currently 
+the only way to get internal window positions.
+
+Added or fixed support for `dir()` in vim python objects.
+
+Old python versions (≤2.2) are no longer supported. Building with them did 
+not work anyway.
+
+
 Changed							*changed-7.4*
 -------
 
-Todo.
+Functions:
+	Added ability to use |Dictionary-function|s for |sort()|ing, via 
+	optional third argument. (Nikolay Pavlov)
 
+	Added special |expand()| argument that expands to the current line 
+	number.
+
+	Made it possible to force |char2nr()| always give unicode codepoints 
+	regardless of current encoding. (Yasuhiro Matsumoto)
+
+	Made it possible for functions generating file list generate |List| 
+	and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian 
+	Brabandt)
+
+	Functions that obtain variables from the specific window, tabpage or 
+	buffer scope dictionary can now return specified default value in 
+	place of empty string in case variable is not found. (|gettabvar()|, 
+	|getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi)
+
+Options:
+	Added ability to automatically save selection into the system 
+	clipboard when using non-GUI version of vim (autoselectplus in 
+	'clipboard'). Also added ability to use system clipboard as default 
+	register (previously only primary selection could be used). (Ivan 
+	Krasilnikov, Christian Brabandt, Bram Moolenaar)
+
+	Added special 'shiftwidth' value that makes 'sw' follow 'tabstop'. As 
+	indenting via 'indentexpr' became tricky |shiftwidth()| function was 
+	added. Also added equivalent special value to 'softtabstop' option. 
+	(Christian Brabandt, so8res)
+
+	Added ability to delete comment leader when using |J| by `j` flag in 
+	'formatoptions' (|fo-table|). (Lech Lorens)
+
+	Added ability to control indentation inside namespaces: |cino-N|. 
+	(Konstantin Lepa)
+
+	Added ability to control alignment inside `if` condition separately 
+	from alignment inside function arguments: |cino-k|. (Lech Lorens)
+
+	Added ability to show absolute number in number column when 
+	'relativenumber' option is on. (Christian Brabandt)
+
+Comands:
+	Made it possible to remove all signs from the current buffer using 
+	|:sign-unplace|. (Christian Brabandt)
+
+	Added |:language| autocompletion. (Dominique Pelle)
+
+	|:diffoff| now saves the local values of some settings and restores 
+	them in place of blindly resetting them to the defaults. (Christian 
+	Brabandt)
+
+	Added |:map-nowait| creating mapping which when having lhs that is the 
+	prefix of another mapping’s lhs will not allow vim to wait for user to 
+	type more characters to resolve ambiguity, forcing vim to take the 
+	shorter alternative: one with <nowait>.
+
+	Added more |:command-complete| completion types: |:behave| suboptions, 
+	color schemes, compilers, |:cscope| suboptions, files from 'path', 
+	|:history| suboptions, locale names, |:syntime| suboptions, user 
+	names. (Dominique Pelle)
+
+Other:
+	Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar)
+
+	Added |v:windowid| variable containing current window number in GUI 
+	vim. (Christian J. Robinson, Lech Lorens)
+
+	Lua interface now also uses userdata binded to vim structures. (Taro 
+	Muraoka, Luis Carvalho)
+
+	Added rxvt-unicode and >xterm-277 mouse support. (Yiding Jia, Hayaki 
+	Saito)
 
 Added							*added-7.4*
 -----
 
+Added support for |Lists| and |Dictionaries| in |viminfo|. (Christian 
+Brabandt)
+
+Functions:
+	Bitwise functions: |and()|, |or()|, |invert()|, |xor()|.
+
+	Added |luaeval()| function. (Taro Muraoka, Luis Carvalho)
+
+	Added |sha256()| function. (Tyru, Hirohito Higashi)
+
+	Added |wildmenumode()| function. (Christian Brabandt)
+
+	Debugging functions: |screenattr()|, |screenchar()|, |screencol()|, 
+	|screenrow()|. (Simon Ruderich, Bram Moolenaar)
+
+Autocommands:
+	Added |InsertCharPre| event launched before inserting character. 
+	(Jakson A. Aquino)
+
+	Added |CompleteDone| event launched after finishing completion in 
+	insert mode. (idea by Florian Klein)
+
+	Added |QuitPre| event launched when commands that can either close vim 
+	or only some window(s) are launched.
+
+	Added |TextChanged| and |TextChangedI| events launched when text is 
+	changed.
+
+Commands:
+	|:syntime| command useful for debugging.
+
+Options:
+	Made it possible to ignore case when completing: 'wildignorecase'.
+
 Various syntax, indent and other plugins were added.
 
 
@@ -11730,7 +11888,7 @@
 Files:	    src/fileio.c
 
 Patch 7.3.261
-Problem:    G++ error message errornously recognized as error.
+Problem:    G++ error message erroneously recognized as error.
 Solution:   Ignore "In file included from" line also when it ends in a colon.
 	    (Fernando Castillo)
 Files:	    src/option.h
@@ -13682,7 +13840,7 @@
 Patch 7.3.604
 Problem:    inputdialog() doesn't use the cancel argument in the console.
 	    (David Fishburn)
-Solution:   Use the third argument. (Christian Brabant)
+Solution:   Use the third argument. (Christian Brabandt)
 Files:	    src/eval.c
 
 Patch 7.3.605 (after 7.3.577)
@@ -15523,7 +15681,7 @@
 Problem:    Autocommands are triggered by setwinvar() et al. Missing BufEnter
 	    on :tabclose. Duplicate WinEnter on :tabclose. Wrong order of
 	    events for :tablose and :tabnew.
-Solution:   Fix these autocommand events. (Zyx)
+Solution:   Fix these autocommand events. (ZyX)
 Files:	    runtime/doc/eval.txt, src/buffer.c, src/eval.c, src/ex_cmds2.c,
 	    src/fileio.c, src/proto/window.pro, src/testdir/test62.in,
 	    src/testdir/test62.ok, src/window.c
diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim
index eadabf8..c6e1e9d 100644
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	man
 " Maintainer:	SungHyun Nam <goweol@gmail.com>
-" Last Change:	2012 Mar 6
+" Last Change:	2013 Jul 17
 
 " To make the ":Man" command available before editing a manual page, source
 " this script from your startup vimrc file.
@@ -151,7 +151,7 @@
   " Avoid warning for editing the dummy file twice
   setl buftype=nofile noswapfile
 
-  setl ma
+  setl ma nonu nornu nofen
   silent exec "norm 1GdG"
   let $MANWIDTH = winwidth(0)
   silent exec "r!/usr/bin/man ".s:GetCmdArg(sect, page)." | col -b"
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index b62a567..4ce3c23 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -2,7 +2,7 @@
 " Language:		Python
 " Maintainer:		Bram Moolenaar <Bram@vim.org>
 " Original Author:	David Bustos <bustos@caltech.edu>
-" Last Change:		2013 Jun 21
+" Last Change:		2013 Jul 9
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -61,7 +61,7 @@
   let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
 	  \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
+	  \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
   if parlnum > 0
     let plindent = indent(parlnum)
     let plnumstart = parlnum
@@ -80,14 +80,14 @@
   let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
 	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
+	  \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
   if p > 0
     if p == plnum
       " When the start is inside parenthesis, only indent one 'shiftwidth'.
       let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
 	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
-	  \ . " =~ '\\(Comment\\|String\\)$'")
+	  \ . " =~ '\\(Comment\\|Todo\\|String\\)$'")
       if pp > 0
 	return indent(plnum) + (exists("g:pyindent_nested_paren") ? eval(g:pyindent_nested_paren) : shiftwidth())
       endif
@@ -108,12 +108,12 @@
     " If the last character in the line is a comment, do a binary search for
     " the start of the comment.  synID() is slow, a linear search would take
     " too long on a long line.
-    if synIDattr(synID(plnum, pline_len, 1), "name") =~ "Comment$"
+    if synIDattr(synID(plnum, pline_len, 1), "name") =~ "\\(Comment\\|Todo\\)$"
       let min = 1
       let max = pline_len
       while min < max
 	let col = (min + max) / 2
-	if synIDattr(synID(plnum, col, 1), "name") =~ "Comment$"
+	if synIDattr(synID(plnum, col, 1), "name") =~ "\\(Comment\\|Todo\\)$"
 	  let max = col
 	else
 	  let min = col + 1
