(ad-subr-arglist): Simplify.
This commit is contained in:
parent
4e7d022119
commit
35abd1e238
1 changed files with 23 additions and 24 deletions
|
@ -1,6 +1,6 @@
|
|||
;;; advice.el --- an overloading mechanism for Emacs Lisp functions
|
||||
|
||||
;; Copyright (C) 1993,1994,2000, 2001 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1993,1994,2000,01,2004 Free Software Foundation, Inc.
|
||||
|
||||
;; Author: Hans Chalupsky <hans@cs.buffalo.edu>
|
||||
;; Maintainer: FSF
|
||||
|
@ -2563,29 +2563,28 @@ supplied to make subr arglist lookup more efficient."
|
|||
Either use the one stored under the `ad-subr-arglist' property,
|
||||
or try to retrieve it from the docstring and cache it under
|
||||
that property, or otherwise use `(&rest ad-subr-args)'."
|
||||
(cond ((ad-subr-args-defined-p subr-name)
|
||||
(ad-get-subr-args subr-name))
|
||||
;; says jwz: Should use this for Lemacs 19.8 and above:
|
||||
;;((fboundp 'subr-min-args)
|
||||
;; ...)
|
||||
;; says hans: I guess what Jamie means is that I should use the values
|
||||
;; of `subr-min-args' and `subr-max-args' to construct the subr arglist
|
||||
;; without having to look it up via parsing the docstring, e.g.,
|
||||
;; values 1 and 2 would suggest `(arg1 &optional arg2)' as an
|
||||
;; argument list. However, that won't work because there is no
|
||||
;; way to distinguish a subr with args `(a &optional b &rest c)' from
|
||||
;; one with args `(a &rest c)' using that mechanism. Also, the argument
|
||||
;; names from the docstring are more meaningful. Hence, I'll stick with
|
||||
;; the old way of doing things.
|
||||
(t (let ((doc (or (ad-real-documentation subr-name t) "")))
|
||||
(cond ((string-match "^\\(([^\)]+)\\)\n?\\'" doc)
|
||||
(ad-define-subr-args
|
||||
subr-name
|
||||
(cdr (car (read-from-string
|
||||
(downcase (match-string 1 doc))))))
|
||||
(ad-get-subr-args subr-name))
|
||||
;; This is actually an error.
|
||||
(t '(&rest ad-subr-args)))))))
|
||||
(if (ad-subr-args-defined-p subr-name)
|
||||
(ad-get-subr-args subr-name)
|
||||
;; says jwz: Should use this for Lemacs 19.8 and above:
|
||||
;;((fboundp 'subr-min-args)
|
||||
;; ...)
|
||||
;; says hans: I guess what Jamie means is that I should use the values
|
||||
;; of `subr-min-args' and `subr-max-args' to construct the subr arglist
|
||||
;; without having to look it up via parsing the docstring, e.g.,
|
||||
;; values 1 and 2 would suggest `(arg1 &optional arg2)' as an
|
||||
;; argument list. However, that won't work because there is no
|
||||
;; way to distinguish a subr with args `(a &optional b &rest c)' from
|
||||
;; one with args `(a &rest c)' using that mechanism. Also, the argument
|
||||
;; names from the docstring are more meaningful. Hence, I'll stick with
|
||||
;; the old way of doing things.
|
||||
(let ((doc (or (ad-real-documentation subr-name t) "")))
|
||||
(if (not (string-match "\n\n\\((.+)\\)\\'" doc))
|
||||
(error "The usage info is missing from the subr %s" subr-name)
|
||||
(ad-define-subr-args
|
||||
subr-name
|
||||
(cdr (car (read-from-string
|
||||
(downcase (match-string 1 doc))))))
|
||||
(ad-get-subr-args subr-name)))))
|
||||
|
||||
(defun ad-docstring (definition)
|
||||
"Return the unexpanded docstring of DEFINITION."
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue