unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20709: 25.0.50; anonymous functions in `auto-mode-alist'
@ 2015-06-01 15:58 Michael Heerdegen
  2015-06-02 15:42 ` Stefan Monnier
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Michael Heerdegen @ 2015-06-01 15:58 UTC (permalink / raw)
  To: 20709


Hello,

the doc of `auto-mode-alist' doesn't say that the mode functions
specified must be named functions.  That's good IMO, since using
anonymous functions in the alist e.g. while let-binding it can sometimes
be useful.


But this is buggy.  Try this:

--8<---------------cut here---------------start------------->8---
;; -*- lexical-binding: t -*-

(setq auto-mode-alist
      `((".*" . ,(lambda ()
                   (emacs-lisp-mode)
                   'and-do-something-in-addition))))
--8<---------------cut here---------------end--------------->8---

Save it in a file, and load it (uncompiled) so that

  auto-mode-alist
   => ((".*" closure (t) nil (emacs-lisp-mode) (quote and-do-something-in-addition)))

Now open any file.  You get:

File mode specification error: (void-function closure)

The problem is these lines in the defun of `set-auto-mode' starting from
line 2871 in files.el:

--8<---------------cut here---------------start------------->8---
(if (and mode
         (consp mode)
         (cadr mode))
    (setq mode (car mode)
         ...
--8<---------------cut here---------------end--------------->8---

i.e., the value in the alist pair is not tested whether it is a
function, and the (REGEXP FUNCTION NON-NIL) case is assumed, which is
wrong.


Thanks,

Michael.




In GNU Emacs 25.0.50.4 (x86_64-unknown-linux-gnu, GTK+ Version 3.14.5)
 of 2015-05-30 on drachen
Windowing system distributor `The X.Org Foundation', version 11.0.11701000
System Description:	Debian GNU/Linux testing (stretch)






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

end of thread, other threads:[~2022-01-24 14:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-01 15:58 bug#20709: 25.0.50; anonymous functions in `auto-mode-alist' Michael Heerdegen
2015-06-02 15:42 ` Stefan Monnier
2015-06-02 16:18   ` Michael Heerdegen
2015-06-02 18:13     ` Stefan Monnier
2019-09-29 23:32 ` Stefan Kangas
2019-09-30  4:39   ` Michael Heerdegen
2019-11-07  0:24     ` Stefan Kangas
2022-01-24 14:05 ` Lars Ingebrigtsen

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).