unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add sicp.
@ 2016-05-15  8:29 Jan Nieuwenhuizen
  2016-05-17 20:55 ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Jan Nieuwenhuizen @ 2016-05-15  8:29 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 193 bytes --]

Hi,

Too lazy to get up and go for my book shelf, I was presently surprised
that SICP is available in info; and even more surprised it hasn't been
packaged yet.

Happy hacking!
Greetings,
Jan


[-- Attachment #2: 0001-gnu-Add-sicp.patch --]
[-- Type: text/x-diff, Size: 4628 bytes --]

From 85c7f3d9ba64989b2fbdba9ee0a0da6c635b1d3c Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 15 May 2016 09:57:05 +0200
Subject: [PATCH] gnu: Add sicp.

* gnu/packages/sicp.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk          |  1 +
 gnu/packages/sicp.scm | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+)
 create mode 100644 gnu/packages/sicp.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index acb9790..06d6782 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -304,6 +304,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/serialization.scm		\
   gnu/packages/serveez.scm			\
   gnu/packages/shishi.scm			\
+  gnu/packages/sicp.scm				\
   gnu/packages/skarnet.scm			\
   gnu/packages/skribilo.scm			\
   gnu/packages/slang.scm			\
diff --git a/gnu/packages/sicp.scm b/gnu/packages/sicp.scm
new file mode 100644
index 0000000..35f7ad1
--- /dev/null
+++ b/gnu/packages/sicp.scm
@@ -0,0 +1,80 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages sicp)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages texinfo)
+
+  #:use-module (guix build-system trivial)
+  #:use-module (guix git-download)
+  #:use-module (guix licenses)
+  #:use-module (guix packages))
+
+(define-public sicp
+  (package
+    (name "sicp")
+    (version "2016-02-20")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sarabander/sicp")
+             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))
+       (sha256
+        (base32
+         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))
+    (build-system trivial-build-system)
+    (native-inputs `(("gzip" ,gzip)
+                     ("source" ,source)
+                     ("texinfo" ,texinfo)))
+    (arguments
+     `(#:modules ((guix build utils)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+                 #:builder
+                 (let ((gzip (assoc-ref %build-inputs "gzip"))
+                       (source (assoc-ref %build-inputs "source"))
+                       (texinfo (assoc-ref %build-inputs "texinfo"))
+                       (info-dir (string-append %output "/share/info")))
+                   (use-modules (guix build utils)
+                                (srfi srfi-1)
+                                (srfi srfi-26))
+                   (setenv "PATH" (string-append gzip "/bin"
+                                                 ":" texinfo "/bin"))
+                   (mkdir-p info-dir)
+                   (and
+                    (system* "makeinfo"
+                             "--output" (string-append info-dir "/sicp.info")
+                             (string-append source "/sicp-pocket.texi"))
+                    (every zero? (map
+                                  (cut system* "gzip" <>)
+                                  (find-files info-dir)))))))
+    (home-page "http://sarabander.github.io/sicp")
+    (synopsis "Structure and Interpretation of Computer Programs")
+    (description "Structure and Interpretation of Computer Programs (SICP) is
+a textbook aiming to teach the principles of computer programming.
+
+Using Scheme, a dialect of the Lisp programming language, the book explains
+core computer science concepts such as abstraction in programming,
+metalinguistic abstraction, recursion, interpreters, and modular programming.
+
+It was first published in 1985 by MIT Press and written by Massachusetts
+Institute of Technology (MIT) professors Harold Abelson and Gerald Jay
+Sussman, with Julie Sussman.")
+    (license cc-by-sa4.0)))
-- 
2.7.3


