]> granicus.if.org Git - vim/commitdiff
Disallow setting 'enc' in a modeline. (Patrick Texier)
authorBram Moolenaar <Bram@vim.org>
Wed, 14 Jul 2010 19:12:05 +0000 (21:12 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 14 Jul 2010 19:12:05 +0000 (21:12 +0200)
runtime/doc/options.txt
runtime/doc/todo.txt
src/option.c

index f674154f61dc28bac7c941e920eae631eba9469e..b48030f1281dc065b759c9f98acb188c4cd13c83 100644 (file)
@@ -2436,6 +2436,9 @@ A jump table for the options with a short description can be found at |Q_op|.
        It should normally be kept at its default value, or set when Vim
        starts up.  See |multibyte|.  To reload the menus see |:menutrans|.
 
+       This option cannot be set from a |modeline|.  It would most likely
+       corrupt the text.
+
        NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to
        "utf-8".  Although care has been taken to allow different values of
        'encoding', "utf-8" is the natural choice for the environment and
@@ -2619,6 +2622,7 @@ A jump table for the options with a short description can be found at |Q_op|.
                        feature}
                        {not in Vi}
        Sets the character encoding for the file of this buffer.
+
        When 'fileencoding' is different from 'encoding', conversion will be
        done when writing the file.  For reading see below.
        When 'fileencoding' is empty, the same value as 'encoding' will be
@@ -2631,24 +2635,32 @@ A jump table for the options with a short description can be found at |Q_op|.
                is most likely done in a way that the reverse conversion
                results in the same text.  When 'encoding' is not "utf-8" some
                characters may be lost!
+
        See 'encoding' for the possible values.  Additionally, values may be
        specified that can be handled by the converter, see
        |mbyte-conversion|.
+
        When reading a file 'fileencoding' will be set from 'fileencodings'.
        To read a file in a certain encoding it won't work by setting
        'fileencoding', use the |++enc| argument.  One exception: when
        'fileencodings' is empty the value of 'fileencoding' is used.
        For a new file the global value of 'fileencoding' is used.
+
        Prepending "8bit-" and "2byte-" has no meaning here, they are ignored.
        When the option is set, the value is converted to lowercase.  Thus
        you can set it with uppercase values too.  '_' characters are
        replaced with '-'.  If a name is recognized from the list for
        'encoding', it is replaced by the standard name.  For example
        "ISO8859-2" becomes "iso-8859-2".
+
        When this option is set, after starting to edit a file, the 'modified'
        option is set, because the file would be different when written.
-       If you do this in a modeline, you might want to set 'nomodified' to
-       avoid this.
+
+       Keep in mind that changing 'fenc' from a modeline happens
+       AFTER the text has been read, thus it applies to when the file will be
+       written.  If you do set 'fenc' in a modeline, you might want to set
+       'nomodified' to avoid not being able to ":q".
+
        This option can not be changed when 'modifiable' is off.
 
                                                        *'fe'*
index 1797972dfa296ac7ff348b51e3113056e4aeed0e..c4cda4a218a386cef0dd56e53e834532e9cf66ff 100644 (file)
@@ -560,11 +560,6 @@ character typed. (Tyler Spivey, 2008 Sep 3)  Only redraw cmdline for
 'arabicshape' when there is a character on the command line for which
 (ARABIC_CHAR(u8c)) is TRUE.
 
-Replace ccomplete.vim by cppcomplete.vim from www.vim.org?  script 1520
-by Vissale Neang.  (Martin Stubenschrott)
-Asked Vissale to make the scripts more friendly for the Vim distribution.
-New version received 2008 Jan 6.
-
 Cheng Fang made javacomplete. (2007 Aug 11)
 Asked about latest version: 0.77.1 is on www.vim.org.
 
@@ -1102,6 +1097,10 @@ Patches to possibly include:
   feature.  (Matt Wozniski, 2009 Apr 15)
   Patch go make gui highlight settings work in Vim without +gui feature.
   (Matt Wozniski, 2009 Mar 27)
+- Replace ccomplete.vim by cppcomplete.vim from www.vim.org?  script 1520 by
+  Vissale Neang.  (Martin Stubenschrott)
+  Asked Vissale to make the scripts more friendly for the Vim distribution.
+  New version received 2008 Jan 6.
 - Patch for supporting #rrggbb in color terminals.  (Matt Wozniski)
 6   In the quickfix window statusline add the command used to get the list of
     errors, e.g. ":make foo", ":grep something *.c".
@@ -1112,8 +1111,6 @@ Patches to possibly include:
     Fix for invalid memory access. (Lech Lorens, 2009 Apr 17)
 - Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11)
   Needs a few tests.
-- Disable setting 'encoding' from a modeline?  It usually causes problems,
-  can't do any good.  (Patch from Patrick Texier, 2008 Dec 9)
 - Redraw problem when appending digraph causes line to wrap. (James Vega, 2007
   Sep 18)  Patch by Ian Kelling, 2008 Aug 8.
 - Patch for colorscheme submenu. (Juergen Kraemer, 2008 Aug 20)
index 2dfb6d967ce48e3bd40a54e9661b3a3ef190afda..fd763afbfd5e9edb77b79763db7f02f90be20b48 100644 (file)
@@ -451,6 +451,7 @@ struct vimoption
 #define P_INSECURE     0x400000L/* option was set from a modeline */
 #define P_PRI_MKRC     0x800000L/* priority for :mkvimrc (setting option has
                                   side effects) */
+#define P_NO_ML       0x1000000L/* not allowed in modeline */
 
 #define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
 
@@ -1015,7 +1016,7 @@ static struct vimoption
     {"edcompatible","ed",   P_BOOL|P_VI_DEF,
                            (char_u *)&p_ed, PV_NONE,
                            {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
-    {"encoding",    "enc",  P_STRING|P_VI_DEF|P_RCLR,
+    {"encoding",    "enc",  P_STRING|P_VI_DEF|P_RCLR|P_NO_ML,
 #ifdef FEAT_MBYTE
                            (char_u *)&p_enc, PV_NONE,
                            {(char_u *)ENC_DFLT, (char_u *)0L}
@@ -4236,7 +4237,7 @@ do_set(arg, opt_flags)
            /* Disallow changing some options from modelines. */
            if (opt_flags & OPT_MODELINE)
            {
-               if (flags & P_SECURE)
+               if (flags & (P_SECURE | P_NO_ML))
                {
                    errmsg = (char_u *)_("E520: Not allowed in a modeline");
                    goto skip;