Hi,

I imagine this is pretty obscure but I have hit it a couple of times this last week. If your fileformats string initial entry is different to the fileformat default value then doing :bwipeout on the last buffer results in the new buffer using the default fileformat and not the first format from fileformats. Follow? Try the following on Windows:

> vim -u NONE -U NONE --cmd 'set ffs=unix' -c 'set ff? | bw | set ff?'

Prefer Unix?  This shows the same effect:

$ vim -u NONE -U NONE --cmd 'set ffs=dos' -c 'set ff? | bw | set ff?'

You should see the fileformat change across the bwipeout.

Attached is a patch that sets the new buffer's fileformat from an existing fileformats in buf_copy_options() or the global default fileformat if ffs is not set. It Works For Me(TM) but I don't know if the side effects in set_fileformat() cause problems when called from buf_copy_options().

HTH - TTFN

Mike
--
I don't worry about tomorrow's problems - I'm not even acquainted with yesterdays.

--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/option.c b/src/option.c
--- a/src/option.c
+++ b/src/option.c
@@ -10735,7 +10735,15 @@ buf_copy_options(buf_T *buf, int flags)
 #ifdef FEAT_MBYTE
 		buf->b_p_fenc = vim_strsave(p_fenc);
 #endif
-		buf->b_p_ff = vim_strsave(p_ff);
+	    {
+		int idx_ffs = findoption((char_u *)"ffs");
+
+		/* Apply the first entry of 'fileformats' to the buffer. */
+		if (idx_ffs >= 0 && (options[idx_ffs].flags & P_WAS_SET))
+		    set_fileformat(default_fileformat(), OPT_LOCAL);
+		else
+		    buf->b_p_ff = vim_strsave(p_ff);
+	    }
 #if defined(FEAT_QUICKFIX)
 		buf->b_p_bh = empty_option;
 		buf->b_p_bt = empty_option;

Raspunde prin e-mail lui