gnu: Add emacs-zones.
[jackhill/guix/guix.git] / gnu / packages / emacs-xyz.scm
index 785bb84..03182a9 100644 (file)
 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
-;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
 ;;; Copyright © 2017, 2018 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2017, 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
 ;;; Copyright © 2017, 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
-;;; Copyright © 2018 Jack Hill <jackhill@jackhill.us>
+;;; Copyright © 2018, 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
+;;; Copyright © 2019 Dimakakos Dimos <bendersteed@teknik.io>
+;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -94,6 +97,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages music)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages scheme)
+  #:use-module (gnu packages speech)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages gettext)
@@ -248,160 +253,143 @@ on stdout instead of using a socket as the Emacsclient does.")
     (license license:gpl3+)))
 
 (define-public emacs-magit
-  (package
-    (name "emacs-magit")
-    (version "2.13.1")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                    (url "https://github.com/magit/magit")
-                    (commit version)))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "1kmjjcvhcb21qi6kmrlhf92ync8va5l41n9ban8kj25h7dbqyiym"))))
-    (build-system gnu-build-system)
-    (native-inputs `(("texinfo" ,texinfo)
-                     ("emacs" ,emacs-minimal)))
-    (inputs
-     `(("git" ,git)
-       ("perl" ,perl)))
-    (propagated-inputs
-     `(("dash" ,emacs-dash)
-       ("ghub" ,emacs-ghub)
-       ("graphql" ,emacs-graphql)
-       ("treepy" ,emacs-treepy)
-       ("magit-popup" ,emacs-magit-popup)
-       ("with-editor" ,emacs-with-editor)))
-    (arguments
-     `(#:test-target "test"
-       #:tests? #f               ; tests are not included in the release
-
-       #:make-flags
-       (list (string-append "PREFIX=" %output)
-             ;; Don't put .el files in a sub-directory.
-             (string-append "lispdir=" %output "/share/emacs/site-lisp")
-             (string-append "DASH_DIR="
-                            (assoc-ref %build-inputs "dash")
-                            "/share/emacs/site-lisp/guix.d/dash-"
-                            ,(package-version emacs-dash))
-             (string-append "GHUB_DIR="
-                            (assoc-ref %build-inputs "ghub")
-                            "/share/emacs/site-lisp/guix.d/ghub-"
-                            ,(package-version emacs-ghub))
-             (string-append "GRAPHQL_DIR="
-                            (assoc-ref %build-inputs "graphql")
-                            "/share/emacs/site-lisp/guix.d/graphql-"
-                            ,(package-version emacs-graphql))
-             (string-append "TREEPY_DIR="
-                            (assoc-ref %build-inputs "treepy")
-                            "/share/emacs/site-lisp/guix.d/treepy-"
-                            ,(package-version emacs-treepy))
-             (string-append "MAGIT_POPUP_DIR="
-                            (assoc-ref %build-inputs "magit-popup")
-                            "/share/emacs/site-lisp/guix.d/magit-popup-"
-                            ,(package-version emacs-magit-popup))
-             (string-append "WITH_EDITOR_DIR="
-                            (assoc-ref %build-inputs "with-editor")
-                            "/share/emacs/site-lisp/guix.d/with-editor-"
-                            ,(package-version emacs-with-editor)))
+  ;; Version 2.90.1 has trouble loading the transient library,
+  ;; so we use a more recent commit that fixes it.
+  (let ((commit "b4aec016b5577afa8d889f258b499814d1bb1d94"))
+    (package
+      (name "emacs-magit")
+      (version (git-version "2.90.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/magit")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0zl7v6z0y50pcgqsf2r8c1k3r5nwjad9ba7r6sgrnf4rc62br7jv"))))
+      (build-system gnu-build-system)
+      (native-inputs `(("texinfo" ,texinfo)
+                       ("emacs" ,emacs-minimal)))
+      (inputs
+       `(("git" ,git)
+         ("perl" ,perl)))
+      (propagated-inputs
+       `(("dash" ,emacs-dash)
+         ("with-editor" ,emacs-with-editor)
+         ("transient" ,emacs-transient)))
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build emacs-utils))
+         #:test-target "test"
+         #:tests? #f                   ; tests are not included in the release
+
+         #:make-flags
+         (list (string-append "PREFIX=" %output)
+               ;; Don't put .el files in a sub-directory.
+               (string-append "lispdir=" %output "/share/emacs/site-lisp")
+               (string-append "DASH_DIR="
+                              (assoc-ref %build-inputs "dash")
+                              "/share/emacs/site-lisp/guix.d/dash-"
+                              ,(package-version emacs-dash))
+               (string-append "WITH_EDITOR_DIR="
+                              (assoc-ref %build-inputs "with-editor")
+                              "/share/emacs/site-lisp/guix.d/with-editor-"
+                              ,(package-version emacs-with-editor))
+               (string-append "TRANSIENT_DIR="
+                              (assoc-ref %build-inputs "transient")
+                              "/share/emacs/site-lisp/guix.d/transient-"
+                              ,(package-version emacs-transient)))
 
-       #:phases
-       (modify-phases %standard-phases
-         (delete 'configure)
-         (add-before
-          'build 'patch-exec-paths
-          (lambda* (#:key inputs #:allow-other-keys)
-            (let ((perl (assoc-ref inputs "perl")))
-              (substitute* "lisp/magit-sequence.el"
-                (("perl") (string-append perl "/bin/perl")))
-              #t))))))
-    (home-page "https://magit.vc/")
-    (synopsis "Emacs interface for the Git version control system")
-    (description
-     "With Magit, you can inspect and modify your Git repositories with Emacs.
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-before
+               'build 'patch-exec-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((perl (assoc-ref inputs "perl")))
+                 (make-file-writable "lisp/magit-sequence.el")
+                 (emacs-substitute-variables "lisp/magit-sequence.el"
+                   ("magit-perl-executable" (string-append perl "/bin/perl")))
+                 #t))))))
+      (home-page "https://magit.vc/")
+      (synopsis "Emacs interface for the Git version control system")
+      (description
+       "With Magit, you can inspect and modify your Git repositories with Emacs.
 You can review and commit the changes you have made to the tracked files, for
 example, and you can browse the history of past changes.  There is support for
 cherry picking, reverting, merging, rebasing, and other common Git
 operations.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public magit
   (deprecated-package "magit" emacs-magit))
 
 (define-public emacs-magit-svn
-  (package
-    (name "emacs-magit-svn")
-    (version "2.2.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                     (url "https://github.com/magit/magit-svn")
-                     (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "01kcsc53q3mbhgjssjpby7ypnhqsr48rkl1xz3ahaypmlp929gl9"))))
-    (build-system trivial-build-system)
-    (native-inputs `(("emacs" ,emacs-minimal)))
-    (propagated-inputs `(("dash" ,emacs-dash)
-                         ("ghub" ,emacs-ghub)
-                         ("graphql" ,emacs-graphql)
-                         ("treepy" ,emacs-treepy)
-                         ("with-editor" ,emacs-with-editor)
-                         ("magit" ,emacs-magit)
-                         ("magit-popup" ,emacs-magit-popup)))
-    (arguments
-     `(#:modules ((guix build utils)
-                  (guix build emacs-utils))
+  (let ((commit "9e33ceee32f665db59909e1c00a667ccdd04178f"))
+    (package
+      (name "emacs-magit-svn")
+      (version (git-version "2.2.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/magit-svn")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1mlqz8dh6jy5rv72lgkxv253dgh73fmbaidskicypapvbl3lr6xy"))))
+      (build-system trivial-build-system)
+      (native-inputs `(("emacs" ,emacs-minimal)))
+      (propagated-inputs `(("dash" ,emacs-dash)
+                           ("with-editor" ,emacs-with-editor)
+                           ("magit" ,emacs-magit)
+                           ("transient" ,emacs-transient)))
+      (arguments
+       `(#:modules ((guix build utils)
+                    (guix build emacs-utils))
 
-       #:builder
-       (begin
-         (use-modules (guix build utils)
-                      (guix build emacs-utils))
-
-         (let ((emacs    (string-append (assoc-ref %build-inputs "emacs")
-                                        "/bin/emacs"))
-               (magit    (string-append (assoc-ref %build-inputs "magit")
-                                        "/share/emacs/site-lisp"))
-               (magit-popup (string-append (assoc-ref %build-inputs "magit-popup")
-                                           "/share/emacs/site-lisp/guix.d/magit-popup-"
-                                           ,(package-version emacs-magit-popup)))
-               (ghub     (string-append (assoc-ref %build-inputs "ghub")
-                                        "/share/emacs/site-lisp/guix.d/ghub-"
-                                        ,(package-version emacs-ghub)))
-               (graphql  (string-append (assoc-ref %build-inputs "graphql")
-                                        "/share/emacs/site-lisp/guix.d/graphql-"
-                                        ,(package-version emacs-graphql)))
-               (treepy   (string-append (assoc-ref %build-inputs "treepy")
-                                        "/share/emacs/site-lisp/guix.d/treepy-"
-                                        ,(package-version emacs-treepy)))
-               (dash     (string-append (assoc-ref %build-inputs "dash")
-                                        "/share/emacs/site-lisp/guix.d/dash-"
-                                        ,(package-version emacs-dash)))
-               (with-editor (string-append (assoc-ref %build-inputs "with-editor")
-                                           "/share/emacs/site-lisp/guix.d/with-editor-"
-                                           ,(package-version emacs-with-editor)))
-               (source   (assoc-ref %build-inputs "source"))
-               (lisp-dir (string-append %output "/share/emacs/site-lisp")))
-
-           (install-file (string-append source "/magit-svn.el")
-                         lisp-dir)
-
-           (with-directory-excursion lisp-dir
-             (parameterize ((%emacs emacs))
-               (emacs-generate-autoloads ,name lisp-dir)
-               (setenv "EMACSLOADPATH"
-                       (string-append ":" magit ":" magit-popup ":" ghub ":"
-                                      ":" graphql ":" treepy ":" dash ":" with-editor))
-               (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
-           #t))))
-    (home-page "https://github.com/magit/magit-svn")
-    (synopsis "Git-SVN extension to Magit")
-    (description
-     "This package is an extension to Magit, the Git Emacs mode, providing
+         #:builder
+         (begin
+           (use-modules (guix build utils)
+                        (guix build emacs-utils))
+
+           (let ((emacs    (string-append (assoc-ref %build-inputs "emacs")
+                                          "/bin/emacs"))
+                 (magit    (string-append (assoc-ref %build-inputs "magit")
+                                          "/share/emacs/site-lisp"))
+                 (transient (string-append (assoc-ref %build-inputs "transient")
+                                           "/share/emacs/site-lisp/guix.d/transient-"
+                                           ,(package-version emacs-transient)))
+                 (dash     (string-append (assoc-ref %build-inputs "dash")
+                                          "/share/emacs/site-lisp/guix.d/dash-"
+                                          ,(package-version emacs-dash)))
+                 (with-editor (string-append (assoc-ref %build-inputs "with-editor")
+                                             "/share/emacs/site-lisp/guix.d/with-editor-"
+                                             ,(package-version emacs-with-editor)))
+                 (source   (assoc-ref %build-inputs "source"))
+                 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
+
+             (install-file (string-append source "/magit-svn.el")
+                           lisp-dir)
+
+             (with-directory-excursion lisp-dir
+               (parameterize ((%emacs emacs))
+                 (emacs-generate-autoloads ,name lisp-dir)
+                 (setenv "EMACSLOADPATH"
+                         (string-append ":" magit ":" transient
+                                        ":" dash ":" with-editor))
+                 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
+             #t))))
+      (home-page "https://github.com/magit/magit-svn")
+      (synopsis "Git-SVN extension to Magit")
+      (description
+       "This package is an extension to Magit, the Git Emacs mode, providing
 support for Git-SVN.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public magit-svn
   (deprecated-package "magit-svn" emacs-magit-svn))
@@ -553,6 +541,35 @@ handful of functions that are not resource-specific.")
 for editing Racket's Scribble documentation syntax in Emacs.")
       (license license:gpl3+))))
 
+(define-public emacs-unpackaged-el
+  (let ((commit "f4df7f8dfea715e893b2223adda32545803f5cce")
+        (revision "1"))
+    (package
+      (name "emacs-unpackaged-el")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/alphapapa/unpackaged.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1yf3zrgqfhnr0az8gn1kqqwnhfi3nc0vbjkcagwcqwk3sp1jda86"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-org" ,emacs-org)
+         ("emacs-s" ,emacs-s)
+         ("emacs-use-package" ,emacs-use-package)))
+      (home-page "https://github.com/alphapapa/unpackaged.el")
+      (synopsis "Useful snippets of Emacs Lisp code")
+      (description "This package provides Emacs Lisp utilities for a variety
+of tasks, including version control, task management, and regex-based
+replacement.")
+      (license license:gpl3+))))
+
 (define-public emacs-haskell-mode
   (package
     (name "emacs-haskell-mode")
@@ -730,6 +747,36 @@ can be referred to during the expression.  This technique can improve clarity
 in certain cases.  It also enables recursion for anonymous functions.")
     (license license:public-domain)))
 
+(define-public emacs-xr
+  (package
+    (name "emacs-xr")
+    (version "1.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/xr-" version ".tar"))
+       (sha256
+        (base32
+         "1mcild3034f4c1x8x05w9q0ps70i1nihvih22cmh3wj4cgllg5w0"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/xr.html")
+    (synopsis "Convert string regexp to rx notation")
+    (description
+     "This is an inverse companion to the @code{rx} package for translating
+regexps in string form to the @code{rx} notation.  Its chief uses are:
+
+@itemize
+@item Migrating existing code to @code{rx} form, for better readability and
+maintainability
+@item Understanding complex regexp strings and finding errors in them
+@end itemize
+
+In addition to Emacs regexps, this package can also parse and troubleshoot
+skip set strings, which are arguments to @code{skip-chars-forward} and
+@code{skip-chars-backward}.")
+    (license license:gpl3+)))
+
 \f
 ;;;
 ;;; Web browsing.
@@ -922,6 +969,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
                    (alsa    (assoc-ref inputs "alsa-utils"))
                    (mpg321  (assoc-ref inputs "mpg321"))
                    (mp3info (assoc-ref inputs "mp3info"))
+                   (mutagen (assoc-ref inputs "mutagen"))
                    (opus    (assoc-ref inputs "opus-tools")))
                ;; Specify the installation directory.
                (substitute* "Makefile"
@@ -965,8 +1013,9 @@ in certain cases.  It also enables recursion for anonymous functions.")
                    (("\"amixer\"")
                     (string-append "\"" alsa "/bin/amixer\"")))
                  (substitute* "emms-tag-editor.el"
-                   (("\"mp3info\"")
-                    (string-append "\"" mp3info "/bin/mp3info\"")))))))
+                   (("\"mid3v2\"")
+                    (string-append "\"" mutagen "/bin/mid3v2\"")))
+                 #t))))
          (add-before 'install 'pre-install
            (lambda* (#:key outputs #:allow-other-keys)
              ;; The 'install' rule expects the target directories to exist.
@@ -999,6 +1048,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
               ("mpg321" ,mpg321)
               ("taglib" ,taglib)
               ("mp3info" ,mp3info)
+              ("mutagen" ,python-mutagen)
               ("opus-tools" ,opus-tools)))
     (properties '((upstream-name . "emms")))
     (synopsis "Emacs Multimedia System")
@@ -1532,7 +1582,7 @@ filters, new key bindings and faces.  It can be enabled by
 (define-public emacs-pdf-tools
   (package
     (name "emacs-pdf-tools")
-    (version "0.80")
+    (version "0.90")
     (home-page "https://github.com/politza/pdf-tools")
     (source (origin
               (method git-fetch)
@@ -1541,11 +1591,10 @@ filters, new key bindings and faces.  It can be enabled by
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1i4647vax5na73basc5dz4lh9kprir00fh8ps4i0l1y3ippnjs2s"))
-              (patches (search-patches "emacs-pdf-tools-poppler.patch"))))
+                "0iv2g5kd14zk3r5dzdw7b7hk4b5w7qpbilcqkja46jgxbb6xnpl9"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ; there are no tests
+     `(#:tests? #f                      ; there are no tests
        #:modules ((guix build gnu-build-system)
                   ((guix build emacs-build-system) #:prefix emacs:)
                   (guix build utils)
@@ -1607,7 +1656,7 @@ and stored in memory.")
 (define-public emacs-dash
   (package
     (name "emacs-dash")
-    (version "2.14.1")
+    (version "2.15.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1616,7 +1665,7 @@ and stored in memory.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1kzijmjxjxgr7p8clphzvmm47vczckbs8mza9an77c25bn627ywl"))))
+                "0dx8q3jr8fh73cfl7mqi5dq0012ambpvc74d2c71fsv9rfw85693"))))
     (build-system emacs-build-system)
     (arguments
      `(#:tests? #t
@@ -2573,14 +2622,14 @@ source code using IPython.")
 (define-public emacs-debbugs
   (package
     (name "emacs-debbugs")
-    (version "0.16")
+    (version "0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
                                   version ".tar"))
               (sha256
                (base32
-                "0y3bq803c7820h15g66d1648skxfhlfa2v6vincj6xk5ssp44s9p"))))
+                "0zclh2nxj5p10n214sxyxy3ca07l5s9p5spk0xp1smr6nzn0w7gb"))))
     (build-system emacs-build-system)
     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
     (propagated-inputs
@@ -2910,6 +2959,34 @@ automatically inserts a Unicode opening or closing quotation mark, depending
 on context.")
     (license license:gpl3+)))
 
+(define-public emacs-company-lsp
+  (package
+    (name "emacs-company-lsp")
+    (version "2.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tigersoldier/company-lsp.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1hy1x2w0yp5brm7714d1hziz3rpkywb5jp3yj78ibmi9ifny9vri"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-lsp-mode" ,emacs-lsp-mode)
+       ("emacs-company" ,emacs-company)
+       ("emacs-s" ,emacs-s)
+       ("emacs-dash" ,emacs-dash)))
+    (home-page "https://github.com/tigersoldier/company-lsp")
+    (synopsis "Completion for @code{lsp-mode}")
+    (description
+     "This package provides completion features that are not possible with
+@code{lsp-mode} and @code{company-capf} alone, including support for trigger
+characters and asynchronous fetching of completion candidates.")
+    (license license:gpl3+)))
+
 (define-public emacs-scheme-complete
   (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
     (package
@@ -2988,6 +3065,33 @@ to a key in your preferred mode.")
 SuperCollider is a platform for audio synthesis and algorithmic composition.")
       (license license:gpl2+))))
 
+(define-public emacs-company-auctex
+  (let ((commit "48c42c58ce2f0e693301b0cb2d085055410c1b25")
+        (revision "1"))
+    (package
+      (name "emacs-company-auctex")
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/alexeyr/company-auctex")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "10qn7frn5wcmrlci3v6iliqzj7r9dls87h9zp3xkgrgn4bqprfp8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-yasnippet" ,emacs-yasnippet)
+         ("emacs-auctex" ,emacs-auctex)
+         ("emacs-company" ,emacs-company)))
+      (home-page "https://github.com/alexeyr/company-auctex/")
+      (synopsis "Completion for @code{AUCTeX}")
+      (description
+       "This package provides a group of backends permitting auto-completion
+for @code{AUCTeX}.")
+      (license license:gpl3+))))
+
 (define-public emacs-mit-scheme-doc
   (package
     (name "emacs-mit-scheme-doc")
@@ -3159,6 +3263,78 @@ This provides a basic API and common UI widgets such as popup tooltips
 and popup menus.")
     (license license:gpl3+)))
 
+(define-public emacs-python-environment
+  (package
+    (name "emacs-python-environment")
+    (version "0.0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tkf/emacs-python-environment/")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-deferred" ,emacs-deferred)))
+    (home-page "https://github.com/tkf/emacs-python-environment")
+    (synopsis "Provides a @code{virtualenv} API in Emacs Lisp")
+    (description
+     "This package permits automated installation of tools written in Python.")
+    (license license:gpl3+)))
+
+(define-public emacs-jedi
+  (package
+    (name "emacs-jedi")
+    (version "0.2.7")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/tkf/emacs-jedi/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0xbp9fcxgbf298w05hvf52z41kk7r52975ailgdn8sg60xc98fa7"))))
+    (build-system emacs-build-system)
+    (native-inputs
+     `(("emacs-mocker" ,emacs-mocker)))
+    (propagated-inputs
+     `(("emacs-auto-complete" ,emacs-auto-complete)
+       ("emacs-python-environment" ,emacs-python-environment)
+       ("emacs-epc" ,emacs-epc)))
+    (home-page "https://github.com/tkf/emacs-jedi")
+    (synopsis "Provides Python completion in Emacs")
+    (description
+     "This package provides completion in Python buffers and also helps find
+the locations of docstrings, arguments, and functions.")
+    (license license:gpl3+)))
+
+(define-public emacs-company-jedi
+  (package
+    (name "emacs-company-jedi")
+    (version "0.04")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/syohex/emacs-company-jedi")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ihqapp4dv92794rsgyq0rmhwika60cmradqd4bn9b72ss6plxs1"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-jedi" ,emacs-jedi)
+       ("emacs-company" ,emacs-company)))
+    (home-page "https://github.com/syohex/emacs-company-jedi")
+    (synopsis "Provides Python completion in @code{company-mode}")
+    (description
+     "This package provides a Company backend for Python.")
+    (license license:gpl3+)))
+
 (define-public emacs-puppet-mode
   (let ((commit "b3ed5057166a4f49dfa9be638523a348b55a2fd2")
         (revision "1"))
@@ -3234,6 +3410,32 @@ insertion mode.  When enabled all keys are implicitly prefixed with
 sgml/html integration, and indentation (working with sgml).")
     (license license:gpl3+)))
 
+(define-public emacs-company-cabal
+  ;; The latest version is 0.3.0, but no release has been provided after 0.2.1.
+  (let ((commit "62112a7259e24bd6c08885629a185afe512b7d3d")
+        (revision "1"))
+    (package
+      (name "emacs-company-cabal")
+      (version (git-version "0.3.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/iquiw/company-cabal/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1gf45xwjzdm8i4q6c6khk4dbg1mmp2r0awz2sjr4dcr2dbd1n7mg"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)))
+      (home-page "https://github.com/iquiw/company-cabal/")
+      (synopsis "Company completion for Haskell Cabal files")
+      (description
+       "This package allows for completion of field names, section names,
+field values, and more within @code{haskell-cabal-mode}.")
+      (license license:gpl3+))))
+
 (define-public emacs-rfcview
   (package
     (name "emacs-rfcview")
@@ -3360,6 +3562,31 @@ started with 20 minutes.  All values are customizable.")
 organizer.")
     (license license:gpl3+)))
 
+(define-public emacs-company-flow
+  (let ((commit "76ef585c70d2a3206c2eadf24ba61e59124c3a16")
+        (revision "1"))
+    (package
+      (name "emacs-company-flow")
+      (version (git-version "0.1.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/aaronjensen/company-flow/")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0zs9cblnbkxa0dxw4lyllmybqizxcdx96gv8jlhx20nrjpi78piw"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-dash" ,emacs-dash)))
+      (home-page "https://github.com/aaronjensen/company-flow/")
+      (synopsis "Flow backend for @code{company-mode}")
+      (description
+       "This package provides completion for JavaScript files utilizing Flow.")
+      (license license:gpl3+))))
+
 (define-public emacs-atom-one-dark-theme
   (let ((commit "1f1185bf667a38d3d0d180ce85fd4c131818aae2")
         (revision "0"))
@@ -3486,6 +3713,31 @@ of sixteen colors suitable for a wide range of applications.  Base16 is not a
 single theme but a set of guidelines with numerous implementations.")
     (license license:expat)))
 
+(define-public emacs-prescient
+  (package
+    (name "emacs-prescient")
+    (version "2.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/raxod502/prescient.el/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ncplx5p3cffyzg9ygzqqxj0vpvwrz9rp2n4z6c375a78fyydrk0"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-company" ,emacs-company)
+       ("emacs-ivy" ,emacs-ivy)))
+    (home-page "https://github.com/raxod502/prescient.el/")
+    (synopsis "Library that sorts and filters lists of candidates")
+    (description
+     "This package provides a library for sorting and filtering, as well as
+extensions for @code{ivy-mode} and @code{company-mode} that make use of the
+library.")
+    (license license:gpl3+)))
+
 (define-public emacs-smartparens
   (package
     (name "emacs-smartparens")
@@ -4000,8 +4252,8 @@ navigate code in a tree-like fashion.")
 (define-public emacs-lispy
   ;; Release 0.26.0 was almost 3 years ago, and there have been ~772 commits
   ;; since.
-  (let ((commit "c2a358a7a15fcf056a5b7461a8e690b481b03b80")
-        (revision "0"))
+  (let ((commit "f94cfc6b8f9c3afe7d028c366928049c011023de")
+        (revision "1"))
     (package
       (name "emacs-lispy")
       (version (git-version "0.26.0" revision commit))
@@ -4011,7 +4263,7 @@ navigate code in a tree-like fashion.")
                 (uri (git-reference (url home-page) (commit commit)))
                 (sha256
                  (base32
-                  "1g6756qqx2n4cx8jac6mlwayilsiyc5rz8nrqjnywvzc75xdinjd"))
+                  "1bm2cpwizg1qfpm377gpx1af1hm5maw69if1csnk5vwaphmv8c4g"))
                 (file-name (git-file-name name version))))
       (build-system emacs-build-system)
       (propagated-inputs
@@ -4031,10 +4283,8 @@ S-expression.")
       (license license:gpl3+))))
 
 (define-public emacs-lispyville
-  ;; Later versions need a more recent Evil, with an evil-define-key*
-  ;; supporting nil for the state.
-  (let ((commit "b4291857ed6a49a67c4ea77522889ce51fb171ab")
-        (revision "0"))
+  (let ((commit "d28b937f0cabd8ce61e2020fe9a733ca80d82c74")
+        (revision "1"))
     (package
       (name "emacs-lispyville")
       (version (git-version "0.1" revision commit))
@@ -4044,7 +4294,7 @@ S-expression.")
                 (uri (git-reference (url home-page) (commit commit)))
                 (sha256
                  (base32
-                  "095zibzc3naknahdrnb59g9rbljy8wz9rkc7rf8avb3wxlwvxhm3"))
+                  "0f6srwj1qqkfkbmp5n5pjvi6gm7b7xav05p5hrs2i83rjrakzzqx"))
                 (file-name (git-file-name name version))))
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -4368,14 +4618,14 @@ indentation and filling of comments and C preprocessor fontification.")
 (define-public emacs-tide
   (package
     (name "emacs-tide")
-    (version "2.8.3.1")
+    (version "3.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ananthakumaran/tide"
                                   "/archive/v" version ".tar.gz"))
               (sha256
                (base32
-                "1k0kzqiv1hfs0kqm37947snzhrsmand3i9chvm6a2r5lb8v9q47y"))
+                "1c600myr2yqbkmy9lify38lz0zzjdqk1733db5n7vsay16vn6fzi"))
               (file-name (string-append name "-" version ".tar.gz"))))
     (build-system emacs-build-system)
     (propagated-inputs
@@ -4450,7 +4700,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
 (define-public emacs-projectile
   (package
     (name "emacs-projectile")
-    (version "0.14.0")
+    (version "2.0.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
@@ -4458,7 +4708,7 @@ like @code{org-edit-src-code} but for arbitrary regions.")
               (file-name (string-append "projectile-" version ".el"))
               (sha256
                (base32
-                "1ql1wnzhblbwnv66hf2y0wq45g71hh6s9inc090lmhm1vgylbd1f"))))
+                "149hablms6n9b4wp78dz4pjz1rzyylfw9ayghq5p9d7k661mvyby"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)
@@ -4593,7 +4843,7 @@ functions to assist in reviewing changes on files.")
 (define-public emacs-pyvenv
   (package
     (name "emacs-pyvenv")
-    (version "1.11")
+    (version "1.20")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -4602,7 +4852,7 @@ functions to assist in reviewing changes on files.")
               (file-name (string-append name "-" version "-checkout"))
               (sha256
                (base32
-                "1a346qdimr1dvj53q033aqnahwd2dhyn9jadrs019nm0bzgw7g63"))))
+                "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -4616,7 +4866,7 @@ functions to assist in reviewing changes on files.")
      `(("ert-runner" ,emacs-ert-runner)
        ("emacs-mocker" ,emacs-mocker)))
     (home-page "https://github.com/jorgenschaefer/pyvenv")
-    (synopsis "Virtualenv minor mode for Emacs")
+    (synopsis "Python virtual environment interface for Emacs")
     (description "pyvenv.el is a minor mode to support using Python virtual
 environments (virtualenv) inside Emacs.")
     (license license:gpl3+)))
@@ -4950,7 +5200,7 @@ ack, ag, helm and pt.")
 (define-public emacs-helm
   (package
     (name "emacs-helm")
-    (version "3.0")
+    (version "3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -4959,7 +5209,7 @@ ack, ag, helm and pt.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0k2r0ccppaqfjvyszaxa16vf7g2qzj1clhfr6v646ncsy17laciw"))))
+                "0ymykcsbcgq2kskqc0ddigg0kfznxx3j02mkd5r3c3n8gn3kgz84"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -5055,7 +5305,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "0.18.0")
+    (version "0.20.0")
     (source
      (origin
        (method git-fetch)
@@ -5065,7 +5315,7 @@ target will call @code{compile} on it.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1m9kc88vga3q5d731qnpngnsa0n57pf21k3hll20rw8rggrx4vdn"))))
+         "0lfhzg9c931jbx27hpshk3l76gwbp6ggf668sqa77xrvymwdlsnw"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ; Don't exclude 'cider-test.el'.
@@ -5184,35 +5434,34 @@ news items, openrc and runscripts.")
     (license license:gpl2+)))
 
 (define-public emacs-evil
-  (let ((commit "230b87212c81aaa68ef5547a6b998d9c365fe139"))
-    (package
-      (name "emacs-evil")
-      (version (git-version "1.2.13" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/emacs-evil/evil")
-               (commit commit)))
-         (file-name (string-append name "-" version "-checkout"))
-         (sha256
-          (base32
-           "0c9zy3bpck10gcrv79kd3h7i4ygd5bgbgy773n0lg7a2r5kwn1gx"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-undo-tree" ,emacs-undo-tree)
-         ("emacs-goto-chg" ,emacs-goto-chg)))
-      (home-page "https://github.com/emacs-evil/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+))))
+  (package
+    (name "emacs-evil")
+    (version "1.2.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-evil/evil")
+             (commit version)))
+       (file-name (string-append name "-" version "-checkout"))
+       (sha256
+        (base32
+         "1833w397xhac5g3pp25szr2gyvclxy91aw27azvbmsx94pyk2a3q"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-undo-tree" ,emacs-undo-tree)
+       ("emacs-goto-chg" ,emacs-goto-chg)))
+    (home-page "https://github.com/emacs-evil/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-evil-collection
-  (let ((commit "4e1f0e0b17153d460805a0da90d6191d66b2673d")
-        (revision "5"))
+  (let ((commit "baa9c6880779d416a91bf5bde3589673a7403612")
+        (revision "8"))
     (package
       (name "emacs-evil-collection")
       (version (git-version "0.0.1" revision commit))
@@ -5224,7 +5473,7 @@ extensions.")
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "11d5ppdnb2y2mwsdd9g62h7zds962kw3nss89zv5iwgcf9f1fb5x"))))
+                  "09v97nk7qawphfijzqxzi2y63ydmfq7hsgpljjxwkykrc5h0kdlj"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)))
@@ -5349,14 +5598,14 @@ passive voice.")
     (name "emacs-org")
     ;; emacs-org-contrib inherits from this package.  Please update its sha256
     ;; checksum as well.
-    (version "9.2")
+    (version "9.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://elpa.gnu.org/packages/org-"
                                   version ".tar"))
               (sha256
                (base32
-                "14ydwh2r360fpi6v2g9rgf0zazy2ddq1pcdxvzn73h65glnnclz9"))))
+                "02fq3x4haady2vagg9b363ynsrxzpijfp420qhciy7x8y7m89abw"))))
     (build-system emacs-build-system)
     (home-page "https://orgmode.org/")
     (synopsis "Outline-based notes management and organizer")
