Re: [ANN] Emacs-Guix 0.4

2018-05-25 Thread Alex Kost
myg...@gmail.com (2018-05-24 21:02 -0400) wrote:

> Hi Alex,
>
> Thank you for this new release. I am enjoying the cool new features!
>
> On 05/24/2018 at 20:21 Alex Kost writes:
>
> [...]
>
>> I recalled that C-u prefix is already occupied by specifying an
>> arbitrary profile for the package commands.  So, I'm afraid instead of
>> "C-u M-x guix-dependent-packages" there will be "M-x
>> guix-direct-dependent-packages".
>>
>> Or maybe I should just break this dull "convention" (I mean "C-u" for
>> profiles) as probably no one uses it anyway :-)
>
> +1
>
> FWIW, ISTM this use of "C-u" is more global than typical and thus feels
> a bit counter-intuitive. Since you have made it very easy to jump
> between profiles in *Guix Profiles* I think it would be good to switch
> to using "C-u" for more command-specific modifications. This might also
> help avoid "function bloat in emacs-guix."

I agree.  Although I decided to make another solution for this case:
"M-x guix-dependent-packages" will ask you for the "dependent type" in
the minibuffer: "all" (default) or "direct".

-- 
Alex



Re: [ANN] Emacs-Guix 0.4

2018-05-24 Thread myglc2

Hi Alex,

Thank you for this new release. I am enjoying the cool new features!

On 05/24/2018 at 20:21 Alex Kost writes:

[...]

> I recalled that C-u prefix is already occupied by specifying an
> arbitrary profile for the package commands.  So, I'm afraid instead of
> "C-u M-x guix-dependent-packages" there will be "M-x
> guix-direct-dependent-packages".
>
> Or maybe I should just break this dull "convention" (I mean "C-u" for
> profiles) as probably no one uses it anyway :-)

+1

FWIW, ISTM this use of "C-u" is more global than typical and thus feels
a bit counter-intuitive. Since you have made it very easy to jump
between profiles in *Guix Profiles* I think it would be good to switch
to using "C-u" for more command-specific modifications. This might also
help avoid "function bloat in emacs-guix."

HTH - George



Re: [ANN] Emacs-Guix 0.4

2018-05-24 Thread Alex Kost
Ludovic Courtès (2018-05-24 14:16 +0200) wrote:

> Hello!
>
> Alex Kost  skribis:
>
>> Ludovic Courtès (2018-05-23 17:30 +0200) wrote:
>
> [...]
>
>>> I think ‘guix-dependent-packages’ is going to be very useful.  I wonder
>>> if we could have ‘C-u guix-dependent-packages’ list only packages that
>>> are direct dependents?  That would be helpful in some situations.
>>
>> I agree!  Is there a shell command for this?  I mean I'd like to know
>> what Guile code can do this :-)
>
> No, there’s no such command.  Perhaps something to add to ‘guix refresh
> -l’, say ‘guix refresh -l direct’?

It would be good!

