Commit graph

3181 commits

Author SHA1 Message Date
Stefan Monnier
cb581a672b * lisp/emacs-lisp/debug.el (debug): Don't leave the buffer in Debugger. 2011-06-15 14:39:04 -04:00
Stefan Monnier
0ac306045f * src/eval.c (Fdefvaralias): Also mark the target as variable-special-p. 2011-06-15 14:36:00 -04:00
Daniel Colascione
f0d4059d8c * emacs-lisp/syntax.el (syntax-ppss): Clarify which items are invalid. 2011-06-11 17:27:14 -07:00
Chong Yidong
7dbe3dbc59 Doc fixes for timer.el (Bug#8793).
* emacs-lisp/timer.el (timer-activate): Remove unused arg.
(timer-activate, timer-activate-when-idle): Doc fix.
2011-06-04 18:46:26 -04:00
Glenn Morris
910fcf6e00 Auto-commit of loaddefs files. 2011-06-02 06:21:27 -04:00
Stefan Monnier
2403c841a8 Silence various byte-compiler warnings.
* lisp/emacs-lisp/byte-run.el (make-obsolete-variable): New argument
`access-type' and new obsolescence format.
* lisp/emacs-lisp/bytecomp.el (byte-compile-warn-obsolete): Adjust to
new format.
(byte-compile-check-variable): New `access-type' argument.
Only warn if the access-type is obsolete.
(byte-compile-dynamic-variable-bind, byte-compile-variable-ref)
(byte-compile-variable-set): Adjust callers.
* lisp/help-fns.el (describe-variable): Adjust to new obsolescence format.
* lisp/mail/sendmail.el (mail-mailer-swallows-blank-line): Only mark
setting it as obsolete.
* lisp/simple.el (minibuffer-completing-symbol):
* lisp/font-lock.el (font-lock-beginning-of-syntax-function): Only mark read
access as obsolete.
* lisp/minibuffer.el (minibuffer-completing-file-name): Don't make it
obsolete yet.
* lisp/international/quail.el (quail-mouse-choose-completion): Remove unused
code referring to obsolete var.
(quail-choose-completion-string): Remove.
* lisp/server.el (server-clients-with, server-kill-buffer-query-function)
(server-kill-emacs-query-function): Silence "unused `proc'" warnings.
* lisp/proced.el (proced-send-signal):
* lisp/emacs-lisp/lisp.el (lisp-complete-symbol):
Replace completion-annotate-function with completion-extra-properties.
2011-06-01 16:32:04 -03:00
Stefan Monnier
2462470b9e Miscellaneous tweaks.
* lisp/emacs-lisp/cl-macs.el (dolist, dotimes): Use the same strategy for
lexical scoping as in subr.el's dolist and dotimes.
* lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf):
Silence compiler warning.
* lisp/thingatpt.el (forward-whitespace): Trivial coding style fix.
* lisp/subr.el (with-output-to-temp-buffer): Provide an edebug spec.
* lisp/international/ccl.el (ccl-compile): Trivial simplification.
* lisp/help-fns.el (help-do-arg-highlight): Silence compiler warning.
* lisp/emacs-lisp/testcover.el (testcover-end): Remove spurious
`printflag' argument.
* lisp/emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable):
Purecopy the whole obsolescence data.
2011-06-01 11:19:45 -03:00
Stefan Monnier
e227544d7b * lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer's
content but also its previous major mode.
2011-05-31 12:41:14 -03:00
Helmut Eller
e8296fdc98 * debug.el (debug): Restore the previous content of the
*Backtrace* buffer when we exit with C-M-c.
2011-05-31 12:24:33 -03:00
Stefan Monnier
6105399dcc * bytecomp.el (byte-compile-defvar): Add note about quoted lambda. 2011-05-30 14:14:19 -03:00
Chong Yidong
23db196eea * emacs-lisp/re-builder.el (re-builder): Improve doc (Bug#8286). 2011-05-28 14:48:41 -04:00
Toby Cubitt
eb95d01d15 * lisp/emacs-lisp/avl-tree.el: New avl-tree-stack datatype. Add new
traversal functions for avl-trees.
(avl-tree--stack): New struct.
(avl-tree-stack-p, avl-tree--stack-repopulate): New funs.
(avl-tree-enter): Add optional `updatefun' arg.
(avl-tree--do-enter): Add optional `updatefun' arg.  Change return value.
(avl-tree-delete): Add optional `test' and `nilflag' args.
(avl-tree--do-delete): Add `test' and `nilflag' args.  Change return value.
(avl-tree-member): Add optional `nilflag'
(avl-tree-member-p): New function.
(avl-tree-mapc, avl-tree-mapf, avl-tree-mapcar): New functions.
(avl-tree-stack, avl-tree-stack-pop, avl-tree-stack-first)
(avl-tree-stack-empty-p): New functions.
2011-05-27 19:58:29 -03:00
Toby Cubitt
3769ddcf1e * lisp/emacs-lisp/avl-tree.el (avl-tree--del-balance): Rename from
avl-tree--del-balance1 and make it work both ways.
(avl-tree--del-balance2): Remove.
(avl-tree--enter-balance): Rename from avl-tree--enter-balance1 and
make it work both ways.
(avl-tree--enter-balance2): Remove.
(avl-tree--switch-dir, avl-tree--dir-to-sign, avl-tree--sign-to-dir):
New macros.
(avl-tree--mapc, avl-tree-map): Add direction argument.
2011-05-27 16:58:19 -03:00
Stefan Monnier
4f91a8160f Don't quote lambda expressions with `quote'. 2011-05-23 14:57:17 -03:00
Stefan Monnier
e44e373d30 * lisp/emacs-lisp/lisp.el (up-list): Fix forward movement.
Fixes: debbugs:8708
2011-05-23 13:40:16 -03:00
Kevin Ryde
7de88b6e91 * lisp/emacs-lisp/advice.el (ad-read-advised-function):
Use `function-called-at-point' as the default default, if it has
advice and passes PREDICATE.
2011-05-23 11:38:28 -03:00
Stefan Monnier
bbca48fe46 * lisp/emacs-lisp/bytecomp.el (byte-compile-function-form): Only call
byte-compile-lambda if it's actually a lambda.
2011-05-22 22:15:17 -03:00
Stefan Monnier
b1ef1257fe * lisp/emacs-lisp/eieio.el (eieio-defgeneric-form-primary-only-one):
Fix function quoting.  Use backquote better.
2011-05-22 21:39:25 -03:00
Stefan Monnier
9c848d8a75 * lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Convert ' to #' for
funcall as well.  Warn when performing those conversions.
* lisp/emacs-lisp/bytecomp.el (byte-compile-form): Fix error report.

Fixes: debbugs:8712
2011-05-22 15:22:30 -03:00
Stefan Monnier
1dcf791fef * lisp/emacs-lisp/checkdoc.el (checkdoc-sentencespace-region-engine):
Also allow singlespace after single-letter capitals followed by a dot.
2011-05-20 15:20:12 -03:00
Glenn Morris
4a72048482 Remove the SOME_MACHINE_LISP distinction in src/Makefile.in.
See discussion in http://debbugs.gnu.org/8302

* configure.in (NS_SUPPORT, MOUSE_SUPPORT, TOOLTIP_SUPPORT)
(WINDOW_SUPPORT): Remove output variables that are no longer used.

* lib-src/makefile.w32-in (echolisp): Remove rule that is no longer needed.
(clean): No more echolisp.tmp.

* .bzrignore: Remove lib-src/echolisp.tmp.

* lisp/emacs-lisp/autoload.el (batch-update-autoloads):
Set autoload-excludes by parsing lisp/loadup.el rather than Makefiles.

* lisp/loadup.el: Update commentary.

* msdos/sed1x.inp (TOOLTIP_SUPPORT, WINDOW_SUPPORT):
* msdos/sed1v2.inp (MSDOS_SUPPORT, NS_SUPPORT, MOUSE_SUPPORT)
(TOOLTIP_SUPPORT, WINDOW_SUPPORT): No need to edit these any more.

* src/Makefile.in (MSDOS_SUPPORT_REAL, MSDOS_SUPPORT, NS_SUPPORT)
(REAL_MOUSE_SUPPORT, GPM_MOUSE_SUPPORT, MOUSE_SUPPORT, TOOLTIP_SUPPORT)
(BASE_WINDOW_SUPPORT, X_WINDOW_SUPPORT, WINDOW_SUPPORT): Remove.
(lisp): Set the order to that of loadup.el.
(shortlisp): Make it a copy of $lisp.
(SOME_MACHINE_LISP): Remove.
($(etc)/DOC): Depend just on $lisp, not $SOME_MACHINE_LISP too.
Use just $shortlisp, not $SOME_MACHINE_LISP too.
2011-05-18 23:04:16 -07:00
Glenn Morris
4ac0ba7174 * lisp/emacs-lisp/authors.el (authors-fixed-entries): Remove fakemail.c 2011-05-17 20:42:33 -07:00
Stefan Monnier
31d55be985 * lisp/emacs-lisp/eieio.el (defmethod): Fix quoting of code.
Fixes: debbugs:8677
2011-05-16 16:49:28 -03:00
Didier Verna
8497a2977c Common Lisp indentation improvements on defmethod and lambda-lists.
* cl-indent.el: Advertise the changes and remove obsolete TODO entries.
(lisp-lambda-list-keyword-parameter-indentation)
(lisp-lambda-list-keyword-parameter-alignment)
(lisp-lambda-list-keyword-alignment): New customizable user options.
(lisp-indent-defun-method): Improve docstring.
(extended-loop-p): Fix comment.
(lisp-indent-lambda-list-keywords-regexp): New variable.
(lisp-indent-lambda-list): New function.
(lisp-indent-259): Use it.
(lisp-indent-defmethod): Support for more than one
method qualifier and properly indent methods lambda-lists.
(defgeneric): Provide a missing common-lisp-indent-function property.
2011-05-13 16:27:52 -03:00
Glenn Morris
d2fc7e3d0f Merge from emacs-23; up to 2010-06-10T12:56:11Z!michael.albinus@gmx.de. 2011-05-12 00:07:06 -07:00
Glenn Morris
d45885f7e0 bytecomp.el fix for bug#8647
* lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
Let byte-compile-initial-macro-environment always take precedence.
2011-05-11 19:36:05 -07:00
Glenn Morris
410c42c570 Revert accidental portion of previous bytecomp.el commit. 2011-05-11 13:32:38 -04:00
Glenn Morris
7d3b9d4498 bytecomp.el partial fix for bug#8646.
* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
Handle symbol elements of byte-compile-initial-macro-environment.
2011-05-11 09:31:33 -07:00
Stefan Monnier
3f254caa51 * lisp/emacs-lisp/lisp.el (lisp-complete-symbol, lisp-completion-at-point):
Fix typo.
2011-05-09 12:17:05 -03:00
Stefan Monnier
c46626351c * lisp/emacs-lisp/eieio.el (defmethod): Fix typo in last change. 2011-05-07 23:33:28 -03:00
Stefan Monnier
d1dc2cc2ce Make bytecomp.el understand that defmethod defines functions.
* lisp/emacs-lisp/eieio.el (eieio--defalias, eieio--defgeneric-init-form):
New functions.
(defgeneric, eieio--defmethod): Use them.
(eieio-defgeneric): Remove.
(defmethod): Call defgeneric in a way visible to the byte-compiler.

Fixes: debbugs:8631
2011-05-07 01:03:49 -03:00
Glenn Morris
0bff894fc1 Small check-declare fix.
* lisp/emacs-lisp/check-declare.el (check-declare-scan):
Handle byte-compile-initial-macro-environment in bytecomp.el
2011-05-04 23:27:24 -07:00
Stefan Monnier
9869b3ae6b Fix earlier half-done eieio-defmethod change.
* lisp/emacs-lisp/eieio.el (eieio--defmethod): Rename from eieio-defmethod.
Streamline and change calling convention.
(defmethod): Adjust accordingly and simplify.
(eieio-defclass): Fix broken calls to eieio-defmethod and redirect to
new eieio--defmethod.
(slot-boundp): Minor CSE simplification.

Fixes: debbugs:8338
2011-05-05 00:42:09 -03:00
Juanma Barranquero
455c834e68 lisp/emacs-lisp/warnings.el: Tiny fixes.
* emacs-lisp/warnings.el (warning-level-aliases): Reflow docstring.
  (warning-series): Doc fix.
  (display-warning): Don't try to create the buffer if we just found it.
2011-05-05 02:06:10 +02:00
Chong Yidong
9ed7c8cbce Make autoloading commands prompt for autoload file (Bug#7989)
* emacs-lisp/autoload.el (generated-autoload-file): Set to nil.
(autoload-find-generated-file): New function.
(generate-file-autoloads): Bind generated-autoload-file to
buffer-file-name.
(update-file-autoloads, update-directory-autoloads): Use
autoload-find-generated-file.  If called interactively, prompt for
output file.
(batch-update-autoloads): Doc fix.
2011-05-04 11:38:41 -04:00
Chong Yidong
b7d22a83c2 * emacs-lisp/autoload.el (generated-autoload-file): Doc fix (Bug#7989). 2011-05-03 11:33:05 -04:00
Chong Yidong
512e3ae1e9 Restore ability to show a restricted list of packages in Package Menu.
* emacs-lisp/package.el (package-built-in-p): Fix typo.
(package-menu--generate): New arg specifying packages to show.
(package-menu-refresh, package-menu-execute, list-packages):
Callers changed.
(package-show-package-list): New function.

* finder.el (finder-list-matches): Use package-show-package-list
instead of deleted package--list-packages.
2011-04-24 16:32:23 -04:00
Chong Yidong
7ede3b6577 Doc fixes for package.el.
* emacs-lisp/package.el (package--builtins, package-alist)
(package-load-descriptor, package-built-in-p, package-activate)
(define-package, package-installed-p)
(package-compute-transaction, package-buffer-info)
(package--push): Doc fix.  Distinguish more clearly between
version strings and version lists.
2011-04-21 22:35:48 -04:00
Stefan Monnier
332e62ab1f * lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code,
add sanity check.
2011-04-20 14:28:07 -03:00
Chong Yidong
16a43933e8 Allow glyphless-char-display to distinguish between X and text terminals.
Use this for Tabulated List mode.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Use a custom
glyphless-char-display table.
(tabulated-list-glyphless-char-display): New var.

* src/term.c (produce_glyphless_glyph): Handle cons cell entry in
glyphless-char-display.

* src/xdisp.c (lookup_glyphless_char_display)
(produce_glyphless_glyph): Handle cons cell entry in
glyphless-char-display.
(Vglyphless_char_display): Document it.
2011-04-18 19:21:31 -04:00
Stefan Monnier
6f5424852f * lisp/emacs-lisp/lisp-mode.el (eval-defun-2): Use eval-sexp-add-defvars. 2011-04-15 09:57:53 -03:00
Stefan Monnier
8b05752a45 * lisp/emacs-lisp/bytecomp.el (byte-temp-output-buffer-show)
(byte-save-window-excursion, byte-temp-output-buffer-setup)
(byte-interactive-p): Define them again, for use when inlining old code.
2011-04-15 09:30:15 -03:00
Stefan Monnier
c2bd2ab028 Preserve arg names for advice of subr and lexical functions.
* lisp/help-fns.el (help-function-arglist): Consolidate the subr and
new-byte-code cases.  Add argument `preserve-names' to extract names
from the docstring when needed.
* lisp/emacs-lisp/advice.el (ad-define-subr-args, ad-undefine-subr-args)
(ad-subr-args-defined-p, ad-get-subr-args, ad-subr-arglist): Remove.
(ad-arglist): Use help-function-arglist's new arg.
(ad-definition-type): Use cond.