@@ -5370,14 +5619,14 @@ programming and reproducible research.")
   (package
     (inherit emacs-org)
     (name "emacs-org-contrib")
-    (version "20181230")
+    (version "20190311")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
                                   version ".tar"))
               (sha256
                (base32
-                "0gibwcjlardjwq19bh0zzszv0dxxlml0rh5iikkcdynbgndk1aa1"))))
+                "189p0f70j7z3hh72ay8cxa9n8xkcj06dlw765fwnqd2mm72vx0nb"))))
     (arguments
      `(#:modules ((guix build emacs-build-system)
                   (guix build utils)
@@ -5603,7 +5852,7 @@ procedures for emacs-lisp-mode.")
 (define-public emacs-ht
   (package
     (name "emacs-ht")
-    (version "2.1")
+    (version "2.2")
     (source
      (origin
        (method url-fetch)
@@ -5613,7 +5862,7 @@ procedures for emacs-lisp-mode.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1lpba36kzxcc966fvsbrfpy8ah9gnvay0yk26gbyjil0rggrbqzj"))))
+         "0fsi27gdrh2dgwdbq43vnw5sz25war6shlxaclr60fl7krpxjkzf"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
     (home-page "https://github.com/Wilfred/ht.el")
@@ -5704,6 +5953,32 @@ interface and multiple, selectable \"styles\", whose use is fully
 customizable by the user.")
     (license license:gpl2+)))
 
+(define-public emacs-zones
+  (let ((commit "353fc38a6544eb59887bee045e373406f1d038a5")
+        (revision "1"))
+    (package
+      (name "emacs-zones")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/zones.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0gwnw2giii2a14nlh62xp45f47cw6ikqphhzpmcw6c7mn9x5z2ar"))))
+      (build-system emacs-build-system)
+      (home-page "https://www.emacswiki.org/emacs/Zones")
+      (synopsis "Define and act on multiple zones of buffer text")
+      (description "Library @file{zones.el} lets you easily define and
+subsequently act on multiple zones of buffer text.  You can think of this as
+enlarging the notion of region.  In effect, it can remove the requirement of
+target text being a contiguous sequence of characters.  A set of buffer zones
+is, in effect, a (typically) noncontiguous set of text.")
+      (license license:gpl3+))))
+
 (define-public emacs-mu4e-alert
   (package
     (name "emacs-mu4e-alert")
@@ -5857,42 +6132,46 @@ Yasnippet.")
       (license license:gpl2+))))
 
 (define-public emacs-helm-system-packages
-  (package
-    (name "emacs-helm-system-packages")
-    (version "1.10.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/emacs-helm/helm-system-packages")
-                    (commit (string-append "v" version))))
-              (file-name (string-append name "-" version "-checkout"))
-              (sha256
-               (base32
-                "01by0c4lqi2cw8xmbxkjw7m9x78zssm31sx4hdpw5j35s2951j0f"))))
-    (build-system emacs-build-system)
-    (inputs
-     `(("recutils" ,recutils)))
-    (propagated-inputs
-     `(("emacs-helm" ,emacs-helm)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'configure
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((recutils (assoc-ref inputs "recutils")))
-               ;; Specify the absolute file names of the various
-               ;; programs so that everything works out-of-the-box.
-               (substitute* "helm-system-packages-guix.el"
-                 (("recsel") (string-append recutils "/bin/recsel")))))))))
-    (home-page "https://github.com/emacs-helm/helm-system-packages")
-    (synopsis "Helm System Packages is an interface to your package manager")
-    (description "List all available packages in Helm (with installed
+  ;; There won't be a new release after 1.10.1 until
+  ;; https://github.com/emacs-helm/helm-system-packages/issues/25 is fixed,
+  ;; and latest commits fix import issues with Guix.
+  (let ((commit "6572340f41611ef1991e9612d34d59130957ee4a"))
+    (package
+      (name "emacs-helm-system-packages")
+      (version (git-version "1.10.1" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/emacs-helm/helm-system-packages")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0mcz6vkpk12vsyd37xv1rbg4v442sxc3lj8yxskqg294xbdaclz4"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("recutils" ,recutils)))
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'configure
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((recutils (assoc-ref inputs "recutils")))
+                 ;; Specify the absolute file names of the various
+                 ;; programs so that everything works out-of-the-box.
+                 (substitute* "helm-system-packages-guix.el"
+                   (("recsel") (string-append recutils "/bin/recsel")))))))))
+      (home-page "https://github.com/emacs-helm/helm-system-packages")
+      (synopsis "Helm System Packages is an interface to your package manager")
+      (description "List all available packages in Helm (with installed
 packages displayed in their own respective face).  Fuzzy-search, mark and
 execute the desired action over any selections of packages: Install,
 uninstall, display packages details (in Org Mode) or insert details at point,
 find files owned by packages...  And much more, including performing all the
 above over the network.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-memoize
   (package
@@ -6551,14 +6830,14 @@ which code derived from Kelvin H's org-page.")
 (define-public emacs-xelb
   (package
     (name "emacs-xelb")
-    (version "0.16")
+    (version "0.17")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.gnu.org/packages/xelb-"
                                   version ".tar"))
               (sha256
                (base32
-                "03wsr1jr7f7zfd80h864rd4makwh4widdnj1kjv2xyjwdgap9rl8"))))
+                "0k98580vq253fjdgklgqlwl450saninfw39fbq8lv3xsnp3dcgml"))))
     (build-system emacs-build-system)
     ;; The following functions and variables needed by emacs-xelb are
     ;; not included in emacs-minimal:
@@ -6590,7 +6869,7 @@ It should enable you to implement low-level X11 applications.")
 (define-public emacs-exwm
   (package
     (name "emacs-exwm")
-    (version "0.21")
+    (version "0.22")
     (synopsis "Emacs X window manager")
     (source (origin
               (method url-fetch)
@@ -6598,7 +6877,7 @@ It should enable you to implement low-level X11 applications.")
                                   version ".tar"))
               (sha256
                (base32
-                "07ng1pgsnc3isfsyzh2gfc7391p9il8lb5xqf1z6yqn20w7k6xzj"))))
+                "0lppm8ng37i5s4x7xdrxhjbdcnpl6pyvn4g7w52zbckjsn8qnqh0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-xelb" ,emacs-xelb)))
@@ -6959,7 +7238,9 @@ Emacs.")
          (modify-phases %standard-phases
            (add-after 'install 'install-executable
              (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((out (assoc-ref outputs "out")))
+               (let ((out (assoc-ref outputs "out"))
+                     (source-directory (string-append
+                                  (getenv "TMPDIR") "/source")))
                  (substitute* "bin/ert-runner"
                    (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)")
                     (string-append "ERT_RUNNER=\"" out
@@ -6968,7 +7249,10 @@ Emacs.")
                  (install-file "bin/ert-runner" (string-append out "/bin"))
                  (wrap-program (string-append out "/bin/ert-runner")
                    (list "EMACSLOADPATH" ":" 'prefix
-                         (string-split (getenv "EMACSLOADPATH") #\:)))
+                         ;; Do not capture the transient source directory in
+                         ;; the wrapper.
+                         (delete source-directory
+                                 (string-split (getenv "EMACSLOADPATH") #\:))))
                  #t))))
          #:include (cons* "^reporters/.*\\.el$" %default-include)))
       (home-page "https://github.com/rejeep/ert-runner.el")
@@ -7027,7 +7311,19 @@ running a customisable handler command (@code{ignore} by default). ")
        ("ert-runner" ,emacs-ert-runner)))
     (arguments
      `(#:tests? #t
-       #:test-command '("ert-runner")))
+       #:test-command '("ert-runner")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'delete-json-objects-order-test
+           (lambda _
+             (emacs-batch-edit-file "test/json-reformat-test.el"
+               `(progn (progn (goto-char (point-min))
+                              (re-search-forward
+                               "ert-deftest json-reformat-test:json-reformat-region")
+                              (beginning-of-line)
+                              (kill-sexp))
+                       (basic-save-buffer)))
+             #t)))))
     (home-page "https://github.com/gongo/json-reformat")
     (synopsis "Reformatting tool for JSON")
     (description "@code{json-reformat} provides a reformatting tool for
@@ -7212,7 +7508,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
 (define-public emacs-which-key
   (package
     (name "emacs-which-key")
-    (version "3.3.0")
+    (version "3.3.1")
     (source
      (origin
        (method url-fetch)
@@ -7221,7 +7517,7 @@ or @code{treemacs}, but leveraging @code{Dired} to do the job of display.")
              version ".tar.gz"))
        (sha256
         (base32
-         "1lsj314111cp2hjjwnv3f46ws1za6bm39rgy3l19044xf6a68j5w"))
+         "1g8k0js21bc8mlw6hvmg93zgfjhil77c30cv1hf85y4qb9ldvika"))
        (file-name (string-append name "-" version ".tar.gz"))))
     (build-system emacs-build-system)
     (arguments
@@ -8917,7 +9213,7 @@ outline-mode), so there is no such thing like an outshine mode, only
 (define-public emacs-biblio
   (package
     (name "emacs-biblio")
-    (version "0.1")
+    (version "0.2")
     (source
      (origin
        (method url-fetch)
@@ -8926,7 +9222,7 @@ outline-mode), so there is no such thing like an outshine mode, only
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "109fvivsb4r0rbqljngqrmxqvbnbkqlivczx6brrvlr7ci625lhf"))))
+         "0vwrljmab8m1z83048gxx5mryml9f5pb3h0jpwkvqcl0ra152lzx"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-seq" ,emacs-seq)
@@ -9025,6 +9321,29 @@ arXiv, Google Scholar, Library of Congress, etc.
 @code{wmctrl} command-line window-management program.")
       (license license:gpl3+))))
 
+(define-public emacs-erc-image
+  (let ((commit "82fb3871f02e24b1e880770b9a3d187aab43d0f0")
+        (revision "1"))
+    (package
+      (name "emacs-erc-image")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/kidd/erc-image.el")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1q8mkf612fb4fjp8h4kbr107wn083iqfdgv8f80pcmil8y33dw9i"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/kidd/erc-image.el")
+      (synopsis "Show inlined images (png/jpg/gif/svg) in ERC buffers")
+      (description "This plugin subscribes to hooks @code{erc-insert-modify-hook}
+and @code{erc-send-modify-hook} to download and show images.")
+      (license license:gpl3+))))
+
 (define-public emacs-helm-gtags
   (package
     (name "emacs-helm-gtags")
@@ -9204,8 +9523,8 @@ navigate and display hierarchy structures.")
       (license license:gpl3+))))
 
 (define-public emacs-pulseaudio-control
-  (let ((commit "1da372ec79f5d2fb901d1f9f0679fee8848fd011")
-        (revision "2"))
+  (let ((commit "7e1a87068379075a5e9ce36c64c686c03d20d379")
+        (revision "3"))
     (package
       (name "emacs-pulseaudio-control")
       (version (git-version "0.0.1" revision commit))
@@ -9218,7 +9537,7 @@ navigate and display hierarchy structures.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "02xrsms2pjqdk6327midi61i5vg2h9cq5jwaxv43ldm68wl7hi6k"))))
+           "0wcaqyh15x56255rrj350089z15pnwixa2vf0ly6dv0hjmzmh3mr"))))
       (build-system emacs-build-system)
       (arguments
        '(#:phases (modify-phases %standard-phases
@@ -9624,6 +9943,32 @@ until the top-level form is no longer a macro call.")
     (description "Execute menu items as commands, with completion.")
     (license license:gpl3)))
 
+(define-public emacs-isearch-prop
+  (let ((commit "5e9dc44cf582d998aaa73ccd4d07cbda01248156")
+        (revision "1"))
+    (package
+      (name "emacs-isearch-prop")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/isearch-prop.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1xawppy705ybsgx566zvj8zk2aajq0sqvhvfs7nijqq32lx0a2zl"))))
+      (build-system emacs-build-system)
+      (home-page "https://www.emacswiki.org/emacs/isearch-prop.el")
+      (synopsis "Extensions to @code{isearch.el}")
+      (description "The Emacs library @code{isearch-prop.el} lets you search within
+  contexts.  You can limit incremental search to a set of zones of
+  buffer text, search contexts that in effect constitute a multi-region.
+  These zones can be defined in various ways, including some ways
+  provided specially by this library.")
+      (license license:gpl3+))))
+
 (define-public emacs-company-lua
   (let ((commit "0be8122f3adf57ad27953bf4b03545d6298d3da4"))
     (package
@@ -9897,27 +10242,51 @@ The default setup uses helm-bibtex.
 You should really read org-ref.org in this package for details.")
       (license license:gpl3+))))
 
+;; This project is unmaintained.  Please use emacs-org-re-reveal instead.
 (define-public emacs-org-reveal
+  (let ((commit "1cdd088ec5fab631c564dca7f9f74fd3e9b7d4d4"))
+    (package
+      (name "emacs-org-reveal")
+      (version (git-version "0.1" "2" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/yjwen/org-reveal.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1vjxjadq2i74p96y9jxnqj1yb86fsgxzmn7bjgnb88ay6nvc1l72"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/yjwen/org-reveal")
+      (synopsis "Org and Reveal.js powered HTML presentation tool")
+      (description "Org-Reveal is a command@{org-mode} extension that allows
+to create beautiful presentations (slides) with 3D effects from simple but
+powerful Org contents.")
+      (license license:gpl3+))))
+
+(define-public emacs-org-re-reveal
   (package
-    (name "emacs-org-reveal")
-    ;; There are no proper tag, so we use the latest commit of the stable
-    ;; branch, as does MELPA.
-    (version "20161027.926")
+    (name "emacs-org-re-reveal")
+    (version "1.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/yjwen/org-reveal.git")
-                    (commit "001567cc12d50ba07612edd1718b86a12e8c2547")))
-              (file-name (string-append name "-" version "-checkout"))
+                    (url "https://gitlab.com/oer/org-re-reveal.git")
+                    (commit "50cc6574c77f12d423f6cd096d8f76feb3673abc")))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "18rma8smjrskbjyna076zhvx79zs5r5vinb537h8mw13pfxd6cm8"))))
+                "1v3z30gpimg4spf6zzqwp9b597zxk89h0vpq6xp58js4rjg4ixk8"))))
     (build-system emacs-build-system)
-    (home-page "https://github.com/yjwen/org-reveal")
-    (synopsis "Org and Reveal.js powered HTML presentation tool")
-    (description "Org-Reveal is a command@{org-mode} extension that allows to
-create beautiful presentations (slides) with 3D effects from simple but
-powerful Org contents.")
+    (propagated-inputs
+     `(("emacs-htmlize" ,emacs-htmlize)
+       ("emacs-org" ,emacs-org)))
+    (home-page "https://gitlab.com/oer/org-re-reveal")
+    (synopsis "Build HTML presentations with reveal.js from Org source files")
+    (description "This project started as fork of org-reveal.  It provides an
+export back-end for HTML presentations with reveal.js from Org mode source
+files.")
     (license license:gpl3+)))
 
 (define-public emacs-add-hooks
@@ -10112,23 +10481,26 @@ and doesn't require memorisation of commands.
 (define-public emacs-suggest
   (package
     (name "emacs-suggest")
-    (version "0.4")
+    (version "0.7")
+    (home-page "https://github.com/Wilfred/suggest.el")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/Wilfred/suggest.el/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url home-page)
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "1760fm3j19w8xxcawq6s859h86q1rdg69pg9yz48n76kwfk3vlgp"))))
+         "01v8plska5d3g19sb1m4ph1i3ayprfzk8mi6mpabjy6zad397xjl"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-loop" ,emacs-loop)
        ("emacs-dash" ,emacs-dash)
        ("emacs-s" ,emacs-s)
