summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
...
* Miscellaneous tweaks.Stefan Monnier2011-06-015-32/+52
| | | | | | | | | | | | | | | * 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.
* * lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer'sStefan Monnier2011-05-311-6/+15
| | | | content but also its previous major mode.
* * debug.el (debug): Restore the previous content of theHelmut Eller2011-05-311-0/+3
| | | | *Backtrace* buffer when we exit with C-M-c.
* * bytecomp.el (byte-compile-defvar): Add note about quoted lambda.Stefan Monnier2011-05-301-0/+2
|
* * emacs-lisp/re-builder.el (re-builder): Improve doc (Bug#8286).Chong Yidong2011-05-281-2/+7
|
* * lisp/emacs-lisp/avl-tree.el: New avl-tree-stack datatype. Add newToby Cubitt2011-05-271-51/+253
| | | | | | | | | | | | | | | 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.
* * lisp/emacs-lisp/avl-tree.el (avl-tree--del-balance): Rename fromToby Cubitt2011-05-271-220/+216
| | | | | | | | | | | 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.
* Don't quote lambda expressions with `quote'.Stefan Monnier2011-05-235-14/+13
|
* * lisp/emacs-lisp/lisp.el (up-list): Fix forward movement.Stefan Monnier2011-05-231-6/+6
| | | | Fixes: debbugs:8708
* * lisp/emacs-lisp/advice.el (ad-read-advised-function):Kevin Ryde2011-05-231-2/+13
| | | | | Use `function-called-at-point' as the default default, if it has advice and passes PREDICATE.
* * lisp/emacs-lisp/bytecomp.el (byte-compile-function-form): Only callStefan Monnier2011-05-221-3/+3
| | | | byte-compile-lambda if it's actually a lambda.
* * lisp/emacs-lisp/eieio.el (eieio-defgeneric-form-primary-only-one):Stefan Monnier2011-05-221-9/+8
| | | | Fix function quoting. Use backquote better.
* * lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Convert ' to #' forStefan Monnier2011-05-222-3/+11
| | | | | | | funcall as well. Warn when performing those conversions. * lisp/emacs-lisp/bytecomp.el (byte-compile-form): Fix error report. Fixes: debbugs:8712
* * lisp/emacs-lisp/checkdoc.el (checkdoc-sentencespace-region-engine):Stefan Monnier2011-05-201-1/+1
| | | | Also allow singlespace after single-letter capitals followed by a dot.
* Remove the SOME_MACHINE_LISP distinction in src/Makefile.in.Glenn Morris2011-05-181-45/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* * lisp/emacs-lisp/authors.el (authors-fixed-entries): Remove fakemail.cGlenn Morris2011-05-171-1/+1
|
* * lisp/emacs-lisp/eieio.el (defmethod): Fix quoting of code.Stefan Monnier2011-05-161-1/+1
| | | | Fixes: debbugs:8677
* Common Lisp indentation improvements on defmethod and lambda-lists.Didier Verna2011-05-131-35/+146
| | | | | | | | | | | | | | | * 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.
* Merge from emacs-23; up to 2010-06-10T12:56:11Z!michael.albinus@gmx.de.Glenn Morris2011-05-121-3/+3
|\
| * * lisp/emacs-lisp/lisp.el (lisp-complete-symbol, lisp-completion-at-point):Stefan Monnier2011-05-091-2/+3
| | | | | | | | Fix typo.
| * Backport 2011-03-01T03:59:31Z!lekktu@gmail.com from trunk.Juanma Barranquero2011-03-112-3/+3
| | | | | | | | *lisp/emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring.
* | bytecomp.el fix for bug#8647Glenn Morris2011-05-111-1/+5
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): Let byte-compile-initial-macro-environment always take precedence.
* | Revert accidental portion of previous bytecomp.el commit.Glenn Morris2011-05-111-2/+1
| |
* | bytecomp.el partial fix for bug#8646.Glenn Morris2011-05-111-1/+9
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn): Handle symbol elements of byte-compile-initial-macro-environment.
* | * lisp/emacs-lisp/eieio.el (defmethod): Fix typo in last change.Stefan Monnier2011-05-071-2/+2
| |
* | Make bytecomp.el understand that defmethod defines functions.Stefan Monnier2011-05-072-32/+44
| | | | | | | | | | | | | | | | | | | | * 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
* | Small check-declare fix.Glenn Morris2011-05-041-4/+6
| | | | | | | | | | * lisp/emacs-lisp/check-declare.el (check-declare-scan): Handle byte-compile-initial-macro-environment in bytecomp.el
* | Fix earlier half-done eieio-defmethod change.Stefan Monnier2011-05-051-80/+44
| | | | | | | | | | | | | | | | | | | | | | * 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
* | lisp/emacs-lisp/warnings.el: Tiny fixes.Juanma Barranquero2011-05-051-53/+53
| | | | | | | | | | | | * 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.
* | Make autoloading commands prompt for autoload file (Bug#7989)Chong Yidong2011-05-041-29/+48
| | | | | | | | | | | | | | | | | | | | | | * 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.
* | * emacs-lisp/autoload.el (generated-autoload-file): Doc fix (Bug#7989).Chong Yidong2011-05-031-4/+12
| |
* | Restore ability to show a restricted list of packages in Package Menu.Chong Yidong2011-04-241-21/+37
| | | | | | | | | | | | | | | | | | | | | | * 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.
* | Doc fixes for package.el.Chong Yidong2011-04-211-26/+34
| | | | | | | | | | | | | | | | | | * 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.
* | * lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code,Stefan Monnier2011-04-201-5/+4
| | | | | | | | add sanity check.
* | Allow glyphless-char-display to distinguish between X and text terminals.Chong Yidong2011-04-181-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | * lisp/emacs-lisp/lisp-mode.el (eval-defun-2): Use eval-sexp-add-defvars.Stefan Monnier2011-04-151-1/+1
| |
* | * lisp/emacs-lisp/bytecomp.el (byte-temp-output-buffer-show)Stefan Monnier2011-04-151-6/+5
| | | | | | | | | | (byte-save-window-excursion, byte-temp-output-buffer-setup) (byte-interactive-p): Define them again, for use when inlining old code.
* | Preserve arg names for advice of subr and lexical functions.Stefan Monnier2011-04-131-126/+15
| | | | | | | | | | | | | | | | | | | | | | | | * 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
* | Fix typo in tabulated-list-print-entryLeo Liu2011-04-101-1/+1
| |
* | Remove list-processes C function; misc fixes to last change.Chong Yidong2011-04-062-6/+8
| | | | | | | | | | | | | | | | | | | | | | * 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.
* | Make Package Menu a child of Tabulated List mode.Chong Yidong2011-04-061-296/+164
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* | * lisp/emacs-lisp/tabulated-list.el: New file.Chong Yidong2011-04-061-0/+355
| |
* | Convert some .el files to lexical scoping.Juanma Barranquero2011-04-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* | Merge open-protocol-stream into open-network-stream.Chong Yidong2011-04-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* | Merge from lexical-binding branch.Stefan Monnier2011-04-0119-1440/+2516
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
| * | Miscellanous cleanups in preparation for the merge.Stefan Monnier2011-04-0110-129/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Remove debug statement. * lisp/emacs-lisp/bytecomp.el (byte-compile-single-version) (byte-compile-version-cond, byte-compile-delay-out) (byte-compile-delayed-out): Remove, unused. * src/bytecode.c (Fbyte_code): Revert to old calling convention. * src/lisp.h (COMPILED_PUSH_ARGS): Remove, unused.
| * | Merge from trunkStefan Monnier2011-03-311-1/+1
| |\ \ | |/ / |/| |
| * | * lisp/subr.el (apply-partially): Use a non-nil static environment.Stefan Monnier2011-03-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | (--dolist-tail--, --dotimes-limit--): Don't declare dynamically bound. (dolist): Use a more efficient form for lexical-binding. (dotimes): Use a cleaner semantics for lexical-binding. * lisp/emacs-lisp/edebug.el (edebug-eval-top-level-form): Use eval-sexp-add-defvars.
| * | Fix C-M-x in lexbind mode. Misc tweaks.Stefan Monnier2011-03-244-4/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/startup.el: Convert to lexical-binding. Mark unused arguments. (command-line-1): Get rid of the "cl1-" prefix now that we use lexical scoping instead. * lisp/emacs-lisp/float-sup.el (pi): Leave it lexically scoped. * lisp/emacs-lisp/lisp-mode.el (eval-sexp-add-defvars): New fun. (eval-last-sexp-1): Use eval-sexp-add-defvars. * lisp/emacs-lisp/edebug.el (edebug-eval-defun): Use eval-sexp-add-defvars. * lisp/emacs-lisp/cconv.el (cconv--analyse-function): Fix `report-error/log-warning' mixup.
| * | Clean up left over Emacs-18/19 code, inline byte-code-functions.Stefan Monnier2011-03-223-245/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/byte-opt.el (byte-inline-lapcode): Move to bytecomp.el. (byte-compile-inline-expand): Inline all bytecompiled functions. Unify the inlining code of the lexbind and dynbind interpreted functions. (byte-compile-unfold-lambda): Don't handle byte-compiled functions at all. (byte-optimize-form-code-walker): Don't optimize byte-compiled inlined functions here. (byte-compile-splice-in-already-compiled-code): Remove. (byte-code): Don't optimize it any more. (byte-decompile-bytecode-1): Remove unused bytedecomp-bytes. Leave `byte-return's even for `make-spliceable'. * lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): byte-compile-lambda now always returns a byte-code-function. (byte-compile-byte-code-maker, byte-compile-byte-code-unmake) (byte-compile-closure): Remove. (byte-compile-lambda): Always return a byte-code-function. (byte-compile-top-level): Don't handle `byte-code' forms specially. (byte-compile-inline-lapcode): New function, taken from byte-opt.el. (byte-compile-unfold-bcf): New function. (byte-compile-form): Use it to optimize inline byte-code-functions. (byte-compile-function-form, byte-compile-defun): Simplify. (byte-compile-defmacro): Don't bother calling byte-compile-byte-code-maker.