GNU Emacs Lisp Reference Manual
This section describes the functions normally used to visit files. For historical reasons, these functions have names starting with `find-' rather than `visit-'. See Buffer File Name, for functions and variables that access the visited file name of a buffer or that find an existing buffer by its visited file name.
In a Lisp program, if you want to look at the contents of a file but not alter it, the fastest way is to use insert-file-contents in a temporary buffer. Visiting the file is not necessary and takes longer. See Reading from Files.
The body of the find-file function is very simple and looks like this:
(switch-to-buffer (find-file-noselect filename))
(See switch-to-buffer in Displaying Buffers.)
When find-file is called interactively, it prompts for filename in the minibuffer.
When find-file-noselect uses an existing buffer, it first verifies that the file has not changed since it was last visited or saved in that buffer. If the file has changed, then this function asks the user whether to reread the changed file. If the user says `yes', any changes previously made in the buffer are lost.
If find-file-noselect needs to create a buffer, and there is no file named filename, it displays the message `New file' in the echo area, and leaves the buffer empty.
The find-file-noselect function calls after-find-file after reading the file (see Subroutines of Visiting). That function sets the buffer major mode, parses local variables, warns the user if there exists an auto-save file more recent than the file just visited, and finishes by running the functions in find-file-hooks.
The find-file-noselect function returns the buffer that is visiting the file filename.
(find-file-noselect "/etc/fstab")
=> #
When this command is called interactively, it prompts for filename.
find-file, but it marks the buffer as read-only. See Read Only Buffers, for related functions and variables. When this command is called interactively, it prompts for filename.
view-mode-hook. See Hooks. When view-file is called interactively, it prompts for filename.
This variable works just like a normal hook, but we think that renaming it would not be advisable.
find-file or find-file-noselect is passed a nonexistent file name. find-file-noselect calls these functions as soon as it detects a nonexistent file. It calls them in the order of the list, until one of them returns non-nil. buffer-file-name is already set up. This is not a normal hook because the values of the functions are used and they may not all be called.