unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* How does Emacs find the buffer for a file?
@ 2002-06-15 18:08 Kai Großjohann
  2002-06-16  5:50 ` Eli Zaretskii
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Kai Großjohann @ 2002-06-15 18:08 UTC (permalink / raw)


When you do C-x C-f /some/file RET, then Emacs runs
insert-file-contents and puts the output in some buffer.  How does
Emacs determine the buffer from the filename?

Here's some background on why I'm asking this strange question:

There is a bug in Tramp, and I don't know how to start tracking it
down.  Tramp allows you to edit remote files.  If you say C-x C-f
/foo RET (editing the local file /foo), and then say C-x C-f
/[user@host]/foo RET (editing a remote file, also named /foo, via
Tramp), then the remote file contents are inserted into the buffer
containing the local file /foo.

Evaling (buffer-file-name) and buffer-file-name in the remote file
returns "/[sm/user@host]/foo".  (The "sm/" part is an optional part
of the Tramp filename syntax, and Tramp inserts a default value there
if it is not given by the user.)

kai
-- 
~/.signature is: umop 3p!sdn    (Frank Nobis)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How does Emacs find the buffer for a file?
  2002-06-15 18:08 How does Emacs find the buffer for a file? Kai Großjohann
@ 2002-06-16  5:50 ` Eli Zaretskii
  2002-06-16 13:50   ` Andreas Schwab
  2002-06-16 23:28 ` Richard Stallman
  2002-06-18 16:23 ` Kai Großjohann
  2 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2002-06-16  5:50 UTC (permalink / raw)
  Cc: emacs-devel


On Sat, 15 Jun 2002 Kai.Grossjohann@CS.Uni-Dortmund.DE wrote:

> When you do C-x C-f /some/file RET, then Emacs runs
> insert-file-contents and puts the output in some buffer.  How does
> Emacs determine the buffer from the filename?

See buffer.c:Fget_file_buffer.  It is called by find-file-noselect, a 
subroutine of find-file.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How does Emacs find the buffer for a file?
  2002-06-16  5:50 ` Eli Zaretskii
@ 2002-06-16 13:50   ` Andreas Schwab
  0 siblings, 0 replies; 5+ messages in thread
From: Andreas Schwab @ 2002-06-16 13:50 UTC (permalink / raw)
  Cc: emacs-devel

Eli Zaretskii <eliz@is.elta.co.il> writes:

|> On Sat, 15 Jun 2002 Kai.Grossjohann@CS.Uni-Dortmund.DE wrote:
|> 
|> > When you do C-x C-f /some/file RET, then Emacs runs
|> > insert-file-contents and puts the output in some buffer.  How does
|> > Emacs determine the buffer from the filename?
|> 
|> See buffer.c:Fget_file_buffer.  It is called by find-file-noselect, a 
|> subroutine of find-file.

See also create-file-buffer, also called by find-file-noselect, for
creating a new, unique buffer.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How does Emacs find the buffer for a file?
  2002-06-15 18:08 How does Emacs find the buffer for a file? Kai Großjohann
  2002-06-16  5:50 ` Eli Zaretskii
@ 2002-06-16 23:28 ` Richard Stallman
  2002-06-18 16:23 ` Kai Großjohann
  2 siblings, 0 replies; 5+ messages in thread
From: Richard Stallman @ 2002-06-16 23:28 UTC (permalink / raw)
  Cc: emacs-devel

    When you do C-x C-f /some/file RET, then Emacs runs
    insert-file-contents and puts the output in some buffer.  How does
    Emacs determine the buffer from the filename?

Actually it creates a buffer and then runs insert-file-contents.  So
this question does not really make sense.  Emacs does not determine a
buffer, it uses the buffer it just created.

The code is in find-file-noselect and find-file-noselect-1.

    There is a bug in Tramp, and I don't know how to start tracking it
    down.  Tramp allows you to edit remote files.  If you say C-x C-f
    /foo RET (editing the local file /foo), and then say C-x C-f
    /[user@host]/foo RET (editing a remote file, also named /foo, via
    Tramp), then the remote file contents are inserted into the buffer
    containing the local file /foo.

Assuming Tramp uses the file-name-handler-alist mechanism, the only
operation that it will handle is insert-file-contents.  That handler
should insert into the current buffer.  It should never try to find
the buffer to use.

Basically, you need to make sure things are working with Tramp more or
less the same way they are working for local files, aside from
fetching the data of course.  A problem like this would tend to come
from a difference where the two paths ought to work the same way.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: How does Emacs find the buffer for a file?
  2002-06-15 18:08 How does Emacs find the buffer for a file? Kai Großjohann
  2002-06-16  5:50 ` Eli Zaretskii
  2002-06-16 23:28 ` Richard Stallman
@ 2002-06-18 16:23 ` Kai Großjohann
  2 siblings, 0 replies; 5+ messages in thread
From: Kai Großjohann @ 2002-06-18 16:23 UTC (permalink / raw)


Kai.Grossjohann@cs.uni-dortmund.de (Kai Großjohann) writes:

> When you do C-x C-f /some/file RET, then Emacs runs
> insert-file-contents and puts the output in some buffer.  How does
> Emacs determine the buffer from the filename?
>
> Here's some background on why I'm asking this strange question:
>
> There is a bug in Tramp,

Ah, the bug has gone in the current version of Tramp (though I don't
know why).

Thanks for your suggestions.

kai
-- 
People mountain, people sea, today no see, tomorrow see.  (from Chinese)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2002-06-18 16:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-06-15 18:08 How does Emacs find the buffer for a file? Kai Großjohann
2002-06-16  5:50 ` Eli Zaretskii
2002-06-16 13:50   ` Andreas Schwab
2002-06-16 23:28 ` Richard Stallman
2002-06-18 16:23 ` Kai Großjohann

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).