syl20bnr / spacemacs

A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!
http://spacemacs.org
GNU General Public License v3.0
23.66k stars 4.89k forks source link

On startup, warning message: "Local variables list is not properly terminated." #15526

Closed prehensilecode closed 2 years ago

prehensilecode commented 2 years ago

Description :octocat:

On startup, warning message: "Local variables list is not properly terminated."

Starting Emacs with --debug-init shows:

Loading /Users/myname/.emacs.d/.cache/last-emacs-version...done
Local variables list is not properly terminated

The file last-emacs-version has no line ending. If I add one, then save it, and restart Emacs, the warning message goes away.

Reproduction guide :beetle:

Observed behaviour: :eyes: :broken_heart: Warning message appears: "Local variables list is not properly terminated"

Expected behaviour: :heart: :smile: No warning message.

System Info :computer:

Backtrace :paw_prints:

n/a
pataquets commented 2 years ago

Getting this, also:

Local variables list is not properly terminated
Loading /home/amontero/.spacemacs.d/init.el (source)...done

The lines above are the first two lines on my messages buffer. Normal boot, without --debug-init. Emacs 28.1 (kelleyk's PPA for Ubuntu Bionic without native compilation). Spacemacs develop branch, up to date as of today, same commit as OP.

pataquets commented 2 years ago

I've just also found that the mssage does not appear after temporarily rolling back to 27.1.

prehensilecode commented 2 years ago

UPDATE: Absence or presence of a linefeed at end of the file .emacs.d/cache/last-emacs-version does not do anything, contrary to initial report. In both cases, the warning message appears.

stradicat commented 2 years ago

This happens on the 28.1 macos build from Emacs for MacOS as well, either installed from the website or via brew install emacs (same origin).

sunlin7 commented 2 years ago

The message "Local variables list is not properly terminated" in the *Message* buffer is just a message, no harmful.

You can consider it as a message, or, it's a minor issue from upstream (Emacs issue).

How it happend: when the emacs open a file, it will try to search the local variable settings in the file, typcial format:

#!/bin/sh
print("hello")
# Local Variables:
# mode: shell
# End:

The file local variables begin with "Local Variables:", end with "End:", it's processed in the elisp function hack-local-variables--find-variables. If there has "Local Variables:" but no "End:' in a file, the hack-local-variables--find-variables will emit the messsage. Example: openning a file containt following line will cause emacs emit the message.

print("Local Variables:")

And the Spacemacs file core/core-custom-settings.el has a line contain "Local Variables:", https://github.com/syl20bnr/spacemacs/blob/d1bdf6c6349246774b1116b81666f19b8f8484fe/core/core-custom-settings.el#L87 then the Emacs emit the message, you can try with emacs -q and open the test file.

Upstream issue link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=55865

Novite5 commented 2 years ago

I have the same problem on ArchLinux with Emacs 28.1 And I cannot start the Spacemacs settings This is my Backtrace:

Debugger entered--Lisp error: (void-variable projectile-mode) (if projectile-mode nil (projectile-mode)) spacemacs-buffer//insert-recent-files-by-project((7 . 5)) (cond ((eq el 'warnings) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el 'recents) (spacemacs-buffer//insert-recent-files list-size)) ((eq el 'recents-by-project) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el 'todos) (spacemacs-buffer//insert-todos list-size)) ((eq el 'agenda) (spacemacs-buffer//insert-agenda list-size)) ((eq el 'bookmarks) (spacemacs-buffer//insert-bookmarks list-size)) ((and (eq el 'projects) (fboundp 'projectile-mode)) (spacemacs-buffer//insert-projects list-size))) (let ((el (or (car-safe els) els)) (list-size (or (cdr-safe els) spacemacs-buffer-startup-lists-length))) (cond ((eq el 'warnings) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el 'recents) (spacemacs-buffer//insert-recent-files list-size)) ((eq el 'recents-by-project) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el 'todos) (spacemacs-buffer//insert-todos list-size)) ((eq el 'agenda) (spacemacs-buffer//insert-agenda list-size)) ((eq el 'bookmarks) (spacemacs-buffer//insert-bookmarks list-size)) ((and (eq el 'projects) (fboundp 'projectile-mode)) (spacemacs-buffer//insert-projects list-size)))) (let ((els (car --dolist-tail--))) (let ((el (or (car-safe els) els)) (list-size (or (cdr-safe els) spacemacs-buffer-startup-lists-length))) (cond ((eq el 'warnings) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el 'recents) (spacemacs-buffer//insert-recent-files list-size)) ((eq el 'recents-by-project) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el 'todos) (spacemacs-buffer//insert-todos list-size)) ((eq el 'agenda) (spacemacs-buffer//insert-agenda list-size)) ((eq el 'bookmarks) (spacemacs-buffer//insert-bookmarks list-size)) ((and (eq el 'projects) (fboundp 'projectile-mode)) (spacemacs-buffer//insert-projects list-size)))) (setq --dolist-tail-- (cdr --dolist-tail--))) (while --dolist-tail-- (let ((els (car --dolist-tail--))) (let ((el (or (car-safe els) els)) (list-size (or (cdr-safe els) spacemacs-buffer-startup-lists-length))) (cond ((eq el 'warnings) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el 'recents) (spacemacs-buffer//insert-recent-files list-size)) ((eq el 'recents-by-project) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el 'todos) (spacemacs-buffer//insert-todos list-size)) ((eq el 'agenda) (spacemacs-buffer//insert-agenda list-size)) ((eq el 'bookmarks) (spacemacs-buffer//insert-bookmarks list-size)) ((and (eq el 'projects) (fboundp 'projectile-mode)) (spacemacs-buffer//insert-projects list-size)))) (setq --dolist-tail-- (cdr --dolist-tail--)))) (let ((--dolist-tail-- (append '(warnings) dotspacemacs-startup-lists))) (while --dolist-tail-- (let ((els (car --dolist-tail--))) (let ((el (or (car-safe els) els)) (list-size (or (cdr-safe els) spacemacs-buffer-startup-lists-length))) (cond ((eq el 'warnings) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el 'recents) (spacemacs-buffer//insert-recent-files list-size)) ((eq el 'recents-by-project) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el 'todos) (spacemacs-buffer//insert-todos list-size)) ((eq el 'agenda) (spacemacs-buffer//insert-agenda list-size)) ((eq el 'bookmarks) (spacemacs-buffer//insert-bookmarks list-size)) ((and (eq el ...) (fboundp ...)) (spacemacs-buffer//insert-projects list-size)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (let ((dotspacemacs-startup-buffer-show-icons dotspacemacs-startup-buffer-show-icons)) (if (display-graphic-p) (if (configuration-layer/package-used-p 'all-the-icons) nil (message "Package `all-the-icons' isn't installed") (setq dotspacemacs-startup-buffer-show-icons nil)) (setq dotspacemacs-startup-buffer-show-icons nil)) (if dotspacemacs-startup-buffer-show-icons (progn (require 'all-the-icons))) (let ((--dolist-tail-- (append '(warnings) dotspacemacs-startup-lists))) (while --dolist-tail-- (let ((els (car --dolist-tail--))) (let ((el (or ... els)) (list-size (or ... spacemacs-buffer-startup-lists-length))) (cond ((eq el ...) (spacemacs-buffer//insert-errors) (spacemacs-buffer//insert-warnings)) ((eq el ...) (spacemacs-buffer//insert-recent-files list-size)) ((eq el ...) (spacemacs-buffer//insert-recent-files-by-project list-size)) ((eq el ...) (spacemacs-buffer//insert-todos list-size)) ((eq el ...) (spacemacs-buffer//insert-agenda list-size)) ((eq el ...) (spacemacs-buffer//insert-bookmarks list-size)) ((and ... ...) (spacemacs-buffer//insert-projects list-size)))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) spacemacs-buffer//do-insert-startupify-lists() (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (unwind-protect (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) (let ((temp-buffer (generate-new-buffer " temp" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (setq lines (let ((temp-buffer (generate-new-buffer " temp" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (let ((icons dotspacemacs-startup-buffer-show-icons) lines) (setq dotspacemacs-startup-buffer-show-icons nil) (setq lines (let ((temp-buffer (generate-new-buffer " temp" t))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (spacemacs-buffer//do-insert-startupify-lists) (recentf-mode -1) (line-number-at-pos)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (setq dotspacemacs-startup-buffer-show-icons icons) lines) (let ((startup-list-line-height (let ((icons dotspacemacs-startup-buffer-show-icons) lines) (setq dotspacemacs-startup-buffer-show-icons nil) (setq lines (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...)))) (setq dotspacemacs-startup-buffer-show-icons icons) lines)) (image-height (- (window-text-height) 26 startup-list-line-height))) (max image-height 3)) spacemacs-buffer//banner-fit-height-size() (float (spacemacs-buffer//banner-fit-height-size)) (/ (float (spacemacs-buffer//banner-fit-height-size)) height) (let ((factor (/ (float (spacemacs-buffer//banner-fit-height-size)) height))) (min factor 1)) (let nil (let ((factor (/ (float (spacemacs-buffer//banner-fit-height-size)) height))) (min factor 1))) (if (eq dotspacemacs-startup-banner-scale 'auto) (let nil (let ((factor (/ (float (spacemacs-buffer//banner-fit-height-size)) height))) (min factor 1))) (let ((factor dotspacemacs-startup-banner-scale)) factor)) (let ((title spacemacs-buffer-logo-title) (spec (create-image banner)) (unscaled-size (image-size spec)) (height (cdr unscaled-size)) (scale (if (eq dotspacemacs-startup-banner-scale 'auto) (let nil (let ((factor ...)) (min factor 1))) (let ((factor dotspacemacs-startup-banner-scale)) factor))) (size (cons ( scale (car unscaled-size)) ( scale (cdr unscaled-size)))) (width (car size)) (left-margin (max 0 (floor (- spacemacs-buffer--window-width width) 2)))) (plist-put (cdr spec) :scale scale) (insert (make-string left-margin 32)) (insert-image spec) (insert "\n\n") (insert (make-string (max 0 (floor (/ (- spacemacs-buffer--window-width (+ ... 1)) 2))) 32)) (insert (format "%s\n\n" title))) (progn (let ((title spacemacs-buffer-logo-title) (spec (create-image banner)) (unscaled-size (image-size spec)) (height (cdr unscaled-size)) (scale (if (eq dotspacemacs-startup-banner-scale 'auto) (let nil (let (...) (min factor 1))) (let ((factor dotspacemacs-startup-banner-scale)) factor))) (size (cons ( scale (car unscaled-size)) ( scale (cdr unscaled-size)))) (width (car size)) (left-margin (max 0 (floor (- spacemacs-buffer--window-width width) 2)))) (plist-put (cdr spec) :scale scale) (insert (make-string left-margin 32)) (insert-image spec) (insert "\n\n") (insert (make-string (max 0 (floor (/ (- spacemacs-buffer--window-width ...) 2))) 32)) (insert (format "%s\n\n" title)))) (if (file-exists-p banner) (progn (let ((title spacemacs-buffer-logo-title) (spec (create-image banner)) (unscaled-size (image-size spec)) (height (cdr unscaled-size)) (scale (if (eq dotspacemacs-startup-banner-scale 'auto) (let nil (let ... ...)) (let (...) factor))) (size (cons ( scale (car unscaled-size)) ( scale (cdr unscaled-size)))) (width (car size)) (left-margin (max 0 (floor (- spacemacs-buffer--window-width width) 2)))) (plist-put (cdr spec) :scale scale) (insert (make-string left-margin 32)) (insert-image spec) (insert "\n\n") (insert (make-string (max 0 (floor (/ ... 2))) 32)) (insert (format "%s\n\n" title))))) spacemacs-buffer//insert-image-banner("/home/weber/.emacs.d/core/banners/img/spacemacs.pn...") (if (image-type-available-p (intern (file-name-extension banner))) (spacemacs-buffer//insert-image-banner banner) (spacemacs-buffer//insert-ascii-banner-centered banner)) (progn (spacemacs-buffer/message (format "Banner: %s" banner)) (if (image-type-available-p (intern (file-name-extension banner))) (spacemacs-buffer//insert-image-banner banner) (spacemacs-buffer//insert-ascii-banner-centered banner))) (if banner (progn (spacemacs-buffer/message (format "Banner: %s" banner)) (if (image-type-available-p (intern (file-name-extension banner))) (spacemacs-buffer//insert-image-banner banner) (spacemacs-buffer//insert-ascii-banner-centered banner)))) (let ((banner (spacemacs-buffer//choose-banner)) (buffer-read-only nil)) (if banner (progn (spacemacs-buffer/message (format "Banner: %s" banner)) (if (image-type-available-p (intern (file-name-extension banner))) (spacemacs-buffer//insert-image-banner banner) (spacemacs-buffer//insert-ascii-banner-centered banner)))) (spacemacs-buffer//insert-buttons) (spacemacs//redisplay)) spacemacs-buffer/insert-banner-and-buttons() (save-excursion (if (> (buffer-size) 0) (progn (set 'save-line (line-number-at-pos)) (let ((inhibit-read-only t)) (erase-buffer)))) (spacemacs-buffer/set-mode-line "") (if dotspacemacs-startup-buffer-show-version (spacemacs-buffer//insert-version) (let ((inhibit-read-only t)) (insert "\n"))) (spacemacs-buffer/insert-banner-and-buttons) (if (and (boundp 'spacemacs-initialized) spacemacs-initialized) (progn (spacemacs-buffer//notes-redisplay-current-note) (if dotspacemacs-startup-lists (progn (spacemacs-buffer/insert-startup-lists))) (spacemacs-buffer//insert-footer) (configuration-layer/display-summary emacs-start-time) (spacemacs-buffer/set-mode-line spacemacs--default-mode-line) (force-mode-line-update) (spacemacs-buffer-mode)))) (save-current-buffer (set-buffer (get-buffer-create spacemacs-buffer-name)) (page-break-lines-mode) (save-excursion (if (> (buffer-size) 0) (progn (set 'save-line (line-number-at-pos)) (let ((inhibit-read-only t)) (erase-buffer)))) (spacemacs-buffer/set-mode-line "") (if dotspacemacs-startup-buffer-show-version (spacemacs-buffer//insert-version) (let ((inhibit-read-only t)) (insert "\n"))) (spacemacs-buffer/insert-banner-and-buttons) (if (and (boundp 'spacemacs-initialized) spacemacs-initialized) (progn (spacemacs-buffer//notes-redisplay-current-note) (if dotspacemacs-startup-lists (progn (spacemacs-buffer/insert-startup-lists))) (spacemacs-buffer//insert-footer) (configuration-layer/display-summary emacs-start-time) (spacemacs-buffer/set-mode-line spacemacs--default-mode-line) (force-mode-line-update) (spacemacs-buffer-mode)))) (if save-line (progn (goto-char (point-min)) (forward-line (1- save-line)) (forward-to-indentation 0)) (spacemacs-buffer/goto-link-line))) (progn (setq spacemacs-buffer--window-width (if dotspacemacs-startup-buffer-responsive (window-width) 80) spacemacs-buffer--last-width spacemacs-buffer--window-width) (save-current-buffer (set-buffer (get-buffer-create spacemacs-buffer-name)) (page-break-lines-mode) (save-excursion (if (> (buffer-size) 0) (progn (set 'save-line (line-number-at-pos)) (let ((inhibit-read-only t)) (erase-buffer)))) (spacemacs-buffer/set-mode-line "") (if dotspacemacs-startup-buffer-show-version (spacemacs-buffer//insert-version) (let ((inhibit-read-only t)) (insert "\n"))) (spacemacs-buffer/insert-banner-and-buttons) (if (and (boundp 'spacemacs-initialized) spacemacs-initialized) (progn (spacemacs-buffer//notes-redisplay-current-note) (if dotspacemacs-startup-lists (progn (spacemacs-buffer/insert-startup-lists))) (spacemacs-buffer//insert-footer) (configuration-layer/display-summary emacs-start-time) (spacemacs-buffer/set-mode-line spacemacs--default-mode-line) (force-mode-line-update) (spacemacs-buffer-mode)))) (if save-line (progn (goto-char (point-min)) (forward-line (1- save-line)) (forward-to-indentation 0)) (spacemacs-buffer/goto-link-line))) (if current-prefix-arg (switch-to-buffer-other-window spacemacs-buffer-name) (switch-to-buffer spacemacs-buffer-name)) (spacemacs//redisplay)) (if (or (not (eq spacemacs-buffer--last-width (window-width))) (not buffer-exists) refresh) (progn (setq spacemacs-buffer--window-width (if dotspacemacs-startup-buffer-responsive (window-width) 80) spacemacs-buffer--last-width spacemacs-buffer--window-width) (save-current-buffer (set-buffer (get-buffer-create spacemacs-buffer-name)) (page-break-lines-mode) (save-excursion (if (> (buffer-size) 0) (progn (set 'save-line (line-number-at-pos)) (let (...) (erase-buffer)))) (spacemacs-buffer/set-mode-line "") (if dotspacemacs-startup-buffer-show-version (spacemacs-buffer//insert-version) (let ((inhibit-read-only t)) (insert "\n"))) (spacemacs-buffer/insert-banner-and-buttons) (if (and (boundp 'spacemacs-initialized) spacemacs-initialized) (progn (spacemacs-buffer//notes-redisplay-current-note) (if dotspacemacs-startup-lists (progn ...)) (spacemacs-buffer//insert-footer) (configuration-layer/display-summary emacs-start-time) (spacemacs-buffer/set-mode-line spacemacs--default-mode-line) (force-mode-line-update) (spacemacs-buffer-mode)))) (if save-line (progn (goto-char (point-min)) (forward-line (1- save-line)) (forward-to-indentation 0)) (spacemacs-buffer/goto-link-line))) (if current-prefix-arg (switch-to-buffer-other-window spacemacs-buffer-name) (switch-to-buffer spacemacs-buffer-name)) (spacemacs//redisplay))) (let ((buffer-exists (buffer-live-p (get-buffer spacemacs-buffer-name))) (save-line nil)) (if (not buffer-exists) (progn (setq spacemacs-buffer--note-widgets nil))) (if (or (not (eq spacemacs-buffer--last-width (window-width))) (not buffer-exists) refresh) (progn (setq spacemacs-buffer--window-width (if dotspacemacs-startup-buffer-responsive (window-width) 80) spacemacs-buffer--last-width spacemacs-buffer--window-width) (save-current-buffer (set-buffer (get-buffer-create spacemacs-buffer-name)) (page-break-lines-mode) (save-excursion (if (> (buffer-size) 0) (progn (set ... ...) (let ... ...))) (spacemacs-buffer/set-mode-line "") (if dotspacemacs-startup-buffer-show-version (spacemacs-buffer//insert-version) (let (...) (insert "\n"))) (spacemacs-buffer/insert-banner-and-buttons) (if (and (boundp ...) spacemacs-initialized) (progn (spacemacs-buffer//notes-redisplay-current-note) (if dotspacemacs-startup-lists ...) (spacemacs-buffer//insert-footer) (configuration-layer/display-summary emacs-start-time) (spacemacs-buffer/set-mode-line spacemacs--default-mode-line) (force-mode-line-update) (spacemacs-buffer-mode)))) (if save-line (progn (goto-char (point-min)) (forward-line (1- save-line)) (forward-to-indentation 0)) (spacemacs-buffer/goto-link-line))) (if current-prefix-arg (switch-to-buffer-other-window spacemacs-buffer-name) (switch-to-buffer spacemacs-buffer-name)) (spacemacs//redisplay)))) spacemacs-buffer/goto-buffer() spacemacs/init() (let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start))))) (if (not (version<= spacemacs-emacs-min-version emacs-version)) (error (concat "Your version of Emacs (%s) is too old. " "Spacemacs requires Emacs version %s or above.") emacs-version spacemacs-emacs-min-version) (let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start)))))) eval-buffer(#<buffer load> nil "/home/weber/.emacs.d/init.el" nil t) ; Reading at buffer position 3147 load-with-code-conversion("/home/weber/.emacs.d/init.el" "/home/weber/.emacs.d/init.el" t t) load("/home/weber/.emacs.d/init" noerror nomessage) startup--load-user-init-file(#f(compiled-function () #<bytecode 0xcc589e2652c5baa>) #f(compiled-function () #<bytecode -0x1f3c686ddc0cdc35>) t) command-line() normal-top-level()

prehensilecode commented 2 years ago

Upstream is “won’t fix”

real-or-random commented 1 year ago

And the Spacemacs file core/core-custom-settings.el has a line contain "Local Variables:",

https://github.com/syl20bnr/spacemacs/blob/d1bdf6c6349246774b1116b81666f19b8f8484fe/core/core-custom-settings.el#L87

Couldn't we simply replace this by (concat "Local " "Variables:) as a workaround?