-       ("emacs-f" ,emacs-f)))
-    (home-page "https://github.com/Wilfred/suggest.el")
+       ("emacs-f" ,emacs-f)
+       ("emacs-spinner" ,emacs-spinner)
+       ("emacs-shut-up" ,emacs-shut-up)))
     (synopsis "Suggest Elisp functions that give the output requested")
     (description "Suggest.el will find functions that give the output
 requested.  It's a great way of exploring list, string and arithmetic
@@ -10644,27 +11016,26 @@ keep Parens and Indentation inline with one another.")
     (license license:gpl3+)))
 
 (define-public emacs-helm-eww
-  (let ((commit "9d36acc433bcf689598b1b4d7d47c9aeb84d6b44"))
-    (package
-      (name "emacs-helm-eww")
-      (version (git-version "0.1" "3" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/emacs-helm/helm-eww.git")
-                      (commit commit)))
-                (file-name (string-append name "-" version "-checkout"))
-                (sha256
-                 (base32
-                  "06gnf84gx6qbhcw1h5jhjnvcdxkdpv0npm53x3pgqybbll5rn5dy"))))
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)))
-      (build-system emacs-build-system)
-      (home-page "https://github.com/emacs-helm/helm-eww/")
-      (synopsis "Helm interface to EWW")
-      (description "This package provides a Helm interface for EWW buffers,
+  (package
+    (name "emacs-helm-eww")
+    (version "1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-eww.git")
+                    (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0hpq1h0p69c9k6hkd2mjpprx213sc5475q7pr2zpmwrjdzgcv70z"))))
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/emacs-helm/helm-eww/")
+    (synopsis "Helm interface to EWW")
+    (description "This package provides a Helm interface for EWW buffers,
 bookmarks and history.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-stumpwm-mode
   (let ((commit "8fbe071d2c6c040794060a354eb377218dc10b35")
@@ -11102,6 +11473,75 @@ my_thing reload} all the time.  It offers a consistent UI over different init
 systems.")
     (license license:gpl3+)))
 
+(define-public emacs-isearch+
+  (let ((commit "95e49af9dbf0254e095a11f115e101b52659520a")
+        (revision "1"))
+    (package
+      (name "emacs-isearch+")
+      (version (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsmirror/isearch-plus.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0xhd9zgknf4lvzyf4apirpd7spb1hbpzkvys00a7pkmd0vvahk0v"))))
+      (build-system emacs-build-system)
+      (home-page "https://www.emacswiki.org/emacs/isearch+.el")
+      (synopsis "Extensions to @code{isearch.el}")
+      (description "This package extends @code{isearch} with advice, dynamic
+filters, highlighting of regexp group levels, and more.")
+      (license license:gpl2+))))
+
+(define-public emacs-eshell-bookmark
+  (package
+    (name "emacs-eshell-bookmark")
+    (version "2.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/Fuco1/eshell-bookmark")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "14dmsnixf9vqdhsixw693sml0fn80zcf0b37z049fb40cmppqxdw"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Fuco1/eshell-bookmark")
+    (synopsis "Provide @file{bookmark.el} integration for @code{eshell}")
+    (description
+     "This package allows for bookmarking @code{eshell} buffers.  Upon
+visiting the bookmark, a new @code{eshell} session will be opened in the
+appropriate directory if no @code{eshell} session is active.")
+    (license license:gpl3+)))
+
+(define-public emacs-eshell-z
+  (package
+    (name "emacs-eshell-z")
+    (version "0.3.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xuchunyang/eshell-z")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1aac4m814jgxwpz7lbyx5r4z5dmawp4sk7pwbx0zqpnbcsaq5wwc"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/xuchunyang/eshell-z")
+    (synopsis "Quick navigation to frequently visited directories")
+    (description
+     "This package is a port of @code{z}, and keeps track of visited directories
+and commands invoked within them in order to enable navigation via input of
+matching regexps.")
+    (license license:gpl3+)))
+
 (define-public emacs-esh-autosuggest
   (package
     (name "emacs-esh-autosuggest")
@@ -11132,29 +11572,30 @@ autosuggestions with:
     (license license:gpl3+)))
 
 (define-public emacs-desktop-environment
-  (package
-    (name "emacs-desktop-environment")
-    (version "0.2.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/DamienCassou/desktop-environment.git")
-             (commit (string-append "v" version))))
-       (file-name (string-append name "-" version "-checkout"))
-       (sha256
-        (base32
-         "1fal3yfmqg10cb53qsf5gsq2gvyz9w16wmlpnpjwjzwnjfn6l73r"))))
-    (build-system emacs-build-system)
-    (home-page "https://gitlab.petton.fr/DamienCassou/desktop-environment")
-    (synopsis "Control your GNU/Linux desktop environment from Emacs")
-    (description
-     "This package helps you control your GNU/Linux desktop from Emacs.
+  (let ((commit "a9eba14f2b5b8070f78dca839ca8259736e346a6"))
+    (package
+      (name "emacs-desktop-environment")
+      (version (git-version "0.2.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.petton.fr/DamienCassou/desktop-environment")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0x73x5hy7w55jrzy3xvqhk90rrsznmxjqvsvwhh21qznv5w269xz"))))
+      (build-system emacs-build-system)
+      (home-page "https://gitlab.petton.fr/DamienCassou/desktop-environment")
+      (synopsis "Control your GNU/Linux desktop environment from Emacs")
+      (description
+       "This package helps you control your GNU/Linux desktop from Emacs.
 With @code{desktop-environment}, you can control the brightness and volume as
 well as take screenshots and lock your screen.  The package depends on the
 availability of shell commands to do the hard work for us.  These commands can
 be changed by customizing the appropriate variables.")
-    (license license:gpl3+)))
+      (license license:gpl3+))))
 
 (define-public emacs-org-caldav
   (package
@@ -11210,10 +11651,10 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
   (deprecated-package "emacs-evil-ediff" emacs-evil-collection))
 
 (define-public emacs-evil-magit
-  (let ((commit "dbf5a646a7ce1c35c229dfdc423bd5ecd927a3a8"))
+  (let ((commit "e2fec5877994c0c19f0c25fa01f3d22cb0ab38ba"))
     (package
       (name "emacs-evil-magit")
-      (version (git-version "0.4.2" "1" commit))
+      (version (git-version "0.4.2" "2" commit))
       (source
        (origin
          (method git-fetch)
@@ -11223,7 +11664,7 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
          (file-name (string-append name "-" version "-checkout"))
          (sha256
           (base32
-           "0ya0dkviq4pi92ab69a4j674y5r1hc1x3x7r7hlm97ag3a6zfkav"))))
+           "134v7s03jvbhm70mavwab85r09i68g2a5bvriirh0chz1av2y16v"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-evil" ,emacs-evil)
@@ -11304,40 +11745,89 @@ Org-mode.  It features:
 @end itemize\n")
       (license license:gpl3+))))
 
-(define-public emacs-fish-completion
-  (let ((commit "bac15fda1392a891070574dfe5d2d50b10831e8b"))
+(define-public emacs-debpaste
+  (package
+    (name "emacs-debpaste")
+    (version "0.1.5")
+    (home-page "https://github.com/alezost/debpaste.el")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference (url home-page)
+                           (commit (string-append "v" version))))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1wi70r56pd5z0x4dp4m58p9asq03j74kdm4fi9vai83vsl2z9amq"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-xml-rpc" ,emacs-xml-rpc)))
+    (synopsis "Manipulate pastes from the Debian Pastezone")
+    (description "Debpaste is an Emacs interface for the Debian Pastezone,
+allowing you to receive, post, and delete pastes.  It communicates with the
+server using XML-RPC.")
+    (license license:gpl3+)))
+
+(define-public emacs-xml-rpc
+  (let ((commit "8f624f8b964e9145acb504e4457c9510e87dd93c")
+        (revision "1"))
     (package
-      (name "emacs-fish-completion")
-      (version (git-version "20180616" "1" commit))
+      (name "emacs-xml-rpc")
+      (version (git-version "1.6.12" revision commit))
       (source
        (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://gitlab.com/Ambrevar/emacs-fish-completion/repository/"
-               "archive.tar.gz?ref="
-               commit))
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/hexmode/xml-rpc-el")
+               (commit commit)))
+         (file-name (git-file-name name version))
          (sha256
           (base32
-           "093qzdrbkl7dhjk16zq8i13kh1phyigkblcfrbgbrxjqd2ndrfdi"))))
+           "0xa54z52rsfl3n0xgmbycj4zazp8ksgdwcq56swzs6wp72zlalmj"))))
       (build-system emacs-build-system)
