26.1.2 Subroutines of Visiting

The find-file-noselect function uses two important subroutines which are sometimes useful in user Lisp code: create-file-buffer and after-find-file. This section explains how to use them.

Function: create-file-buffer filename

This function creates a suitably named buffer for visiting filename, and returns it. It uses filename (sans directory) as the name if that name is free; otherwise, it appends a string such as ‘<2>’ to get an unused name. See also Creating Buffers. Note that the uniquify library affects the result of this function. See Uniquify in The GNU Emacs Manual.

Please note: create-file-buffer does not associate the new buffer with a file and does not select the buffer. It also does not use the default major mode.

(create-file-buffer "foo")
     ⇒ #<buffer foo>
(create-file-buffer "foo")
     ⇒ #<buffer foo<2>>
(create-file-buffer "foo")
     ⇒ #<buffer foo<3>>

This function is used by find-file-noselect. It uses generate-new-buffer (see Creating Buffers).

Function: after-find-file &optional error warn noauto after-find-file-from-revert-buffer nomodes

This function sets the buffer major mode, and parses local variables (see How Emacs Chooses a Major Mode). It is called by find-file-noselect and by the default revert function (see Reverting).

If reading the file got an error because the file does not exist, but its directory does exist, the caller should pass a non-nil value for error. In that case, after-find-file issues a warning: ‘(New file)’. For more serious errors, the caller should usually not call after-find-file.

If warn is non-nil, then this function issues a warning if an auto-save file exists and is more recent than the visited file.

If noauto is non-nil, that says not to enable or disable Auto-Save mode. The mode remains enabled if it was enabled before.

If after-find-file-from-revert-buffer is non-nil, that means this call was from revert-buffer. This has no direct effect, but some mode functions and hook functions check the value of this variable.

If nomodes is non-nil, that means don’t alter the buffer’s major mode, don’t process local variables specifications in the file, and don’t run find-file-hook. This feature is used by revert-buffer in some cases.

The last thing after-find-file does is call all the functions in the list find-file-hook.