0
(defun magit-max-args-internal (function)
    "Return the maximum number of arguments accepted by FUNCTION."
    (if (symbolp function)
        (setq function (symbol-function function)))
    (if (subrp function)
        (let ((max (cdr (subr-arity function))))
          (if (eq 'many max)
              most-positive-fixnum
            max))
      (if (eq 'macro (car-safe function))
          (setq function (cdr function)))
      (let ((arglist (if (byte-code-function-p function)
                         (aref function 0) ; <--------- format changed
                       (cadr function))))
        (if (memq '&rest arglist)
            most-positive-fixnum
          (length (remq '&optional arglist))))))

再コンパイルする必要がmagit.elあり、コードでこの問題を発見しました。コードを正しくたどると、関数のアリティがここに表示されますが、代わりに「奇妙な」数値が得られます。何が起こったのですか?


さらに、この投稿: Elisp get function arity? より良い解決策を提供します(これは、Andreas Röhlerによる回答で、うまく機能します。したがって、おそらくmagitメンテナーに提案しようとします。

4

1 に答える 1