-      (inputs `(("fish" ,fish)))
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'configure
-             (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let ((fish (assoc-ref inputs "fish")))
-                 ;; Specify the absolute file names of the various
-                 ;; programs so that everything works out-of-the-box.
-                 (emacs-substitute-variables
-                     "fish-completion.el"
-                   ("fish-completion-command"
-                    (string-append fish "/bin/fish")))))))))
-      (home-page
-       "https://gitlab.com/Ambrevar/emacs-fish-completion")
-      (synopsis "Fish completion for Emacs pcomplete")
-      (description
-       "This package provides completion for the Fish shell to pcomplete (used
+      (home-page "https://github.com/hexmode/xml-rpc-el")
+      (synopsis "XML-RPC client for Emacs")
+      (description "This package provides an XML-RPC client for Emacs capable
+of both synchronous and asynchronous method calls using the @code{url}
+package's async retrieval functionality.  @file{xml-rpc.el} represents XML-RPC
+datatypes as Lisp values, automatically converting to and from the XML
+datastructures as needed, both for method parameters and return values, making
+using XML-RPC methods fairly transparent to the Lisp code.")
+      (license license:gpl3+))))
+
+(define-public emacs-fish-completion
+  (package
+    (name "emacs-fish-completion")
+    (version "1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://gitlab.com/Ambrevar/emacs-fish-completion/repository/"
+             "archive.tar.gz?ref="
+             version))
+       (sha256
+        (base32
+         "1hpma1c5j50ja03ibr7h1xmyv7k8j3rbvqivad47kwqhlsgw0jk0"))))
+    (build-system emacs-build-system)
+    (inputs `(("fish" ,fish)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((fish (assoc-ref inputs "fish")))
+               ;; Specify the absolute file names of the various
+               ;; programs so that everything works out-of-the-box.
+               (emacs-substitute-variables
+                   "fish-completion.el"
+                 ("fish-completion-command"
+                  (string-append fish "/bin/fish")))))))))
+    (home-page
+     "https://gitlab.com/Ambrevar/emacs-fish-completion")
+    (synopsis "Fish completion for Emacs pcomplete")
+    (description
+     "This package provides completion for the Fish shell to pcomplete (used
 by shell and Eshell).  You can set it up globally with:
 
 @example