>> Currently, the following code is used to get dependent packages:
>>
>> (with-store store
>>   (run-with-store store
>> (mlet %store-monad ((edges (node-back-edges %bag-node-type
>> (all-packages
>>   (return (node-transitive-edges packages edges)
>
> ‘node-transitive-edges’ traverses the whole DAG, so you should simply
> call ‘edges’ instead.
>
> HTH!

Yes, now it's clear, thanks!

I recalled that C-u prefix is already occupied by specifying an
arbitrary profile for the package commands.  So, I'm afraid instead of
"C-u M-x guix-dependent-packages" there will be "M-x
guix-direct-dependent-packages".

Or maybe I should just break this dull "convention" (I mean "C-u" for
profiles) as probably no one uses it anyway :-)

-- 
Alex



Re: [ANN] Emacs-Guix 0.4

2018-05-24 Thread Ludovic Courtès
Hello!

Alex Kost  skribis:

> Ludovic Courtès (2018-05-23 17:30 +0200) wrote:

[...]

>> I think ‘guix-dependent-packages’ is going to be very useful.  I wonder
>> if we could have ‘C-u guix-dependent-packages’ list only packages that
>> are direct dependents?  That would be helpful in some situations.
>
> I agree!  Is there a shell command for this?  I mean I'd like to know
> what Guile code can do this :-)

No, there’s no such command.  Perhaps something to add to ‘guix refresh
-l’, say ‘guix refresh -l direct’?

> Currently, the following code is used to get dependent packages:
>
> (with-store store
>   (run-with-store store
> (mlet %store-monad ((edges (node-back-edges %bag-node-type
> (all-packages
>   (return (node-transitive-edges packages edges)

‘node-transitive-edges’ traverses the whole DAG, so you should simply
call ‘edges’ instead.

HTH!

Ludo’.



Re: [ANN] Emacs-Guix 0.4

2018-05-23 Thread Alex Kost
Ludovic Courtès (2018-05-23 17:30 +0200) wrote:

> Hello!
>
> Maxim Cournoyer  skribis:
>
>> Alex Kost  writes:
>>
>>> Hello, Emacs-Guix (Emacs interface for GNU Guix) version 0.4 has been
>>> released.  If you are not familiar with it yet, you may start with:
>>> ‘guix package -i emacs-guix’ and "M-x guix-about".
>>
>> Just wanted to say thank you for this new feature packed release! I look
>> forward to trying it out :)
>
> +1  I just tried it out and these new features are awesome, as usual!
>
> ‘guix-all-services’ is very cool!  (It shows that we lack descriptions
> for roughly a third of the services; if you’re reading along, consider
> helping out.  :-))
>
> I think ‘guix-dependent-packages’ is going to be very useful.  I wonder
> if we could have ‘C-u guix-dependent-packages’ list only packages that
> are direct dependents?  That would be helpful in some situations.

I agree!  Is there a shell command for this?  I mean I'd like to know
what Guile code can do this :-)

Currently, the following code is used to get dependent packages:

(with-store store
  (run-with-store store
(mlet %store-monad ((edges (node-back-edges %bag-node-type
(all-packages
  (return (node-transitive-edges packages edges)

-- 
Alex



Re: [ANN] Emacs-Guix 0.4

2018-05-23 Thread Ludovic Courtès
Hello!

Maxim Cournoyer  skribis:

> Alex Kost  writes:
>
>> Hello, Emacs-Guix (Emacs interface for GNU Guix) version 0.4 has been
>> released.  If you are not familiar with it yet, you may start with:
>> ‘guix package -i emacs-guix’ and "M-x guix-about".
>
> Just wanted to say thank you for this new feature packed release! I look
> forward to trying it out :)

+1  I just tried it out and these new features are awesome, as usual!

‘guix-all-services’ is very cool!  (It shows that we lack descriptions
for roughly a third of the services; if you’re reading along, consider
helping out.  :-))

I think ‘guix-dependent-packages’ is going to be very useful.  I wonder
if we could have ‘C-u guix-dependent-packages’ list only packages that
are direct dependents?  That would be helpful in some situations.

Thank you!

Ludo’.



Re: [ANN] Emacs-Guix 0.4

2018-05-20 Thread Maxim Cournoyer
Hi Alex,

Alex Kost  writes:

> Hello, Emacs-Guix (Emacs interface for GNU Guix) version 0.4 has been
> released.  If you are not familiar with it yet, you may start with:
> ‘guix package -i emacs-guix’ and "M-x guix-about".

Just wanted to say thank you for this new feature packed release! I look
forward to trying it out :)

Maxim



[ANN] Emacs-Guix 0.4

2018-05-19 Thread Alex Kost
Hello, Emacs-Guix (Emacs interface for GNU Guix) version 0.4 has been
released.  If you are not familiar with it yet, you may start with:
‘guix package -i emacs-guix’ and "M-x guix-about".

Summary of the new features:

* Interface to display services

  It is very similar to the interface for packages: the following
  commands will show you a list of services, where you can press RET to
  get more info about the current (or marked) service(s).  The new
  commands are:

- M-x guix-all-services
- M-x guix-default-services
- M-x guix-services-by-name
- M-x guix-services-by-regexp
- M-x guix-services-by-location

  "M-x guix-default-services" allows you to look at %base-services and
  %desktop-services.

  You may look at the screenshot for this new interface here:

https://alezost.github.io/guix.el/images/screenshots/services.png

  Also, similarly to "M-x guix-package-locations" (renamed from "M-x
  guix-locations"), now there is:

- M-x guix-service-locations

  (Now there are so many commands that even "M-x guix-help" may look
  terrifying :-))

* Additions for 'guix-devel-mode'

  - [C-c . '] key binding (‘guix-devel-code-block-edit’ command) allows
you to edit synopsis or description of the current package in the
texinfo-mode.  This feature is very similarly to the org-mode
[C-c '] facility.

  - If you add the following code to your .emacs, you'll be able to find
package patches with "M-x ffap":

  (add-to-list 'ffap-alist '("\\.patch" . guix-devel-ffap-patch))

* guix-env-var-mode

  When you build a package with ‘guix build --keep-failed’, you can find
  "/tmp/guix-build-*-*.drv-*/environment-variables" file which is now
  prettified with ‘guix-env-var-mode’: it is the same as ‘sh-mode’ but
  it also reformats the buffer to make the long guix file names more
  readable.

* M-x guix-dependent-packages

  It displays packages that depend on the specified package(s); this is
  analogous to ‘guix refresh --list-dependent’ shell command.

* M-x guix-number-of-packages

  It just displays the total number of Guix packages (including the
  packages placed in your GUIX_PACKAGE_PATH) in the minibuffer.

* M-x guix-report-bug

  Similarly, to "M-x report-emacs-bug", it prompts for a bug subject and
  opens a mail buffer with  address, and that's all.

* Performance improvements

  You probably noticed that "M-x guix-all-available-packages" was very
  slow (it could even fail on not-so-powerful machines).  This slowness
  happened when big chunks of data were passed from the "Guile side" to
  "Emacs side" through Geiser (the problem may not be Geiser itself, but
  some underlying Emacs code).  Anyway, now the big portions of guile
  data are passed through a temporary file instead, and it is much
  faster!

Many thanks to Pierre Neidhardt for the idea of ‘guix-report-bug’ and
‘guix-dependent-packages’ commands, and all credits to Oleg Pykhalov for
inventing and implementing ‘guix-env-var-mode’ and the new features for
‘guix-devel-mode’ (synopsis/description editing and finding a patch with
ffap).

-- 
Alex