From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: emacs packages Date: Wed, 17 Jun 2015 23:00:23 +0300 Message-ID: <87wpz2rtpk.fsf@gmail.com> References: <87a8vzfwpr.fsf@netris.org> <87ioamdvmd.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5JVn-00055Y-EZ for guix-devel@gnu.org; Wed, 17 Jun 2015 16:00:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z5JVZ-0005Y3-MY for guix-devel@gnu.org; Wed, 17 Jun 2015 16:00:39 -0400 Received: from mail-lb0-x22b.google.com ([2a00:1450:4010:c04::22b]:33830) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z5JVZ-0005Vj-Fg for guix-devel@gnu.org; Wed, 17 Jun 2015 16:00:25 -0400 Received: by lbbti3 with SMTP id ti3so38959394lbb.1 for ; Wed, 17 Jun 2015 13:00:24 -0700 (PDT) In-Reply-To: <87ioamdvmd.fsf@netris.org> (Mark H. Weaver's message of "Wed, 17 Jun 2015 14:42:50 -0400") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Mark H Weaver Cc: guix-devel@gnu.org, Federico Beffa Mark H Weaver (2015-06-17 21:42 +0300) wrote: > Federico Beffa writes: > >> What do you think about the attached implementation? > > [...] > >> +(define (emacs-byte-compile files) >> + "Byte compile FILES, a list of file names." >> + (if (pair? files) >> + (for-each (lambda (f) >> + (let ((expr `(let () >> + (push ,(dirname f) load-path) >> + (byte-compile-file ,f)))) >> + (emacs-batch-eval expr))) >> + files) >> + (error "emacs-byte-compile failed: not a list of files!" files))) >> + > > I would prefer to let an emacs expert (Alex?) comment on this, but here (I don't consider myself an expert, I'm definitely much less experienced with Emacs than you or Ludovic.) > are some preliminary comments: > > * I wouldn't bother checking the type of 'files', since 'for-each' will > do that. Also, () is a list but not a pair. > > * Maybe use 'progn' instead of 'let ()' ? > > * Instead of launching a separate emacs process for each file, how about > passing the list of filenames into emacs and do the loop within emacs > itself? I totally agree with these comments. However since the goal is to compile all elisp files in some directory, perhaps we may just use 'byte-recompile-directory' instead of looping 'byte-compile-file'. Also I think there is a problem. An emacs package can require other packages, so for a successful compiling, 'load-path' should be augmented not only with the directory of the original package, but with the directories of the required packages as well. -- Alex