Commit 91f68422 authored by Chong Yidong's avatar Chong Yidong

* files.el (hack-local-variables-prop-line)

(hack-local-variables, dir-locals-read-from-file): Bind
read-circle to nil before reading.
* lread.c (Vread_circle): New variable.
(read1): Disable recursive read if Vread_circle is nil.
parent ee87c549
......@@ -1930,6 +1930,10 @@ port support (see Emacs changes, above).
** Miscellaneous new variables
+++
*** `read-circle', if nil, disables the reading of recursive Lisp
structures using the #N= and #N# syntax.
+++
*** `this-command-keys-shift-translated' is non-nil if the key
sequence invoking the current command was found by shift-translation.
......
2009-04-29 Ulrich Mueller <ulm@gentoo.org>
* files.el (hack-local-variables-prop-line)
(hack-local-variables, dir-locals-read-from-file): Bind
read-circle to nil before reading.
2009-04-28 Geert Kloosterman <g.j.kloosterman@gmail.com> (tiny change)
* progmodes/which-func.el (which-function): Don't assume that
......
......@@ -2898,7 +2898,8 @@ and VAL is the specified value."
(let ((key (intern (match-string 1)))
(val (save-restriction
(narrow-to-region (point) end)
(read (current-buffer)))))
(let ((read-circle nil))
(read (current-buffer))))))
;; It is traditional to ignore
;; case when checking for `mode' in set-auto-mode,
;; so we must do that here as well.
......@@ -3044,12 +3045,14 @@ is specified, returning t if it is specified."
(if (eolp) (error "Missing colon in local variables entry"))
(skip-chars-backward " \t")
(let* ((str (buffer-substring beg (point)))
(var (read str))
(var (let ((read-circle nil))
(read str)))
val)
;; Read the variable value.
(skip-chars-forward "^:")
(forward-char 1)
(setq val (read (current-buffer)))
(let ((read-circle nil))
(setq val (read (current-buffer))))
(if mode-only
(if (eq var 'mode)
(setq result t))
......@@ -3348,7 +3351,8 @@ is found. Returns the new class name."
(insert-file-contents file)
(let* ((dir-name (file-name-directory file))
(class-name (intern dir-name))
(variables (read (current-buffer))))
(variables (let ((read-circle nil))
(read (current-buffer)))))
(dir-locals-set-class-variables class-name variables)
(dir-locals-set-directory-class dir-name class-name
(nth 5 (file-attributes file)))
......
2009-04-29 Ulrich Mueller <ulm@gentoo.org>
* lread.c (Vread_circle): New variable.
(read1): Disable recursive read if Vread_circle is nil.
2009-04-29 Kenichi Handa <handa@m17n.org>
* fontset.h (set_default_ascii_font): Delete extern.
......
......@@ -125,6 +125,9 @@ Lisp_Object Vload_file_name;
/* Function to use for reading, in `load' and friends. */
Lisp_Object Vload_read_function;
/* Non-nil means read recursive structures using #n= and #n# syntax. */
Lisp_Object Vread_circle;
/* The association list of objects read with the #n=object form.
Each member of the list has the form (n . object), and is used to
look up the object for the corresponding #n# construct.
......@@ -2558,7 +2561,7 @@ read1 (readcharfun, pch, first_in_list)
c = READCHAR;
}
/* #n=object returns object, but associates it with n for #n#. */
if (c == '=')
if (c == '=' && !NILP (Vread_circle))
{
/* Make a placeholder for #n# to use temporarily */
Lisp_Object placeholder;
......@@ -2580,7 +2583,7 @@ read1 (readcharfun, pch, first_in_list)
return tem;
}
/* #n# returns a previously read object. */
if (c == '#')
if (c == '#' && !NILP (Vread_circle))
{
tem = Fassq (make_number (n), read_objects);
if (CONSP (tem))
......@@ -4215,6 +4218,10 @@ read multiple times. The list is in the same order as the symbols
were read in. */);
Vread_symbol_positions_list = Qnil;
DEFVAR_LISP ("read-circle", &Vread_circle,
doc: /* Non-nil means read recursive structures using #N= and #N# syntax. */);
Vread_circle = Qt;
DEFVAR_LISP ("load-path", &Vload_path,
doc: /* *List of directories to search for files to load.
Each element is a string (directory name) or nil (try default directory).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment