From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Robert Weiner Newsgroups: gmane.emacs.devel Subject: Re: Autoloads and subdirectories Date: Sat, 28 May 2016 01:00:09 -0400 Message-ID: References: <57491DA5.4020002@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a113cc3f2906a520533dfe7b3 X-Trace: ger.gmane.org 1464411652 23079 80.91.229.3 (28 May 2016 05:00:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 28 May 2016 05:00:52 +0000 (UTC) Cc: Emacs developers To: =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat May 28 07:00:51 2016 Return-path: Envelope-to: ged-emacs-devel@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 1b6WMk-0001yo-FO for ged-emacs-devel@m.gmane.org; Sat, 28 May 2016 07:00:50 +0200 Original-Received: from localhost ([::1]:51409 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b6WMj-0002U4-KQ for ged-emacs-devel@m.gmane.org; Sat, 28 May 2016 01:00:49 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b6WMc-0002Tj-KK for emacs-devel@gnu.org; Sat, 28 May 2016 01:00:43 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b6WMa-000249-3o for emacs-devel@gnu.org; Sat, 28 May 2016 01:00:41 -0400 Original-Received: from mail-oi0-x234.google.com ([2607:f8b0:4003:c06::234]:34356) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b6WMZ-000245-SP for emacs-devel@gnu.org; Sat, 28 May 2016 01:00:40 -0400 Original-Received: by mail-oi0-x234.google.com with SMTP id b65so202928898oia.1 for ; Fri, 27 May 2016 22:00:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=0jNyEHuHVNK3TAF+YiX54UJthDIozzTolBFwegYn/hk=; b=jdjNjTyyg6lPfZOoq8y13RNJCWTfgoP0z15JBJqNBKrtv5JCm7NZrHU//1nPqeZUoa igAj9W5W9TmpJNKIBnohCyEVuOP5xkswn1VluDv5l1L+eYOFj9v4lqYGU5B+t36upU09 i78rWCAxO9drvZBdRLCERrOIaoXEH8ClNqJT6FIs0+8brjbxGzYXuFW8yFssXAaaxKUX IE0/ZgUcNk6KJdUa+OYkLiioTjxHwrLBZ0OMlcc/LUiRCIdLfp9nN40YTaQrSrqT8+Q8 cWKuaO+g3+uegwT3DgFa5PgZR/Fpq7gR5NoqI3/oOUJwuAs+801uY/ElNMcmQNvnNIZj f1TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=0jNyEHuHVNK3TAF+YiX54UJthDIozzTolBFwegYn/hk=; b=GW1UqqN6EjQy5YtUtkL7aHizEl1Dc/yorIHG/Tu61baPuVPUkZvHxXLQ+rV920ydsz cgtJGoxtNqtWyEZi2FawXURoL6xMJ3fmHbCzeTKnqsZyQk56WB6LjUvnCGyV3d14cK6E 4R7fwo09Y08A8zUlVkLb+ip1itysoO96Lbx5hp468ra+qIU04EWnPe55yqWB6y0rGdep 8O41bHPpqA5ZY0PES0mYsMY3KLefw+IvZSN+zhZUECcFeKDmoipHlkJTR//UXY5knhm8 mS/9/Ia1g0E+yDdv5blusY8zh/HhpkbNuqLGTUyvRL6M5tajbw8b/yln3wIMsOEUopLV Feng== X-Gm-Message-State: ALyK8tIk2KsPBvvll3bNqsgAHVch523fHWPgWXYAdypicQ3e5vb49DQ5HjNsTUsB37F/LZBbskVZlLkOUqHpPQ== X-Received: by 10.157.34.111 with SMTP id o102mr11562800ota.138.1464411639276; Fri, 27 May 2016 22:00:39 -0700 (PDT) Original-Received: by 10.202.205.17 with HTTP; Fri, 27 May 2016 22:00:09 -0700 (PDT) In-Reply-To: <57491DA5.4020002@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4003:c06::234 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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" Xref: news.gmane.org gmane.emacs.devel:204099 Archived-At: --001a113cc3f2906a520533dfe7b3 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sat, May 28, 2016 at 12:25 AM, Cl=C3=A9ment Pit--Claudel < clement.pit@gmail.com> wrote: > Hi emacs-devel, > > What is the proper way to organize the sources of a multi-file package > into subdirectories, without breaking autoloads? As far as I can see > `update-directory-autoloads` doesn't explore subdirectories recursively > You missed my message and solution for this 5 days back, so I have included the solution here. Just replace this one function in package.el in the lisp/emacs-lisp/ subdirectory of your emacs installation. No one had any comments on it surprisingly. I have added the patch file here as well. Let me know how it goes for you. (defun package-generate-autoloads (name pkg-dir) (let* ((auto-name (format "%s-autoloads.el" name)) ;;(ignore-name (concat name "-pkg.el")) (generated-autoload-file (expand-file-name auto-name pkg-dir)) ;; Silence `autoload-generate-file-autoloads'. (noninteractive inhibit-message) (backup-inhibited t) (version-control 'never)) (package-autoload-ensure-default-file generated-autoload-file) (apply #'update-directory-autoloads pkg-dir (delq nil (mapcar (lambda (f) (and (file-directory-p f) (not (file-symlink-p f)) f)) (directory-files pkg-dir t "[a-zA-Z].*" nil)))) (let ((buf (find-buffer-visiting generated-autoload-file))) (when buf (kill-buffer buf))) auto-name)) ------- *** package-orig.el 2016-05-28 00:54:25.000000000 -0400 --- package.el 2016-05-28 00:54:25.000000000 -0400 *************** *** 916,928 **** (backup-inhibited t) (version-control 'never)) (package-autoload-ensure-default-file generated-autoload-file) ! (update-directory-autoloads pkg-dir) (let ((buf (find-buffer-visiting generated-autoload-file))) (when buf (kill-buffer buf))) auto-name)) (defun package--make-autoloads-and-stuff (pkg-desc pkg-dir) "Generate autoloads, description file, etc.. for PKG-DESC installed at PKG-DIR." (package-generate-autoloads (package-desc-name pkg-desc) pkg-dir) (let ((desc-file (expand-file-name (package--description-file pkg-dir) pkg-dir))) --- 911,927 ---- (backup-inhibited t) (version-control 'never)) (package-autoload-ensure-default-file generated-autoload-file) ! (apply #'update-directory-autoloads pkg-dir ! (delq nil (mapcar (lambda (f) (and (file-directory-p f) ! (not (file-symlink-p f)) ! f)) ! (directory-files pkg-dir t "[a-zA-Z].*" nil)))) (let ((buf (find-buffer-visiting generated-autoload-file))) (when buf (kill-buffer buf))) auto-name)) (defun package--make-autoloads-and-stuff (pkg-desc pkg-dir) "Generate autoloads, description file, etc. for PKG-DESC installed at PKG-DIR." (package-generate-autoloads (package-desc-name pkg-desc) pkg-dir) (let ((desc-file (expand-file-name (package--description-file pkg-dir) pkg-dir))) *************** --001a113cc3f2906a520533dfe7b3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On S= at, May 28, 2016 at 12:25 AM, Cl=C3=A9ment Pit--Claudel &= lt;clement.pit@g= mail.com> wrote:
Hi emacs-devel,

What is the proper way to organize the sources of a multi-file package into= subdirectories, without breaking autoloads? As far as I can see `update-di= rectory-autoloads` doesn't explore subdirectories recursively

You missed my message and solution for this 5 da= ys back, so I have included the solution here.=C2=A0 Just replace this one = function in package.el in the lisp/emacs-lisp/ subdirectory of your emacs i= nstallation.
No one had any comments on it surprisingly.=C2=A0 I = have added the patch file here as well.=C2=A0 Let me know how it goes for y= ou.


(defun pa= ckage-generate-autoloads (name pkg-dir)
=C2= =A0 (let* ((auto-name (format "%s-autoloads.el" name))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;;(ignore-name (con= cat name "-pkg.el"))
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0(generated-autoload-file (expand-file-name auto-nam= e pkg-dir))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0;; Silence `autoload-generate-file-autoloads'.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(noninteractive inhibit-messag= e)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(backu= p-inhibited t)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0(version-control 'never))
=C2=A0 = =C2=A0 (package-autoload-ensure-default-file generated-autoload-file)
=
=C2=A0 =C2=A0 (apply #'update-directory-auto= loads pkg-dir
=C2=A0 (delq nil (mapcar (lambda (f) (and (file-dire= ctory-p f)
=C2=A0 =C2=A0 =C2=A0(not (file-symlink-p f))
<= div class=3D"gmail_quote"> <= /span> =C2=A0 =C2=A0 =C2=A0f))
=C2=A0 =C2=A0 (directory-files p= kg-dir t "[a-zA-Z].*" nil))))
=C2= =A0 =C2=A0 (let ((buf (find-buffer-visiting generated-autoload-file)))
=C2=A0 =C2=A0 =C2=A0 (when buf (kill-buffer buf= )))
=C2=A0 =C2=A0 auto-name))

-------
*** package-orig.el 2016-05-28 00:54:25.000000000 -0400
--- package.el 2= 016-05-28 00:54:25.000000000 -0400
********= *******
*** 916,928 ****
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(backup-inhibited t)=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(= version-control 'never))
=C2=A0 =C2=A0 = =C2=A0 (package-autoload-ensure-default-file generated-autoload-file)
=
! =C2=A0 =C2=A0 (update-directory-autoloads pkg-= dir)
=C2=A0 =C2=A0 =C2=A0 (let ((buf (find-= buffer-visiting generated-autoload-file)))
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when buf (kill-buffer buf)))
=C2=A0 =C2=A0 =C2=A0 auto-name))
=C2=A0=C2=A0
=C2=A0 (defun package--= make-autoloads-and-stuff (pkg-desc pkg-dir)
=C2=A0 =C2=A0"Generate autoloads, description file, etc.. for PKG-DES= C installed at PKG-DIR."
=C2=A0 =C2=A0= (package-generate-autoloads (package-desc-name pkg-desc) pkg-dir)
=C2=A0 =C2=A0 (let ((desc-file (expand-file-name (p= ackage--description-file pkg-dir)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pkg-dir)))
=
--- 911,927 ----
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(backup-inhibited t)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(version-contr= ol 'never))
=C2=A0 =C2=A0 =C2=A0 (packa= ge-autoload-ensure-default-file generated-autoload-file)
! =C2=A0 =C2=A0 (apply #'update-directory-autoloads pkg-d= ir
! =C2=A0 (delq nil (mapcar (lambda (f) (and (file-directory-p f= )
! =C2=A0 =C2=A0 =C2=A0(not (file-symlink-p f))
! =C2=A0 =C2=A0 =C2=A0f))
! =C2=A0 =C2=A0 (directory-files pkg-d= ir t "[a-zA-Z].*" nil))))
=C2=A0 = =C2=A0 =C2=A0 (let ((buf (find-buffer-visiting generated-autoload-file)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (when buf (kill-= buffer buf)))
=C2=A0 =C2=A0 =C2=A0 auto-nam= e))
=C2=A0=C2=A0
=C2=A0 (defun package--make-autoloads-and-stuff (pkg-desc pkg-dir)
=C2=A0 =C2=A0"Generate autoloads, descri= ption file, etc. for PKG-DESC installed at PKG-DIR."
=C2=A0 =C2=A0 (package-generate-autoloads (package-desc-na= me pkg-desc) pkg-dir)
=C2=A0 =C2=A0 (let ((= desc-file (expand-file-name (package--description-file pkg-dir)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0pkg-dir)))
***************


--001a113cc3f2906a520533dfe7b3--