[-- Attachment #3: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-15  8:29 [PATCH] gnu: Add sicp Jan Nieuwenhuizen
@ 2016-05-17 20:55 ` Ludovic Courtès
  2016-05-19 22:06   ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2016-05-17 20:55 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel

Hi!

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> Too lazy to get up and go for my book shelf, I was presently surprised
> that SICP is available in info; and even more surprised it hasn't been
> packaged yet.

Indeed!  :-)

> From 85c7f3d9ba64989b2fbdba9ee0a0da6c635b1d3c Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Sun, 15 May 2016 09:57:05 +0200
> Subject: [PATCH] gnu: Add sicp.
>
> * gnu/packages/sicp.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.

What about putting it in (gnu packages scheme) instead?  Sounds like a
natural home.

> +(define-public sicp
> +  (package
> +    (name "sicp")
> +    (version "2016-02-20")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/sarabander/sicp")
> +             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))

Could you change the ‘version’ field according to the conventions
described at (info "(guix) Version Numbers")?  Since there’s no release
number, it’s OK to use “20160220” (no hyphens) before the rest of the
version field.

> +       (sha256
> +        (base32
> +         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))
> +    (build-system trivial-build-system)
> +    (native-inputs `(("gzip" ,gzip)
> +                     ("source" ,source)
> +                     ("texinfo" ,texinfo)))
> +    (arguments
> +     `(#:modules ((guix build utils)
> +                  (srfi srfi-1)
> +                  (srfi srfi-26))
> +                 #:builder

#:builder should be aligned with #:modules.

> +                 (let ((gzip (assoc-ref %build-inputs "gzip"))
> +                       (source (assoc-ref %build-inputs "source"))
> +                       (texinfo (assoc-ref %build-inputs "texinfo"))
> +                       (info-dir (string-append %output "/share/info")))
> +                   (use-modules (guix build utils)
> +                                (srfi srfi-1)
> +                                (srfi srfi-26))

Please move ‘use-modules’ to the top:

  (begin
    (use-modules (srfi …) …)

    (let (…) …))

> +                   (and
> +                    (system* "makeinfo"
> +                             "--output" (string-append info-dir "/sicp.info")
> +                             (string-append source "/sicp-pocket.texi"))

(zero? (system* …))

> +    (home-page "http://sarabander.github.io/sicp")
> +    (synopsis "Structure and Interpretation of Computer Programs")
> +    (description "Structure and Interpretation of Computer Programs (SICP) is
> +a textbook aiming to teach the principles of computer programming.
> +
> +Using Scheme, a dialect of the Lisp programming language, the book explains
> +core computer science concepts such as abstraction in programming,
> +metalinguistic abstraction, recursion, interpreters, and modular programming.
> +
> +It was first published in 1985 by MIT Press and written by Massachusetts
> +Institute of Technology (MIT) professors Harold Abelson and Gerald Jay
> +Sussman, with Julie Sussman.")

I would remove the last paragraph.

Could you send an updated patch?

Thanks for filling this gap!  :-)

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-17 20:55 ` Ludovic Courtès
@ 2016-05-19 22:06   ` Jan Nieuwenhuizen
  2016-05-20  8:19     ` Taylan Ulrich Bayırlı/Kammer
  2016-05-21 21:22     ` [PATCH] gnu: Add sicp Ludovic Courtès
  0 siblings, 2 replies; 12+ messages in thread
From: Jan Nieuwenhuizen @ 2016-05-19 22:06 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 2363 bytes --]

Ludovic Courtès writes:

Hi Ludovic

> What about putting it in (gnu packages scheme) instead?  Sounds like a
> natural home.

Sure.

>> +    (version "2016-02-20")

> Could you change the ‘version’ field according to the conventions
> described at (info "(guix) Version Numbers")?  Since there’s no release
> number, it’s OK to use “20160220” (no hyphens) before the rest of the
> version field.

OK.

>> +    (arguments
>> +     `(#:modules ((guix build utils)
>> +                  (srfi srfi-1)
>> +                  (srfi srfi-26))
>> +                 #:builder
>
> #:builder should be aligned with #:modules.

Sure, missed this.  Edited by hand for now.
  
I've been fighting with this (i.e.: manually changing Emacs'
indentation, something that feels just so wrong), and wondering
about it.  Isn't .dir-locals.el supposed to handle this
automagically...what am I missing?

I'm used to run indent-region on the whole file, but that often changes
things in most files I ran it in.

Also, for Guix I had to remove delete-trailing-whitespace from my
before-save-variables, otherwise my patches try to delete lots of
whitespace...

>> +                 (let ((gzip (assoc-ref %build-inputs "gzip"))
>> +                       (source (assoc-ref %build-inputs "source"))
>> +                       (texinfo (assoc-ref %build-inputs "texinfo"))
>> +                       (info-dir (string-append %output "/share/info")))
>> +                   (use-modules (guix build utils)
>> +                                (srfi srfi-1)
>> +                                (srfi srfi-26))
>
> Please move ‘use-modules’ to the top:
>
>   (begin
>     (use-modules (srfi …) …)
>
>     (let (…) …))

OK.

>> +                   (and
>> +                    (system* "makeinfo"
>> +                             "--output" (string-append info-dir "/sicp.info")
>> +                             (string-append source "/sicp-pocket.texi"))
>
> (zero? (system* …))

Yes, better.

>> +It was first published in 1985 by MIT Press and written by Massachusetts
>> +Institute of Technology (MIT) professors Harold Abelson and Gerald Jay
>> +Sussman, with Julie Sussman.")
>
> I would remove the last paragraph.

Done.

> Thanks for filling this gap!  :-)

:-)