Fixes: debbugs:8457
2011-04-13 14:56:47 -03:00
Leo Liu
37f1c9309e Fix typo in tabulated-list-print-entry 2011-04-10 22:21:26 +08:00
Chong Yidong
e67a13abd8 Remove list-processes C function; misc fixes to last change.
* src/process.c (Flist_processes): Removed to Lisp.
(list_processes_1): Deleted.

* lisp/emacs-lisp/cconv.el (cconv--analyse-use): Ignore "ignored" when
issuing unused warnings.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-print): Use lambda
macro directly.
2011-04-06 17:55:08 -04:00
Chong Yidong
e91a96fefd Make Package Menu a child of Tabulated List mode.
* emacs-lisp/package.el: Use Tabulated List mode.
(package-menu-mode-map): Inherit from tabulated-list-mode-map.
(package-menu-mode): Derive from tabulated-list-mode.  Set up the
table format using Tabulated List mode variables.
(package--push): New macro, replacing package-list-maybe-add.
(package-menu--generate): Use package--push.  Renamed from
package--generate-package-list.
(package-menu-refresh, list-packages): Use it.
(package-menu--print-info): Renamed from package-print-package.
Return insertion data instead of inserting it directly.
(package-menu-describe-package, package-menu-execute): Use
tabulated-list-get-id.
(package-menu-mark-delete, package-menu-mark-install)
(package-menu-mark-unmark, package-menu-backup-unmark)
(package-menu-mark-obsolete-for-deletion): Use
tabulated-list-put-tag.
(package--list-packages, package-menu-revert)
(package-menu-get-package, package-menu-get-version)
(package-menu-sort-by-column): Functions deleted.
(package-menu-package-list, package-menu-sort-key): Vars deleted.
(package-menu--status-predicate, package-menu--version-predicate)
(package-menu--name-predicate)
(package-menu--description-predicate): Handle arguments in the
Tabulated List format.
(package-list-packages-no-fetch): Call list-packages.
2011-04-06 16:33:30 -04:00
Chong Yidong
a83ec3c99a * lisp/emacs-lisp/tabulated-list.el: New file. 2011-04-06 16:10:51 -04:00
Juanma Barranquero
2fbc1934ae Convert some .el files to lexical scoping.
* bs.el (bs-refresh, bs-sort-buffer-interns-are-last)
  (bs--get-marked-string, bs--get-modified-string)
  (bs--get-readonly-string, bs--get-size-string, bs--get-name)
  (bs--get-mode-name, bs--get-file-name): Mark unused arguments.
  (bs--configuration-name-for-prefix-arg): Rename argument PREFIX-ARG.

* ehelp.el (electric-help-execute-extended)
  (electric-help-ctrl-x-prefix):
* hexl.el (hexl-revert-buffer-function):
* linum.el (linum-after-change, linum-after-scroll):
* emacs-lisp/re-builder.el (reb-auto-update): Mark unused arguments.

* help-fns.el (help-describe-category-set): Remove unused ERR variable.
2011-04-04 11:35:16 +02:00
Chong Yidong
da91b5f294 Merge open-protocol-stream into open-network-stream.
* lisp/subr.el (open-network-stream): Move to net/network-stream.el.

* lisp/gnus/proto-stream.el: Move to net/network-stream.el.

* lisp/net/network-stream.el: Move from gnus/proto-stream.el.
Change prefix to network-stream throughout.
(open-protocol-stream): Merge into open-network-stream, leaving
open-protocol-stream as an alias.  Handle nil BUFFER args.

* lisp/gnus/nnimap.el (nnimap-open-connection-1): Pass explicit :end-of-command
parameter to open-protocol-stream.

* lisp/emacs-lisp/package.el (package--with-work-buffer): Recognize
https URLs.

* lisp/url/url-gw.el (url-open-stream): Use new open-network-stream
functionality to perform encryption.
2011-04-02 19:41:03 -04:00
Stefan Monnier
034086489c Merge from lexical-binding branch.
* doc/lispref/eval.texi (Eval): Discourage the use of `eval'.
Document its new `lexical' argument.

