Bug#438560: Should -N/-C override 'compatible' settings in vimrc files?

James Vega jamessan at debian.org
Tue Aug 12 23:49:04 UTC 2008

On Thu, Feb 07, 2008 at 10:20:27PM +0100, Bram Moolenaar wrote:
> James Vega wrote:
> > On Wed, Feb 06, 2008 at 09:43:33PM +0100, Bram Moolenaar wrote:
> > > The main reason to do it this way is that when a startup script contains
> > > "set nocp" the following lines often depend on this.  If one would start
> > > "vim -C" and the -C would cause the "set nocp" line to be ignored, the
> > > rest of the script would be misinterpreted.  Especially for ":map"
> > > commands with things like "<C-A>".  With 'nocompatible' this means
> > > CTRL-A, with 'compatible' this is 5 separate characters.
> > 
> > The initial bug was specifically that "vim -C" with "set nocp" in a
> > startup script resulted in a Vim session that didn't have 'compatible'
> > set as per the man page.  I notice that the help for -C indicates the
> > ":set nocompatible" command will override -C so maybe it would be
> > sufficient to add this to the man page as well.  A similar note should
> > be added to the help/man page for -N.
> > 
> > This would be a simpler solution, although I still think that if the
> > user is specifically requesting (no)compatible mode at the command line,
> > they should be able to deal with side-effects it may have on startup
> > scripts.
> Well, a possible solution would be to do "set compatible" after all the
> startup stuff is done.  I suppose that would work as expected.

In thinking about this patch again, my original patch needs some more
work (which I've attached).  The changes are as follows:

1) The original behavior of immediately calling change_compatible() when
   -N/-C are parsed is restored.  This allows the startup vimrc files to
   have conditional behavior based on which compatibility mode Vim will
   end up in.
2) change_compatible() is again called immediately after the startup
   vimrc files are sourced (only if -N/-C were given on the
   command-line) so that the proper compatibility mode is set while
   loading plugins.
3) If the gui is started, change_compatible() is called one more time
   (only if -N/-C were given on the command-line) immediately after the
   gvimrc files are sourced to ensure that any changes they make to 'cp'
   are overridden to follow the command-line options.

GPG Key: 1024D/61326D40 2003-09-02 James Vega <jamessan at debian.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cp-after-init.diff
Type: text/x-diff
Size: 1915 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/pkg-vim-maintainers/attachments/20080812/f1ea37f2/attachment.diff 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-vim-maintainers/attachments/20080812/f1ea37f2/attachment.pgp 

More information about the pkg-vim-maintainers mailing list