Greetings,
Jan


[-- Attachment #2: 0001-gnu-Add-sicp.patch --]
[-- Type: text/x-diff, Size: 3898 bytes --]

From 44bcbdb30f6789d4bc460aa84dca27321c074cba Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Thu, 19 May 2016 23:50:09 +0200
Subject: [PATCH] gnu: Add sicp.

* gnu/packages/scheme.scm (sicp): New variable.
---
 gnu/packages/scheme.scm | 55 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 6cf75c2..3539659 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,8 +26,10 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages databases)
@@ -34,6 +37,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages texlive)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages libphidget)
@@ -714,3 +718,54 @@ procedures, embedded in the programming language Scheme, and intended to
 support teaching and research in mathematical physics and electrical
 engineering.")
       (license gpl2+))))
+
+(define-public sicp
+  (package
+    (name "sicp")
+    (version "20160220-1.5b52db56")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sarabander/sicp")
+             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))
+       (sha256
+        (base32
+         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))
+    (build-system trivial-build-system)
+    (native-inputs `(("gzip" ,gzip)
+                     ("source" ,source)
+                     ("texinfo" ,texinfo)))
+    (arguments
+     `(#:modules ((guix build utils)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       #:builder
+       (begin
+         (use-modules (guix build utils)
+                      (srfi srfi-1)
+                      (srfi srfi-26))
+         (let ((gzip (assoc-ref %build-inputs "gzip"))
+               (source (assoc-ref %build-inputs "source"))
+               (texinfo (assoc-ref %build-inputs "texinfo"))
+               (info-dir (string-append %output "/share/info")))
+          (setenv "PATH" (string-append gzip "/bin"
+                                        ":" texinfo "/bin"))
+          (mkdir-p info-dir)
+          (and
+           (zero?
+            (system* "makeinfo"
+                     "--output" (string-append info-dir "/sicp.info")
+                     (string-append source "/sicp-pocket.texi")))
+           (every zero? (map
+                         (cut system* "gzip" <>)
+                         (find-files info-dir))))))))
+    (home-page "http://sarabander.github.io/sicp")
+    (synopsis "Structure and Interpretation of Computer Programs")
+    (description "Structure and Interpretation of Computer Programs (SICP) is
+a textbook aiming to teach the principles of computer programming.
+
+Using Scheme, a dialect of the Lisp programming language, the book explains
+core computer science concepts such as abstraction in programming,
+metalinguistic abstraction, recursion, interpreters, and modular programming.")
+    (license cc-by-sa4.0)))
-- 
2.7.3


[-- Attachment #3: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-19 22:06   ` Jan Nieuwenhuizen
@ 2016-05-20  8:19     ` Taylan Ulrich Bayırlı/Kammer
  2016-05-20 11:26       ` Jan Nieuwenhuizen
  2016-05-21 21:22     ` [PATCH] gnu: Add sicp Ludovic Courtès
  1 sibling, 1 reply; 12+ messages in thread
From: Taylan Ulrich Bayırlı/Kammer @ 2016-05-20  8:19 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 722 bytes --]

Jan Nieuwenhuizen <janneke@gnu.org> writes:

>>> +    (arguments
>>> +     `(#:modules ((guix build utils)
>>> +                  (srfi srfi-1)
>>> +                  (srfi srfi-26))
>>> +                 #:builder
>>
>> #:builder should be aligned with #:modules.
>
> Sure, missed this.  Edited by hand for now.
>   
> I've been fighting with this (i.e.: manually changing Emacs'
> indentation, something that feels just so wrong), and wondering
> about it.  Isn't .dir-locals.el supposed to handle this
> automagically...what am I missing?
>
> I'm used to run indent-region on the whole file, but that often changes
> things in most files I ran it in.

This modified `scheme-indent-function' by Mark Weaver fixes that:


[-- Attachment #2: scheme-indent-function.el --]
[-- Type: application/emacs-lisp, Size: 2858 bytes --]

[-- Attachment #3: Type: text/plain, Size: 8 bytes --]


Taylan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-20  8:19     ` Taylan Ulrich Bayırlı/Kammer
@ 2016-05-20 11:26       ` Jan Nieuwenhuizen
  2016-05-21 10:58         ` Alex Kost
  0 siblings, 1 reply; 12+ messages in thread
