bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#9139: 24.0.50; Inappropriate warning: "File no longer exists!"


From: Eli Zaretskii
Subject: bug#9139: 24.0.50; Inappropriate warning: "File no longer exists!"
Date: Sun, 11 Sep 2011 02:00:10 -0400

> From: Lars Magne Ingebrigtsen <larsi@gnus.org>
> Date: Sun, 11 Sep 2011 04:52:29 +0200
> Cc: 9139@debbugs.gnu.org
> 
> > emacs -Q
> > C-x f ~/foo.txt
> > C-x b bar
> > C-x f ~/foo.txt
> >
> >   => File no longer exists!
> 
> Yes, it shouldn't say anything in this instance.
> 
> But how?  It's this code in files.el:
> 
>                 (cond ((not (file-exists-p filename))
>                        (setq nonexistent t)
>                        (message "File %s no longer exists!" filename))

The magic is in the previous line.  The code does this:

              (or nowarn
                  (verify-visited-file-modtime buf)
                  (cond ((not (file-exists-p filename))
                         (setq nonexistent t)
                         (message "File %s no longer exists!" filename))

The problem was that verify-visited-file-modtime would return nil in
this case, where it returned t in Emacs 23.  And that's because the
internal details of verify-visited-file-modtime changed, but
insert-file-contents didn't have the corresponding change.  It does
now (revno 105721).

> (visited-file-modtime)
> => (-1 65535)
> 
> in foo.txt.  But is that a bug?

No.  -1 as the modtime exactly means that the file does not exist.  So
at most we need to update the doc string, assuming that we want to
reveal such implementation details.

Btw, WIBNI visited-file-modtime returned (-1 -1) in this case, instead
of forcing us to invoke the unsigned-to-signed converter in our heads?

> So I think that perhaps is should return 0?

Zero is for existing files that were not modified since visited.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]