* doc/lispref/variables.texi (Defining Variables): Mention the new meaning of `defvar'.
(Lexical Binding): New sub-section.

* lisp/Makefile.in (BIG_STACK_DEPTH, BIG_STACK_OPTS, BYTE_COMPILE_FLAGS):
New variables.
(compile-onefile, .el.elc, compile-calc, recompile): Use them.
(COMPILE_FIRST): Add macroexp and cconv.
* lisp/makefile.w32-in: Mirror changes in Makefile.in.

* lisp/vc/cvs-status.el:
* lisp/vc/diff-mode.el:
* lisp/vc/log-edit.el:
* lisp/vc/log-view.el:
* lisp/vc/smerge-mode.el:
* lisp/textmodes/bibtex-style.el:
* textmodes/css.el:
* lisp/startup.el:
* lisp/uniquify.el:
* lisp/minibuffer.el: 
* lisp/newcomment.el: 
* lisp/reveal.el: 
* lisp/server.el: 
* lisp/mpc.el: 
* lisp/emacs-lisp/smie.el: 
* lisp/doc-view.el: 
* lisp/dired.el: 
* lisp/abbrev.el: Use lexical binding.

* lisp/custom.el (custom-initialize-default, custom-declare-variable):
Use `defvar'.

* lisp/files.el (lexical-binding): Declare safe.