From: Jan Nieuwenhuizen @ 2016-05-20 11:26 UTC (permalink / raw)
  To: Taylan Ulrich "Bayırlı/Kammer"; +Cc: guix-devel

Taylan Ulrich "Bayırlı/Kammer" writes:

> This modified `scheme-indent-function' by Mark Weaver fixes that:

Wow, that helps :-) Thank you!

I can't seem to find it in Guix git; should I look better or should we
link to it somehow?

Jan

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-20 11:26       ` Jan Nieuwenhuizen
@ 2016-05-21 10:58         ` Alex Kost
  2016-05-21 21:03           ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Alex Kost @ 2016-05-21 10:58 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel

Jan Nieuwenhuizen (2016-05-20 14:26 +0300) wrote:

> Taylan Ulrich "Bayırlı/Kammer" writes:
>
>> This modified `scheme-indent-function' by Mark Weaver fixes that:
>
> Wow, that helps :-) Thank you!
>
> I can't seem to find it in Guix git; should I look better or should we
> link to it somehow?

The source is here:
<http://www.netris.org/~mhw/scheme-indent-function.el>.

This is a usual problem (I would say an Emacs bug) that people face
with, and those who know about it, use the mentioned modified version
'scheme-indent-function'.

So what about patching our emacs package to fix scheme-indent-function?
I can make a patch if it's reasonable.

-- 
Alex

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-21 10:58         ` Alex Kost
@ 2016-05-21 21:03           ` Ludovic Courtès
  2016-05-24  8:58             ` Fixing scheme-indent-function Alex Kost
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2016-05-21 21:03 UTC (permalink / raw)
  To: Alex Kost; +Cc: guix-devel

Alex Kost <alezost@gmail.com> skribis:

> Jan Nieuwenhuizen (2016-05-20 14:26 +0300) wrote:
>
>> Taylan Ulrich "Bayırlı/Kammer" writes:
>>
>>> This modified `scheme-indent-function' by Mark Weaver fixes that:
>>
>> Wow, that helps :-) Thank you!
>>
>> I can't seem to find it in Guix git; should I look better or should we
>> link to it somehow?
>
> The source is here:
> <http://www.netris.org/~mhw/scheme-indent-function.el>.
>
> This is a usual problem (I would say an Emacs bug) that people face
> with, and those who know about it, use the mentioned modified version
> 'scheme-indent-function'.
>
> So what about patching our emacs package to fix scheme-indent-function?
> I can make a patch if it's reasonable.

I think we should submit it to bug-emacs@gnu.org first.  Thoughts?

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] gnu: Add sicp.
  2016-05-19 22:06   ` Jan Nieuwenhuizen
  2016-05-20  8:19     ` Taylan Ulrich Bayırlı/Kammer
@ 2016-05-21 21:22     ` Ludovic Courtès
  1 sibling, 0 replies; 12+ messages in thread
From: Ludovic Courtès @ 2016-05-21 21:22 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel

Jan Nieuwenhuizen <janneke@gnu.org> skribis:

> From 44bcbdb30f6789d4bc460aa84dca27321c074cba Mon Sep 17 00:00:00 2001
> From: Jan Nieuwenhuizen <janneke@gnu.org>
> Date: Thu, 19 May 2016 23:50:09 +0200
> Subject: [PATCH] gnu: Add sicp.
>
> * gnu/packages/scheme.scm (sicp): New variable.

Applied with minor changes:

> +    (version "20160220-1.5b52db56")

Avoided the duplicated commit ID here following the manual (info "(guix)
Version Numbers").

> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/sarabander/sicp")
> +             (commit "5b52db566968d28a89fbbaf338d207f01cc81cac")))
> +       (sha256
> +        (base32
> +         "10h6h7szwlfbshwh18bnl2hvyddj5i7106l79s145l0sjjv15cxb"))))

Added a ‘file-name’ field, as noted by ‘guix lint’.

> +           (every zero? (map
> +                         (cut system* "gzip" <>)

Pass ‘-9n’, where ‘-n’ allows the thing to be bit-reproducible (see
--rounds=2).

Thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Fixing scheme-indent-function.
  2016-05-21 21:03           ` Ludovic Courtès
