Subject: 24.3.1; eval-buffer ignores lexical-binding in file local variables list

From: Tim Perkins <[email-masked]>
Date: Sun, 7 Jun 2015 13:26:00 -0400

Doing a M-x eval-buffer on a file containing this:

(funcall
 (let ((a 0))
   (lambda ()
     a)))

;; Local Variables:
;; lexical-binding: t
;; End:

Will result in an error:

funcall: Symbol's value as variable is void: a

But a file containing this:

;; -*- lexical-binding: t -*-

(funcall
 (let ((a 0))
   (lambda ()
     a)))

Will work as expected. No problem.

I was expecting these these to be equivalent. I checked the manual,
"Specifying File Variables" and that seems to say that using either the
first line or variable list should have the same effect.

Seems related to #15070 and #20139.

(I'm not sure about the exact version of Emacs. It's probably old, I'm on
Ubuntu 14.04 at the moment. Dpkg reports 24.3+1-2ubuntu1.)

-- Tim