From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Samuel Bronson Newsgroups: gmane.emacs.devel Subject: May your change "Factor out lists of operators specially treated by 'make-autoload'." be added to Emacs? Date: Wed, 16 Nov 2011 13:25:34 -0500 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: dough.gmane.org 1321467947 5502 80.91.229.12 (16 Nov 2011 18:25:47 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 16 Nov 2011 18:25:47 +0000 (UTC) Cc: emacs-devel@gnu.org To: "Stephen J. Turnbull" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 16 19:25:43 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RQkB3-00017R-5v for ged-emacs-devel@m.gmane.org; Wed, 16 Nov 2011 19:25:41 +0100 Original-Received: from localhost ([::1]:36731 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQkB2-0005Us-OW for ged-emacs-devel@m.gmane.org; Wed, 16 Nov 2011 13:25:40 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:57960) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQkB0-0005Uc-Fp for emacs-devel@gnu.org; Wed, 16 Nov 2011 13:25:39 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RQkAz-0007II-4Z for emacs-devel@gnu.org; Wed, 16 Nov 2011 13:25:38 -0500 Original-Received: from mail-ww0-f41.google.com ([74.125.82.41]:35427) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQkAy-0007Hw-UX for emacs-devel@gnu.org; Wed, 16 Nov 2011 13:25:37 -0500 Original-Received: by wwf25 with SMTP id 25so8346524wwf.0 for ; Wed, 16 Nov 2011 10:25:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=gfkJupSKrFm/5e1iOllUKjp8xEIAOOVTaIA/6KamXs0=; b=tSI47t6oyKmOIHuzuIYoc6qWWFXXav4YvRFEZISj6V622NlL7xqHc3PAAOFRXCH6ol UvYWPX8Su7V7dtLUOUVWnMrinPuuTsmUJIk/6caNQaQs0TTP3hma6mom41Uu6k5BLiZp d7G8aTKThpWIBb+D0V3dQLI5tRaQhiRHnFmN8= Original-Received: by 10.180.109.106 with SMTP id hr10mr37855033wib.9.1321467934807; Wed, 16 Nov 2011 10:25:34 -0800 (PST) Original-Received: by 10.180.87.104 with HTTP; Wed, 16 Nov 2011 10:25:34 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 74.125.82.41 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:146061 Archived-At: Dear Stephen, I recently became aware that the following change is not present in GNU Emacs. I would like to see this rectified. Would it be possible for you to assign copyright on it to the FSF, if you have not already done so? (Pretty please, with a cherry on top?) P.s. Thanks for putting so much great work into XEmacs, even if it might sometimes seem like a waste of effort. # HG changeset patch # User Stephen J. Turnbull # Date 1198367841 28800 # Node ID d2f4dd8611d9b88d0c16de371bc663a99bc6a305 # Parent bc3b9f61018efe778ecbbab927c5d8f37b60a629 Factor out lists of operators specially treated by 'make-autoload'. General idea approved by Mike Sperber, and tested in 21.4 by building JDE. diff -r bc3b9f61018e -r d2f4dd8611d9 lisp/ChangeLog --- a/lisp/ChangeLog Sat Dec 22 15:02:04 2007 +0100 +++ b/lisp/ChangeLog Sat Dec 22 15:57:21 2007 -0800 @@ -1,3 +1,11 @@ +2007-12-22 Stephen J. Turnbull + + Factor out lists of operators specially treated by `make-autoload'. + + * autoload.el (autoload-make-autoload-operators): New. + (autoload-make-autoload-complex-operators): New. + (make-autoload): Use them. + 2007-12-18 Mike Sperber * autoload.el (process-one-lisp-autoload): Insert into diff -r bc3b9f61018e -r d2f4dd8611d9 lisp/autoload.el --- a/lisp/autoload.el Sat Dec 22 15:02:04 2007 +0100 +++ b/lisp/autoload.el Sat Dec 22 15:57:21 2007 -0800 @@ -226,6 +226,20 @@ ;; Parsing the source file text. ;; Autoloads in C source differ from those in Lisp source. +;; #### Eventually operators like defclass and defmethod (defined in an +;; external package, EIEIO) may be factored out. Don't add operators here +;; without discussing whether and how to do that on the developers' channel. +(defvar autoload-make-autoload-operators + '(defun define-skeleton defmacro define-derived-mode define-generic-mode + easy-mmode-define-minor-mode easy-mmode-define-global-mode + define-minor-mode defun* defmacro* defclass defmethod) + "`defun'-like operators that use `autoload' to load the library.") + +(defvar autoload-make-autoload-complex-operators + '(easy-mmode-define-minor-mode easy-mmode-define-global-mode + define-minor-mode) + "`defun'-like operators to macroexpand before using `autoload'.") + (defun make-autoload (form file) "Turn FORM into an autoload or defvar for source file FILE. Returns nil if FORM is not a special autoload form (i.e. a function definition @@ -233,8 +247,7 @@ (let ((car (car-safe form)) expand) (cond ;; For complex cases, try again on the macro-expansion. - ((and (memq car '(easy-mmode-define-global-mode - easy-mmode-define-minor-mode define-minor-mode)) + ((and (memq car autoload-make-autoload-complex-operators) (setq expand (let ((load-file-name file)) (macroexpand form))) (eq (car expand) 'progn) (memq :autoload-end expand)) @@ -246,11 +259,7 @@ (cdr expand))))) ;; For special function-like operators, use the `autoload' function. - ((memq car '(defun define-skeleton defmacro define-derived-mode - define-generic-mode easy-mmode-define-minor-mode - easy-mmode-define-global-mode - define-minor-mode defun* defmacro* - defclass defmethod)) ; from the EIEIO package + ((memq car autoload-make-autoload-operators) (let* ((macrop (memq car '(defmacro defmacro*))) (name (nth 1 form)) (body (nthcdr (get car 'doc-string-elt) form))