@ 2016-05-24  8:58             ` Alex Kost
  2016-05-25 21:49               ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Alex Kost @ 2016-05-24  8:58 UTC (permalink / raw)
  To: guix-devel

Ludovic Courtès (2016-05-22 00:03 +0300) wrote:

> Alex Kost <alezost@gmail.com> skribis:
>
>> Jan Nieuwenhuizen (2016-05-20 14:26 +0300) wrote:
>>
>>> Taylan Ulrich "Bayırlı/Kammer" writes:
>>>
>>>> This modified `scheme-indent-function' by Mark Weaver fixes that:
>>>
>>> Wow, that helps :-) Thank you!
>>>
>>> I can't seem to find it in Guix git; should I look better or should we
>>> link to it somehow?
>>
>> The source is here:
>> <http://www.netris.org/~mhw/scheme-indent-function.el>.
>>
>> This is a usual problem (I would say an Emacs bug) that people face
>> with, and those who know about it, use the mentioned modified version
>> 'scheme-indent-function'.
>>
>> So what about patching our emacs package to fix scheme-indent-function?
>> I can make a patch if it's reasonable.
>
> I think we should submit it to bug-emacs@gnu.org first.  Thoughts?

I also think so.  IIUC it's Mark and you who found this bug and came up
with this fix, so I hope one of you will submit it :-)

But as it may take a long time until this fix will go to emacs, I think
it would be good to patch our emacs package now.

-- 
Alex

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Fixing scheme-indent-function.
  2016-05-24  8:58             ` Fixing scheme-indent-function Alex Kost
@ 2016-05-25 21:49               ` Ludovic Courtès
  2016-05-26  9:19                 ` Alex Kost
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2016-05-25 21:49 UTC (permalink / raw)
  To: Alex Kost; +Cc: guix-devel

Alex Kost <alezost@gmail.com> skribis:

> Ludovic Courtès (2016-05-22 00:03 +0300) wrote:
>
>> Alex Kost <alezost@gmail.com> skribis:

[...]

>>> The source is here:
>>> <http://www.netris.org/~mhw/scheme-indent-function.el>.
>>>
>>> This is a usual problem (I would say an Emacs bug) that people face
>>> with, and those who know about it, use the mentioned modified version
>>> 'scheme-indent-function'.
>>>
>>> So what about patching our emacs package to fix scheme-indent-function?
>>> I can make a patch if it's reasonable.
>>
>> I think we should submit it to bug-emacs@gnu.org first.  Thoughts?
>
> I also think so.  IIUC it's Mark and you who found this bug and came up
> with this fix, so I hope one of you will submit it :-)

Aha, well done!  Mark?  :-)

> But as it may take a long time until this fix will go to emacs, I think
> it would be good to patch our emacs package now.

Okay, let’s make an exception for this one.  Would you like to take care
of it?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Fixing scheme-indent-function.
  2016-05-25 21:49               ` Ludovic Courtès
