updated for version 7.4a.041
Problem:    When using ":new ++ff=unix" and "dos" is first in 'fileformats'
            then 'ff' is set to "dos" instead of "unix". (Ingo Karkat)
Solution:   Create set_file_options() and invoke it from do_ecmd().
diff --git a/src/testdir/test91.in b/src/testdir/test91.in
index 0143c18..e900a52 100644
--- a/src/testdir/test91.in
+++ b/src/testdir/test91.in
@@ -3,6 +3,7 @@
 
 STARTTEST
 :so small.vim
+:so mbyte.vim
 :"
 :" Test for getbufvar()
 :" Use strings to test for memory leaks.
@@ -22,6 +23,17 @@
 :$put =string(getbufvar(1, '&autoindent'))
 :$put =string(getbufvar(1, '&autoindent', 1))
 :"
+:" Open new window with forced option values
+:set fileformats=unix,dos
+:new ++ff=dos ++bin ++enc=iso-8859-2
+:let otherff = getbufvar(bufnr('%'), '&fileformat')
+:let otherbin = getbufvar(bufnr('%'), '&bin')
+:let otherfenc = getbufvar(bufnr('%'), '&fenc')
+:close
+:$put =otherff
+:$put =string(otherbin)
+:$put =otherfenc
+:unlet otherff otherbin otherfenc
 :" test for getwinvar()
 :let w:var_str = "Dance"
 :let def_str = "Chance"
diff --git a/src/testdir/test91.ok b/src/testdir/test91.ok
index 6227ec7..22e1572 100644
--- a/src/testdir/test91.ok
+++ b/src/testdir/test91.ok
@@ -10,6 +10,9 @@
 '5678'
 0
 0
+dos
+1
+iso-8859-2
 'Dance'
 'Dance'
 {'var_str': 'Dance'}