From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: [PATCH 3/3] emacs: Add "Source" field to 'guix-info' buffers. Date: Tue, 11 Nov 2014 20:57:34 +0100 Message-ID: <87bnodh5n5.fsf@gnu.org> References: <87egtcbwd0.fsf@gmail.com> <87lhnktgh7.fsf@gnu.org> <878ujkb475.fsf@gmail.com> <87d28wq9kj.fsf@gnu.org> <878ujj2nyo.fsf@gmail.com> <87y4riiqhf.fsf@gnu.org> <877fz14kjx.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43975) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XoHZS-0002RY-C6 for guix-devel@gnu.org; Tue, 11 Nov 2014 14:57:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XoHZJ-0004L1-9i for guix-devel@gnu.org; Tue, 11 Nov 2014 14:57:46 -0500 Received: from hera.aquilenet.fr ([2a01:474::1]:52983) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XoHZI-0004Kp-Pc for guix-devel@gnu.org; Tue, 11 Nov 2014 14:57:37 -0500 In-Reply-To: <877fz14kjx.fsf@gmail.com> (Alex Kost's message of "Tue, 11 Nov 2014 22:13:54 +0300") 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: Alex Kost Cc: guix-devel@gnu.org Alex Kost skribis: > Ludovic Court=C3=A8s (2014-11-11 02:29 +0300) wrote: > >> Alex Kost skribis: >> >>> Ludovic Court=C3=A8s (2014-11-10 01:43 +0300) wrote: > > [...] > >>>>>> With the interface you propose, things might be slightly confusing: >>>>>> sometimes clicking on =E2=80=9CDownload=E2=80=9D will do nothing (be= cause the source is >>>>>> already there), sometime =E2=80=9CShow=E2=80=9D will work without = =E2=80=9CDownload=E2=80=9D, sometimes >>>>>> not, etc. Also it takes up quite a bit of space. >>>>> >>>>> Sorry, I didn't get it. What space do you mean? >>>> >>>> I meant visual space in the user interface; visual clutter. >>> >>> Is that "too much information is bad"? Do you suggest to remove >>> something? >> >> I think a single button is clearer than two buttons plus a label, but >> that=E2=80=99s OK here since we can=E2=80=99t really do just one button. > > What can be done is: if a source is not in the store after pressing a > =E2=80=9CShow=E2=80=9D button, a user may be asked whether he wants to do= wnload it or > not. I think it should be less confusing (the modified patch is > attached). WDYT? Yep, sounds good! >> There=E2=80=99s still the possibility that (1) the source is there, so no >> =E2=80=9CDownload=E2=80=9D button, (2) the source is GC=E2=80=99d, and (= 3) there=E2=80=99s still no >> =E2=80=9CDownload=E2=80=9D button and trying to access the source fails = gracelessly. >> >> That=E2=80=99s probably not very common in practice, and easily fixed by= hitting >> =E2=80=98g=E2=80=99, so maybe it=E2=80=99s not worth worrying. WDYT? > > Do you mean a user deleted the source (with "guix gc") when a =E2=80=9Cpa= ckage > info=E2=80=9D buffer was displayed? Sure such cases are not (and I think= cannot > be) handled. It's the same as if: > > 1) a user has a list of installed packages, > > 2) installs another package somewhere outside (e.g., in a shell with > "guix package -i"), > > 3) and wonders why the list is not up-to-date. > > Of course it is not up-to-date! He needs to revert a buffer after that. It=E2=80=99s not really comparable, because GC is always something that can happen concurrently (one may choose to run it from cron, for instance.) But let=E2=80=99s ignore this possibility for the present case. :-) >>> +(define (package-source-names package) >>> + "Return a list of source names (URLs) of the PACKAGE." >>> + (let ((source (package-source package))) >>> + (and (origin? source) >>> + (filter-map (lambda (uri) >>> + (cond ((string? uri) >>> + uri) >>> + ((git-reference? uri) >>> + (git-reference-url uri)) >>> + (else #f))) >>> + (list-maybe (origin-uri source)))))) >> >> The #f case above just leads to degraded display, not breakage, right? >> (I=E2=80=99m asking because of the other things beyond string? and >> git-reference?.) > > Yes, there _would_ be just "Source: =E2=80=93", but it will not happen be= cause > there are no other things beyond a string URL and a git-reference URL. There=E2=80=99s also =E2=80=98svn-reference=E2=80=99 (not currently used), = and possibly other things. The point is that this part will have to be updated anytime new origin methods are added. > From 733c5276bcb9ded008e9c0a4dbe2e5fb6561b5eb Mon Sep 17 00:00:00 2001 > From: Alex Kost > Date: Sun, 9 Nov 2014 11:03:39 +0300 > Subject: [PATCH] emacs: Add "Source" field to 'guix-info' buffers. > MIME-Version: 1.0 > Content-Type: text/plain; charset=3DUTF-8 > Content-Transfer-Encoding: 8bit > > Suggested by Ludovic Court=C3=A8s. > > * emacs/guix-info.el (guix-info-insert-methods, guix-info-displayed-param= s): > Add 'source' parameter. > (guix-package-info-source): New face. > (guix-package-source): New button type. > (guix-package-info-auto-find-source, guix-package-info-auto-download-so= urce, > guix-package-info-download-buffer): New variables. > (guix-package-info-show-source, guix-package-info-insert-source-url, > guix-package-info-insert-source, guix-package-info-download-source, > guix-package-info-redisplay-after-download): New procedures. > * emacs/guix-base.el (guix-param-titles): Add 'source' parameter. > (guix-operation-prompt): Add 'prompt' argument. > (guix-after-source-download-hook): New variable. > (guix-package-source-path, guix-package-source-build-derivation): New > procedures. > * emacs/guix-main.scm (%package-param-alist): Add 'source' parameter. > (package-source-names, package-source-derivation->store-path, > package-source-path, package-source-build-derivation): New procedures. I think we=E2=80=99re all set now, no? :-) Thanks, Ludo=E2=80=99.