* lisp/help-fns.el (help-split-fundoc): Return nil if there's nothing else
than the arglist.
(help-add-fundoc-usage): Don't add `Not documented'.
(help-function-arglist): Handle closures, subroutines, and new
byte-code-functions.
(help-make-usage): Remove leading underscores.
(describe-function-1): Handle closures.
(describe-variable): Use special-variable-p for completion.

* lisp/simple.el (with-wrapper-hook, apply-partially): Move to subr.el.

* lisp/subr.el (apply-partially): Use new closures rather than CL.
(--dolist-tail--, --dotimes-limit--): Don't declare dynamic.
(dolist, dotimes): Use slightly different expansion for lexical code.
(functionp): Move to C.
(letrec): New macro.
(with-wrapper-hook): Use it and apply-partially instead of CL.
(eval-after-load): Preserve lexical-binding.
(save-window-excursion, with-output-to-temp-buffer): Turn them
into macros.

* lisp/emacs-lisp/advice.el (ad-arglist): Use help-function-arglist.

* lisp/emacs-lisp/autoload.el (make-autoload): Don't burp on trivial macros.

* lisp/emacs-lisp/byte-opt.el: Use lexical binding.
(byte-inline-lapcode): Remove (to bytecomp).
(byte-compile-inline-expand): Pay attention to inlining to/from
lexically bound code.
(byte-compile-unfold-lambda): Don't handle byte-code-functions
any more.
(byte-optimize-form-code-walker): Don't handle save-window-excursion
any more and don't call compiler-macros.
(byte-compile-splice-in-already-compiled-code): Remove.
(byte-code): Don't inline any more.
(disassemble-offset): Receive `bytes' as argument rather than via
dynamic scoping.
(byte-compile-tag-number): Declare before first use.
(byte-decompile-bytecode-1): Handle new byte-codes, don't change
`return' even if make-spliceable.
(byte-compile-side-effect-and-error-free-ops): Add stack-ref, remove
obsolete interactive-p.
(byte-optimize-lapcode): Optimize new lap-codes.
Don't trip up on new form of `byte-constant' lap code.

