On 2/28/07, A.J.Mechelynck <[EMAIL PROTECTED]> wrote:
Yakov Lerner wrote:
> On 2/27/07, Michael Schaap <[EMAIL PROTECTED]> wrote:
>> Hi,
>>
>> When editing a read-only file, ":confirm w" only works the first time
>> you use it in a session. The second time you try to use it, you simply
>> get an error message, as if you didn't use ":confirm".
>> The same problem occurs when using ":set confirm".
>>
>> To recreate:
>>
>> $ echo Hello > hello.txt
>> $ chmod 400 hello.txt
>> $ vim -u NONE hello.txt
>> :set nocompatible " or you won't be able to overwrite at all
>> A, World<Esc>
>> :confirm w
>> 'readonly' option is set for "qq".
>> Do you wish to write anyway?
>> (Y)es, [N]o: y
>> A!<Esc>
>> :confirm w
>> E505: "qq" is read-only (add ! to override)
>>
>> This is using 7.0.203, but it has been happening for quite a while. An
>> old 6.3 does the same thing.
>
> You see this behaviour because the first :confirm w(or ':w!',
> for this matter) resets the 'ro' option. This is the reason the 2nd
> ':confirm w' doesn't ask anything. You can see yourself if you do
> 'set ro?' before and after first ':confirm w'.
>    :set ro?
> readonly
>    :confirm w
> ... (Y)es, [N]o: y
>    :set ro?
> noreadonly
>
> As you see, the 'ro' option has been reset. This is
> the reason the following ':confirm w' does not ask for
> the confirmation.
>
> AFAIK, vim always behaved this way -- that is,
> the ':w!' would reset the ro flag.
>
> But notice that inserting text into 'ro' file does not reset the 'ro'
> flag by itself.
> It warns (modifying the readonly file). but the 'ro' flag remains. After
> :w!, 'ro' flag is reset.
>
> Yakov
>

Why then does the second ":confirm w" give 'E505: "qq" is read-only (add ! to
override)' ?

Because file-on-disk has read-only permissions.
But the 'set readonly?' option is off.

Yakov

Reply via email to