Commit graph

3631 commits

Author SHA1 Message Date
Glenn Morris
5c9cf0a3f9 Merge from emacs-24; up to 2012-11-20T20:06:17Z!monnier@iro.umontreal.ca 2012-11-26 19:10:32 -08:00
Stefan Monnier
848a2dd19d * lisp/emacs-lisp/advice.el (ad-should-compile): Don't compile advice if the
base function is not yet defined.
(ad-activate-advised-definition): Use ad-compile-function.
(ad-activate): Use cond.

Fixes: debbugs:12965
2012-11-26 14:56:14 -05:00
Glenn Morris
0d35edba15 Auto-commit of loaddefs files. 2012-11-25 07:23:32 -05:00
Chong Yidong
1c4f115d4c Revamp face-spec-set to be more analogous to setq for faces.
* lisp/faces.el (face-spec-set): Change the third arg to specify
whether this function is being called via defface, customize, or a
third party.  Set the appropriate symbol properties.  Clear the
override spec if setting via Custom.  Initialize face if necessary.
(face-spec-recalc): Allow theme faces to completely replace the
defface spec, in the same way as custom faces (Bug#8454).

* lisp/cus-edit.el (custom-face-set, custom-face-mark-to-save)
(custom-face-reset-saved, custom-face-mark-to-reset-standard):
Simplify by using the new arg to face-spec-set.

* lisp/cus-face.el (custom-declare-face): Move face initialization to
face-spec-set.
(custom-theme-set-faces): Don't initialize the face name here, as
that is now done in face-spec-set.

* lisp/emacs-lisp/lisp-mode.el (eval-defun-1): When evaluating defface,
reset face-override-spec too, and use custom-declare-face.

Fixes: debbugs:4988
2012-11-25 12:50:20 +08:00
Stefan Monnier
35a1051652 * lisp/emacs-lisp/cl-macs.el (cl--transform-lambda): Add back `declare' in
the constructs to keep outside of the `cl-block'.

Fixes: debbugs:12977
2012-11-24 16:34:28 -05:00
Glenn Morris
d125ca15f3 Merge from emacs-24; up to 2012-11-19T11:36:02Z!yamaoka@jpl.org 2012-11-23 17:57:09 -08:00
Stefan Monnier
002c019c34 * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Setup default value for
lexical-binding.

Fixes: debbugs:12938
2012-11-23 16:49:13 -05:00
Stefan Monnier
15c9d04ea4 * emacs-lisp/ert.el, emacs-lisp/ert-x.el: Use cl-lib and lexical-binding. 2012-11-22 22:26:09 -05:00
Glenn Morris
6ef2e5ef52 Merge from emacs-24; up to 2012-11-17T22:12:47Z!eggert@cs.ucla.edu 2012-11-20 20:47:55 -08:00
Stefan Monnier
8b62d7427e * lisp/emacs-lisp/trace.el: Rewrite, use nadvice and lexical-binding.
(trace-buffer): Don't purecopy.
(trace-entry-message, trace-exit-message): Add `context' arg.
(trace--timer): New var.
(trace-make-advice): Adjust for use in nadvice.
Add `context' argument.  Delay `display-buffer' via a timer.
(trace-function-internal): Use advice-add.
(trace--read-args): New function.
(trace-function-foreground, trace-function-background): Use it.
(trace-function): Rename to trace-function-foreground and redefine as
an alias to that new name.
(untrace-function, untrace-all): Adjust to the use of nadvice.
2012-11-20 14:30:37 -05:00
Stefan Monnier
5d0ccd9509 * lisp/emacs-lisp/bytecomp.el (byte-compile): Fix handling of closures. 2012-11-20 14:05:20 -05:00
Stefan Monnier
3837d988dd * lisp/emacs-lisp/byte-run.el (defun-declarations-alist): Fix last change. 2012-11-20 12:54:00 -05:00
Stefan Monnier
23ba2705e2 Make called-interactively-p work for edebug or advised code.
* lisp/subr.el (called-interactively-p-functions): New var.
(internal--called-interactively-p--get-frame): New macro.
(called-interactively-p, interactive-p): Rewrite in Lisp.
* lisp/emacs-lisp/nadvice.el (advice--called-interactively-skip): New fun.
(called-interactively-p-functions): Use it.
* lisp/emacs-lisp/edebug.el (edebug--called-interactively-skip): New fun.
(called-interactively-p-functions): Use it.
* lisp/allout.el (allout-called-interactively-p): Don't assume
called-interactively-p is a subr.
* src/eval.c (Finteractive_p, Fcalled_interactively_p, interactive_p): Remove.
(syms_of_eval): Remove corresponding defsubr.
* src/bytecode.c (exec_byte_code): `interactive-p' is now a Lisp function.
* test/automated/advice-tests.el (advice-tests--data): Remove.
(advice-tests): Move the tests directly here instead.
Add called-interactively-p tests.
2012-11-19 23:24:09 -05:00
Stefan Monnier
141462223d * lisp/emacs-lisp/byte-run.el (defun-declarations-alist):
Allow compiler-macros to be lambda expressions.
* lisp/progmodes/python.el: Use cl-lib.  Move var declarations outside of
eval-when-compile.
(python-syntax-context): Add compiler-macro.
(python-font-lock-keywords): Simplify with De Morgan.
2012-11-19 16:30:55 -05:00
Stefan Monnier
63f251724c * lisp/emacs-lisp/byte-run.el (defun-declarations-alist): Don't accept
non-symbols for compiler macros (yet).
2012-11-19 15:57:36 -05:00
Stefan Monnier
bc715d67b3 * lisp/emacs-lisp/ert.el (ert--expand-should-1): Adapt to cl-lib. 2012-11-19 12:02:20 -05:00
Glenn Morris
2ac9538d67 Merge from emacs-24; up to 2012-11-15T23:31:37Z!dancol@dancol.org 2012-11-17 17:52:36 -08:00
Glenn Morris
d76afb936d Auto-commit of loaddefs files. 2012-11-17 06:20:58 -05:00
Chong Yidong
ec6f8ce637 * lisp/emacs-lisp/syntax.el (syntax-propertize-function): Doc fix.
Fixes: debbugs:12810
2012-11-17 15:33:01 +08:00
Glenn Morris
9a5e2ee3cc Use set-face-underline rather than the alias set-face-underline-p
* lisp/woman.el (woman-non-underline-faces):
* lisp/emacs-lisp/cl-lib.el (face-underline-p):
Use set-face-underline rather than the alias set-face-underline-p.
2012-11-16 20:29:24 -05:00
Stefan Monnier
dd0c5bbb36 * lisp/emacs-lisp/advice.el (ad-make-advised-definition): Improve last fix. 2012-11-16 13:02:39 -05:00
Glenn Morris
96e055075d Merge from emacs-24; up to 2012-11-13T18:57:26Z!dgutov@yandex.ru 2012-11-16 09:20:23 -08:00
Stefan Monnier
cdc5d88cf6 * lisp/emacs-lisp/cl-lib.el: Set more meaningful version number. 2012-11-16 10:59:40 -05:00
Glenn Morris
2a07c70a94 Auto-commit of loaddefs files. 2012-11-16 07:17:47 -05:00
Juanma Barranquero
662b0ee67c lisp/emacs-lisp/cl-macs.el (cl-loop, cl-do, cl-do*): Doc fixes. 2012-11-15 22:01:25 +01:00
Stefan Monnier
eb31fa401d * lisp/emacs-lisp/cl-macs.el (cl-flet, cl-flet*): Fix docstring.
Fixes: debbugs:12895
2012-11-15 13:35:05 -05:00
Stefan Monnier
1232d6c2e4 * lisp/emacs-lisp/advice.el (ad-definition-type): Make sure we don't use
a preactivated advice from an old advice.el; they're not compatible!
2012-11-14 23:42:14 -05:00
Katsumi Yamaoka
47f01a8af9 * lisp/emacs-lisp/advice.el (ad-make-advised-definition): Fix undefined case.
* lisp/emacs-lisp/nadvice.el (advice--make-interactive-form):
Fix string-spec case.
2012-11-14 22:30:25 -05:00
Stefan Monnier
a61428c42d * lisp/emacs-lisp/nadvice.el: Add buffer-local support to add-function.
(advice--buffer-local-function-sample): New var.
(advice--set-buffer-local, advice--buffer-local): New functions.
(add-function, remove-function): Use them.
2012-11-14 22:20:49 -05:00
Stefan Monnier
3a514ab07e Backport fix for bug#12879 from trunk
* lisp/emacs-lisp/gv.el (setf): Fix debug spec for multiple assignments
2012-11-14 20:27:52 -05:00
Stefan Monnier
589fc4791f * lisp/emacs-lisp/cl-macs.el (cl--transform-lambda): Defend against
potential binding of print-gensym to t, and prettify (back)quotes in
case they appear in args's default values.

Fixes: debbugs:12884
2012-11-14 20:26:52 -05:00
Stefan Monnier
1668ea9062 * lisp/emacs-lisp/nadvice.el: Add around advice for interactive specs.
(advice-eval-interactive-spec): New function.
(advice--make-interactive-form): Support around advice.

Fixes: debbugs:12844
2012-11-14 15:27:42 -05:00
Stefan Monnier
9c3912d3d9 * lisp/emacs-lisp/gv.el (setf): Fix debug spec for multiple assignments.
Fixes: debbugs:12879
2012-11-13 20:12:52 -05:00
Tsuyoshi Kitamoto
a77b8d5eb0 * emacs-lisp/advice.el: Fix typos in comment. 2012-11-13 13:09:20 -05:00
Stefan Monnier
3c442f8b25 * lisp/emacs-lisp/advice.el: Layer on top of nadvice.el.
Remove out of date self-require hack.
(ad-do-advised-functions): Use simple `dolist'.
(ad-advice-name, ad-advice-protected, ad-advice-enabled)
(ad-advice-definition): Redefine as functions.
(ad-advice-classes): Move before first use.
(ad-make-origname, ad-set-orig-definition, ad-clear-orig-definition)
(ad-make-mapped-call, ad-make-advised-docstring, ad-make-plain-docstring)
(ad--defalias-fset): Remove functions.
(ad-make-advicefunname, ad-clear-advicefunname-definition): New functions.
(ad-get-orig-definition): Rewrite.
(ad-make-advised-definition-docstring): Change base docstring.
(ad-real-orig-definition): Rewrite.
(ad-map-arglists): Change name of called function.
(ad--make-advised-docstring): Redirect `function' from ad-Advice-...
(ad-make-advised-definition): Simplify.
(ad-assemble-advised-definition): Tweak for new calling context.
(ad-activate-advised-definition): Setup ad-Advice-* instead of ad-Orig-*.
(ad--defalias-fset): Rename from ad-handle-definition.  Make it set the
function and call ad-activate if needed.
(ad-activate, ad-deactivate): Don't call ad-handle-definition any more.
(ad-recover): Clear ad-Advice-* instead of ad-Orig-*.
(ad-compile-function): Compile ad-Advice-*.
(ad-activate-on-top-level, ad-with-auto-activation-disabled): Remove.
(ad-start-advice, ad-stop-advice): Remove.
2012-11-13 09:12:46 -05:00
Stefan Monnier
7db1bda8a4 * lisp/emacs-lisp/advice.el: Remove support for freezing.
(ad-make-freeze-docstring, ad-make-freeze-definition): Remove functions.
(ad-make-single-advice-docstring, ad-defadvice-flags, defadvice):
Remove support for `freeze'.
2012-11-12 23:05:35 -05:00
Glenn Morris
7b1bf1735e Use new names for hooks rather than obsolete aliases
* lisp/cedet/semantic/lex-spp.el (semantic-lex-spp-lex-text-string):
* lisp/cedet/semantic/util.el (semantic-describe-buffer):
* lisp/cedet/semantic/bovine/c.el (semantic-c-parse-lexical-token)
(semantic-default-c-setup):
* lisp/emacs-lisp/eieio-datadebug.el (eieio-debug-methodinvoke):
* lisp/gnus/gnus-diary.el (nndiary-request-create-group-functions)
(nndiary-request-update-info-functions)
(gnus-subscribe-newsgroup-functions)
(nndiary-request-accept-article-functions):
* lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-error):
Use new names for hooks rather than obsolete aliases.

