mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-30 04:10:54 -08:00
* eval.c (Fcalled_interactively_p): Add `kind' argument.
* subr.el (interactive-p): Mark obsolete. (called-interactively-p): Make the optional-ness of `kind' obsolete. * emacs-lisp/bytecomp.el (byte-compile-fdefinition): Make it obey advertised-signature-table for subroutines as well.
This commit is contained in:
parent
ced10a4c9f
commit
9d28c33ede
6 changed files with 76 additions and 47 deletions
2
etc/NEWS
2
etc/NEWS
|
|
@ -246,6 +246,8 @@ Command*'.
|
|||
|
||||
* Lisp changes in Emacs 23.2
|
||||
|
||||
** called-interactively-p now takes one argument and replaces interactive-p
|
||||
which is now marked obsolete.
|
||||
** New function set-advertised-calling-convention makes it possible
|
||||
to obsolete arguments as well as make some arguments mandatory.
|
||||
** eval-next-after-load is obsolete.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
2009-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* subr.el (interactive-p): Mark obsolete.
|
||||
(called-interactively-p): Make the optional-ness of `kind' obsolete.
|
||||
* emacs-lisp/bytecomp.el (byte-compile-fdefinition): Make it obey
|
||||
advertised-signature-table for subroutines as well.
|
||||
|
||||
* emacs-lisp/byte-run.el (advertised-signature-table): New var.
|
||||
(set-advertised-calling-convention): New function.
|
||||
(make-obsolete, define-obsolete-function-alias)
|
||||
|
|
|
|||
|
|
@ -1248,7 +1248,11 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
|
|||
(and (not macro-p)
|
||||
(byte-code-function-p (symbol-function fn)))))
|
||||
(setq fn (symbol-function fn)))
|
||||
(let ((advertised (gethash fn advertised-signature-table t)))
|
||||
(let ((advertised (gethash (if (and (symbolp fn) (fboundp fn))
|
||||
;; Could be a subr.
|
||||
(symbol-function fn)
|
||||
fn)
|
||||
advertised-signature-table t)))
|
||||
(cond
|
||||
((listp advertised)
|
||||
(if macro-p
|
||||
|
|
@ -3104,14 +3108,14 @@ That command is designed for interactive use only" bytecomp-fn))
|
|||
;; which have special byte codes just for speed.
|
||||
|
||||
(defmacro byte-defop-compiler (function &optional compile-handler)
|
||||
;; add a compiler-form for FUNCTION.
|
||||
;; If function is a symbol, then the variable "byte-SYMBOL" must name
|
||||
;; the opcode to be used. If function is a list, the first element
|
||||
;; is the function and the second element is the bytecode-symbol.
|
||||
;; The second element may be nil, meaning there is no opcode.
|
||||
;; COMPILE-HANDLER is the function to use to compile this byte-op, or
|
||||
;; may be the abbreviations 0, 1, 2, 3, 0-1, or 1-2.
|
||||
;; If it is nil, then the handler is "byte-compile-SYMBOL."
|
||||
"Add a compiler-form for FUNCTION.
|
||||
If function is a symbol, then the variable \"byte-SYMBOL\" must name
|
||||
the opcode to be used. If function is a list, the first element
|
||||
is the function and the second element is the bytecode-symbol.
|
||||
The second element may be nil, meaning there is no opcode.
|
||||
COMPILE-HANDLER is the function to use to compile this byte-op, or
|
||||
may be the abbreviations 0, 1, 2, 3, 0-1, or 1-2.
|
||||
If it is nil, then the handler is \"byte-compile-SYMBOL.\""
|
||||
(let (opcode)
|
||||
(if (symbolp function)
|
||||
(setq opcode (intern (concat "byte-" (symbol-name function))))
|
||||
|
|
|
|||
64
lisp/subr.el
64
lisp/subr.el
|
|
@ -1008,6 +1008,39 @@ and `event-end' functions."
|
|||
|
||||
;;;; Obsolescent names for functions.
|
||||
|
||||
(define-obsolete-function-alias 'window-dot 'window-point "22.1")
|
||||
(define-obsolete-function-alias 'set-window-dot 'set-window-point "22.1")
|
||||
(define-obsolete-function-alias 'read-input 'read-string "22.1")
|
||||
(define-obsolete-function-alias 'show-buffer 'set-window-buffer "22.1")
|
||||
(define-obsolete-function-alias 'eval-current-buffer 'eval-buffer "22.1")
|
||||
(define-obsolete-function-alias 'string-to-int 'string-to-number "22.1")
|
||||
|
||||
(make-obsolete 'char-bytes "now always returns 1." "20.4")
|
||||
(make-obsolete 'forward-point "use (+ (point) N) instead." "23.1")
|
||||
|
||||
(defun insert-string (&rest args)
|
||||
"Mocklisp-compatibility insert function.
|
||||
Like the function `insert' except that any argument that is a number
|
||||
is converted into a string by expressing it in decimal."
|
||||
(dolist (el args)
|
||||
(insert (if (integerp el) (number-to-string el) el))))
|
||||
(make-obsolete 'insert-string 'insert "22.1")
|
||||
|
||||
(defun makehash (&optional test) (make-hash-table :test (or test 'eql)))
|
||||
(make-obsolete 'makehash 'make-hash-table "22.1")
|
||||
|
||||
;; These are used by VM and some old programs
|
||||
(defalias 'focus-frame 'ignore "")
|
||||
(make-obsolete 'focus-frame "it does nothing." "22.1")
|
||||
(defalias 'unfocus-frame 'ignore "")
|
||||
(make-obsolete 'unfocus-frame "it does nothing." "22.1")
|
||||
(make-obsolete 'make-variable-frame-local
|
||||
"explicitly check for a frame-parameter instead." "22.2")
|
||||
(make-obsolete 'interactive-p 'called-interactively-p "23.2")
|
||||
(set-advertised-calling-convention 'called-interactively-p '(kind))
|
||||
|
||||
;;;; Obsolescence declarations for variables, and aliases.
|
||||
|
||||
;; Special "default-FOO" variables which contain the default value of
|
||||
;; the "FOO" variable are nasty. Their implementation is brittle, and
|
||||
;; slows down several unrelated variable operations; furthermore, they
|
||||
|
|
@ -1047,37 +1080,6 @@ and `event-end' functions."
|
|||
(make-obsolete-variable 'default-enable-multibyte-characters
|
||||
"use enable-multibyte-characters or set-buffer-multibyte instead" "23.2")
|
||||
|
||||
(define-obsolete-function-alias 'window-dot 'window-point "22.1")
|
||||
(define-obsolete-function-alias 'set-window-dot 'set-window-point "22.1")
|
||||
(define-obsolete-function-alias 'read-input 'read-string "22.1")
|
||||
(define-obsolete-function-alias 'show-buffer 'set-window-buffer "22.1")
|
||||
(define-obsolete-function-alias 'eval-current-buffer 'eval-buffer "22.1")
|
||||
(define-obsolete-function-alias 'string-to-int 'string-to-number "22.1")
|
||||
|
||||
(make-obsolete 'char-bytes "now always returns 1." "20.4")
|
||||
(make-obsolete 'forward-point "use (+ (point) N) instead." "23.1")
|
||||
|
||||
(defun insert-string (&rest args)
|
||||
"Mocklisp-compatibility insert function.
|
||||
Like the function `insert' except that any argument that is a number
|
||||
is converted into a string by expressing it in decimal."
|
||||
(dolist (el args)
|
||||
(insert (if (integerp el) (number-to-string el) el))))
|
||||
(make-obsolete 'insert-string 'insert "22.1")
|
||||
|
||||
(defun makehash (&optional test) (make-hash-table :test (or test 'eql)))
|
||||
(make-obsolete 'makehash 'make-hash-table "22.1")
|
||||
|
||||
;; These are used by VM and some old programs
|
||||
(defalias 'focus-frame 'ignore "")
|
||||
(make-obsolete 'focus-frame "it does nothing." "22.1")
|
||||
(defalias 'unfocus-frame 'ignore "")
|
||||
(make-obsolete 'unfocus-frame "it does nothing." "22.1")
|
||||
(make-obsolete 'make-variable-frame-local
|
||||
"explicitly check for a frame-parameter instead." "22.2")
|
||||
|
||||
;;;; Obsolescence declarations for variables, and aliases.
|
||||
|
||||
(make-obsolete-variable 'define-key-rebound-commands nil "23.2")
|
||||
(make-obsolete-variable 'redisplay-end-trigger-functions 'jit-lock-register "23.1")
|
||||
(make-obsolete 'window-redisplay-end-trigger nil "23.1")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
2009-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* eval.c (Fcalled_interactively_p): Add `kind' argument.
|
||||
|
||||
2009-10-01 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* fileio.c (Fdelete_directory_internal): Renamed from
|
||||
* fileio.c (Fdelete_directory_internal): Rename from
|
||||
Fdelete_directory. It is not a command anymore. It has no file
|
||||
name handler.
|
||||
|
||||
|
|
|
|||
24
src/eval.c
24
src/eval.c
|
|
@ -608,19 +608,31 @@ use `called-interactively-p'. */)
|
|||
}
|
||||
|
||||
|
||||
DEFUN ("called-interactively-p", Fcalled_interactively_p, Scalled_interactively_p, 0, 0, 0,
|
||||
DEFUN ("called-interactively-p", Fcalled_interactively_p, Scalled_interactively_p, 0, 1, 0,
|
||||
doc: /* Return t if the containing function was called by `call-interactively'.
|
||||
This includes being called as the binding of a key, or called from a
|
||||
keyboard macro (unlike `interactive-p').
|
||||
If KIND is `interactive', then only return t if the call was made
|
||||
interactively by the user, i.e. not in `noninteractive' mode nor
|
||||
when `executing-kbd-macro'.
|
||||
If KIND is `any', on the other hand, it will return t for any kind of
|
||||
interactive call, including being called as the binding of a key, or
|
||||
from a keyboard macro, or in `noninteractive' mode.
|
||||
|
||||
The only known proper use of `interactive' for KIND is in deciding
|
||||
whether to display a helpful message, or how to display it. If you're
|
||||
thinking of using it for any other purpose, it is quite likely that
|
||||
you're making a mistake. Think: what do you want to do when the
|
||||
command is called from a keyboard macro?
|
||||
|
||||
This function is meant for implementing advice and other
|
||||
function-modifying features. Instead of using this, it is sometimes
|
||||
cleaner to give your function an extra optional argument whose
|
||||
`interactive' spec specifies non-nil unconditionally (\"p\" is a good
|
||||
way to do this). */)
|
||||
()
|
||||
way to do this), or via (not (or executing-kbd-macro noninteractive)). */)
|
||||
(kind)
|
||||
Lisp_Object kind;
|
||||
{
|
||||
return interactive_p (1) ? Qt : Qnil;
|
||||
return ((INTERACTIVE || !EQ (kind, intern ("interactive")))
|
||||
&& interactive_p (1)) ? Qt : Qnil;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue