gnu: miniupnpc: Update to 2.0.
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
index ad51634..c1f1266 100644 (file)
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
@@ -16,6 +16,7 @@
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages mp3)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gd)
+  #:use-module (gnu packages fontutils)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1))
 
 (define-public emacs
   (package
     (name "emacs")
-    (version "24.5")
+    (version "25.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/emacs/emacs-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
+               "0cwgyiyymnx4xdg99dm2drfxcyhy2jmyf0rkr9fwj9mwwf77kwhr"))
              (patches (search-patches "emacs-exec-path.patch"
                                       "emacs-fix-scheme-indent-function.patch"
                                       "emacs-source-date-epoch.patch"))
        ("libsm" ,libsm)
        ("alsa-lib" ,alsa-lib)
        ("dbus" ,dbus)
-       ("guix-src" ,(package-source guix))))
+       ("guix-src" ,(package-source guix))
+
+       ;; multilingualization support
+       ("libotf" ,libotf)
+       ("m17n-lib" ,m17n-lib)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("texinfo" ,texinfo)))
@@ -257,14 +266,14 @@ editor (without an X toolkit)" )
 (define-public geiser
   (package
     (name "geiser")
-    (version "0.8.1")
+    (version "0.9")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/geiser/" version
                                  "/geiser-" version ".tar.gz"))
              (sha256
               (base32
-               "163zh8qf1q8l485d94a51a9xixirj8r2xvrbgxyw06vkaqrz5qvc"))))
+               "1n772ysl1dmn0vy3gk230ymyjm14h93zw99y6h2rqp1ixy7v43dm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
@@ -289,22 +298,24 @@ metadata.")
     (license license:bsd-3)))
 
 (define-public geiser-next
-  ;; Geiser's upcoming version supports guile-next, and 0.8.1 does not.
-  ;; When the next Geiser release comes out, we can remove this.
-  (let ((commit "2e335695fc1a4a0b520b50deb761b958194cbec4"))
+  ;; Geiser's upcoming version supports Chibi and Chez, while it was forgot to
+  ;; include some required files in 0.9.  When the next Geiser release comes
+  ;; out, we can remove this.
+  (let ((commit "16035b9fa475496f7f89a57fa81455057af749a0")
+        (revision "1"))
     (package
       (inherit geiser)
       (name "geiser-next")
-      (version (string-append "0.8.1-1"
-                              (string-take commit 7)))
+      (version (string-append "0.9-" revision "." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
+                (file-name (string-append name "-" version ".tar.gz"))
                 (uri (git-reference
                       (url "git://git.sv.gnu.org/geiser.git")
                       (commit commit)))
                 (sha256
                  (base32
-                  "00rmpn8zncq1fiah5m12l26z0s28bh7ql63kxdvksqdgfrisnmgf"))))
+                  "1rrafizrhjkai0msryjiz4c5dcdyihf0i2wmgiy8br74rwbxpyl5"))))
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)
@@ -320,7 +331,7 @@ metadata.")
 
 (define-public paredit
   (package
-    (name "paredit")
+    (name "emacs-paredit")
     (version "24")
     (source (origin
               (method url-fetch)
@@ -364,6 +375,9 @@ for those who may want transient periods of unbalanced parentheses, such as
 when typing parentheses directly or commenting out code line by line.")
     (license license:gpl3+)))
 
+(define-public paredit/old-name
+  (deprecated-package "paredit" paredit))
+
 (define-public git-modes
   (package
     (name "git-modes")
@@ -412,7 +426,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
 (define-public emacs-with-editor
   (package
     (name "emacs-with-editor")
-    (version "2.5.2")
+    (version "2.5.6")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -421,7 +435,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0k57f2wqng7510nzyzgjgbapplia23l3zrphl816nfm4s58sy1ka"))))
+                "14vypqj3wqym5yd0nggfm1xdgq5hv1kwxkg6i8ymlpxcdfxj45w7"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -589,7 +603,7 @@ process, passing on the arguments as command line arguments.")
 (define-public haskell-mode
   (package
     (name "haskell-mode")
-    (version "13.14.2")
+    (version "16.1")
     (source (origin
               (method url-fetch)
               (file-name (string-append name "-" version ".tar.gz"))
@@ -597,7 +611,12 @@ process, passing on the arguments as command line arguments.")
                     "https://github.com/haskell/haskell-mode/archive/v"
                     version ".tar.gz"))
               (sha256
-               (base32 "1kxc2yj8vb122dv91r68h7c5ladcryx963fr16plfhg71fv7f9av"))))
+               (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h"))))
+    (inputs
+     `(("emacs-el-search" ,emacs-el-search) ; for tests
+       ("emacs-stream" ,emacs-stream)))     ; for tests
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)))
     (native-inputs
      `(("emacs" ,emacs-minimal)
        ("texinfo" ,texinfo)))
@@ -606,15 +625,38 @@ process, passing on the arguments as command line arguments.")
      `(#:make-flags (list (string-append "EMACS="
                                          (assoc-ref %build-inputs "emacs")
                                          "/bin/emacs"))
+       #:modules ((ice-9 match)
+                  (srfi srfi-26)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before
           'build 'pre-build
           (lambda* (#:key inputs #:allow-other-keys)
+            (define (el-dir store-dir)
+              (match (find-files store-dir)
+                ((f1 f2 ...) (dirname f1))
+                (_ "")))
+
             (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
+              (define emacs-prefix? (cut string-prefix? "emacs-" <>))
+
               (setenv "SHELL" "sh")
+              (setenv "EMACSLOADPATH"
+                      (string-concatenate
+                       (map (match-lambda
+                              (((? emacs-prefix? name) . dir)
+                               (string-append (el-dir dir) ":"))
+                              (_ ""))
+                            inputs)))
               (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
+              (substitute* "tests/haskell-code-conventions.el"
+                ;; Function name recently changed in "emacs-el-search".
+                (("el-search--search-pattern") "el-search-forward")
+                ;; Don't contact home.
+                (("\\(when \\(>= emacs-major-version 25\\)")
+                 "(require 'el-search) (when nil"))
               #t)))
          (replace
           'install
@@ -635,9 +677,9 @@ process, passing on the arguments as command line arguments.")
                 (install-file "haskell-mode.info" info))
                (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
                (copy-to-dir el-dir (find-files "." "\\.elc?"))
-               ;; these are now distributed with emacs
+               ;; These are part of other packages.
                (with-directory-excursion el-dir
-                 (for-each delete-file '("cl-lib.el" "ert.el")))
+                 (for-each delete-file '("dash.el" "ert.el")))
                #t))))))
     (home-page "https://github.com/haskell/haskell-mode")
     (synopsis "Haskell mode for Emacs")
@@ -652,7 +694,7 @@ programs.")
     (version "1.0.4")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/let-alist-"
+              (uri (string-append "https://elpa.gnu.org/packages/let-alist-"
                                   version ".el"))
               (sha256
                (base32
@@ -681,7 +723,7 @@ programs.")
                      (emacs-byte-compile-directory lispdir)
                      #t))))
     (native-inputs `(("emacs" ,emacs-minimal)))
-    (home-page "http://elpa.gnu.org/packages/let-alist.html")
+    (home-page "https://elpa.gnu.org/packages/let-alist.html")
     (synopsis "Easily let-bind values of an assoc-list by their names")
     (description
      "This package offers a single Emacs Lisp macro, @code{let-alist}.  This
@@ -969,7 +1011,7 @@ light user interface.")
 (define-public emacs-emms-player-mpv
   (package
     (name "emacs-emms-player-mpv")
-    (version "0.0.8")
+    (version "0.0.10")
     (source
      (origin
        (method url-fetch)
@@ -978,7 +1020,7 @@ light user interface.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "01wj410dpx25b3i8781i2j9c6nlvzvvphy9qgh7zfpmyz6a3wsm4"))))
+         "1q81fpmwr8hpdgq71vbdai2nml4yyqbmk4ffdyl4irlwph8gfjyq"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emms" ,emms)))
@@ -989,6 +1031,29 @@ light user interface.")
 and seeking.")
     (license license:gpl3+)))
 
+(define-public emacs-emms-mode-line-cycle
+  (package
+    (name "emacs-emms-mode-line-cycle")
+    (version "0.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/momomo5717/emms-mode-line-cycle"
+                           "/archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0ifszi930pnaxk1x8pcydmvnp06868gc7nfx14q17zbajbx735k6"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emms" ,emms)))
+    (home-page "https://github.com/momomo5717/emms-mode-line-cycle")
+    (synopsis "Display the EMMS mode line as a ticker")
+    (description
+     "This is a minor mode for updating the EMMS mode-line string cyclically
+within a specified width.  It is useful for displaying long track titles.")
+    (license license:gpl3+)))
+
 \f
 ;;;
 ;;; Miscellaneous.
@@ -1038,13 +1103,13 @@ mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
     (version "1.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/async-"
+              (uri (string-append "https://elpa.gnu.org/packages/async-"
                                   version ".tar"))
               (sha256
                (base32
                 "1ip5nc8xyln5szvqwp6wqva9xr84pn8ssn3nnphrszr19y4js2bm"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/async.html")
+    (home-page "https://elpa.gnu.org/packages/async.html")
     (synopsis "Asynchronous processing in Emacs")
     (description
      "This package provides the ability to call asynchronous functions and
@@ -1061,7 +1126,7 @@ as a library for other Emacs packages.")
      (origin
        (method url-fetch)
        (uri (string-append
-             "http://elpa.gnu.org/packages/auctex-"
+             "https://elpa.gnu.org/packages/auctex-"
              version
              ".tar"))
        (sha256
@@ -1211,6 +1276,28 @@ and stored in memory.")
     (description "This package provides a modern list API library for Emacs.")
     (license license:gpl3+)))
 
+(define-public emacs-d-mode
+  (package
+    (name "emacs-d-mode")
+    (version "2.0.8")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
+                    "archive/" version ".tar.gz"))
+              (sha256
+               (base32
+                "0knpgi55jm09282aqf8pv55zillpnpzf9f4sgm6gwsmvxf17xaw0"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-undercover" ,emacs-undercover)))
+    (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
+    (synopsis "Emacs major mode for editing D code")
+    (description "This package provides an Emacs major mode for highlighting
+code written in the D programming language.  This mode is currently known to
+work with Emacs 24 and 25.")
+    (license license:gpl2+)))
+
 (define-public emacs-undo-tree
   (package
     (name "emacs-undo-tree")
@@ -1327,6 +1414,34 @@ Expectations, but it can be used in other contexts.")
 definitions for testing with the Ecukes framework.")
     (license license:gpl3+)))
 
+(define-public emacs-es-mode
+  (package
+    (name "emacs-es-mode")
+    (version "4.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/dakrone/es-mode/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "02as82clm553yss7jfjac888308zr1h2229cch4z1yij70j25c8y"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
+     ;; to be rendered incorrectly
+     `(("emacs-org" ,emacs-org)))
+    (home-page "https://github.com/dakrone/es-mode")
+    (synopsis "Major mode for editing Elasticsearch queries")
+    (description "@code{es-mode} includes highlighting, completion and
+indentation support for Elasticsearch queries.  Also supported are
+@code{es-mode} blocks in @code{org-mode}, for which the results of queries can
+be processed through @code{jq}, or in the case of aggregations, can be
+rendered in to a table.  In addition, there is an @code{es-command-center}
+mode, which displays information about Elasticsearch clusters.")
+    (license license:gpl3+)))
+
 (define-public emacs-expand-region
   (package
     (name "emacs-expand-region")
@@ -1616,18 +1731,18 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.9")
+    (version "0.12")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/debbugs-"
+              (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "1wc6kw7hihqqdx8qyl01akygycnan44x400hwrcf54m3hb4isa0k"))))
+                "1swi4d7fhahimid9j12cypmkz7dlqgffrnhfxy5ra44y3j2b35ph"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)))
-    (home-page "http://elpa.gnu.org/packages/debbugs.html")
+    (home-page "https://elpa.gnu.org/packages/debbugs.html")
     (synopsis "Access the Debbugs bug tracker in Emacs")
     (description
      "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
@@ -2050,6 +2165,32 @@ number.")
 @code{org-mode} to be rendered as UTF-8 characters.")
     (license license:gpl3+)))
 
+(define-public emacs-org-trello
+  (package
+    (name "emacs-org-trello")
+    (version "0.7.9")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/org-trello/org-trello/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "074dka8g673bj1ck5vavbjaij5jyniygdlw51mdds005wd2br9wf"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-deferred" ,emacs-deferred)
+       ("emacs-request" ,emacs-request)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://org-trello.github.io")
+    (synopsis "Emacs minor mode for interacting with Trello")
+    (description "This package provides an Emacs minor mode to extend
+@code{org-mode} with Trello abilities.  Trello is an online project
+organizer.")
+    (license license:gpl3+)))
+
 (define-public emacs-zenburn-theme
   (package
     (name "emacs-zenburn-theme")
@@ -2099,7 +2240,7 @@ package provides a light and a dark variant.")
     (version "1.3.0")
     (source
      (origin (method url-fetch)
-             (uri (string-append "http://elpa.gnu.org/packages/ahungry-theme-"
+             (uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-"
                                  version ".tar"))
              (sha256
               (base32
@@ -2116,7 +2257,7 @@ dark background.")
 (define-public emacs-smartparens
   (package
     (name "emacs-smartparens")
-    (version "1.7.1")
+    (version "1.8.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2125,7 +2266,7 @@ dark background.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1b47ppkzsj8j8a2p0bmvq05rhm2d2lsm3wlc0sg542r4zr6nji8s"))))
+                "0xsqiklg0q4w6gj0js1hvsz4lkypvcx6c9kzb1mz232gwlqx1azw"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
     (home-page "https://github.com/Fuco1/smartparens")
@@ -2145,15 +2286,16 @@ well as completely new features.")
 (define-public emacs-hl-todo
   (package
     (name "emacs-hl-todo")
-    (version "1.7.0")
+    (version "1.7.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://raw.githubusercontent.com/tarsius/hl-todo/"
                     version "/hl-todo.el"))
+              (file-name (string-append "hl-todo-" version ".el"))
               (sha256
                (base32
-                "18zydm43zajlglhgr0bhdkd4pln27amd063k2ql6p1mvyam3j8ia"))))
+                "0flhz9vy8w1vvwwji92pi5k4659hl368bakj2qf2zfd26z8x583h"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/hl-todo")
     (synopsis "Emacs mode to highlight TODO and similar keywords")
@@ -2191,10 +2333,54 @@ perspective only its buffers are available by default.")
     ;; the Expat license.
     (license license:gpl3+)))
 
+(define-public emacs-request
+  (package
+    (name "emacs-request")
+    (version "0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/tkf/emacs-request/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32 "0sll9g9x15jxrdr58pdxx4iz74rnjd43q521iqm890i6hmkrgwap"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/tkf/emacs-request")
+    (synopsis "Package for speaking HTTP in Emacs Lisp")
+    (description "This package provides a HTTP request library with multiple
+backends.  It supports url.el which is shipped with Emacs and the curl command
+line program.")
+    (license license:gpl3+)))
+
+(define-public emacs-rudel
+  (package
+    (name "emacs-rudel")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://elpa.gnu.org/packages/rudel-"
+                           version ".tar"))
+       (sha256
+        (base32
+         "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz"))))
+    (build-system emacs-build-system)
+    (home-page "http://rudel.sourceforge.net/")
+    (synopsis "Collaborative editing framework")
+    (description
+     "Rudel is a collaborative editing environment for GNU Emacs.  Its purpose
+is to share buffers with other users in order to edit the contents of those
+buffers collaboratively.  Rudel supports multiple backends to enable
+communication with other collaborative editors using different protocols,
+though currently Obby (for use with the Gobby editor) is the only
+fully-functional one.")
+    (license license:gpl3+)))
+
 (define-public emacs-hydra
   (package
     (name "emacs-hydra")
-    (version "0.13.0")
+    (version "0.13.6")
     (source
      (origin
        (method url-fetch)
@@ -2203,7 +2389,7 @@ perspective only its buffers are available by default.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "19ynkjlg3jj7x90xxbz885324h6nkxmzlb2c2c95xkr20zckn0lk"))))
+         "0575vh858gm35p57s49dy6pc2ij46dmj9zaa4z0cp98sqra3j3l0"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/abo-abo/hydra")
     (synopsis "Make Emacs bindings that stick around")
@@ -2405,7 +2591,7 @@ The purpose of this library is to wrap all the quirks and hassle of
     (version "0.1.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/queue-"
+              (uri (string-append "https://elpa.gnu.org/packages/queue-"
                                   version ".el"))
               (sha256
                (base32
@@ -2448,7 +2634,7 @@ be removed from the front.  This type of data structure is sometimes called an
     (version "1.7.1")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/spinner-"
+              (uri (string-append "https://elpa.gnu.org/packages/spinner-"
                                   version ".el"))
               (sha256
                (base32
@@ -2467,13 +2653,13 @@ ongoing operations.")
     (version "2.15")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://elpa.gnu.org/packages/seq-"
+              (uri (string-append "https://elpa.gnu.org/packages/seq-"
                                   version ".tar"))
               (sha256
                (base32
                 "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/seq.html")
+    (home-page "https://elpa.gnu.org/packages/seq.html")
     (synopsis "Sequence manipulation functions for Emacs")
     (description
      "This Emacs library provides sequence-manipulation functions that
@@ -2942,6 +3128,54 @@ Lua programing language}.")
 news items, openrc and runscripts.")
     (license license:gpl2+)))
 
+(define-public emacs-evil
+  (package
+    (name "emacs-evil")
+    (version "1.2.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://bitbucket.org/lyro/evil/get/"
+                           version ".tar.bz2"))
+       (file-name (string-append name "-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "17cda9fnbq3gmjcxs3lyq64gxswrf37y864bm53rldwsk3khq2yi"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-undo-tree" ,emacs-undo-tree)
+       ("emacs-goto-chg" ,emacs-goto-chg)))
+    (home-page "https://bitbucket.com/lyro/evil")
+    (synopsis "Extensible Vi layer for Emacs")
+    (description
+     "Evil is an extensible vi layer for Emacs.  It emulates the
+main features of Vim, and provides facilities for writing custom
+extensions.")
+    (license license:gpl3+)))
+
+(define-public emacs-goto-chg
+  (package
+    (name "emacs-goto-chg")
+    (version "1.6")
+    (source
+     (origin
+       (method url-fetch)
+       ;; There is no versioned source.
+       (uri "https://www.emacswiki.org/emacs/download/goto-chg.el")
+       (sha256
+        (base32
+         "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"))))
+    (build-system emacs-build-system)
+    ;; There is no other home page.
+    (home-page "https://www.emacswiki.org/emacs/goto-chg.el")
+    (synopsis "Go to the last change in the Emacs buffer")
+    (description
+     "This package provides @code{M-x goto-last-change} command that goes to
+the point of the most recent edit in the current Emacs buffer.  When repeated,
+go to the second most recent edit, etc.  Negative argument, @kbd{C-u -}, is
+used for reverse direction.")
+    (license license:gpl2+)))
+
 (define-public emacs-writegood-mode
   (package
     (name "emacs-writegood-mode")
@@ -2986,14 +3220,14 @@ passive voice.")
 (define-public emacs-org
   (package
     (name "emacs-org")
-    (version "20160815")
+    (version "20161118")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://orgmode.org/elpa/org-"
+              (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "0k9pa13kpmpi6irmbavxffgqfanhjnijz4mkmmi0zp7kgjfbaliw"))))
+                "1w9g8r08kaiw9f4fjsj0hbffzq85rj734j5lxvbaafbnz7dbklk1"))))
     (build-system emacs-build-system)
     (home-page "http://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -3030,7 +3264,7 @@ Flx has support for ido (interactively do things) through flx-ido.")
 (define-public emacs-cyberpunk-theme
   (package
     (name "emacs-cyberpunk-theme")
-    (version "1.17")
+    (version "1.18")
     (source
      (origin
        (method url-fetch)
@@ -3038,7 +3272,7 @@ Flx has support for ido (interactively do things) through flx-ido.")
                            "archive/" version ".tar.gz"))
        (sha256
         (base32
-         "068jcn4g1bvwgpcvyfqygzw6ahill51c1sqzyyvj2paxckbd7h51"))
+         "0pxzbw0qjxgkhhs3gn3k9qy41kl1a4pfzbw83dk24l4b3nxd24wg"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/n3mo/cyberpunk-theme.el")
@@ -3048,6 +3282,35 @@ Flx has support for ido (interactively do things) through flx-ido.")
 known loosely as deftheme.  Many mode-specific customizations are included.")
     (license license:gpl3+)))
 
+(define-public emacs-danneskjold-theme
+  (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57")
+         (revision "1"))
+    (package
+      (name "emacs-danneskjold-theme")
+      (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+      (home-page "https://github.com/rails-to-cosmos/danneskjold-theme")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'delete-screenshots
+             (lambda _
+               (delete-file-recursively "screenshots") #t)))))
+      (synopsis "High-contrast Emacs theme")
+      (description
+       "@code{danneskjold-theme} is a high-contrast theme for Emacs.")
+      (license license:gpl3+))))
+
 (define-public emacs-auto-complete
   (package
     (name "emacs-auto-complete")
@@ -3073,3 +3336,136 @@ that allows users to concentrate more on their own work.  Its features are:
 a visual interface, reduce overhead of completion by using statistic method,
 extensibility.")
     (license license:gpl3+)))
+
+(define-public m17n-db
+  (package
+    (name "m17n-db")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/m17n/m17n-db-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1w08hnsbknrcjlzp42c99bgwc9hzsnf5m4apdv0dacql2s09zfm2"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("gettext" ,gettext-minimal)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--with-charmaps="
+                            (assoc-ref %build-inputs "libc")
+                            "/share/i18n/charmaps"))))
+    ;; With `guix lint' the home-page URI returns a small page saying
+    ;; that your browser does not handle frames. This triggers the "URI
+    ;; returns suspiciously small file" warning.
+    (home-page "http://www.nongnu.org/m17n/")
+    (synopsis "Multilingual text processing library (database)")
+    (description "The m17n library realizes multilingualization of
+many aspects of applications.  The m17n library represents
+multilingual text as an object named M-text.  M-text is a string with
+attributes called text properties, and designed to substitute for
+string in C.  Text properties carry any information required to input,
+display and edit the text.
+
+This package contains the library database.")
+    (license license:lgpl2.1+)))
+
+(define-public m17n-lib
+  (package
+    (name "m17n-lib")
+    (version "1.7.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/m17n/m17n-lib-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "10yv730i25g1rpzv6q49m6xn4p8fjm7jdwvik2h70sn8w3hm7f4f"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("fribidi" ,fribidi)
+       ("gd" ,gd)
+       ("libotf" ,libotf)
+       ("libxft" ,libxft)
+       ("libxml2" ,libxml2)
+       ("m17n-db" ,m17n-db)))
+    (arguments
+     `(#:parallel-build? #f))
+    ;; With `guix lint' the home-page URI returns a small page saying
+    ;; that your browser does not handle frames. This triggers the "URI
+    ;; returns suspiciously small file" warning.
+    (home-page "http://www.nongnu.org/m17n/")
+    (synopsis "Multilingual text processing library (runtime)")
+    (description "The m17n library realizes multilingualization of
+many aspects of applications.  The m17n library represents
+multilingual text as an object named M-text.  M-text is a string with
+attributes called text properties, and designed to substitute for
+string in C.  Text properties carry any information required to input,
+display and edit the text.
+
+This package contains the library runtime.")
+    (license license:lgpl2.1+)))
+
+(define-public emacs-nginx-mode
+  (package
+    (name "emacs-nginx-mode")
+    (version "1.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/ajc/nginx-mode/archive/v"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1lvkj07kq0jkskr2f61vqb5rlrbnaz9a76ikq40w6925i2r970rr"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/ajc/nginx-mode")
+    (synopsis "Emacs major mode for editing nginx config files")
+    (description "This package provides an Emacs major mode for
+editing nginx config files.")
+    (license license:gpl2+)))
+
+(define-public emacs-stream
+  (package
+    (name "emacs-stream")
+    (version "2.2.0")
+    (home-page "https://github.com/NicolasPetton/stream")
+    (source
+     (origin
+       (method url-fetch)
+       (file-name (string-append name "-" version ".tar.gz"))
+       (uri (string-append home-page "/archive/"version ".tar.gz"))
+       (sha256
+        (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
+    (build-system emacs-build-system)
+    (synopsis "Implementation of streams for Emacs")
+    (description "This library provides an implementation of streams for Emacs.
+Streams are implemented as delayed evaluation of cons cells.")
+    (license license:gpl3+)))
+
+(define-public emacs-el-search
+  (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
+        (revision "1"))
+    (package
+      (name "emacs-el-search")
+      ;; No ufficial release.
+      (version (string-append "0.0-" revision "." (string-take commit 7)))
+      (home-page "https://github.com/emacsmirror/el-search")
+      (source
+       (origin
+         (method git-fetch)
+         (file-name (string-append name "-" version ".tar.gz"))
+         (uri (git-reference
+               (commit commit)
+               (url (string-append home-page ".git"))))
+         (sha256
+          (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
+      (build-system emacs-build-system)
+      (inputs `(("emacs-stream" ,emacs-stream)))
+      (synopsis "Expression based interactive search for emacs-lisp-mode")
+      (description "This package provides expression based interactive search
+procedures for emacs-lisp-mode.")
+      (license license:gpl3+))))