From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Christopher Schmidt Newsgroups: gmane.emacs.bugs Subject: bug#13021: 24.2.90; compile eval-after-load form Date: Wed, 28 Nov 2012 15:05:56 +0000 (GMT) Message-ID: <87624p4vjd@ch.ristopher.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1354115241 4625 80.91.229.3 (28 Nov 2012 15:07:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 28 Nov 2012 15:07:21 +0000 (UTC) Cc: Michael Heerdegen To: 13021@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Nov 28 16:07:32 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TdjEU-0005Jx-Mv for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Nov 2012 16:07:26 +0100 Original-Received: from localhost ([::1]:55582 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjEJ-0004br-GO for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Nov 2012 10:07:15 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:33478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjEG-0004aP-M8 for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:07:13 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TdjEC-0004XP-77 for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:07:12 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:33454) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjEC-0004X8-3b for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:07:08 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TdjG2-0006dr-CD for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:09:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Christopher Schmidt Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 28 Nov 2012 15:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13021 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.135411530525487 (code B ref -1); Wed, 28 Nov 2012 15:09:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 28 Nov 2012 15:08:25 +0000 Original-Received: from localhost ([127.0.0.1]:43705 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TdjFR-0006d2-1A for submit@debbugs.gnu.org; Wed, 28 Nov 2012 10:08:25 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:40751) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TdjFP-0006cv-1V for submit@debbugs.gnu.org; Wed, 28 Nov 2012 10:08:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TdjDO-0004LD-RR for submit@debbugs.gnu.org; Wed, 28 Nov 2012 10:06:28 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:36141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjDO-0004L8-NN for submit@debbugs.gnu.org; Wed, 28 Nov 2012 10:06:18 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:33082) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjDF-00045U-BB for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:06:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TdjD5-0004JQ-Od for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:06:09 -0500 Original-Received: from ristopher.com ([146.185.21.93]:33882 helo=saturn.ch.ristopher.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TdjD5-0004JB-Ft for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2012 10:05:59 -0500 Original-Received: by saturn.ch.ristopher.com (Postfix, from userid 0) id 04C24214B1; Wed, 28 Nov 2012 15:05:57 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ch.ristopher.com; s=mail; t=1354115157; bh=2dpe3AJbjym1esnsdV52WF01AvI3vqTR8b4ov4rcSfY=; h=From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:Date; b=Ta4EKdcEtbq7KYtW026AVTXvjtJuDYlGsH2fgryJIYwAkY51Nah2raMxOwG7HweWm Ifxjn4EDSczsgHuXZ61fI5v2Cu43OQRZ9n1Oy9O1/+iOsj3rq/X+0gWLntiEja7I2W VvXfdcxGL7uwFHYrBY6vMC2Q67LMCXoP4nB2oE+Y= Mail-Followup-To: bug-gnu-emacs@gnu.org, Michael Heerdegen X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:67561 Archived-At: severity: wishlist I think it is a good idea to compile the form that is passed to eval-after-load. The advantage is that one gets compiler warnings and errors and the form itself is executed faster. This is what I use: (defmacro eal (package &rest forms) (declare (indent 1) (debug t)) `(,(if (if (symbolp package) (require package nil t) (load package t t)) 'progn (message "eal: cannot find %s" package) 'with-no-warnings) (eval-after-load ',package `(funcall (function ,(lambda () ,@forms)))))) This is what Michael (Heerdegen) uses: (defun-safe init-file-eval-after-load (file &rest forms) "Like `eval-after-load', but byte-compile FORMS before eval." (eval-after-load file `(let ((byte-compile-log-buffer "*Warnings*") (byte-compile-current-form (format "`init-file-eval-after-load': %s" ',file))) (funcall (byte-compile (lambda () ,@forms)))))) Could vanilla eval-after-load be modified so it compiles the form? I am thinking of an optional third parameter, one that allows to either keep the current behaviour (default), load the package & compile the form at compile time or compile the form at run-time before evaling. WDYT? Christopher