* lisp/arc-mode.el:
* lisp/emacs-lisp/checkdoc.el: Related comments.

* etc/NEWS: Related markup.
2012-11-12 19:11:46 -08:00
Stefan Monnier
413d4689c0 * lisp/emacs-lisp/cl.el (dolist, dotimes, declare): Use advice-add to
override the default.
* lisp/emacs-lisp/cl-macs.el (cl-dolist, cl-dotimes): Rewrite without using
cl--dotimes/dolist.
* lisp/subr.el (dolist, dotimes, declare): Redefine them normally, even when
`cl' is loaded.

* lisp/emacs-lisp/nadvice.el (advice--normalize): New function, extracted
from add-advice.
(advice--strip-macro): New function.
(advice--defalias-fset): Use them to handle macros.
(advice-add): Use them.
(advice-member-p): Correctly handle macros.
2012-11-12 22:00:09 -05:00
Glenn Morris
f78ee6afc0 Merge from emacs-24; up to 2012-11-09T14:45:15Z!dmantipov@yandex.ru 2012-11-12 18:25:59 -08:00
Stefan Monnier
f8705f6e31 * lisp/emacs-lisp/gv.el (gv-define-simple-setter): One more fix.
Fixes: debbugs:12871
2012-11-12 16:31:15 -05:00
Stefan Monnier
231d8498eb * lisp/emacs-lisp/nadvice.el: New package.
* lisp/subr.el (special-form-p): New function.
* lisp/emacs-lisp/elp.el: Use lexical-binding and advice-add.
(elp-all-instrumented-list): Remove var.
(elp-not-profilable): Remove elp-wrapper.
(elp-profilable-p): Use autoloadp and special-form-p.
(elp--advice-name): New const.
(elp-instrument-function): Use advice-add.
(elp--instrumented-p): New predicate.
(elp-restore-function): Use advice-remove.
(elp-restore-all, elp-reset-all): Use mapatoms.
(elp-set-master): Use elp--instrumented-p.
(elp--make-wrapper): Rename from elp-wrapper, return a function
suitable for advice-add.  Use cl-inf.
(elp-results): Use mapatoms+elp--instrumented-p.
* lisp/emacs-lisp/debug.el: Use lexical-binding and advice-add.
(debug-function-list): Remove var.
(debug): Rename arg, and then let-bind it explicitly inside.
(debugger-setup-buffer): Rename arg.
(debugger-setup-buffer): Adjust counts to new debug-on-entry setup.
(debugger-frame-number): Adjust to new debug-on-entry setup.
(debug--implement-debug-on-entry): Rename from
implement-debug-on-entry, add argument.
(debugger-special-form-p): Remove, use special-form-p instead.
(debug-on-entry): Use advice-add.
(debug--function-list): New function.
(cancel-debug-on-entry): Use it, along with advice-remove.
(debug-arglist, debug-convert-byte-code, debug-on-entry-1): Remove.
(debugger-list-functions): Use debug--function-list instead of
debug-function-list.
* lisp/emacs-lisp/advice.el (ad-save-real-definition): Remove, unused.
(ad-special-form-p): Remove, use special-form-p instead.
(ad-set-advice-info): Use add-function and remove-function.
(ad--defalias-fset): Adjust accordingly.
* test/automated/advice-tests.el: New tests.
2012-11-12 15:43:43 -05:00
Glenn Morris
c02ed5ace8 Auto-commit of loaddefs files. 2012-11-11 06:22:06 -05:00
Glenn Morris
57fc0fee5f Document debugger-bury-or-kill
* doc/lispref/debugging.texi (Using Debugger): Mention debugger-bury-or-kill.

* lisp/emacs-lisp/debug.el (debugger-bury-or-kill): Doc tweak.

* etc/NEWS: Related edit.
2012-11-10 17:16:25 -08:00
Glenn Morris
68146aa5ab * lisp/emacs-lisp/debug.el (debugger-bury-or-kill): Fix :version. 2012-11-10 16:40:37 -08:00
Glenn Morris
6baf66d53b Merge from emacs-24; up to 2012-11-08T14:54:03Z!monnier@iro.umontreal.ca 2012-11-10 15:13:33 -08:00
Stefan Monnier
32e5c58ca9 Provide new `defalias-fset-function' symbol property.
* src/lisp.h (AUTOLOADP): New macro.
* src/eval.c (Fautoload): Don't attach to loadhist, call Fdefalias instead.
* src/data.c (Ffset): Remove special ad-advice-info handling.
(Fdefalias): Handle autoload definitions and new Qdefalias_fset_function.
(Fsubr_arity): CSE.
(Finteractive_form): Simplify.
(Fquo): Don't insist on having at least 2 arguments.
(Qdefalias_fset_function): New var.
* lisp/emacs-lisp/advice.el (ad-set-advice-info): Set defalias-fset-function.
(ad--defalias-fset): New function.
(ad-safe-fset): Remove.
(ad-make-freeze-definition): Use cl-letf*.
2012-11-09 17:20:47 -05:00
Stefan Monnier
6858633a9c * lisp/emacs-lisp/advice.el: Miscellaneous cleanup. Use lexical-binding.
(fset, documentation): Don't save real def since we don't advise.
(ad-do-advised-functions): Remove problematic `result-form'.
(ad-safe-fset): `ad-real-fset' => `fset'.
(ad-read-advised-function): Don't assume that ad-do-advised-functions
uses CL's dolist internally.
(ad-arglist): Remove unused arg `name'.
(ad-docstring, ad-make-advised-docstring):
`ad-real-documentation' => `documentation'.
(warning-suppress-types): Declare.
(ad-set-arguments): Simple CSE.
(ad-recover-normality): Sanity check.
2012-11-09 15:41:03 -05:00
Stefan Monnier
f5925cd9f5 * lisp/emacs-lisp/bytecomp.el (byte-compile-out-toplevel): Don't turn
(funcall '(lambda ..) ..) into ((lambda ..) ..).
2012-11-09 10:56:51 -05:00
Stefan Monnier
57618ecf33 New property dynamic-docstring-function for docstrings.
* src/doc.c (Fdocumentation): Handle new property
dynamic-docstring-function to replace the old ad-advice-info.
* lisp/emacs-lisp/advice.el: Use new dynamic docstrings.
(ad-make-advised-definition-docstring, ad-advised-definition-p):
Use dynamic-docstring-function instead of ad-advice-info.
(ad--make-advised-docstring): New function extracted from
ad-make-advised-docstring.
(ad-make-advised-docstring): Use it.
* lisp/progmodes/sql.el (sql--make-help-docstring): New function, extracted
from sql-help.
(sql-help): Use it with dynamic-docstring-function.
2012-11-08 23:10:16 -05:00
Stefan Monnier
e703069f9c * lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
Byte-compile *before* eval in eval-and-compile.
(byte-compile-log-warning): Remove redundant inhibit-read-only.
(byte-compile-file-form-autoload): Don't hide actual definition.
(byte-compile-maybe-guarded): Accept `functionp' as well.
2012-11-08 09:58:15 -05:00