* lisp/emacs-lisp/byte-run.el (make-obsolete): Don't set the `byte-compile'
handler any more.

* lisp/emacs-lisp/bytecomp.el: Use lexical binding instead of
a "bytecomp-" prefix.  Macroexpand everything as a separate phase.
(byte-compile-initial-macro-environment):
Handle declare-function here.
(byte-compile--lexical-environment): New var.
(byte-stack-ref, byte-stack-set, byte-discardN)
(byte-discardN-preserve-tos): New lap codes.
(byte-interactive-p): Don't use any more.
(byte-compile-push-bytecodes, byte-compile-push-bytecode-const2):
New macros.
(byte-compile-lapcode): Use them and handle new lap codes.
(byte-compile-obsolete): Remove.
(byte-compile-arglist-signature): Handle new byte-code arg"lists".
(byte-compile-arglist-warn): Check late def of inlinable funs.
(byte-compile-cl-warn): Don't silence warnings for compiler-macros
since they should have been expanded by now.
(byte-compile--outbuffer): Rename from bytecomp-outbuffer.
(byte-compile-from-buffer): Remove unused second arg.
(byte-compile-preprocess): New function.
(byte-compile-toplevel-file-form): New function to distinguish
file-form calls from outside from file-form calls from hunk-handlers.
(byte-compile-file-form): Simplify.
(byte-compile-file-form-defsubst): Remove.
(byte-compile-file-form-defmumble): Simplify now that
byte-compile-lambda always returns a byte-code-function.
(byte-compile): Preprocess.
(byte-compile-byte-code-maker, byte-compile-byte-code-unmake):
Remove, not used any more.
(byte-compile-arglist-vars, byte-compile-make-lambda-lexenv)
(byte-compile-make-args-desc): New funs.
(byte-compile-lambda): Handle lexical functions.  Always return
a byte-code-function.
(byte-compile-reserved-constants): New var, to make up room for
closed-over variables.
(byte-compile-constants-vector): Obey it.
(byte-compile-top-level): New args `lexenv' and `reserved-csts'.
(byte-compile-macroexpand-declare-function): New function.
(byte-compile-form): Call byte-compile-unfold-bcf to inline immediate
byte-code-functions.
(byte-compile-form): Check obsolescence here.
(byte-compile-inline-lapcode, byte-compile-unfold-bcf): New functions.
(byte-compile-variable-ref): Remove.
(byte-compile-dynamic-variable-op): New fun.
(byte-compile-dynamic-variable-bind, byte-compile-variable-ref)
(byte-compile-variable-set): New funs.
(byte-compile-discard): Add 2 args.
(byte-compile-stack-ref, byte-compile-stack-set)
(byte-compile-make-closure, byte-compile-get-closed-var): New funs.
(byte-compile-funarg, byte-compile-funarg-2): Remove, handled in
macroexpand-all instead.
(byte-compile-quote-form): Remove.
(byte-compile-push-binding-init, byte-compile-not-lexical-var-p)
(byte-compile-bind, byte-compile-unbind): New funs.
(byte-compile-let): Handle let* and lexical binding.
(byte-compile-let*): Remove.
(byte-compile-catch, byte-compile-unwind-protect)
(byte-compile-track-mouse, byte-compile-condition-case):
Handle a new :fun-body form, used for lexical scoping.
(byte-compile-save-window-excursion)
(byte-compile-with-output-to-temp-buffer): Remove.
(byte-compile-defun): Simplify.
(byte-compile-stack-adjustment): New fun.
(byte-compile-out): Use it.
(byte-compile-refresh-preloaded): Don't reload byte-compiler files.

