Merge branch 'staging' into core-updates
[jackhill/guix/guix.git] / gnu / packages / emacs-xyz.scm
index 70619a7..99e50aa 100644 (file)
@@ -14,7 +14,7 @@
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
-;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 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 George Clemmer <myglc2@gmail.com>
 ;;; Copyright © 2017, 2018 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2017, 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2017, 2018, 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 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>
@@ -41,7 +41,7 @@
 ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
 ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
-;;; Copyright © 2018, 2019 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2018, 2019, 2020 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2019 Dimakakos Dimos <bendersteed@teknik.io>
 ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
 ;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
 ;;; Copyright © 2019 Baptiste Strazzulla <bstrazzull@hotmail.fr>
 ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
 ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
-;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
+;;; Copyright © 2019 Amin Bandali <mab@gnu.org>
 ;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2019 Stephen Webber <montokapro@gmail.com>
 ;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;; Copyright © 2019 David Wilson <david@daviwil.com>
+;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages telephony)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tcl)
@@ -250,7 +252,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
 (define-public emacs-with-editor
   (package
     (name "emacs-with-editor")
-    (version "2.8.3")
+    (version "2.9.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -259,7 +261,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1z2h9casyw1b93ikq2mf9xixyvbl90zddf0s66lqfiyj2y376pq3"))))
+                "1sjb3qqrn1rhmpkrn14l8rya6c3gwxwmgw74n779s54kvl9gn7a9"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -495,7 +497,7 @@ process, passing on the arguments as command line arguments.")
 (define-public emacs-minions
   (package
     (name "emacs-minions")
-    (version "0.3.1")
+    (version "0.3.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -504,7 +506,7 @@ process, passing on the arguments as command line arguments.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0q2y37zfxlbfvgdn70ikg3abp8vljna4ir9nyqlz1awmz5i1c43s"))))
+                "16rplpbfy3dnvqqgavk9jb1f1ihr5875zlixd4zxb1pqxs3jkgw3"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-dash" ,emacs-dash)))
@@ -548,33 +550,33 @@ clojure.walk and clojure.zip respectively.")
 
 (define-public emacs-graphql
   (package
-   (name "emacs-graphql")
-   (version "0.1.1")
-   (source (origin
-             (modules '((guix build utils)))
-             ;; Remove examples file with references to external packages as
-             ;; they do not exist at compilation time.
-             (snippet
-              '(begin (delete-file "examples.el")
-                 #t))
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/vermiculus/graphql.el.git")
-                   (commit version)))
+    (name "emacs-graphql")
+    (version "0.1.1")
+    (source (origin
+              (modules '((guix build utils)))
+              ;; Remove examples file with references to external packages as
+              ;; they do not exist at compilation time.
+              (snippet
+               '(begin (delete-file "examples.el")
+                       #t))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vermiculus/graphql.el.git")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
                 "0sp0skc1rnhi39szfbq1i99pdgd3bhn4c15cff05iqhjy2d4hniw"))))
-   (build-system emacs-build-system)
-   (home-page
-    "https://github.com/vermiculus/graphql.el")
-   (synopsis "GraphQL utilities")
-   (description
-    "GraphQL.el provides a generally-applicable domain-specific language for
+    (build-system emacs-build-system)
+    (home-page
+     "https://github.com/vermiculus/graphql.el")
+    (synopsis "GraphQL utilities")
+    (description
+     "GraphQL.el provides a generally-applicable domain-specific language for
 creating and executing GraphQL queries against your favorite web services.
 GraphQL is a data query language and runtime designed and used to request and
 deliver data to mobile and web apps.")
-   (license license:gpl3+)))
+    (license license:gpl3+)))
 
 (define-public emacs-ghub
   ;; We need a newer commit to avoid problems in emacs-forge.
@@ -640,17 +642,23 @@ for editing Racket's Scribble documentation syntax in Emacs.")
 (define-public emacs-shroud
   (package
     (name "emacs-shroud")
-    (version "1.83.4")
+    (version "1.105")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/o-nly/emacs-shroud.git")
+             (url "https://git.savannah.gnu.org/git/emacs-shroud.git")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1yvdjx0kp4y8w5yz2cbqq9n6xl5splvmsyyx8ld1xv0q1c9872nf"))))
-    (build-system emacs-build-system)
+        (base32 "0q2pb3w8s833fjhkzicciw2php4lsnismad1dnwgp2lcway757ra"))))
+    (build-system gnu-build-system)
+    (native-inputs
+    `(("autoconf" ,autoconf)
+      ("automake" ,automake)
+      ("texinfo" ,texinfo)
+      ("perl" ,perl)
+      ("emacs-minimal" ,emacs-minimal)))
     (propagated-inputs
      `(("emacs-bui" ,emacs-bui)
        ("emacs-dash" ,emacs-dash)
@@ -658,7 +666,7 @@ for editing Racket's Scribble documentation syntax in Emacs.")
        ("emacs-s" ,emacs-s)
        ("gnupg" ,gnupg)
        ("shroud" ,shroud)))
-    (home-page "https://github.com/o-nly/emacs-shroud")
+    (home-page "https://www.nongnu.org/emacs-shroud")
     (synopsis "Emacs interface to the Shroud password manager")
     (description
      "This package provides an Emacs interface to the Shroud password manager,
@@ -711,8 +719,8 @@ replacement.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/haskell/haskell-mode")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/haskell/haskell-mode")
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32 "1qk36y0v9fzass6785il65c6wb5cfj4ihhwkvgnzmbafpa8p4dvq"))
@@ -740,47 +748,47 @@ replacement.")
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before
-          'build 'pre-build
-          (lambda* (#:key inputs #:allow-other-keys)
-            (define (el-dir store-dir)
-              (match (find-files store-dir "\\.el$")
-                ((f1 f2 ...) (dirname f1))
-                (_ "")))
-
-            (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
-              (define emacs-prefix? (cut string-prefix? "emacs-" <>))
-
-              (setenv "SHELL" "sh")
-              (setenv "EMACSLOADPATH"
-                      (string-concatenate
-                       (map (match-lambda
-                              (((? emacs-prefix? name) . dir)
-                               (string-append (el-dir dir) ":"))
-                              (_ ""))
-                            inputs)))
-              (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
-              ;; embed filename to fix test failure
-              (let ((file "tests/haskell-cabal-tests.el"))
-                (substitute* file
-                  (("\\(buffer-file-name\\)")
-                   (format #f "(or (buffer-file-name) ~s)" file))))
-              #t)))
+             'build 'pre-build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (define (el-dir store-dir)
+               (match (find-files store-dir "\\.el$")
+                 ((f1 f2 ...) (dirname f1))
+                 (_ "")))
+
+             (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
+               (define emacs-prefix? (cut string-prefix? "emacs-" <>))
+
+               (setenv "SHELL" "sh")
+               (setenv "EMACSLOADPATH"
+                       (string-concatenate
+                        (map (match-lambda
+                               (((? emacs-prefix? name) . dir)
+                                (string-append (el-dir dir) ":"))
+                               (_ ""))
+                             inputs)))
+               (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
+               ;; embed filename to fix test failure
+               (let ((file "tests/haskell-cabal-tests.el"))
+                 (substitute* file
+                   (("\\(buffer-file-name\\)")
+                    (format #f "(or (buffer-file-name) ~s)" file))))
+               #t)))
          (replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (el-dir (string-append out "/share/emacs/site-lisp"))
-                   (doc (string-append
-                         out "/share/doc/haskell-mode-" ,version))
-                   (info (string-append out "/share/info")))
-              (define (copy-to-dir dir files)
-                (for-each (lambda (f)
-                            (install-file f dir))
-                          files))
-
-              (with-directory-excursion "doc"
-                (invoke "makeinfo" "haskell-mode.texi")
-                (install-file "haskell-mode.info" info))
+             'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (el-dir (string-append out "/share/emacs/site-lisp"))
+                    (doc (string-append
+                          out "/share/doc/haskell-mode-" ,version))
+                    (info (string-append out "/share/info")))
+               (define (copy-to-dir dir files)
+                 (for-each (lambda (f)
+                             (install-file f dir))
+                           files))
+
+               (with-directory-excursion "doc"
+                 (invoke "makeinfo" "haskell-mode.texi")
+                 (install-file "haskell-mode.info" info))
                (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
                (copy-to-dir el-dir (find-files "." "\\.elc?"))
                ;; These are part of other packages.
@@ -799,10 +807,10 @@ programs.")
 
 (define-public emacs-dante
   (let ((commit "38b589417294c7ea44bf65b73b8046d950f9531b")
-        (revision "3"))
+        (revision "1"))
     (package
       (name "emacs-dante")
-      (version (git-version "1.5" revision commit))
+      (version (git-version "1.6" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -961,7 +969,7 @@ in certain cases.  It also enables recursion for anonymous functions.")
         (base32
          "1km4x92pii8c4bcimks4xzhmwpypdf183z0zh7raj062jz4jb74r"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/xr.html")
+    (home-page "https://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
@@ -1037,14 +1045,14 @@ terminals.")
     (version "0.4")
     (source
      (origin
-      (method git-fetch)
-      (uri (git-reference
-            (url "https://github.com/purcell/reformatter.el.git")
-            (commit version)))
-      (file-name (git-file-name name version))
-      (sha256
-       (base32
-        "0hhy6x1bkwlhdlarsgm06g3am4yh02yqv8qs34szpzgy53x84qah"))))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/purcell/reformatter.el.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0hhy6x1bkwlhdlarsgm06g3am4yh02yqv8qs34szpzgy53x84qah"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/purcell/reformatter.el")
     (synopsis "Define commands which run reformatters on the current buffer")
@@ -1200,11 +1208,11 @@ or unexpected behavior inside an elisp configuration file (typically
     (name "emacs-wget")
     (version "0.5.0")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
-                                 version ".orig.tar.gz"))
-             (sha256
-              (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
+              (method url-fetch)
+              (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
+                                  version ".orig.tar.gz"))
+              (sha256
+               (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
     (build-system gnu-build-system)
     (inputs `(("wget" ,wget)))
     (native-inputs `(("emacs" ,emacs-minimal)))
@@ -1235,7 +1243,7 @@ or unexpected behavior inside an elisp configuration file (typically
               "wget" (string-append (assoc-ref outputs "out")
                                     "/share/emacs/site-lisp/"))
              #t)))))
-    (home-page "http://www.emacswiki.org/emacs/EmacsWget")
+    (home-page "https://www.emacswiki.org/emacs/EmacsWget")
     (synopsis "Simple file downloader for Emacs based on wget")
     (description
      "Emacs-wget is an emacs interface for the wget file downloader.")
@@ -1423,8 +1431,8 @@ light user interface.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/momomo5717/emms-mode-line-cycle")
-              (commit version)))
+             (url "https://github.com/momomo5717/emms-mode-line-cycle")
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -1569,8 +1577,8 @@ links.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/Wilfred/ag.el.git")
-                     (commit version)))
+                    (url "https://github.com/Wilfred/ag.el.git")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
@@ -1665,8 +1673,8 @@ or XEmacs.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/sebastiansturm/autothemer.git")
-              (commit version)))
+             (url "https://github.com/sebastiansturm/autothemer.git")
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -1725,8 +1733,8 @@ searches.  Unlike code@{emacs-wiki.el}, it can be combined with any format.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/kiwanami/emacs-calfw.git")
-              (commit (string-append "v" version))))
+             (url "https://github.com/kiwanami/emacs-calfw.git")
+             (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -1749,8 +1757,8 @@ Emacs buffer.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/wbolster/emacs-direnv.git")
-              (commit version)))
+             (url "https://github.com/wbolster/emacs-direnv.git")
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -1779,7 +1787,7 @@ environment set through Direnv.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/ggtags-"
+       (uri (string-append "https://elpa.gnu.org/packages/ggtags-"
                            version ".el"))
        (sha256
         (base32
@@ -1864,8 +1872,8 @@ written in the Go programming language.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/jd/google-maps.el.git")
-                     (commit version)))
+                    (url "https://github.com/jd/google-maps.el.git")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
@@ -1878,11 +1886,11 @@ Maps directly inside Emacs.")
     (license license:gpl3+)))
 
 (define-public emacs-graphviz-dot-mode
-  (let ((commit "c456a2b65c734089e6c44e87209a5a432a741b1a")
+  (let ((commit "1574c504d9810f34a85e2ff49b6f7648c2be5f27")
         (revision "1"))
     (package
       (name "emacs-graphviz-dot-mode")
-      (version (string-append "0.3.11-" revision "."
+      (version (string-append "0.4.1-" revision "."
                               (string-take commit 7)))
       (source (origin
                 (method git-fetch)
@@ -1892,7 +1900,7 @@ Maps directly inside Emacs.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0j1r2rspaakw37b0mx7pwpvdsvixq9sw3xjbww5piihzpdxz58z1"))))
+                  "03l6zkkxhbcxj5i13hzjv6ypmzaw70zqqagh7ix1kdn33kpp37jj"))))
       (build-system emacs-build-system)
       (arguments
        `(#:phases
@@ -1934,8 +1942,8 @@ diagrams.")
      (origin
        (method git-fetch)
        (uri (git-reference
-              (url "https://github.com/purcell/mmm-mode.git")
-              (commit version)))
+             (url "https://github.com/purcell/mmm-mode.git")
+             (commit version)))
        (file-name (git-file-name name version))
        (sha256
         (base32
@@ -1960,8 +1968,8 @@ single buffer.")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                     (url "https://github.com/politza/tablist.git")
-                     (commit (string-append "v" version))))
+                    (url "https://github.com/politza/tablist.git")
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
@@ -2199,7 +2207,7 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
 (define-public emacs-d-mode
   (package
     (name "emacs-d-mode")
-    (version "2.0.9")
+    (version "2.0.10")
     (source
      (origin
        (method git-fetch)
@@ -2208,7 +2216,7 @@ evaluations.  The entry point is @code{M-x build-farm} command.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0fzplvi1sm8k2sabfdvrd7j2xypwqh0g9v1mxa75dajdmcd85zpj"))))
+        (base32 "0915kb9jcaixgindhj85fmykkhvj31ckp1yg6746fznwdgfrlifv"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-undercover" ,emacs-undercover)))
@@ -2249,13 +2257,13 @@ running Extempore process, and more.")
     (name "emacs-keyfreq")
     (version "20160516.716")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "http://melpa.org/packages/keyfreq-"
-               version ".el"))
-        (sha256
-          (base32
-            "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8"))))
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://melpa.org/packages/keyfreq-"
+                           version ".el"))
+       (sha256
+        (base32
+         "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/dacap/keyfreq")
     (synopsis "Track Emacs command frequencies")
@@ -2286,7 +2294,7 @@ in the center.")
 (define-public emacs-undo-tree
   (package
     (name "emacs-undo-tree")
-    (version "0.6.6")
+    (version "0.7.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2295,7 +2303,7 @@ in the center.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1hnh2mnmw179gr094r561w6cw1haid0lpvpqvkc24wpj82vphzpa"))))
+                "1nr0149y2nvrxj56gc12jqnfl01g6z9ypfsgl6pfg85cw73hnggk"))))
     (build-system emacs-build-system)
     (home-page "http://www.dr-qubit.org/emacs.php")
     (synopsis "Treat undo history as a tree")
@@ -2834,7 +2842,7 @@ Lisp.")
 (define-public emacs-paren-face
   (package
     (name "emacs-paren-face")
-    (version "1.0.4")
+    (version "1.0.5")
     (source
      (origin
        (method git-fetch)
@@ -2844,7 +2852,7 @@ Lisp.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1cr0vnm57lxs48z17ddcv7qlfvks7wdsp01zsw0c7i3h5ajl8myp"))))
+         "04vkg8fhdn8x02dydxbwpizh2yn3sbmn9432v770vbbq6b62k2lx"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/tarsius/paren-face")
     (synopsis "Face for parentheses in lisp modes")
@@ -3667,6 +3675,35 @@ front-ends.  Company comes with many back-ends, e.g. @code{company-elisp}.
 These are distributed in separate files and can be used individually.")
     (license license:gpl3+)))
 
+(define-public emacs-company-posframe
+  (let ((version "0.1.0")
+        (revision "1")
+        (commit "67d899502384fb9ab2870aba0af41523dea7b64f"))
+    (package
+      (name "emacs-company-posframe")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/tumashu/company-posframe.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "051smlvz1siwglsd9k9l0m20mygrx4niflmyshha0064287aysxr"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-company" ,emacs-company)
+         ("emacs-posframe" ,emacs-posframe)))
+      (home-page "https://github.com/tumashu/company-posframe")
+      (synopsis "Use a posframe for @code{emacs-company}'s candidate menu")
+      (description
+       "Allows @code{emacs-company} to use child frames for its candidate menus.
+
+@code{emacs-company-posframe} is fast enough for daily use and supports CJK
+languages.")
+      (license license:gpl3+))))
+
 (define-public emacs-irony-mode
   (package
     (name "emacs-irony-mode")
@@ -5316,7 +5353,7 @@ parallel.")
 (define-public emacs-request
   (package
     (name "emacs-request")
-    (version "0.3.1")
+    (version "0.3.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -5325,8 +5362,10 @@ parallel.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0fhhd349l4iqkrjxqzpckfk2w45x2g4cccpm1dqzv9m49md1wphx"))))
+                "1djywhvvb6kwdj0nd3axjvb7k2g06dzkc6hsf29w9rsk96vr8ryl"))))
     (build-system emacs-build-system)
+    (arguments
+     `(#:tests? #f)) ; requires network access.
     (propagated-inputs
      `(("emacs-deferred" ,emacs-deferred)))
     (home-page "https://github.com/tkf/emacs-request")
@@ -5343,7 +5382,7 @@ line program.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/rudel-"
+       (uri (string-append "https://elpa.gnu.org/packages/rudel-"
                            version ".tar"))
        (sha256
         (base32
@@ -5630,7 +5669,7 @@ highlighted.  Pressing that character will switch to that window.")
          (sha256
           (base32 "0wr3w2id95wx2rma8n1ifjrv9rx37ly26ijc5zi58id0yrip3hnc"))))
       (build-system emacs-build-system)
-      (home-page "http://www.emacswiki.org/emacs/Iedit")
+      (home-page "https://www.emacswiki.org/emacs/Iedit")
       (synopsis "Edit multiple regions in the same way simultaneously")
       (description
        "This package is an Emacs minor mode and allows you to edit one
@@ -6533,7 +6572,7 @@ functions to assist in reviewing changes on files.")
 (define-public emacs-pyvenv
   (package
     (name "emacs-pyvenv")
-    (version "1.20")
+    (version "1.21")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -6542,7 +6581,7 @@ functions to assist in reviewing changes on files.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1x052fsavb94x3scpqd6n9spqgzaahzbdxhg4qa5sy6hqsabn6zh"))))
+                "055sgk8zf4wb5nqsf3qasf5gg861zlb1831733f1qcrd2ij5gzxx"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -6958,8 +6997,8 @@ not tied in the trap of backward compatibility.")
     (license license:gpl3+)))
 
 (define-public emacs-helm-org
-  (let ((commit "b9a1167b0716a22a69670f4c35e0ac59d2e0b220")
-        (revision "2"))
+  (let ((commit "8457e1e46227bf87726e05c42cec5a4b51c2ef7b")
+        (revision "3"))
     (package
       (name "emacs-helm-org")
       (version (git-version "1.0" revision commit))
@@ -6971,7 +7010,7 @@ not tied in the trap of backward compatibility.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "1gc27i4azqpgijva1f4ckfdp4s52mc9pnfcmzhkwhknr6pd6jlcr"))))
+          (base32 "0kcjhwwi492n9m2w894hvdavfvhj45zygy7bwvx103wvpay5h6h6"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-helm" ,emacs-helm)))
@@ -7899,6 +7938,32 @@ pasting into and from @code{tmux} paste buffers.")
 to search.")
       (license license:gpl3+))))
 
+(define-public emacs-monky
+  (package
+    (name "emacs-monky")
+    (version "0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/ananthakumaran/monky.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1fgn7al4zwz2k5wb5dy3byqg9lsrjk9fra341mxh5ma2pfwxjgps"))))
+    (build-system emacs-build-system)
+    (home-page "https://ananthakumaran.in/monky/index.html")
+    (arguments
+     `(#:tests? #t
+       #:test-command '("emacs" "--batch"
+                        "-l" "test/monky-unit-test.el"
+                        "-f" "ert-run-tests-batch-and-exit")))
+    (synopsis "Interactive interface for the Mercurial version control system")
+    (description
+     "Monky provides an Emacs interface for Mercurial (Hg).  Using Monky, you
+can selectively commit files, view the diffs, and other things.")
+    (license license:gpl3+)))
+
 (define-public emacs-monroe
   (package
     (name "emacs-monroe")
@@ -7923,7 +7988,7 @@ distribution, primarily targeting Clojure users")
 (define-public emacs-orgalist
   (package
     (name "emacs-orgalist")
-    (version "1.9")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
@@ -7931,9 +7996,9 @@ distribution, primarily targeting Clojure users")
                            "orgalist-" version ".el"))
        (sha256
         (base32
-         "1rmmcyiiqkq54hn74nhzxzl4nvd902hv6gq341jwhrm7yiagffi6"))))
+         "0zbqkk540rax32s8szp5zgz3a02zw88fc1dmjmyw6h3ls04m91kl"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/orgalist.html")
+    (home-page "https://elpa.gnu.org/packages/orgalist.html")
     (synopsis "Manage Org-like lists in non-Org buffers")
     (description "Write Org mode's plain lists in non-Org buffers.  More
 specifically, Orgalist supports the syntax of Org mode for numbered,
@@ -8081,7 +8146,7 @@ Flx has support for ido (interactively do things) through flx-ido.")
 (define-public emacs-cyberpunk-theme
   (package
     (name "emacs-cyberpunk-theme")
-    (version "1.19")
+    (version "1.21")
     (source
      (origin
        (method git-fetch)
@@ -8090,13 +8155,13 @@ Flx has support for ido (interactively do things) through flx-ido.")
               (commit version)))
        (sha256
         (base32
-         "1npwrw3pgdmvqhihcqcfi2yrs178iiip5fcj8zhpp6cr9yqsvvgi"))
+         "05mfgr9aj7knn7niadv9p6z3qrfpq2lbbi2wxxx62xywim9maw2y"))
        (file-name (git-file-name name version))))
     (build-system emacs-build-system)
     (home-page "https://github.com/n3mo/cyberpunk-theme.el")
-    (synopsis "Cyberpunk theme for emacs built-in color theme support")
+    (synopsis "Cyberpunk theme for Emacs built-in color theme support")
     (description
-     "Cyberpunk color theme for the emacs 24+ built-in color theme support
+     "Cyberpunk color theme for the Emacs 24+ built-in color theme support
 known loosely as deftheme.  Many mode-specific customizations are included.")
     (license license:gpl3+)))
 
@@ -8953,13 +9018,13 @@ consistent and well-integrated user interface.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://elpa.gnu.org/packages/adaptive-wrap-"
+                    "https://elpa.gnu.org/packages/adaptive-wrap-"
                     version ".el"))
               (sha256
                (base32
                 "0qi7gjprcpywk2daivnlavwsx53hl5wcqvpxbwinvigg42vxh3ll"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/adaptive-wrap.html")
+    (home-page "https://elpa.gnu.org/packages/adaptive-wrap.html")
     (synopsis "Smart line-wrapping with wrap-prefix")
     (description
      "This Emacs package provides the @code{adaptive-wrap-prefix-mode}
@@ -9251,7 +9316,7 @@ configuration of Chinese fonts.")
 (define-public emacs-php-mode
   (package
     (name "emacs-php-mode")
-    (version "1.22.1")
+    (version "1.22.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -9260,7 +9325,7 @@ configuration of Chinese fonts.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1yc7f39bv2ni8q5372r4kj04z7rikvc8w1mqx5c4zph5r02jab7i"))))
+                "1r4bpyavlndd4c78cv5cc97bc0gkd4cggiyz4kd2vg6zlyc1nld3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ejmr/php-mode")
     (synopsis "Major mode for editing PHP code")
@@ -9515,15 +9580,12 @@ It should enable you to implement low-level X11 applications.")
                ;; Add a .desktop file to xsessions
                (mkdir-p xsessions)
                (mkdir-p bin)
-               (with-output-to-file
-                   (string-append xsessions "/exwm.desktop")
-                 (lambda _
-                   (format #t "[Desktop Entry]~@
-                     Name=~a~@
-                     Comment=~a~@
-                     Exec=~a~@
-                     TryExec=~:*~a~@
-                     Type=Application~%" ,name ,synopsis exwm-executable)))
+               (make-desktop-entry-file
+                (string-append xsessions "/exwm.desktop")
+                #:name ,name
+                #:comment ,synopsis
+                #:exec exwm-executable
+                #:try-exec exwm-executable)
                ;; Add a shell wrapper to bin
                (with-output-to-file exwm-executable
                  (lambda _
@@ -9717,7 +9779,7 @@ with gnuplot.")
     (source
      (origin
        (method url-fetch)
-       (uri "http://www.emacswiki.org/emacs/download/transpose-frame.el")
+       (uri "https://www.emacswiki.org/emacs/download/transpose-frame.el")
        (file-name (string-append "transpose-frame-" version ".el"))
        (sha256
         (base32
@@ -10789,7 +10851,7 @@ database of references on life sciences.")
        #:test-command '("emacs" "--batch"
                         "-l" "websocket-test.el"
                         "-f" "ert-run-tests-batch-and-exit")))
-    (home-page "http://elpa.gnu.org/packages/websocket.html")
+    (home-page "https://elpa.gnu.org/packages/websocket.html")
     (synopsis "Emacs WebSocket client and server")
     (description "This is an Elisp library for WebSocket clients to talk to
 WebSocket servers, and for WebSocket servers to accept connections from
@@ -10811,7 +10873,7 @@ itself.")
         (base32
          "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/oauth2.html")
+    (home-page "https://elpa.gnu.org/packages/oauth2.html")
     (synopsis "OAuth 2.0 authorization protocol implementation")
     (description
      "This package provides an Elisp implementation of the OAuth 2.0 draft.
@@ -11780,7 +11842,7 @@ standard Unix password manager\").")
 
 (define-public emacs-auth-source-pass
   (let ((commit "847a1f54ed48856b4dfaaa184583ef2c84173edf")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "emacs-auth-source-pass")
       (version (git-version "5.0.0" revision commit))
@@ -11788,7 +11850,7 @@ standard Unix password manager\").")
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/NicolasPetton/auth-password-store.git")
+               (url "https://github.com/DamienCassou/auth-password-store.git")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
@@ -11800,7 +11862,7 @@ standard Unix password manager\").")
                           "-L" "."
                           "-l" "test/auth-source-pass-tests.el"
                           "-f" "ert-run-tests-batch-and-exit")))
-      (home-page "https://github.com/NicolasPetton/auth-password-store")
+      (home-page "https://github.com/DamienCassou/auth-password-store")
       (synopsis "Integrate @code{auth-source} with @code{password-store}")
       (description "This package helps Emacs integrate with the Unix
 @code{password-store} application.")
@@ -12486,6 +12548,38 @@ files to be expanded upon opening them.")
      "This package provides an Emacs library for parsing bib files.")
     (license license:gpl3+)))
 
+(define-public emacs-ebib
+  (let ((commit "99bd909f47f71e024ce324981109b73a50e82fba"))
+    (package
+      (name "emacs-ebib")
+      (version "2.21")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/joostkremers/ebib.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "131vgl4d1j9s4055x88409w19q52x2m0x08b961hylp7yb5ljzgh"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-parsebib" ,emacs-parsebib)))
+      (home-page "http://joostkremers.github.io/ebib/")
+      (synopsis "BibTeX database manager for Emacs")
+      (description
+       "Ebib is a BibTeX database manager that runs in GNU Emacs.
+With Ebib you can create, sort and manage your .bib database files,
+all within Emacs.  It supports searching, multi-line field values and
+@@String and @@Preamble definitions.  Ebib integrates with (La)TeX
+mode, Org mode and other Emacs editing modes.")
+      ;; The Ebib source files are released under a BSD license with
+      ;; the exception of org-ebib.el, which is released under the GNU
+      ;; GPL.
+      (license (list license:bsd-3
+                     license:gpl3+)))))
+
 (define-public emacs-biblio
   (package
     (name "emacs-biblio")
@@ -12907,12 +13001,12 @@ timestamps and date-time format strings library for Emacs.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/seq-" version ".tar"))
+       (uri (string-append "https://elpa.gnu.org/packages/seq-" version ".tar"))
        (sha256
         (base32
          "0vrpx6nnyjb0gsypknzagimlhvcvi5y1rcdkpxyqr42415zr8d0n"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/seq.html")
+    (home-page "https://elpa.gnu.org/packages/seq.html")
     (synopsis "Sequence manipulation functions")
     (description "Sequence-manipulation functions that complement basic
 functions provided by @file{subr.el}.")
@@ -14477,7 +14571,7 @@ using user-provided rules.")
      (origin
        (method url-fetch)
        (uri (string-append
-             "http://elpa.gnu.org/packages/on-screen-" version ".el"))
+             "https://elpa.gnu.org/packages/on-screen-" version ".el"))
        (file-name (string-append name "-" version ".el"))
        (sha256
         (base32 "0ga4hw23ki583li2z2hr7l6hk1nc2kdg4afndg06cm9jn158wza7"))))
@@ -14580,12 +14674,12 @@ modes of SLIME.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://elpa.gnu.org/packages/sml-mode-"
+       (uri (string-append "https://elpa.gnu.org/packages/sml-mode-"
                            version ".el"))
        (sha256
         (base32 "1bdg9ywpvj85hxqah9w1raxlcrhkyx67nw22jwd1bd5j0fhmgqij"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/sml-mode.html")
+    (home-page "https://elpa.gnu.org/packages/sml-mode.html")
     (synopsis "Major mode for editing (Standard) ML")
     (description "SML-MODE is a major Emacs mode for editing Standard ML.
 It provides syntax highlighting and automatic indentation and
@@ -14644,7 +14738,7 @@ scroll up to read the function name and then scroll down to original position.")
 (define-public emacs-git-auto-commit-mode
   (package
     (name "emacs-git-auto-commit-mode")
-    (version "4.4.0")
+    (version "4.5.0")
     (source
      (origin
        (method git-fetch)
@@ -14653,7 +14747,7 @@ scroll up to read the function name and then scroll down to original position.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0psmr7749nzxln4b500sl3vrf24x3qijp12ir0i5z4x25k72hrlh"))))
+        (base32 "1w3v9pmlmdxl4pglsb6j0igp13lbzg5bhbr1rv2vll93m6zxmyma"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/ryuslash/git-auto-commit-mode")
     (synopsis "Emacs Minor mode to automatically commit and push")
@@ -15890,8 +15984,8 @@ Pandoc, the document-conversion tool.")
     (license license:bsd-3)))
 
 (define-public emacs-ccls
-  (let ((commit "b1acc336f27d8a3bbc750c2dc3be915a4ac1afea")
-        (revision "3"))
+  (let ((commit "aab3e31fd716daf59f9794e62d473357263e8cc0")
+        (revision "4"))
     (package
       (name "emacs-ccls")
       (version (git-version "0.1" revision commit))
@@ -15904,7 +15998,7 @@ Pandoc, the document-conversion tool.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "1qgfxc5d1hb32ks1fxpx7agpw7dvnkz99wydlflc9fqq75g8v142"))))
+           "1ykgw21ypyhwlyflppjcgqrj1xw4d9rld4z65qvwhk3f12cv113j"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("ccls" ,ccls)
@@ -15915,7 +16009,7 @@ Pandoc, the document-conversion tool.")
       (synopsis "Emacs support for the @code{ccls} language server")
       (description "This package extends @code{lsp-mode} to work with @code{C}
 and @code{C++} files through the @code{ccls} language server.")
-      (license license:bsd-3))))
+      (license license:expat))))
 
 (define-public emacs-org-brain
   (package
@@ -16232,7 +16326,7 @@ buffers – other modes on the TODO list).
 (define-public emacs-magit-todos
   (package
     (name "emacs-magit-todos")
-    (version "1.4")
+    (version "1.4.1")
     (source
      (origin
        (method git-fetch)
@@ -16242,7 +16336,7 @@ buffers – other modes on the TODO list).
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "09pjb4k409gc0h51vb5az1shx02c1hx8cnvhi529n7dm4maildg5"))))
+         "1rcl6j53yabxqk3jzgaxvm3wqq7rayf1hdib2v2fapw5b0layym6"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-async" ,emacs-async)
@@ -17719,6 +17813,154 @@ experience by providing optional integration with other popular Emacs packages
 like @code{company}, @code{flycheck}, and @code{projectile}.")
     (license license:gpl3+)))
 
+(define-public emacs-pfuture
+  (let ((commit "368254ee30692c709400db413c347e18e76a8a55"))
+    (package
+      (name "emacs-pfuture")
+      (version (git-version "1.6" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/Alexander-Miller/pfuture.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "096raqpjx84njws85r7pqq1wi9w9bjwkr0ga1mbbhlna1mfn3mg4"))))
+      (build-system emacs-build-system)
+      (home-page
+       "https://github.com/Alexander-Miller/pfuture")
+      (synopsis "Simple wrapper around asynchronous processes for Emacs")
+      (description "This package provides a simple wrapper around asynchronous
+processes for Emacs")
+      (license license:gpl3+))))
+
+(define-public emacs-treemacs
+  (package
+    (name "emacs-treemacs")
+    (version "2.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Alexander-Miller/treemacs.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "13gs8g05xj7np3i2q3bbxg6zgdiazzn1spxii4x0cyd4pg83c0i1"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+      `(("emacs-dash" ,emacs-dash)
+        ("emacs-s" ,emacs-s)
+        ("emacs-f" ,emacs-f)
+        ("emacs-ace-window" ,emacs-ace-window)
+        ("emacs-pfuture" ,emacs-pfuture)
+        ("emacs-hydra" ,emacs-hydra)
+        ("emacs-ht" ,emacs-ht)))
+    (native-inputs
+     `(("emacs-buttercup" ,emacs-buttercup)
+       ("emacs-el-mock" ,emacs-el-mock)))
+    (inputs
+     `(("python" ,python)))
+    (arguments
+     `(#:tests? #t ;TODO: Investigate ‘treemacs--parse-collapsed-dirs’ test failure.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-makefile
+           (lambda _
+             (substitute* "Makefile"
+               (("@\\$\\(CASK\\) exec ") ""))
+             #t))
+         (add-after 'fix-makefile 'chdir-elisp
+           ;; Elisp directory is not in root of the source.
+           (lambda _
+             (chdir "src/elisp")))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "../.." ;treemacs root
+               (chmod "test/test-treemacs.el" #o644)
+               (emacs-substitute-sexps "test/test-treemacs.el"
+                 ("(describe \"treemacs--parse-collapsed-dirs\""
+                  ""))
+               (invoke "make" "test"))))
+         (add-before 'install 'patch-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (with-directory-excursion "../.." ;treemacs root
+               (chmod "src/elisp/treemacs-core-utils.el" #o644)
+               (emacs-substitute-variables "src/elisp/treemacs-core-utils.el"
+                 ("treemacs-dir"
+                  (string-append (assoc-ref outputs "out") "/")))
+               (chmod "src/elisp/treemacs-icons.el" #o644)
+               (substitute* "src/elisp/treemacs-icons.el"
+                 (("icons/default") "share/emacs-treemacs/images"))
+               (chmod "src/elisp/treemacs-customization.el" #o644)
+               (emacs-substitute-variables "src/elisp/treemacs-customization.el"
+                 ("treemacs-python-executable"
+                  (string-append (assoc-ref inputs "python") "/bin/python3")))
+               (chmod "src/elisp/treemacs-async.el" #o644)
+               (substitute* "src/elisp/treemacs-async.el"
+                 (("src/scripts") (string-append "share/" ,name "/scripts"))))
+             #t))
+         (add-after 'install 'install-data
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion "../.." ;treemacs root
+                 (copy-recursively "icons/default"
+                  (string-append out "/share/" ,name "/images"))
+                 (copy-recursively
+                  "src/scripts"
+                  (string-append out "/share/" ,name "/scripts"))
+                 #t)))))))
+    (home-page "https://github.com/Alexander-Miller/treemacs")
+    (synopsis "Emacs tree style file explorer")
+    (description "Powerful and flexible file tree project explorer.")
+    (license license:gpl3+)))
+
+(define-public emacs-treemacs-extra
+  (package
+    (inherit emacs-treemacs)
+    (name "emacs-treemacs-extra")
+    (propagated-inputs
+     `(,@(package-propagated-inputs emacs-treemacs)
+       ("emacs-evil" ,emacs-evil)
+       ("emacs-magit" ,emacs-magit)
+       ("emacs-projectile" ,emacs-projectile)))
+    (arguments
+     (substitute-keyword-arguments
+         (package-arguments emacs-treemacs)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'chdir-elisp 'copy-extra
+             (lambda _
+               (copy-recursively "../extra" ".")))))))))
+
+(define-public emacs-lsp-java
+  (package
+    (name "emacs-lsp-java")
+    (version "2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/emacs-lsp/lsp-java.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0hcnvbyaqyypgby1bfj4zbrbq97amk8hfx0sj4w73rl46yf4jk3j"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+      `(("emacs-lsp-mode" ,emacs-lsp-mode)
+        ("emacs-markdown-mode" ,emacs-markdown-mode)
+        ("emacs-dash" ,emacs-dash)
+        ("emacs-f" ,emacs-f)
+        ("emacs-ht" ,emacs-ht)
+        ("emacs-request" ,emacs-request)
+        ("emacs-treemacs" ,emacs-treemacs)))
+    (home-page "https://github.com/emacs-lsp/lsp-java/")
+    (synopsis "Java support for lsp-mode")
+    (description "Emacs Java IDE using Eclipse JDT Language Server.")
+    (license license:gpl3+)))
+
 (define-public emacs-lsp-ui
   (package
     (name "emacs-lsp-ui")
@@ -17746,6 +17988,29 @@ like @code{company}, @code{flycheck}, and @code{projectile}.")
 and code peeking.")
     (license license:gpl3+)))
 
+(define-public emacs-lsp-lua-emmy
+  (let ((commit "ab53fb2a8b8942804eb75bab5624fd19f1d360bf"))
+    (package
+      (name "emacs-lsp-lua-emmy")
+      (version (git-version "0.1.0" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/phenix3443/lsp-lua-emmy.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0rbizis73n1w5ig07fj1han74chbc1zpbp5bn37rj0gz608aqka8"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-lsp-mode" ,emacs-lsp-mode)))
+      (home-page "https://github.com/phenix3443/lsp-lua-emmy/")
+      (synopsis "Lua support in @code{lsp-mode} client for Emacs")
+      (description "This package provides a Lua language support in
+@code{lsp-mode} client for Emacs.")
+      (license license:gpl3+))))
+
 (define-public emacs-lsp-ivy
   (let ((commit "caf1e1d7e22ed0b5fe18dd508d1a6f83dd163288")
         (revision "2"))
@@ -19127,7 +19392,7 @@ between \"frame-width\" and \"frame-height\", between \"public\",
         (base32
          "039ffvp7c810mjyargmgw1i87g0z8qs8qicq826sd9aiz9hprfaz"))))
     (build-system emacs-build-system)
-    (home-page "http://elpa.gnu.org/packages/ediprolog.html")
+    (home-page "https://elpa.gnu.org/packages/ediprolog.html")
     (synopsis "Emacs Does Interactive Prolog")
     (description "This package provides a major mode that let the user
 interact with SWI-Prolog in all buffers.  For instance, one can consult Prolog
@@ -19807,8 +20072,8 @@ contrast and few colors.")
       (license license:gpl3+))))
 
 (define-public emacs-doom-themes
-  (let ((commit "c2d0ed3fe73e415d29e05d56da08ba41018eec4f")
-        (revision "3")
+  (let ((commit "54039c5171e3f8c9cef1f82122549b66cd8c8f7b")
+        (revision "4")
         (version "2.1.6"))
     (package
       (name "emacs-doom-themes")
@@ -19820,7 +20085,7 @@ contrast and few colors.")
                       (commit commit)))
                 (file-name (git-file-name name version))
                 (sha256
-                 (base32 "1bdi7dkddyn0s357v2jv0mlhgsyc66kcvbl01ly370pqia6r0gpc"))))
+                 (base32 "1iwdjq4q2gkhi6jwas3ywgmdz5dg14sfb3fzhqd7wih6j3i2l3cr"))))
       (build-system emacs-build-system)
       (native-inputs
        `(("emacs-ert-runner" ,emacs-ert-runner)))
@@ -19846,6 +20111,10 @@ contrast and few colors.")
            ;; files. In order to cope with this issue, we disable
            ;; byte-compilation until this issue is resolved.
            ;; <https://github.com/hlissner/emacs-doom-themes/issues/314>
+           ;;
+           ;; NOTE: Byte-comp has been disabled in/after commit 9cd6872.
+           ;; However our method of selective disabling is preferential to
+           ;; just widely disabling byte-compilation.
            (add-after 'move-themes 'disable-breaking-compilation
              (lambda _
                (for-each (lambda (file)
@@ -19871,7 +20140,7 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-themes
   (package
     (name "emacs-modus-themes")
-    (version "0.1.0")
+    (version "0.3.0")
     (source
      (origin
        (method git-fetch)
@@ -19881,7 +20150,7 @@ Emacs that integrate with major modes like Org-mode.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "15g63675c5df2p0kk2sqj2c8qriyh69lcbggknqlaxapr13giz4x"))))
+         "1xrrjhpdxi9bgx877gvq8xrc2ph5qp9y5j3ssdphy333x9km1px1"))))
     (build-system emacs-build-system)
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Emacs themes designed for colour-contrast accessibility")
@@ -20150,8 +20419,8 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
   ;; This package has versions newer than indicated on MELPA.
   ;; Get the current version from `telega-version` in telega.el.
   ;; or by running M-x telega-version.
-  (let ((commit "9bfb637b2e71f5f293debd35abd627a064faf8ef")
-       (revision "1")
+  (let ((commit "69565cc4de72e28148c8041de8930a122a39b800")
+       (revision "4")
        (version "0.5.4"))
     (package
       (name "emacs-telega")
@@ -20164,18 +20433,19 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                (commit commit)))
          (sha256
           (base32
-           "06v8i3862n5kf2lnxii8vp9g8cq5ql51kr8yxh7l1wccsidri67a"))
+           "0blvj07f1sbdmp68qwlwgnhnv42ib0mjai5ndf8scbi12drn4rmk"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
-       `(#:test-target "test"
-         #:modules ((guix build gnu-build-system)
+       `(#:modules ((guix build gnu-build-system)
                     ((guix build emacs-build-system) #:prefix emacs:)
                     (guix build utils)
                     (guix build emacs-utils))
          #:imported-modules (,@%gnu-build-system-modules
                              (guix build emacs-build-system)
                              (guix build emacs-utils))
+         #:test-target "test"
+         #:make-flags (list "WITH_VOIP=t")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'prefix-patch
@@ -20250,9 +20520,11 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
        `(("ffmpeg" ,ffmpeg))) ; mp4/gif support.
       (propagated-inputs
        `(("emacs-visual-fill-column" ,emacs-visual-fill-column)
+         ("emacs-company" ,emacs-company)
          ("libwebp" ,libwebp))) ; sticker support.
       (native-inputs
        `(("tdlib" ,tdlib)
+         ("libtgvoip" ,libtgvoip) ; VoIP support.
          ("emacs" ,emacs)
          ("python" ,python)))
       (synopsis "GNU Emacs client for the Telegram messenger")
@@ -20648,3 +20920,116 @@ buffer.  It can be used to toggle an alternative mode-line, toggle its visibilit
 or simply disable the mode-line in buffers where it is not very useful.")
     (home-page "https://github.com/hlissner/emacs-hide-mode-line")
     (license license:expat)))
+
+(define-public emacs-helm-cider
+  ;; No new release since March 2018.
+  (let ((commit "9363cc537f06233345aa3af5cd46aa5681ad607b"))
+    (package
+      (name "emacs-helm-cider")
+      (version (git-version "0.4.0" "1" commit))
+      (home-page "https://github.com/clojure-emacs/helm-cider")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0vfn4smqba1vsshz48ggkj8gs94la0sxb1sq4shrb41qj2x3dci7"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)
+         ("emacs-cider" ,emacs-cider)))
+      (synopsis "Helm interface to Clojure's CIDER")
+      (description "Helm-CIDER adds Helm interfaces to
+@command{cider-apropos}, @command{cider-apropos-documentation},
+@command{cider-browse-ns} (namespaces).
+
+It also provides original Helm commands: @command{helm-cider-spec},
+@command{helm-cider-spec-ns}, @command{helm-cider-repl-history},
+@command{helm-cider-cheatsheet}.")
+      (license license:gpl3+))))
+
+(define-public emacs-edn
+  ;; No release since February 2016
+  (let ((commit "be9e32d1b49e35247b263b0243df7cfdc8d413ab"))
+    (package
+      (name "emacs-edn")
+      (version (git-version "1.1.2" "1" commit))
+      (home-page "https://github.com/expez/edn.el")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1xp2hjhn52k6l1g6ypva6dsklpawni7gvjafbz6404f9dyxflh7l"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-peg" ,emacs-peg)))
+      (synopsis "Read and write EDN from Elisp")
+      (description "This is an Emacs Lisp library for reading and writing the
+data format @code{edn}.  See @url{https://github.com/edn-format/edn}.")
+      (license license:gpl3+))))
+
+(define-public emacs-helm-clojuredocs
+  (let ((commit "5a7f0f2cb401be0b09e73262a1c18265ab9a3cea"))
+    (package
+      (name "emacs-helm-clojuredocs")
+      (version (git-version "0.3" "1" commit))
+      (home-page "https://github.com/mbuczko/helm-clojuredocs")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "015b8zxh91ljhqvn6z43gy08di54xcw9skw0i7frj3d7gk984qhl"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)
+         ("emacs-edn" ,emacs-edn)))
+      (synopsis "Search help on clojuredocs.org with Helm")
+      (description "This packages provides a Helm interface to lookup Clojure
+documentation on @url{https://clojuredocs.org} with Helm.
+
+Two function are exposed:
+@itemize
+@item @command{helm-clojuredocs}: opens a Helm session with no initial
+pattern.  Searching starts with minimal 3 characters entered.
+@item @command{helm-clojuredocs-at-point}: opens a Helm session with initial
+pattern guessed from thing under current cursor position.
+@end itemize\n")
+      (license license:gpl3+))))
+
+(define-public emacs-metal-mercury-mode
+  (let ((commit "99e2d8fb7177cae3bfa2dec2910fc28216d5f5a8")
+       (revision "1")
+       (version "0.0.0"))
+    (package
+      (name "emacs-metal-mercury-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ahungry/metal-mercury-mode.git")
+               (commit commit)))
+         (sha256
+          (base32
+           "0iil5k3rgifz2vqwsy12rbv5rzyvidq4sgwazsb2hzys8xynmfn5"))
+         (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-dash" ,emacs-dash)))
+      (synopsis "Major mode for editing Mercury files")
+      (description
+       "Major mode for editing Mercury files.  This is a rewrite of the original
+mercury-mode provided by Emacs as a wrapper around prolog-mode.")
+      (home-page "https://github.com/ahungry/metal-mercury-mode")
+      (license license:gpl3+))))