@@ -11352,7 +11842,7 @@ shell/Eshell mode hook.
 The package @code{emacs-bash-completion} is an optional dependency: if available,
 @code{fish-completion-complete} can be configured to fall back on bash to further
 try completing.  See @code{fish-completion-fallback-on-bash-p}.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-gif-screencast
   (let ((commit "12b25442b97b84abae74ecb5190a9d14ff7cfe5a"))
@@ -11480,10 +11970,10 @@ you searched for and execute it, or view its documentation.")
     (license license:gpl3+))))
 
 (define-public emacs-helm-emms
-  (let ((commit "d3f9bdef8ff0d093eaf6e26af50ea905ab53fdec"))
+  (let ((commit "b785cb845a98a643eba9d5d53c9c0b4e6810a3cd"))
     (package
       (name "emacs-helm-emms")
-      (version (git-version "1.3" "1" commit))
+      (version (git-version "1.3" "2" commit))
       (source
        (origin
          (method git-fetch)
@@ -11493,7 +11983,7 @@ you searched for and execute it, or view its documentation.")
          (file-name (string-append name "-" version "-checkout"))
          (sha256
           (base32
-           "0bdb8xp0yp3gijpa9i2rc17gfzjhzlm92vdzw93i10qpd1xhj4aa"))))
+           "1595r09y3rmwd46nnhvjja3hb8j2ila295ijxv61cg52ws4wginh"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)
@@ -11629,29 +12119,26 @@ e.g: @code{from:Peter to:Anne flag:attach search term}.")
       (license license:gpl3+))))
 
 (define-public emacs-helm-pass
-  (let ((commit "ebcbef1a962795a36e3491ae926e2a4b8a8b0ebb"))
-    (package
-      (name "emacs-helm-pass")
-      (version (git-version  "20180416" "1" commit))
-      (source
-       (origin
-         (method url-fetch)
-         (uri (string-append
-               "https://github.com/jabranham/helm-pass/archive/"
-               commit
-               ".tar.gz"))
-         (sha256
-          (base32
-           "1pgq4hj9wvz7z2fyxwsvbh6rmc1akya84v382nx26rr76iavz6wi"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-password-store" ,emacs-password-store)))
-      (home-page
-       "https://github.com/jabranham/helm-pass")
-      (synopsis "Helm interface to pass, the standard Unix password manager")
-      (description
-       "Users of @code{helm-pass} may also be interested in functionality
+  (package
+    (name "emacs-helm-pass")
+    (version "0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-helm/helm-pass")
+             (commit version)))
+       (sha256
+        (base32
+         "0vglaknmir3yv4iwibwn8r40ran8d04gcyp99hx73ldmf3zqpnxv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-password-store" ,emacs-password-store)))
+    (home-page "https://github.com/emacs-helm/helm-pass")
+    (synopsis "Helm interface to pass, the standard Unix password manager")
+    (description
+     "Users of @code{helm-pass} may also be interested in functionality
 provided by other Emacs packages dealing with pass:
 @itemize
 @item @code{emacs-password-store}, which @code{helm-pass} relies on.
@@ -11659,7 +12146,7 @@ provided by other Emacs packages dealing with pass:
 @item @code{auth-source-pass.el}: integration of Emacs' auth-source with
 @code{pass}, included in Emacs 26+).
 @end itemize\n")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-image+
   (let ((commit "6834d0c09bb4df9ecc0d7a559bd7827fed48fffc"))
@@ -12097,7 +12584,7 @@ buffers – other modes on the TODO list).
 (define-public emacs-magit-todos
   (package
     (name "emacs-magit-todos")
-    (version "1.1")
+    (version "1.1.7")
     (source
      (origin
        (method git-fetch)
@@ -12107,7 +12594,7 @@ buffers – other modes on the TODO list).
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1mvzbxshr6zjdim3jd368ar1hy5l7n22i03cpvzdmrw83kkwdyhd"))))
+         "0qagdxpik64n4rw9scy451ws5sw00v64ri9g2dcw7b66bx2c6c6w"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -12153,10 +12640,10 @@ files) are provided.")
       (license license:gpl2+))))
 
 (define-public emacs-hackernews
-  (let ((commit "d8c450bbc76d6bb65ec5cdb6c3b888a23f3769e9"))
+  (let ((commit "916c3da8da45c757f5ec2faeed57fa370513d4ac"))
     (package
       (name "emacs-hackernews")
-      (version (git-version "0.4.0" "1" commit))
+      (version (git-version "0.5.0" "1" commit))
       (source
        (origin
          (method git-fetch)
@@ -12166,7 +12653,7 @@ files) are provided.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "06mp4n6c300jv5lhwf50ircfjckzr2p1zd38s4mqnxxjlf1maim7"))))
+           "09bxaaczana1cfvxyk9aagjvdszkj0j1yldl5r4xa60b59lxihsg"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/clarete/hackernews.el")
       (synopsis "Hacker News client for Emacs")
@@ -12322,6 +12809,30 @@ execute its commands and resize images.")
 backends, including the @command{wordnet} offline backend.")
       (license license:gpl3+))))
 
+(define-public emacs-editorconfig
+  (package
+    (name "emacs-editorconfig")
+    (version "0.7.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/editorconfig/editorconfig-emacs")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "19j2428ij7sqvrqs7rqg1mcnv9109y6drqba40dkv3vrkk5d2yia"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/editorconfig/editorconfig-emacs")
+    (synopsis "Define and maintain consistent coding styles between different
+editors and IDEs")
+    (description "The EditorConfig project consists of a file format for
+defining coding styles and a collection of text editor plugins that enable
+editors to read the file format and adhere to defined styles.  EditorConfig
+files are easily readable and they work nicely with version control systems.")
+    (license license:gpl3+)))
+
 (define-public emacs-all-the-icons
   (package
     (name "emacs-all-the-icons")
@@ -12457,26 +12968,25 @@ correctly.")
       (license license:gpl2+))))
 
 (define-public emacs-helm-slime
-  (let ((commit "9980925f3e5f6ac5a30369d2a544e82006a79c76"))
-    (package
-      (name "emacs-helm-slime")
-      (version (git-version "0.0.0" "1" commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/emacs-helm/helm-slime")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0xa07gpfkzwn522x9573mq5mfxvbawdgd0m93gqj6w5a14wk8zzh"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)
-         ("emacs-slime" ,emacs-slime)))
-      (home-page "https://github.com/emacs-helm/helm-slime")
-      (synopsis "Helm for SLIME, the Superior Lisp Interaction Mode for Emacs")
-      (description "Helm-SLIME defines a few new commands:
+  (package
+    (name "emacs-helm-slime")
+    (version "0.3.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-helm/helm-slime")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qhb9446rpj17pm0hi3miy5gs5k3ld43bq29kzy0y26bf7ivfcjv"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("emacs-slime" ,emacs-slime)))
+    (home-page "https://github.com/emacs-helm/helm-slime")
+    (synopsis "Helm for SLIME, the Superior Lisp Interaction Mode for Emacs")
+    (description "Helm-SLIME defines a few new commands:
 
 @itemize
 @item helm-slime-complete: Select a symbol from the SLIME completion systems.
@@ -12484,7 +12994,7 @@ correctly.")
 @item: helm-slime-apropos: Yet another slime-apropos with Helm.
 @item helm-slime-repl-history: Select an input from the SLIME REPL history and insert it.
 @end itemize\n")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 (define-public emacs-gtk-look
   (package
@@ -13014,3 +13524,583 @@ indentation offset originally used for creating source code files and
 transparently adjusts the corresponding settings in Emacs, making it more
 convenient to edit foreign files.")
     (license license:gpl2+)))
+
+(define-public emacs-repo
+  (package
+    (name "emacs-repo")
+    (version "0.1.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/canatella/repo-el")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0rbvcvm7bfr6ncji7cllfxyyr6x7n9fx863byp243phsj3n93adz"))))
+    (build-system emacs-build-system)
+    (native-inputs
+     `(("emacs-el-mock" ,emacs-el-mock)
+       ("ert-runner" ,emacs-ert-runner)))
+    (propagated-inputs
+     `(("emacs-f" ,emacs-f)
+       ("magit" ,emacs-magit)))
+    (home-page "https://github.com/canatella/repo-el")
+    (synopsis "Emacs interface for the Google Repo tool")
+    (description "This package provides integration of the Google Repo tool
+with emacs.  It displays the output of the @code{repo status} command in a
+buffer and launches Magit from the status buffer for the project at point.")
+    (license license:gpl3+)))
+
+(define-public emacs-alect-themes
+  (package
+    (name "emacs-alect-themes")
+    (version "0.9")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/alezost/alect-themes")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0nffxpdm0sa7bynwi0rmlwpc4qmvbda5ankhzz7fmk4ap9fkjxv9"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/alezost/alect-themes")
+    (synopsis "Low contrast, light, dark and black color theme for Emacs")
+    (description "@code{emacs-alect-themes} provides configurable light, dark
+and black color themes for Emacs.  The themes are intended to be used with
+GUI.")
+    (license license:gpl3+)))
+
+(define-public emacs-google-c-style
+  (let ((commit "6271f3f473ceb3a7fef99388a3040903b1a145f1")
+        (revision "0"))
+    (package
+      (name "emacs-google-c-style")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/google/styleguide")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1jghyyasdl15c4gaqaxmdn43am63k6bykn5ab83f1ahv9zi1krxk"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/google/styleguide")
+      (synopsis "Emacs settings file for Google C/C++ style")
+      (description "@code{emacs-google-c-style} provides an Emacs settings
+file for Google C and C++ style.")
+      (license license:gpl1+))))
+
+(define-public emacs-redshank
+  (let ((commit "f98e68f532e622bcd464292ca4a9cf5fbea14ebb")
+        (revision "1"))
+    (package
+      (name "emacs-redshank")
+      (version (git-version "0.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "http://www.foldr.org/~michaelw/projects/redshank.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1jdkgvd5xy9hl5q611jwah2n05abjp7qcy9sj4k1z11x0ii62b6p"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-paredit" ,emacs-paredit)))
+      (home-page "http://www.foldr.org/~michaelw/emacs/redshank/")
+      (synopsis "Common Lisp Editing Extensions (for Emacs)")
+      (description "Redshank is a collection of code-wrangling Emacs macros
+mostly geared towards Common Lisp, but some are useful for other Lisp
+dialects, too.  Redshank's code transformations aim to be expression-based (as
+opposed to character-based).")
+      (license license:gpl1+))))
+
+(define-public emacs-disk-usage
+  (package
+    (name "emacs-disk-usage")
+    (version "1.3.0")
+    (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/disk-usage-"
+             version
+             ".el"))
+       (sha256
+        (base32
+         "0ky6c34z7c6hd4yvcrcsidkfk2kvffkg63v02vch2i6hg1n6n028"))))
+    (build-system emacs-build-system)
+    (synopsis "Sort and browse disk usage listings with Emacs")
+    (description "Disk Usage is a file system analyzer: it offers a tabulated
+view of file listings sorted by size.  Directory sizes are computed
+recursively.  The results are cached for speed.")
+    (license license:gpl3+)))
+
+(define-public emacs-orgit
+  (let ((commit "2456436a7e64d26bcf455b3890a586acaa3e7f93"))
+    (package
+      (name "emacs-orgit")
+      (version (git-version "1.5.1" "2" commit))
+      (home-page "https://github.com/magit/orgit")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1i52dq2ynddb1irgigr5mdwfbfd3bvm1f29jnzd7nlc0nk186nvh"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)
+         ("emacs-magit" ,emacs-magit)))
+      (synopsis "Support for Org links to Magit buffers")
+      (description "This package defines several Org link types, which can be
+used to link to certain Magit buffers.  Use the command
+@command{org-store-link} while such a buffer is current to store a link.
+Later you can insert it into an Org buffer using the command
+@code{org-insert-link}.")
+      (license license:gpl3+))))
+
+(define-public emacs-amx
+  (package
+    (name "emacs-amx")
+    (version "3.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/DarwinAwardWinner/amx")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0bb8y1dmzyqkrb4mg6zndcsxppby3glridv2aap2pv05gv8kx7mj"))))
+    (build-system emacs-build-system)
+    (propagated-inputs `(("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/DarwinAwardWinner/amx")
+    (synopsis "Alternative interface for M-x")
+    (description "Amx is an alternative interface for M-x in Emacs.  It
+provides several enhancements over the ordinary
+@code{execute-extended-command}, such as prioritizing your most-used commands
+in the completion list and showing keyboard shortcuts, and it supports several
+completion systems for selecting commands, such as ido and ivy.")
+    (license license:gpl3+)))
+
+(define-public emacs-lorem-ipsum
+  (let ((commit "4b39f6fed455d67f635b3837cf5668bf74d0f6cd"))
+    (package
+      (name "emacs-lorem-ipsum")
+      (version (git-version "0.2" "1" commit))
+      (home-page "https://github.com/jschaf/emacs-lorem-ipsum/")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0a3b18p3vdjci89prsgdzjnfxsl8p67vjhf8ai4qdng7zvh50lir"))))
+      (build-system emacs-build-system)
+      (synopsis "Insert dummy pseudo Latin text in Emacs")
+      (description "This package provides convenience functions to insert
+dummy Latin text into a buffer.  This can be useful if you need to produce
+paragraphs or pages of text for testing purposes.")
+      (license license:gpl3+))))
+
+(define-public emacs-lisp-extra-font-lock
+  (let ((commit "4605eccbe1a7fcbd3cacf5b71249435413b4db4f"))
+    (package
+      (name "emacs-lisp-extra-font-lock")
+      (version (git-version "0.0.6" "1" commit))
+      (home-page "https://github.com/Lindydancer/lisp-extra-font-lock")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "152vcp3mdlv33jf5va4rinl1d0k960gnfhbrqqrafazgx9j3ya8w"))))
+      (build-system emacs-build-system)
+      (synopsis "Highlight bound variables and quoted expressions in Emacs")
+      (description "This package highlight the location where local variables
+is created (bound, for example, by let) as well as quoted and backquoted
+constant expressions.")
+      (license license:gpl3+))))
+
+(define-public emacs-docker-tramp
+  (package
+    (name "emacs-docker-tramp")
+    (version "0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/emacs-pe/docker-tramp.el")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0lxvzmfg52fhxrhbvp92zwp7cv4i1rlxnkyyzgngj3sjm7y60yvg"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/emacs-pe/docker-tramp.el")
+    (synopsis "TRAMP integration for docker containers")
+    (description
+     "This package provides a TRAMP method for Docker containers.")
+    (license license:gpl3+)))
+
+(define-public emacs-docker
+  (package
+    (name "emacs-docker")
+    (version "1.2.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Silex/docker.el")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "15kd86kaq1x6giz855q9w6zvnyc742j309j0pmm86rwx398g4rq1"))))
+    (inputs
+     `(("emacs-undercover" ,emacs-undercover)))
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-docker-tramp" ,emacs-docker-tramp)
+       ("emacs-magit-popup" ,emacs-magit-popup)
+       ("emacs-s" ,emacs-s)
+       ("emacs-tablist" ,emacs-tablist)
+       ("emacs-json-mode" ,emacs-json-mode)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'check)))) ;no tests
+    (build-system emacs-build-system)
+    (home-page "https://github.com/Silex/docker.el")
+    (synopsis "Manage docker from Emacs")
+    (description "This package provides an Emacs interface for Docker.")
+    (license license:gpl3+)))
+
+(define-public emacs-dockerfile-mode
+  ;; Latest upstream release is too old.
+  (let ((commit "7223d92718f78fa3ab15667cdb2ed90cfeb579e7"))
+    (package
+      (name "emacs-dockerfile-mode")
+      (version (git-version "1.2" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/spotify/dockerfile-mode.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "0hmipgl4rk6aih11i8mnspwdijjiwk2y0wns6lzs8bgkvy3c064r"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)))
+      (home-page "https://github.com/spotify/dockerfile-mode")
+      (synopsis "Major mode for editing Dockerfile")
+      (description
+       "This package provides a major mode @code{dockerfile-mode} for use with
+the standard @code{Dockerfile} file format.")
+      (license license:asl2.0))))
+
+(define-public emacs-lsp-mode
+  (package
+    (name "emacs-lsp-mode")
+    (version "6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-lsp/lsp-mode.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1v1mq6ixzlgiazj8fmg4xaqhsqn3l89iqy74yndhvzh2rdf0pbkl"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-f" ,emacs-f)
+       ("emacs-ht" ,emacs-ht)
+       ("emacs-spinner" ,emacs-spinner)))
+    (home-page "https://github.com/emacs-lsp/lsp-mode")
+    (synopsis "Emacs client and library for the Language Server Protocol")
+    (description "@code{LSP-mode} is a client and library implmentation for
+the Language Server Protocol.  This mode aims to provide an IDE-like
+experience by providing optional integration with other popular Emacs packages
+like @code{company}, @code{flycheck}, and @code{projectile}.")
+    (license license:gpl3+)))
+
+(define-public emacs-lsp-ui
+  (package
+    (name "emacs-lsp-ui")
+    (version "6.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-lsp/lsp-ui.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1r4327fd8cvjxfwkddp5c4bdskyncbs4sx9m3z2w4d773y2jrakc"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-lsp-mode" ,emacs-lsp-mode)
+       ("emacs-markdown-mode" ,emacs-markdown-mode)
+       ("emacs-flycheck" ,emacs-flycheck)))
+    (home-page "https://github.com/emacs-lsp/lsp-ui")
+    (synopsis "User interface extensions for @code{lsp-mode}")
+    (description
+     "@code{LSP-ui} contains several enhancements and integrations for
+@code{lsp-mode}, such as visual flychecking, displaying references in-line,
+and code peeking.")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-notmuch
+  (package
+    (name "emacs-helm-notmuch")
+    (version "1.2")
+    (home-page "https://github.com/emacs-helm/helm-notmuch/")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1k038dbdpaa411gl4071x19fklhnizhr346plxw23lsnxir9dhqc"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)
+       ("notmuch" ,notmuch)))
+    (synopsis "Search emails with Emacs Notmuch and Helm")
+    (description
+     "This package can be used to search emails in Emacs, searching result
+displays as you type thanks to Helm, though @command{notmuch-search} does the
+real search.")
+    (license license:gpl3+)))
+
+(define-public emacs-elmacro
+  (let ((commit "89b9b0feabafd01fee48111d67131c4c9b5fed9a"))
+    (package
+      (name "emacs-elmacro")
+      (version (git-version "1.1.0" "1" commit))
+      (home-page "https://github.com/Silex/elmacro")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "06wkzafh6vbcjf0m3sl253mgcq32p8cdv7vsfmyx51baa36938ha"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-s" ,emacs-s)
+         ("emacs-dash" ,emacs-dash)))
+      (synopsis "Convert keyboard macros to Emacs Lisp")
+      (description
+       "This package displays keyboard macros or latest interactive commands
+as Emacs Lisp.")
+      (license license:gpl3+))))
+
+(define-public emacs-transient
+  ;; 0.1.0 depends on lv.el but not later versions.
+  (let ((commit "7e45a57ec81185631fe763733f64c99021df2a06"))
+    (package
+      (name "emacs-transient")
+      (version (git-version "0.1.0" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/transient")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0r6d4c1lga3bk0s7q7y4v4hbpxnd9h40cjxybqvax2z902931fz1"))))
+      (build-system gnu-build-system)
+      (native-inputs `(("texinfo" ,texinfo)
+                       ("emacs" ,emacs-minimal)))
+      (propagated-inputs
+       `(("dash" ,emacs-dash)))
+      (arguments
+       `(#:modules ((guix build gnu-build-system)
+                    (guix build utils)
+                    (srfi srfi-26)
+                    (guix build emacs-utils))
+         #:imported-modules (,@%gnu-build-system-modules
+                             (guix build emacs-utils))
+         #:tests? #f                   ; tests are not included in the release
+         #:make-flags (list "lisp" "info"
+                            (string-append "LOAD_PATH=-L . -L "
+                                           (assoc-ref %build-inputs "dash")
+                                           "/share/emacs/site-lisp/guix.d/dash-"
+                                           ,(package-version emacs-dash)))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'install
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (lisp (string-append out "/share/emacs/site-lisp/guix.d/"
+                                           "transient" "-" ,version))
+                      (info (string-append out "/share/info")))
+                 (for-each (cut install-file <> lisp)
+                           (find-files "." "\\.elc*$"))
+                 (install-file "docs/transient.info" (string-append info)))
+               #t)))))
+      (home-page "https://magit.vc/manual/transient")
+      (synopsis "Transient commands in Emacs")
+      (description
+       "Taking inspiration from prefix keys and prefix arguments in Emacs,
+Transient implements a similar abstraction involving a prefix command, infix
+arguments and suffix commands.  We could call this abstraction a \"transient
+command\", but because it always involves at least two commands (a prefix and
+a suffix) we prefer to call it just a \"transient\".")
+      (license license:gpl3+))))
+
+(define-public emacs-semantic-refactor
+  ;; The last release, 0.5, was made on 2015-07-26 and there have been 47
+  ;; commits since then.
+  (let ((commit "6f2c97d17fb70f4ca2112f5a2b99a8ec162004f5"))
+    (package
+      (name "emacs-semantic-refactor")
+      (version (git-version "0.5" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tuhdo/semantic-refactor")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1lyz3zjkx2csh0xdy1zpx8s32qp1p3sig57mwi9xhgpqjyf0axmb"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/tuhdo/semantic-refactor")
+      (synopsis "Refactoring tool for C/C++ and Lisp dialects")
+      (description "This package provides a refactoring tool based on the
+Emacs Semantic parser framework.  For C and C++ it supports operations such as:
+
+@enumerate
+@item Generating class implementations
+@item Generating function prototypes
+@item Converting functions to function pointers
+@item Moving semantic units
+@item etc...
+@end enumerate
+
+For Lisp dialects like Clojure, ELisp, and Scheme, it supports operations such
+as:
+
+@enumerate
+@item Formatting the whole buffer
+@item Converting sexpressions to one or multiple lines
+@item etc...
+@end enumerate\n")
+      (license license:gpl3+))))
+
+(define-public emacs-nhexl-mode
+  (package
+    (name "emacs-nhexl-mode")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://elpa.gnu.org/packages/nhexl-mode-"
+             version ".el"))
+       (sha256
+        (base32
+         "031h22p564qdvr9khs05qcba06pmsk68cr7zyc7c04hfr3y3ziaf"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/nhexl-mode.html")
+    (synopsis "Minor mode to edit files via hex-dump format")
+    (description
+     "This package implements NHexl mode, a minor mode for editing files
+in hex dump format.  The mode command is called @command{nhexl-mode}.
+
+This minor mode implements similar functionality to @command{hexl-mode},
+but using a different implementation technique, which makes it
+usable as a \"plain\" minor mode.  It works on any buffer, and does
+not mess with the undo log or with the major mode.
+
+It also comes with:
+
+@itemize
+@item @command{nhexl-nibble-edit-mode}: a \"nibble editor\" minor mode, where
+the cursor pretends to advance by nibbles (4-bit) and the self-insertion keys
+(which only work for hex-digits) will only modify the nibble under point.
+@item @command{nhexl-overwrite-only-mode}: a minor mode to try and avoid
+moving text.  In this minor mode, not only self-inserting keys overwrite
+existing text, but commands like `yank' and @command{kill-region} as well.
+@item It overrides @code{C-u} to use hexadecimal, so you can do @code{C-u a 4
+C-f} to advance by #xa4 characters.
+@end itemize\n")
+    (license license:gpl3+)))
+
+(define-public emacs-helm-wikipedia
+  (let ((commit "126f044e0a0e1432e0791c33ce2a41875d704a9b"))
+    (package
+      (name "emacs-helm-wikipedia")
+      (version (git-version "0.0.0" "1" commit))
+      (home-page "https://github.com/emacs-helm/helm-wikipedia/")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "148a5xsnbsiddhf9cl7yxdk41lrv38h0pip91kcflw9d7l0dp7pr"))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("helm" ,emacs-helm)))
+      (synopsis "Search suggestions and article extracts from Wikipedia for Emacs")
+      (description
+       "This package provides an Emacs Helm interface for search suggestions
+and article extracts for Wikipedia.")
+      (license license:gpl3+))))
+
+(define-public emacs-webfeeder
+  (package
+  (name "emacs-webfeeder")
+  (version "1.0.0")
+  (source
+    (origin
+      (method url-fetch)
+      (uri (string-append
+             "https://elpa.gnu.org/packages/webfeeder-"
+             version
+             ".tar"))
+      (sha256
+        (base32
+          "06y5vxw9m6pmbrzb8v2i3w9dnhgqxz06vyx1knmgi9cczlrj4a64"))))
+  (build-system emacs-build-system)
+  (home-page "https://gitlab.com/Ambrevar/emacs-webfeeder")
+  (synopsis "Build RSS and Atom webfeeds from HTML files")
+  (description
+    "Webfeeder is an Emacs library to generate RSS and Atom feeds from HTML
+files.  The various elements of the HTML input are parsed with customizable
+functions (e.g. @code{webfeeder-title-function}).")
+  (license license:gpl3+)))