* lisp/emacs-lisp/cconv.el: New file.

* lisp/emacs-lisp/cl-extra.el (cl-macroexpand-all): Properly quote CL
closures.

* lisp/emacs-lisp/cl-macs.el (cl-byte-compile-block)
(cl-byte-compile-throw): Remove.
(cl-block-wrapper, cl-block-throw): Use compiler-macros instead.

* lisp/emacs-lisp/cl.el (pushnew): Silence warning.

* lisp/emacs-lisp/disass.el (disassemble-internal): Handle new
`closure' objects.
(disassemble-1): Handle new byte codes.

* lisp/emacs-lisp/edebug.el (edebug-eval-defun)
(edebug-eval-top-level-form): Use eval-sexp-add-defvars.
(edebug-toggle): Avoid `eval'.

* lisp/emacs-lisp/eieio-comp.el: Remove.

* lisp/emacs-lisp/eieio.el (byte-compile-file-form-defmethod):
Don't autoload.
(eieio-defgeneric-form-primary-only-one): Use `byte-compile' rather
than the internal `byte-compile-lambda'.
(defmethod): Don't hide code under quotes.
(eieio-defmethod): New `code' argument.

* lisp/emacs-lisp/float-sup.el (pi): Don't declare as dynamically bound.

* lisp/emacs-lisp/lisp-mode.el (eval-last-sexp-1):
Use eval-sexp-add-defvars.
(eval-sexp-add-defvars): New fun.

* lisp/emacs-lisp/macroexp.el: Use lexical binding.
(macroexpand-all-1): Check obsolete macros.  Expand compiler-macros.
Don't convert ' to #' without checking that it's indeed quoting
a lambda.

* lisp/emacs-lisp/pcase.el: Don't use destructuring-bind.
(pcase--memoize): Rename from pcase-memoize.  Change weakness.
(pcase): Add `let' pattern.
Change memoization so it actually works.
(pcase-mutually-exclusive-predicates): Add byte-code-function-p.
(pcase--u1) <guard, pred>: Fix possible shadowing problem.
<let>: New case.

* src/alloc.c (Fmake_symbol): Init new `declared_special' field.

* src/buffer.c (defvar_per_buffer): Set new `declared_special' field.

* src/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.

* src/callint.c (Fcall_interactively): Preserve lexical-binding mode for
interactive spec.

* src/doc.c (Fdocumentation, store_function_docstring):
* src/data.c (Finteractive_form): Handle closures.

* src/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.

* src/fns.c (concat, mapcar1): Accept byte-code-functions.

* src/image.c (parse_image_spec): Use Ffunctionp.

* src/keyboard.c (eval_dyn): New fun.
(menu_item_eval_property): Use it.

* src/lisp.h (struct Lisp_Symbol): New field `declared_special'.

* src/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'.

* src/window.c (Ftemp_output_buffer_show): New fun.
(Fsave_window_excursion):
* src/print.c (Fwith_output_to_temp_buffer): Move to subr.el.
2011-04-01 13:19:52 -04:00