Subject: bug#52569: 29.0.50; Wishlist: There should be a way for packages to handle files without reading them in first

From: Lars Ingebrigtsen <[email-masked]>
Date: Fri, 17 Dec 2021 09:40:30 +0100

This would be useful for large files like .sqlite and images.

The mechanism proposed on emacs-devel is to do something similar to
find-directory-functions in find-file-noselect:

(defun find-file-noselect (filename &optional nowarn rawfile wildcards)
[...]
  (if (file-directory-p filename)
      (or (and find-file-run-dired
	       (run-hook-with-args-until-success
		'find-directory-functions
		(if find-file-visit-truename
		    (abbreviate-file-name (file-truename filename))
		  filename)))

But for files.

So we could have a find-file-function-alist that maps from file names
(using the same syntax as auto-mode-alist) to functions that handle the
files.

This function would be called with the file name and would be
responsible for returning a buffer that "displays" the file in some
sense.  For .sqlite, it would basically call `sqlite-mode-open-file',
and image-mode should have a similar function.

There's some details that aren't clear.  Should this new buffer be
visiting the file?  That sounds dangerous, because saving the buffer
contents to the file would destroy the file.  But that could be handled
by...  write-file-functions?

Should there be another general mode these things should inherit from,
like special-mode, but taking care of things like write-file-functions
(i.e., disallow saving if the mode hasn't implemented a function for
that)?  If so, what should it be called?  `really-special-mode' is
probably too special.  Uhm...  Something that expresses "the displayed
contents of this mode doesn't match up the saved contents much"...
`unloaded-file-mode'?  Hm...  any ideas?

In GNU Emacs 29.0.50 (build 69, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0)
 of 2021-12-16 built on xo
Repository revision: e7a6d6a546e7e56e5a721aac86a19473e4303111
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Debian GNU/Linux bookworm/sid

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no