@ 2016-05-26  9:19                 ` Alex Kost
  2016-05-28 14:35                   ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Alex Kost @ 2016-05-26  9:19 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1124 bytes --]

Ludovic Courtès (2016-05-26 00:49 +0300) wrote:

> Alex Kost <alezost@gmail.com> skribis:
>
>> Ludovic Courtès (2016-05-22 00:03 +0300) wrote:
>>
>>> Alex Kost <alezost@gmail.com> skribis:
>
> [...]
>
>>>> The source is here:
>>>> <http://www.netris.org/~mhw/scheme-indent-function.el>.
>>>>
>>>> This is a usual problem (I would say an Emacs bug) that people face
>>>> with, and those who know about it, use the mentioned modified version
>>>> 'scheme-indent-function'.
>>>>
>>>> So what about patching our emacs package to fix scheme-indent-function?
>>>> I can make a patch if it's reasonable.
>>>
>>> I think we should submit it to bug-emacs@gnu.org first.  Thoughts?
>>
>> I also think so.  IIUC it's Mark and you who found this bug and came up
>> with this fix, so I hope one of you will submit it :-)
>
> Aha, well done!  Mark?  :-)
>
>> But as it may take a long time until this fix will go to emacs, I think
>> it would be good to patch our emacs package now.
>
> Okay, let’s make an exception for this one.  Would you like to take care
> of it?

Yes, the patch is attached.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-emacs-Fix-indentation-of-scheme-keyword-lists.patch --]
[-- Type: text/x-patch, Size: 3016 bytes --]

From 1044ea4ba6e1549dbdaeaca58d321c02ca70d1e6 Mon Sep 17 00:00:00 2001
From: Alex Kost <alezost@gmail.com>
Date: Thu, 26 May 2016 11:45:16 +0300
Subject: [PATCH] gnu: emacs: Fix indentation of scheme keyword lists.

* gnu/packages/patches/emacs-fix-scheme-indent-function.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/emacs.scm (emacs)[source]: Use it.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/emacs.scm                             |  1 +
 .../patches/emacs-fix-scheme-indent-function.patch | 29 ++++++++++++++++++++++
 3 files changed, 31 insertions(+)
 create mode 100644 gnu/packages/patches/emacs-fix-scheme-indent-function.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 9cd9699..75702cd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -468,6 +468,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/elfutils-tests-ptrace.patch		\
   %D%/packages/patches/einstein-build.patch			\
   %D%/packages/patches/emacs-exec-path.patch			\
+  %D%/packages/patches/emacs-fix-scheme-indent-function.patch	\
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch	\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
   %D%/packages/patches/eudev-rules-directory.patch		\
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 967f583..0674255 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -80,6 +80,7 @@
               (base32
                "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
              (patches (search-patches "emacs-exec-path.patch"
+                                      "emacs-fix-scheme-indent-function.patch"
                                       "emacs-source-date-epoch.patch"))
              (modules '((guix build utils)))
              (snippet
diff --git a/gnu/packages/patches/emacs-fix-scheme-indent-function.patch b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
new file mode 100644
index 0000000..c5a4268
--- /dev/null
+++ b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
@@ -0,0 +1,29 @@
+Fix 'scheme-indent-function' to indent s-expressions starting with a keyword
+properly, like this:
+
+(#:foo 1
+ #:bar 2)
+
+instead of like this:
+
+(#:foo 1
+       #:bar 2)
+
+The fix is made by Mark H Weaver <mhw@netris.org>:
+<http://www.netris.org/~mhw/scheme-indent-function.el>
+
+--- a/lisp/progmodes/scheme.el
++++ b/lisp/progmodes/scheme.el
+@@ -482,6 +482,12 @@
+ 			(> (length function) 3)
+ 			(string-match "\\`def" function)))
+ 	       (lisp-indent-defform state indent-point))
++              ((and (null method)
++                    (> (length function) 1)
++                    ;; The '#' in '#:' seems to get lost, not sure why
++                    (string-match "\\`:" function))
++               (let ((lisp-body-indent 1))
++                 (lisp-indent-defform state indent-point)))
+ 	      ((integerp method)
+ 	       (lisp-indent-specform method state
+ 				     indent-point normal-indent))
-- 
2.7.3


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: Fixing scheme-indent-function.
  2016-05-26  9:19                 ` Alex Kost
@ 2016-05-28 14:35                   ` Ludovic Courtès
  0 siblings, 0 replies; 12+ messages in thread
From: Ludovic Courtès @ 2016-05-28 14:35 UTC (permalink / raw)
  To: Alex Kost; +Cc: guix-devel

Alex Kost <alezost@gmail.com> skribis:

> From 1044ea4ba6e1549dbdaeaca58d321c02ca70d1e6 Mon Sep 17 00:00:00 2001
> From: Alex Kost <alezost@gmail.com>
> Date: Thu, 26 May 2016 11:45:16 +0300
> Subject: [PATCH] gnu: emacs: Fix indentation of scheme keyword lists.
>
> * gnu/packages/patches/emacs-fix-scheme-indent-function.patch: New patch.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/emacs.scm (emacs)[source]: Use it.

OK, thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-05-28 14:35 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-15  8:29 [PATCH] gnu: Add sicp Jan Nieuwenhuizen
2016-05-17 20:55 ` Ludovic Courtès
2016-05-19 22:06   ` Jan Nieuwenhuizen
2016-05-20  8:19     ` Taylan Ulrich Bayırlı/Kammer
2016-05-20 11:26       ` Jan Nieuwenhuizen
2016-05-21 10:58         ` Alex Kost
2016-05-21 21:03           ` Ludovic Courtès
2016-05-24  8:58             ` Fixing scheme-indent-function Alex Kost
2016-05-25 21:49               ` Ludovic Courtès
2016-05-26  9:19                 ` Alex Kost
2016-05-28 14:35                   ` Ludovic Courtès
2016-05-21 21:22     ` [PATCH] gnu: Add sicp Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).