Merge from mainline.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 1 Apr 2011 20:19:36 +0000 (13:19 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 1 Apr 2011 20:19:36 +0000 (13:19 -0700)
1  2 
src/ChangeLog
src/bytecode.c
src/lisp.h
src/print.c

diff --cc src/ChangeLog
@@@ -1,40 -1,61 +1,98 @@@
 +2011-04-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (x_scroll_bar_to_input_event) [!USE_GTK]:
 +      Remove var that is set but not used.
 +      (scroll_bar_windows_size): Now size_t, not int.
 +      (x_send_scroll_bar_event): Use size_t, not int, for sizes.
 +      Check for overflow.
 +
 +      * xfaces.c (realize_named_face): Remove vars that are set but not used.
 +      (map_tty_color) [!defined MSDOS]: Likewise.
 +
 +      * term.c (tty_write_glyphs): Use size_t; this avoids overflow warning.
 +
 +      * coding.c: Remove vars that are set but not used.
 +      (DECODE_COMPOSITION_RULE): Remove 2nd arg, which is unused.
 +      All callers changed.
 +      (decode_coding_utf_8, decode_coding_utf_16 decode_coding_emacs_mule):
 +      (decode_coding_iso_2022, encode_coding_sjis, encode_coding_big5):
 +      (decode_coding_charset): Remove vars that are set but not used.
 +
 +      * bytecode.c (Fbyte_code) [!defined BYTE_CODE_SAFE]: Remove var
 +      that is set but not used.
 +
 +      * print.c (print_object): Remove var that is set but not used.
 +
 +      Replace 2 copies of readlink code with 1 gnulib version (Bug#8401).
 +      The gnulib version avoids calling malloc in the usual case,
 +      and on 64-bit hosts doesn't have some arbitrary 32-bit limits.
 +      * fileio.c (Ffile_symlink_p): Use emacs_readlink.
 +      * filelock.c (current_lock_owner): Likewise.
 +      * lisp.h (READLINK_BUFSIZE, emacs_readlink): New function.
 +      * sysdep.c: Include allocator.h, careadlinkat.h.
 +      (emacs_no_realloc_allocator): New static constant.
 +      (emacs_readlink): New function.
 +      * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on
 +      ../lib/careadlinkat.h.
 +
+ 2011-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+       Add lexical binding.
+       * window.c (Ftemp_output_buffer_show): New fun.
+       (Fsave_window_excursion):
+       * print.c (Fwith_output_to_temp_buffer): Move to subr.el.
+       * lread.c (lisp_file_lexically_bound_p): New function.
+       (Fload): Bind Qlexical_binding.
+       (readevalloop): Remove `evalfun' arg.
+       Bind Qinternal_interpreter_environment.
+       (Feval_buffer): Bind Qlexical_binding.
+       (defvar_int, defvar_bool, defvar_lisp_nopro, defvar_kboard):
+       Mark as dynamic.
+       (syms_of_lread): Declare `lexical-binding'.
+       * lisp.h (struct Lisp_Symbol): New field `declared_special'.
+       * keyboard.c (eval_dyn): New fun.
+       (menu_item_eval_property): Use it.
+       * image.c (parse_image_spec): Use Ffunctionp.
+       * fns.c (concat, mapcar1): Accept byte-code-functions.
+       * eval.c (Fsetq): Handle lexical vars.
+       (Fdefun, Fdefmacro, Ffunction): Make closures when needed.
+       (Fdefconst, Fdefvaralias, Fdefvar): Mark as dynamic.
+       (FletX, Flet): Obey lexical binding.
+       (Fcommandp): Handle closures.
+       (Feval): New `lexical' arg.
+       (eval_sub): New function extracted from Feval.  Use it almost
+       everywhere where Feval was used.  Look up vars in lexical env.
+       Handle closures.
+       (Ffunctionp): Move from subr.el.
+       (Ffuncall): Handle closures.
+       (apply_lambda): Remove `eval_flags'.
+       (funcall_lambda): Handle closures and new byte-code-functions.
+       (Fspecial_variable_p): New function.
+       (syms_of_eval): Initialize the Vinternal_interpreter_environment var,
+       but without exporting it to Lisp.
+       * doc.c (Fdocumentation, store_function_docstring):
+       * data.c (Finteractive_form): Handle closures.
+       * callint.c (Fcall_interactively): Preserve lexical-binding mode for
+       interactive spec.
+       * bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, BdiscardN): New
+       byte-codes.
+       (exec_byte_code): New function extracted from Fbyte_code to handle new
+       calling convention for byte-code-functions.  Add new byte-codes.
+       * buffer.c (defvar_per_buffer): Set new `declared_special' field.
+       * alloc.c (Fmake_symbol): Init new `declared_special' field.
  2011-03-31  Juanma Barranquero  <lekktu@gmail.com>
  
        * xdisp.c (redisplay_internal): Fix prototype.
diff --cc src/bytecode.c
Simple merge
diff --cc src/lisp.h
Simple merge
diff --cc src/print.c
Simple merge