updated for version 7.4.150
Problem:    :keeppatterns is not respected for :s.
Solution:   Check the keeppatterns flag. (Yasuhiro Matsumoto)
diff --git a/src/search.c b/src/search.c
index d97dcf6..e498576 100644
--- a/src/search.c
+++ b/src/search.c
@@ -201,7 +201,7 @@
      * Save the currently used pattern in the appropriate place,
      * unless the pattern should not be remembered.
      */
-    if (!(options & SEARCH_KEEP))
+    if (!(options & SEARCH_KEEP) && !cmdmod.keeppatterns)
     {
 	/* search or global command */
 	if (pat_save == RE_SEARCH || pat_save == RE_BOTH)
diff --git a/src/testdir/test14.in b/src/testdir/test14.in
index ebcb58c..e6816a3 100644
--- a/src/testdir/test14.in
+++ b/src/testdir/test14.in
@@ -47,6 +47,15 @@
 /two
 :call search('.', 'c')
 :call append(line('$'), getline('.')[col('.') - 1:])
+:"
+/^substitute
+:s/foo/bar/
+:$put =@/
+/^substitute
+:keeppatterns s/asdf/xyz/
+:$put =@/
+/^substitute
+Y:$put =@0
 :/^search()/,$w >>test.out
 :qa!
 ENDTEST
@@ -81,6 +90,7 @@
 
 foobar
 
+substitute foo asdf
 
 one two
 search()
diff --git a/src/testdir/test14.ok b/src/testdir/test14.ok
index 1fd8916..ae3da29 100644
--- a/src/testdir/test14.ok
+++ b/src/testdir/test14.ok
@@ -20,3 +20,6 @@
 1
 1
 two
+foo
+^substitute
+substitute bar xyz
diff --git a/src/version.c b/src/version.c
index 875a8fa..6c2c60f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    150,
+/**/
     149,
 /**/
     148,