* lisp/emacs-lisp/lisp-mode.el (save-window-excursion): Don't touch.
* lisp/emacs-lisp/cconv.el (cconv-closure-convert-rec, cconv-analyse-form):
Don't handle save-window-excursion any more.
* lisp/emacs-lisp/bytecomp.el (interactive-p, save-window-excursion):
Don't use the byte-code any more.
(byte-compile-form): Check macro expansion was done.
(byte-compile-save-window-excursion): Remove.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
Ignore save-window-excursion. Don't macroepand any more.
* src/window.c (Fsave_window_excursion): Remove. Moved to Lisp.
(syms_of_window): Don't defsubr it.
* src/window.h (Fsave_window_excursion): Don't declare it.
* src/bytecode.c (exec_byte_code): Inline Fsave_window_excursion.
* lisp/files.el (lexical-binding): Add a safe-local-variable property.
* lisp/emacs-lisp/byte-opt.el (byte-inline-lapcode): Check how many elements
are added to the stack.
(byte-compile-splice-in-already-compiled-code): Don't touch lexical nor
byte-compile-depth now that byte-inline-lapcode does it for us.
(byte-compile-inline-expand): Don't inline dynbind byte code into
lexbind code, since it has to be done differently.
* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
Correctly extract arglist from `closure's.
(byte-compile-cl-warn): Compiler-macros are run earlier now.
(byte-compile-top-level): Bind byte-compile-lexical-environment to nil,
except for lambdas.
(byte-compile-form): Don't run the compiler-macro expander here.
(byte-compile-let): Merge with byte-compile-let*.
Don't preserve-body-value if the body's value was discarded.
* lisp/emacs-lisp/cconv.el (cconv--set-diff, cconv--set-diff-map)
(cconv--map-diff, cconv--map-diff-elem, cconv--map-diff-set): New funs.
(cconv--env-var): New constant.
(cconv-closure-convert-rec): Use it and use them. Fix a typo that
ended up forgetting to remove entries from lmenvs in `let'.
For `lambda' use the outer `fvrs' when building the closure and don't
forget to remove `vars' from the `emvrs' and `lmenvs' of the body.
* lisp/emacs-lisp/cl-macs.el (cl-byte-compile-block): Disable optimization
in lexbind, because it needs a different implementation.
* src/bytecode.c (exec_byte_code): Fix handling of &rest.
* src/eval.c (Vinternal_interpreter_environment): Remove.
(syms_of_eval): Do declare Vinternal_interpreter_environment as
a global lisp var, but unintern it to hide it.
(Fcommandp):
* src/data.c (Finteractive_form): Understand `closure's.
* lisp/emacs-lisp/cconv.el (cconv-closure-convert): Drop `toplevel' arg.
(cconv-closure-convert-toplevel): Remove.
(cconv-lookup-let): New fun.
(cconv-closure-convert-rec): Don't bother with defs-are-legal.
Use :fun-body to handle special forms that require closing their forms.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file-form, byte-compile):
Use cconv-closure-convert instead of cconv-closure-convert-toplevel.
(byte-compile-lambda, byte-compile-make-closure):
* lisp/emacs-lisp/byte-lexbind.el (byte-compile-maybe-push-heap-environment):
Make sure cconv did its job.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Check stack-depth
before using it.
* lisp/dired.el (dired-desktop-buffer-misc-data): Don't use a dynamic var as
function argument.
* lisp/emacs-lisp/byte-lexbind.el (byte-compile-lforminfo-analyze):
Understand the :fun-body case for catch, save-window-excursion, and
condition-case.
(byte-compile-maybe-push-heap-environment): No need when nclosures is
zero and byte-compile-current-num-closures is -1.
* lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Fix `fun' that was not
renamed to `bytecomp-fun'.
* lisp/emacs-lisp/cconv.el (cconv-not-lexical-var-p): New function.
(cconv-freevars): Use it.
(cconv-closure-convert-rec): Avoid `position'.
(cconv-analyse-function): New function.
(cconv-analyse-form): Use it. `inclosure' can't be nil any more.
Check lexical vars at let-binding time rather than when referenced.
For defuns to be in an empty environment and lambdas to take lexical args.
Pay attention to the need to build closures in catch, unwind-protect,
save-window-excursion, condition-case, and track-mouse.
Fix defconst/defvar handling.
(byte-compile-unwind-protect, byte-compile-track-mouse)
(byte-compile-condition-case, byte-compile-save-window-excursion):
Provide a :fun-body alternative, so that info can be propagated from the
surrounding context, as is the case for lexical scoping.
* lisp/emacs-lisp/cconv.el (cconv-mutated, cconv-captured)
(cconv-captured+mutated, cconv-lambda-candidates): Fix up declaration.
(cconv-freevars): Minor cleanup. Fix handling of the error var in
condition-case.
solely by customization `allout-auto-activation'.
(allout-auto-activation-helper) (allout-setup): New autoloads implement new
custom set procedure for allout-auto-activation. Also, explicitly invoke
(allout-setup) after allout-auto-activation is custom-defined, to effect
the settings in emacs sessions besides the few where allout-auto-activation
customization is donea.
(allout-auto-activation): Use allout-auto-activation-helper to :set.
Revise the docstring.
(allout-init): Reduce functionality to just customizing
allout-auto-activation, and mark obsolete.
(allout-mode): Respect string values for allout-auto-activation. Run
allout-after-copy-or-kill-hook without any args.
(allout-mode) (allout-layout) (allout-default-layout) (outlineify-sticky):
Adjust docstring for new scheme.
(allout-after-copy-or-kill-hook): No arguments - hook implementers should
concentrate on the kill ring.
nntp.el (nntp-retrieve-group-data-early-disabled): Disable the async code for now, since it doesn't work for all users.
message.el (message-options): Make message-options really buffer local.
shr.el (shr-tag-body): Add support for text attribute in body markups.
src/makefile.w32-in (GLOBAL_SOURCES, SOME_MACHINE_OBJECTS, obj): New
macros.
(globals.h, gl-stamp): New targets.
(clean): Clean gl-stamp and globals.h.
nt/makefile.w32-in (bootstrap-nmake, bootstrap-gmake): Make the
"make-docfile" target in lib-src, before bootstrapping the src
directory. Needed since building in src needs to run make-docfile
to produce globals.h.
of here-doc that immediately follows a comment.
* .bzrignore: Ignore globals.h and related stamp.
* test/indent/shell.sh:
* test/indent/shell.rc: New files.
* lisp/erc/erc-track.el (erc-window-configuration-change): New function.
This will allow to track buffer visibility when a command is
finished to executed. Idea stolen from rcirc.
(track): Put erc-window-configuration-change in
window-configuration-change-hook.
(erc-modified-channels-update): Remove
erc-modified-channels-update from post-command-hook after update.
* lwlib/Makefile.in (@SET_MAKE@): New, set by configure.
(globals): New variable and rule.
(lwlib-utils.o, lwlib.o, lwlib-Xlw.o, lwlib-Xaw.o, lwlib-Xm.o)
(xlwmenu.o): Add dependency on src/globals.h.
* configure: Rebuild.
* configure.in (NS_OBJC_OBJ): New subst.
lib-src
* make-docfile.c: Unconditionally include stdlib.h.
(generate_globals): New global.
(xrealloc): New function.
(main): Handle '-g'. Call start_globals, write_globals.
(scan_file): Conditionally call put_filename.
(start_globals): New function.
(struct global): New.
(num_globals, globals): New globals.
(add_global, compare_globals, write_globals): New functions.
(scan_c_file): Update for "-g".
(scan_lisp_file): Fail if "-g".
(enum global_type): New.
src
* Makefile.in (NS_OBJC_OBJ): New variable.
(base_obj): Rename from 'obj'.
(obj): New variable.
(globals.h, gl-stamp, $(obj)): New targets.
(GLOBAL_SOURCES): New variable.
* globals.h: Remove.
* nsselect.m (Vselection_alist): Define. Reverts part of
2011-01-19T22:11:33Z!jan.h.d@swipnet.se.
* buffer.c: Don't use "no_cell" for name of kill-buffer-hook's
variable.
* xselect.c (Vselection_alist): Define. Reverts part of 2011-01-19T23:32:42Z!eggert@cs.ucla.edu.
Remove the mark/nomark handling, and activate shift-select-mode instead.
* lisp/obsolete/pc-mode.el: Rename from emulation/pc-mode.el.
Fixes: debbugs:7940