gnu: Add emacs-rainbow-delimiters.
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
index be397f1..54885f4 100644 (file)
@@ -9,6 +9,8 @@
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -825,14 +827,14 @@ provides an optional IDE-like error list.")
 (define-public emms
   (package
     (name "emms")
-    (version "4.0")
+    (version "4.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/emms/emms-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
+                "0ay6631p3dr6xnhkm7skwn0gp317r1mxbip28m126w4zqf05cbh3"))
               (modules '((guix build utils)))
               (snippet
                '(substitute* "Makefile"
@@ -858,69 +860,66 @@ provides an optional IDE-like error list.")
        #:imported-modules (,@%gnu-build-system-modules
                            (guix build emacs-utils))
 
-       #:phases (alist-replace
-                 'configure
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (let ((out     (assoc-ref outputs "out"))
-                         (vorbis  (assoc-ref inputs "vorbis-tools"))
-                         (alsa    (assoc-ref inputs "alsa-utils"))
-                         (mpg321  (assoc-ref inputs "mpg321"))
-                         (mp3info (assoc-ref inputs "mp3info")))
-                     ;; Specify the installation directory.
-                     (substitute* "Makefile"
-                       (("PREFIX=.*$")
-                        (string-append "PREFIX := " out "\n")))
-
-                     (setenv "SHELL" (which "sh"))
-                     (setenv "CC" "gcc")
-
-                     ;; Specify the absolute file names of the various
-                     ;; programs so that everything works out-of-the-box.
-                     (with-directory-excursion "lisp"
-                       (emacs-substitute-variables
-                           "emms-player-mpg321-remote.el"
-                         ("emms-player-mpg321-remote-command"
-                          (string-append mpg321 "/bin/mpg321")))
-                       (substitute* "emms-player-simple.el"
-                         (("\"ogg123\"")
-                          (string-append "\"" vorbis "/bin/ogg123\"")))
-                       (emacs-substitute-variables "emms-info-ogginfo.el"
-                         ("emms-info-ogginfo-program-name"
-                          (string-append vorbis "/bin/ogginfo")))
-                       (emacs-substitute-variables "emms-info-libtag.el"
-                         ("emms-info-libtag-program-name"
-                          (string-append out "/bin/emms-print-metadata")))
-                       (emacs-substitute-variables "emms-info-mp3info.el"
-                         ("emms-info-mp3info-program-name"
-                          (string-append mp3info "/bin/mp3info")))
-                       (substitute* "emms-volume-amixer.el"
-                         (("\"amixer\"")
-                          (string-append "\"" alsa "/bin/amixer\"")))
-                       (substitute* "emms-tag-editor.el"
-                         (("\"mp3info\"")
-                          (string-append "\"" mp3info "/bin/mp3info\""))))))
-                 (alist-cons-before
-                  'install 'pre-install
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    ;; The 'install' rule expects the target directory to
-                    ;; exist.
-                    (let* ((out  (assoc-ref outputs "out"))
-                           (man1 (string-append out "/share/man/man1")))
-                      (mkdir-p man1)
-                      #t))
-                  (alist-cons-after
-                   'install 'post-install
-                   (lambda* (#:key outputs #:allow-other-keys)
-                     (let* ((out    (assoc-ref outputs "out"))
-                            (target (string-append
-                                     out "/bin/emms-print-metadata")))
-                       (symlink "emms-auto.el"
-                                (string-append out "/share/emacs/site-lisp/"
-                                               "emms-autoloads.el"))
-                       (mkdir-p (dirname target))
-                       (copy-file "src/emms-print-metadata" target)
-                       (chmod target #o555)))
-                   %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out     (assoc-ref outputs "out"))
+                   (vorbis  (assoc-ref inputs "vorbis-tools"))
+                   (alsa    (assoc-ref inputs "alsa-utils"))
+                   (mpg321  (assoc-ref inputs "mpg321"))
+                   (mp3info (assoc-ref inputs "mp3info")))
+               ;; Specify the installation directory.
+               (substitute* "Makefile"
+                 (("PREFIX=.*$")
+                  (string-append "PREFIX := " out "\n")))
+
+               (setenv "SHELL" (which "sh"))
+               (setenv "CC" "gcc")
+
+               ;; Specify the absolute file names of the various
+               ;; programs so that everything works out-of-the-box.
+               (with-directory-excursion "lisp"
+                 (emacs-substitute-variables
+                     "emms-player-mpg321-remote.el"
+                   ("emms-player-mpg321-remote-command"
+                    (string-append mpg321 "/bin/mpg321")))
+                 (substitute* "emms-player-simple.el"
+                   (("\"ogg123\"")
+                    (string-append "\"" vorbis "/bin/ogg123\"")))
+                 (emacs-substitute-variables "emms-info-ogginfo.el"
+                   ("emms-info-ogginfo-program-name"
+                    (string-append vorbis "/bin/ogginfo")))
+                 (emacs-substitute-variables "emms-info-libtag.el"
+                   ("emms-info-libtag-program-name"
+                    (string-append out "/bin/emms-print-metadata")))
+                 (emacs-substitute-variables "emms-info-mp3info.el"
+                   ("emms-info-mp3info-program-name"
+                    (string-append mp3info "/bin/mp3info")))
+                 (substitute* "emms-volume-amixer.el"
+                   (("\"amixer\"")
+                    (string-append "\"" alsa "/bin/amixer\"")))
+                 (substitute* "emms-tag-editor.el"
+                   (("\"mp3info\"")
+                    (string-append "\"" mp3info "/bin/mp3info\"")))))))
+         (add-before 'install 'pre-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The 'install' rule expects the target directory to exist.
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man1 (string-append out "/share/man/man1")))
+               (mkdir-p man1)
+               #t)))
+         (add-after 'install 'post-install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out    (assoc-ref outputs "out"))
+                    (target (string-append
+                             out "/bin/emms-print-metadata")))
+               (symlink "emms-auto.el"
+                        (string-append out "/share/emacs/site-lisp/"
+                                       "emms-autoloads.el"))
+               (mkdir-p (dirname target))
+               (copy-file "src/emms-print-metadata" target)
+               (chmod target #o555)))))
        #:tests? #f))
     (native-inputs `(("emacs" ,emacs-minimal)    ;for (guix build emacs-utils)
                      ("texinfo" ,texinfo)))
@@ -1430,7 +1429,7 @@ identifiers in the MIT-Scheme documentation.")
     (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
     (source
      (origin
-       (file-name (string-append name "-" version ".el"))
+       (file-name (string-append name "-" version ".tar.gz"))
        (method url-fetch)
        (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
                            "/archive/v" version ".tar.gz"))
@@ -1775,3 +1774,160 @@ ongoing operations.")
 complement basic functions provided by @code{subr.el}.  All provided functions
 work on lists, strings and vectors.")
     (license license:gpl3+)))
+
+(define-public emacs-better-defaults
+  (package
+    (name "emacs-better-defaults")
+    (version "0.1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/technomancy/better-defaults"
+                           "/archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/technomancy/better-defaults")
+    (synopsis "Better defaults for Emacs")
+    (description
+     "Better defaults attempts to address the most obvious deficiencies of the
+Emacs default configuration in uncontroversial ways that nearly everyone can
+agree upon.")
+    (license license:gpl3+)))
+
+(define-public emacs-smex
+  (package
+    (name "emacs-smex")
+    (version "3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com"
+                                  "/nonsequitur/smex/" version "/smex.el"))
+              (file-name (string-append "smex-" version ".el"))
+              (sha256
+               (base32
+                "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
+    (build-system emacs-build-system)
+    (home-page "http://github.com/nonsequitur/smex/")
+    (synopsis "M-x interface with Ido-style fuzzy matching")
+    (description
+     "Smex is a M-x enhancement for Emacs.  Built on top of Ido, it provides a
+convenient interface to your recently and most frequently used commands.  And
+to all the other commands, too.")
+    (license license:gpl3+)))
+
+(define-public emacs-js2-mode
+  (package
+    (name "emacs-js2-mode")
+    (version "20150909")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mooz/js2-mode/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mooz/js2-mode/")
+    (synopsis "Improved JavaScript editing mode for Emacs")
+    (description
+     "Js2-mode provides a JavaScript major mode for Emacs that is more
+advanced than the built-in javascript-mode.  Features include accurate syntax
+highlighting using a recursive-descent parser, on-the-fly reporting of syntax
+errors and strict-mode warnings, smart line-wrapping within comments and
+strings, and code folding.")
+    (license license:gpl3+)))
+
+(define-public emacs-markdown-mode
+  (package
+    (name "emacs-markdown-mode")
+    (version "2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/jrblevin"
+                                  "/markdown-mode/v" version
+                                  "/markdown-mode.el"))
+              (file-name (string-append "markdown-mode-" version ".el"))
+              (sha256
+               (base32
+                "1faibar32jnjia9202swblw91q6z1g5s4k9xmypwjahfh8yznl6w"))))
+    (build-system emacs-build-system)
+    (home-page "http://jblevins.org/projects/markdown-mode/")
+    (synopsis "Emacs Major mode for Markdown files")
+    (description
+     "Markdown-mode is a major mode for editing Markdown-formatted text files
+in Emacs.")
+    (license license:gpl3+)))
+
+(define-public emacs-projectile
+  (package
+    (name "emacs-projectile")
+    (version "0.13.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/bbatsov"
+                                  "/projectile/v" version "/projectile.el"))
+              (file-name (string-append "projectile-" version ".el"))
+              (sha256
+               (base32
+                "1pc6xb61hzxzc5hkqkli1ab0s7wz0rfgx4kcn9y30ksvhw18smbz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-pkg-info" ,emacs-pkg-info)))
+    (home-page "https://github.com/bbatsov/projectile")
+    (synopsis "Manage and navigate projects in Emacs easily")
+    (description
+     "This library provides easy project management and navigation.  The
+concept of a project is pretty basic - just a folder containing special file.
+Currently git, mercurial and bazaar repos are considered projects by default.
+If you want to mark a folder manually as a project just create an empty
+.projectile file in it.")
+    (license license:gpl3+)))
+
+(define-public emacs-elfeed
+  (package
+    (name "emacs-elfeed")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/skeeto/elfeed/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0i75r8x9ypbfjlnym04h16ikcrlks86p7wsgawrx7mh1lk4inp89"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/skeeto/elfeed")
+    (synopsis "Atom/RSS feed reader for Emacs")
+    (description
+     "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
+and RSS, with a user interface inspired by notmuch.")
+    (license license:gpl3+)))
+
+(define-public emacs-rainbow-delimiters
+  (package
+    (name "emacs-rainbow-delimiters")
+    (version "2.1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://raw.githubusercontent.com/Fanael"
+                                  "/rainbow-delimiters/" version
+                                  "/rainbow-delimiters.el"))
+              (file-name (string-append "rainbow-delimiters-" version ".el"))
+              (sha256
+               (base32
+                "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Fanael/rainbow-delimiters")
+    (synopsis "Highlight brackets according to their depth")
+    (description
+     "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
+highlights parentheses, brackets, and braces according to their depth.  Each
+successive level is highlighted in a different color, making it easy to spot
+matching delimiters, orient yourself in the code, and tell which statements
+are at a given level.")
+    (license license:gpl3+)))