gnu: sbcl-cl-cffi-gtk: Update to 20200417.
[jackhill/guix/guix.git] / gnu / packages / emacs-xyz.scm
index bd1ce3a..5257ade 100644 (file)
@@ -34,7 +34,7 @@
 ;;; Copyright © 2017, 2018, 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
 ;;; Copyright © 2018, 2019 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2018, 2019 Jack Hill <jackhill@jackhill.us>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
@@ -67,6 +67,8 @@
 ;;; Copyright © 2020 6033fe7de85d <6033fe7de85d@airmail.cc>
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Jérémy Korwin-Zmijowski <jeremy@korwin-zmijowski.fr>
+;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
+;;; Copyright © 2020 pinoaffe <pinoaffe@airmail.cc>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -474,6 +476,31 @@ these arguments.  The prototypical use is for the command to call an external
 process, passing on the arguments as command line arguments.")
     (license license:gpl3+)))
 
+(define-public emacs-magit-annex
+  (let ((commit "ef5dce6267e9118a5eca82a22bcad0b67826c23a")
+        (revision "1"))
+    (package
+      (name "emacs-magit-annex")
+      (version (git-version "1.7.1" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/magit/magit-annex.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0vzkydgl889cq173zjl89g2vrddb9abc4a8gljiz3b4a7n5b1nrd"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("magit" ,emacs-magit)
+         ("transient" ,emacs-transient)))
+      (home-page "https://github.com/magit/magit-annex/")
+      (synopsis "Git-annex support for Magit")
+      (description
+       "Magit-annex adds a few git-annex operations to the Magit interface.")
+      (license license:gpl3+))))
+
 (define-public emacs-minions
   (package
     (name "emacs-minions")
@@ -596,6 +623,45 @@ Gitea, Gogs and Bitbucket.  It abstracts access to API resources using only a
 handful of functions that are not resource-specific.")
       (license license:gpl3+))))
 
+(define-public emacs-typit
+  ;; Last release is from 2017.
+  (let ((commit "231cb7df43253b84323520b8ed70f128d37003af")
+        (revision "1"))
+    (package
+      (name "emacs-typit")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/mrkkrp/typit.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1savrxs7xl92ifyxpxkkzv2didr7lb405h0dwz1bs1wldr5fb53f"))))
+      (build-system emacs-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'install 'install-dictionaries
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (site-lisp
+                       (string-append
+                        out "/share/emacs/site-lisp/dict")))
+                 (mkdir-p site-lisp)
+                 (copy-recursively "dict" site-lisp)
+                 #t))))))
+      (propagated-inputs
+       `(("emacs-f" ,emacs-f)
+         ("emacs-mmt" ,emacs-mmt)))
+      (home-page "https://github.com/mrkkrp/typit")
+      (synopsis "Typing game for Emacs with two difficulties")
+      (description "Emacs Typit is a typing game for Emacs.  Words that are
+picked randomly from the most frequent words in language you're practicing,
+until time is up.")
+      (license license:gpl3+))))
+
 (define-public emacs-scribble-mode
   (let ((commit "217945d54de5e4bb207033f2116baa28f5c5ecf2")
         (revision "2"))
@@ -936,13 +1002,13 @@ in certain cases.  It also enables recursion for anonymous functions.")
 (define-public emacs-xr
   (package
     (name "emacs-xr")
-    (version "1.18")
+    (version "1.19")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/xr-" version ".tar"))
        (sha256
-        (base32 "1nq9pj47sxgpkw97c2xrkhgcwh3zsfd2a22qiqbl4i9zf2l9yy91"))))
+        (base32 "1aa3iqh0r635jw8k89zh8y4am9d4hfrqpk9mrdh2b51invjn8llq"))))
     (build-system emacs-build-system)
     (home-page "https://elpa.gnu.org/packages/xr.html")
     (synopsis "Convert string regexp to rx notation")
@@ -1040,14 +1106,14 @@ optional minor mode which can apply this command automatically on save.")
 (define-public emacs-relint
   (package
     (name "emacs-relint")
-    (version "1.15")
+    (version "1.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
              "https://elpa.gnu.org/packages/relint-" version ".tar"))
        (sha256
-        (base32 "0sxmdsacj8my942k8j76m2y68nzab7190acv7cwgflc5n4f07yxa"))))
+        (base32 "0cwk806g2kq60sql8sic2zdn63l1g2pzdiklcv0w8l2k9wssknnx"))))
     (build-system emacs-build-system)
     (propagated-inputs `(("emacs-xr" ,emacs-xr)))
     (home-page "https://github.com/mattiase/relint")
@@ -1256,33 +1322,32 @@ incrementally confined in Isearch manner.")
 (define-public emacs-emms
   (package
     (name "emacs-emms")
-    (version "5.3")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/emms/emms-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "00hnv7jjgb2simgrf7gf2y1cyg2syk7kj1hkbac146hlgxk8ngj1"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  (substitute* "Makefile"
-                    (("/usr/bin/install-info")
-                     ;; No need to use 'install-info' since it would create a
-                     ;; useless 'dir' file.
-                     "true")
-                    (("^INFODIR=.*")
-                     ;; Install Info files to $out/share/info, not $out/info.
-                     "INFODIR := $(PREFIX)/share/info\n")
-                    (("/site-lisp/emms")
-                     ;; Install directly in share/emacs/site-lisp, not in a
-                     ;; sub-directory.
-                     "/site-lisp")
-                    (("^all: (.*)\n" _ rest)
-                     ;; Build 'emms-print-metadata'.
-                     (string-append "all: " rest " emms-print-metadata\n")))
-                  #t))))
+    (version "5.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/emms/emms-" version ".tar.gz"))
+       (sha256
+        (base32 "1nd7sb6pva7qb1ki6w0zhd6zvqzd7742kaqi0f3v4as5jh09l6nr"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "Makefile"
+             (("/usr/bin/install-info")
+              ;; No need to use 'install-info' since it would create a
+              ;; useless 'dir' file.
+              "true")
+             (("^INFODIR=.*")
+              ;; Install Info files to $out/share/info, not $out/info.
+              "INFODIR := $(PREFIX)/share/info\n")
+             (("/site-lisp/emms")
+              ;; Install directly in share/emacs/site-lisp, not in a
+              ;; sub-directory.
+              "/site-lisp")
+             (("^all: (.*)\n" _ rest)
+              ;; Build 'emms-print-metadata'.
+              (string-append "all: " rest " emms-print-metadata\n")))
+           #t))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -1451,6 +1516,29 @@ This package turns this into an O(1) operation.  It does so by assigning a
 letter to each link using avy.")
     (license license:gpl3+)))
 
+(define-public emacs-auto-sudoedit
+  (package
+    (name "emacs-auto-sudoedit")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ncaq/auto-sudoedit.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "10p0hc95j382km8655pqld9wxg10j1f36czzppkdd6a55cxarv9f"))))
+    (propagated-inputs
+     `(("emacs-f" ,emacs-f)))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/ncaq/auto-sudoedit")
+    (synopsis "Automatically re-open read-only files with sudo")
+    (description
+     "This package automatically reopens a file or directory with
+@command{sudo} if it cannot write to it.")
+    (license license:expat)))
+
 (define-public emacs-bbdb
   (package
     (name "emacs-bbdb")
@@ -2122,6 +2210,26 @@ window).")
 single buffer.")
     (license license:gpl3+)))
 
+(define-public emacs-mmt
+  (package
+    (name "emacs-mmt")
+    (version "0.2.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mrkkrp/mmt.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13vbfc5597v0gd87qyhn10f93nb477vjpg3jlpphbax9fvkf4gav"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/mrkkrp/mmt")
+    (synopsis "Classic tools to write Emacs Lisp macros")
+    (description "Emacs MMT is a package that contains classic tools for Emacs
+Lisp developers who want to write macros with convenience.")
+    (license license:gpl3+)))
+
 (define-public emacs-tablist
   (package
     (name "emacs-tablist")
@@ -2165,6 +2273,30 @@ programs @command{djvused}, @command{djview}, @command{ddjvu}, and
 @command{djvm} installed.")
     (license license:gpl3+)))
 
+(define-public emacs-pabbrev
+  (package
+    (name "emacs-pabbrev")
+    (version "4.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "pabbrev-" version ".el"))
+       (sha256
+        (base32 "19v5adk61y8fpigw7k6wz6dj79jwr450hnbi7fj0jvb21cvjmfxh"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/pabbrev.html")
+    (synopsis "Predictive abbreviation expansion")
+    (description
+     "The code provides a abbreviation expansion for Emacs.  It is
+fairly similar to Dabbrev expansion, which works based on the contents
+of the current buffer (or other buffers).
+
+Predictive abbreviation expansion works based on the previously
+written text.  Unlike dynamic abbreviation, the text is analysed
+during idle time, while Emacs is doing nothing else.")
+    (license license:gpl3+)))
+
 (define-public emacs-pdf-tools
   (package
     (name "emacs-pdf-tools")
@@ -2370,7 +2502,7 @@ work with Emacs 24 and 25.")
 
 (define-public emacs-extempore-mode
   ;; Use the latest commit at time of packaging.  There are no releases or tags.
-  (let ((commit "848ad0084f27b92d1cf98dabffbad29f959a642d")
+  (let ((commit "09518ae6650d7be33a4633a4c0f31b7130d04c6e")
         (revision "1"))
     (package
       (name "emacs-extempore-mode")
@@ -2383,7 +2515,7 @@ work with Emacs 24 and 25.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "00wr025php7nl33x541s9rjm99hj0jbdcmnw9ljx5hqpm04aqm7c"))))
+          (base32 "0hfza9lzdsz94gxhmzyp9fwviscv19rmnjgd0q613faayn11sjsp"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/extemporelang/extempore-emacs-mode")
       (synopsis "Emacs major mode for Extempore source files")
@@ -2393,6 +2525,37 @@ create an Extempore REPL, connect the current @code{extempore-mode} buffer to a
 running Extempore process, and more.")
       (license license:bsd-2))))
 
+(define-public emacs-kakoune
+  ;; Package has no release.  Version is extracted from "Version:" keyword in
+  ;; main file.
+  (let ((commit "d73d14e69ea38076af50cc69f846808383ff539d")
+        (revision "0"))
+    (package
+      (name "emacs-kakoune")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jmorag/kakoune.el.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0nk6jdy1y5mc3ryd0smiqghrk6iv34d5grc7f7migmshlbq0np92"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-expand-region"    ,emacs-expand-region)
+         ("emacs-multiple-cursors" ,emacs-multiple-cursors)
+         ("emacs-ryo-modal"        ,emacs-ryo-modal)))
+      (home-page "https://github.com/jmorag/kakoune.el")
+      (synopsis "Emacs simple simulation, but not emulation, of Kakoune")
+      (description "This package provides many, but not all of the editing
+primitives in the Kakoune editor.  Unlike Evil mode for Vim, this is a very
+shallow emulation, which seeks to do as little work as possible, leveraging
+Emacs native editing commmands and the work of other packages wherever
+possible.")
+      (license license:expat))))
+
 (define-public emacs-keyfreq
   (package
     (name "emacs-keyfreq")
@@ -2498,9 +2661,9 @@ strings.")
     (license license:gpl2+)))
 
 (define-public emacs-sx
-  (let ((version "20180212")
-        (revision "1")
-        (commit "833435fbf90d1c9e927d165b155f3b1ef39271de"))
+  (let ((version "20191229")
+        (revision "0")
+        (commit "e9d1093c97507a6d7b4f4710ef65200dae725e5f"))
     (package
       (name "emacs-sx")
       (version (git-version version revision commit))
@@ -2512,8 +2675,7 @@ strings.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32
-           "1369xaxq1vy3d9yh862ddnhddikdpg2d0wv1ly00pnvdp9v4cqgd"))))
+          (base32 "0m90ddwm8j0y6d1ppqhd2gil1107k202blw6mzm5bdambn4nfqkf"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-markdown-mode" ,emacs-markdown-mode)))
@@ -2524,6 +2686,54 @@ strings.")
 Stack Overflow, Super User, and other StackExchange sites.")
       (license license:gpl3+))))
 
+(define-public emacs-toml-mode
+  (let ((version "0.1.3")
+        (revision "0")
+        (commit "f6c61817b00f9c4a3cab1bae9c309e0fc45cdd06"))
+    (package
+      (name "emacs-toml-mode")
+      (version (git-version version revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/dryman/toml-mode.el.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "05b4ksay85c8y5ncax0qsvnmplwsfiw24z16a58gkarjz938hb57"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/dryman/toml-mode.el")
+      (synopsis "Emacs major mode for editing TOML files")
+      (description
+       ;; XXX: Ideally we'd use @acronym for "TOML", but Guile's Texinfo
+       ;; parser does not currently support @comma{}, making it impossible
+       ;; to use commas in the @acronym arguments.
+       "This package provides a major mode for editing files in @dfn{TOML}
+(Tom's Obvious, Minimal Language) data format.")
+      (license license:gpl3+))))
+
+(define-public emacs-twittering-mode
+  (package
+    (name "emacs-twittering-mode")
+    (version "3.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/twmode"
+                           "/twittering-mode-" version
+                           "/twittering-mode-" version ".tar.xz"))
+       (sha256
+        (base32 "02imis1gxz90lah0b5n37j2hlsaw5igss11d85vpsm5d1bgw8j28"))))
+    (build-system emacs-build-system)
+    (home-page "http://twmode.sourceforge.net")
+    (synopsis "Emacs major mode for Twitter")
+    (description
+     "Twittering mode is an Emacs major mode for Twitter.
+You can check timelines, tweet, mark posts as favorites and so on with
+Emacs.")
+    (license license:gpl2+)))
+
 (define-public emacs-f
   (package
     (name "emacs-f")
@@ -4915,7 +5125,7 @@ number.")
 (define-public emacs-org-superstar
   (package
     (name "emacs-org-superstar")
-    (version "1.1.0")
+    (version "1.2.1")
     (source
      (origin
        (method git-fetch)
@@ -4924,7 +5134,7 @@ number.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "14aafqw8rnbmiy3kcw1a58vjxdyamrbmlldnlw018wgk0qqv0xpx"))))
+        (base32 "14w06v76xi4f6hpq6xzicrjjv0b802g5zc9as4mpimfy5gx2xpm0"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-org" ,emacs-org)))
@@ -5321,7 +5531,35 @@ orange and red as accent colors.")
      "This program is an implementation of 2048 for Emacs.
 The goal of this game is to create a tile with value 2048.  The size of the
 board and goal value can be customized.")
-  (license license:gpl3+)))
+    (license license:gpl3+)))
+
+(define-public emacs-4clojure
+  ;; There is no release.  Base version is extracted from Version keyword in
+  ;; the main file.
+  (let ((commit "4eccf8c7d4341a36c269451838114b27836699f9")
+        (revision "1"))
+    (package
+      (name "emacs-4clojure")
+      (version (git-version "0.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/emacsorphanage/4clojure.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "19x653lzc1dxil4ix257hciidbdmbhaxhs6qhlkwi9ygjrlrgvnk"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-request" ,emacs-request)))
+      (home-page "https://github.com/emacsorphanage/4clojure/")
+      (synopsis "Open and evaluate 4clojure questions in Emacs")
+      (description "Emacs 4clojure interacts with
+@url{http://www.4clojure.com, 4clojure} problems.  You can open a specific
+question and move to the next or previous one.  You can also verify your
+answers.")
+      (license license:gpl3+))))
 
 (define-public emacs-base16-theme
   (package
@@ -7155,6 +7393,30 @@ of its name.")
 names, e.g. #0000ff is displayed in white with a blue background.")
     (license license:gpl3+)))
 
+(define-public emacs-ryo-modal
+  ;; Package has no release.  Version is extracted from "Version:" keyword in
+  ;; main file.
+  (let ((commit "3a54312eea7023a86ca3f8eb3c03c872554bff2f")
+        (revision "0"))
+    (package
+      (name "emacs-ryo-modal")
+      (version (git-version "0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Kungsgeten/ryo-modal.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1cyvp3bi6yhckbdnq98xvghmhdzghya5y9wd7hxjawibs75rza95"))))
+      (build-system emacs-build-system)
+      (home-page "http://github.com/Kungsgeten/ryo-modal")
+      (synopsis "Emacs minor mode for defining modal editing environments")
+      (description "RYO modal provides a convenient way of defining modal
+keybindings in Emacs, and does not come with any predefined bindings.")
+      (license license:expat))))
+
 (define-public emacs-visual-fill-column
   (package
     (name "emacs-visual-fill-column")
@@ -7300,24 +7562,47 @@ special variables.  An interface to GitLab’s CI file linter is also provided
 via @code{gitlab-ci-lint}.")
     (license license:gpl3+)))
 
-(define-public emacs-web-mode
+(define-public emacs-gitlab-snip-helm
   (package
-    (name "emacs-web-mode")
-    (version "16")
+    (name "emacs-gitlab-snip-helm")
+    (version "0.0.2")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/fxbois/web-mode.git")
-                    (commit (string-append "v" version))))
+                    (url "https://gitlab.com/sasanidas/gitlab-snip-helm.git")
+                    (commit version)))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "17dw6a8d0p304f2sa4f9zwd8r48w2wbkc3fvbmxwlg4w12h7cwf0"))))
+                "1c5js19zyb1z61hapvbfcl5jhrjqij46cxldgqij6al0scw44dga"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-dash" ,emacs-dash)
+       ("emacs-helm" ,emacs-helm)))
+    (home-page "https://gitlab.com/sasanidas/gitlab-snip-helm/")
+    (synopsis "GitLab snippet API interaction for Emacs")
+    (description "This package provides GitLab snippet API interaction for
+Emacs.")
+    (license license:gpl3+)))
+
+(define-public emacs-web-mode
+  (package
+    (name "emacs-web-mode")
+    (version "17")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/fxbois/web-mode.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0jr5a1nzp8nbdng0k2fcaymiiv9ngrbknbrqaswgqn3akvx793jk"))))
     (build-system emacs-build-system)
     (synopsis "Major mode for editing web templates")
-    (description "Web-mode is an Emacs major mode for editing web templates
+    (description "Web mode is an Emacs major mode for editing web templates
 aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
-client/server side engines).  Web-mode is compatible with many template
+client/server side engines).  Web mode is compatible with many template
 engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
 Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
 Dust.js, React/JSX, Angularjs, ejs, etc.")
@@ -7424,29 +7709,27 @@ for search-based navigation of buffers.")
     (license license:gpl2+)))
 
 (define-public emacs-helm-ag
-  (let ((commit "2fc02c4ead29bf0db06fd70740cc7c364cb650ac")
-        (revision "1"))
-    (package
-      (name "emacs-helm-ag")
-      (version (git-version "0.58" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/syohex/emacs-helm-ag.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "1gnn0byywbld6afcq1vp92cjvy4wlag9d1wgymnqn86c3b1bcf21"))))
-      (build-system emacs-build-system)
-      (propagated-inputs
-       `(("emacs-helm" ,emacs-helm)))
-      (home-page "https://github.com/syohex/emacs-helm-ag")
-      (synopsis "Helm interface to the Silver Searcher")
-      (description
-       "This package provides a frontend for grepping tools like ag and ack,
+  (package
+    (name "emacs-helm-ag")
+    (version "0.59")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/syohex/emacs-helm-ag.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vsz2b5qw4qahlf74059z4p1grinhfz28f0psw4c3qf4jasv3b9j"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-helm" ,emacs-helm)))
+    (home-page "https://github.com/syohex/emacs-helm-ag")
+    (synopsis "Helm interface to the Silver Searcher")
+    (description
+     "This package provides a frontend for grepping tools like ag and ack,
 as well as features for editing search results.")
-      (license license:gpl3+))))
+    (license license:gpl3+)))
 
 ;; There hasn't been a tag or release since 2016, so we take the latest
 ;; commit.
@@ -9223,28 +9506,27 @@ information inside the Dired buffer.")
       (license license:gpl3+))))
 
 (define-public emacs-dired-toggle-sudo
-  (package
-    (name "emacs-dired-toggle-sudo")
-    (version "1.0")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/renard/dired-toggle-sudo")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
-       (sha256
-        (base32
-         "0ajj8d6k5in2hclcrqckinfh80ylddplva0ryfbkzsjkfq167cv2"))
-       (patches
-        (search-patches
-         "emacs-dired-toggle-sudo-emacs-26.patch"))))
-    (build-system emacs-build-system)
-    (home-page "https://github.com/renard/dired-toggle-sudo")
-    (synopsis "Browse directory with @code{sudo} privileges")
-    (description "This package allows for the use of @code{dired} with
+  (let ((commit "13bbe52c54893f5aa3e56228450ffdd0c9e1d169")
+        (revision "0"))
+    (package
+      (name "emacs-dired-toggle-sudo")
+      (version (git-version "1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/renard/dired-toggle-sudo")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1fw1pb1z6krqd1pfxxhr6rrfr9ckkcb0zsjzbjk0i2i1q5cg6car"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/renard/dired-toggle-sudo")
+      (synopsis "Browse directory with @code{sudo} privileges")
+      (description "This package allows for the use of @code{dired} with
 @code{sudo} privileges.")
-    (license license:wtfpl2)))
+      (license license:wtfpl2))))
 
 (define-public emacs-diredfl
   (package
@@ -12867,7 +13149,7 @@ into sections while preserving the structure imposed by any timestamps.")
 (define-public emacs-org-make-toc
   (package
     (name "emacs-org-make-toc")
-    (version "0.4")
+    (version "0.5")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -12876,7 +13158,7 @@ into sections while preserving the structure imposed by any timestamps.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0348iq3bc3rxs5bqdvskyly4agqxiapamqkfm0323620kxl70agw"))))
+                "180ji6nnj6qj0rs1rdp1zlcrfsqf7ikb44ym8icbp5d6al2s4hnr"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-org" ,emacs-org)
@@ -13043,7 +13325,7 @@ files to be expanded upon opening them.")
 (define-public emacs-parsebib
   (package
     (name "emacs-parsebib")
-    (version "2.3.1")
+    (version "2.3.3")
     (source
      (origin
        (method git-fetch)
@@ -13052,45 +13334,43 @@ files to be expanded upon opening them.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh"))))
+        (base32 "0mpgyy9qfb5x4fvlmb274hgayjbwf0bgk65dxyx31zikjwpcd56p"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/joostkremers/parsebib")
-    (synopsis "Library for parsing bib files")
+    (synopsis "Library for parsing @file{.bib} files")
     (description
-     "This package provides an Emacs library for parsing bib files.")
+     "This package provides an Emacs library for parsing @file{.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 "https://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+)))))
+  (package
+    (name "emacs-ebib")
+    (version "2.22.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/joostkremers/ebib.git")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0spiz5r2y4pdpyc4d3f9w228giq0j9rm8f5h5akzn5rwiq9pfkwz"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-parsebib" ,emacs-parsebib)))
+    (home-page "https://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 @file{.bib} database files, all
+within Emacs.  It supports searching, multi-line field values and
+@samp{@@String} and @samp{@@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
@@ -14229,7 +14509,7 @@ notes.")
       (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
+      (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+))))
@@ -15773,10 +16053,10 @@ provide an incremental search that moves all fake cursors in sync.")
       (license license:expat))))
 
 (define-public emacs-evil-org
-  (let ((commit "b6d652a9163d3430a9e0933a554bdbee5244bbf6"))
+  (let ((commit "9d4be14118bf27094a30dbff349b815f098aacbf"))
     (package
       (name "emacs-evil-org")
-      (version (git-version "0.1.1" "1" commit))
+      (version (git-version "1.0.2" "1" commit))
       (source
        (origin
          (method git-fetch)
@@ -15786,7 +16066,7 @@ provide an incremental search that moves all fake cursors in sync.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "176hrw7y7nczffbyhsa167b8rvfacsmcafm2gpkrdjqlrikbmrhl"))))
+           "1fxxfkinb0gq4p5b686r7z4jrkv98zfgh5z889zkjacncv8ibswn"))))
       (build-system emacs-build-system)
       (propagated-inputs `(("emacs-evil" ,emacs-evil)))
       (home-page
@@ -18031,7 +18311,7 @@ stored playlists.")
 (define-public emacs-vterm
   (let ((version "0")
         (revision "1")
-        (commit "7d7381fa8104b55b70148cf147523d9ab7f01fcd"))
+        (commit "e63bd65eece7c5de3a534b7e2fdbe58256ec2da0"))
     (package
       (name "emacs-vterm")
       (version (git-version version revision commit))
@@ -18043,7 +18323,7 @@ stored playlists.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "04a2jlhmr20ipgzpnba3yryw3ly7qdxjgaw10dwn9wxy1yqmapz1"))))
+                  "0iq857w54qmazxh23fipz85fb9i6dav3f63g0ghpmi6mybfp6i5v"))))
       (build-system emacs-build-system)
       (arguments
        `(#:modules ((guix build emacs-build-system)
@@ -18054,14 +18334,11 @@ stored playlists.")
                              (guix build cmake-build-system))
          #:phases
          (modify-phases %standard-phases
-           (add-before 'add-source-to-load-path 'remove-vterm-module-make
+           (add-before 'add-source-to-load-path 'substitute-vterm-module-path
              (lambda* (#:key outputs #:allow-other-keys)
-               ;; Remove the Emacs Lisp file.
-               (delete-file "vterm-module-make.el")
-               ;; Remove references to the removed file.
-               (make-file-writable "vterm.el")
+               (chmod "vterm.el" #o644)
                (emacs-substitute-sexps "vterm.el"
-                 ("(or (require 'vterm-module nil t)"
+                 ("(require 'vterm-module nil t)"
                   `(module-load
                     ,(string-append (assoc-ref outputs "out")
                                     "/lib/vterm-module.so"))))
@@ -19313,9 +19590,9 @@ be used in @code{dired-mode}.")
       (license license:gpl3+))))
 
 (define-public emacs-exwm-edit
-  (let ((commit "961c0f3ea45766b888c73d7353da13d329538034")
+  (let ((commit "bc25ba094b383be3c650ca0b7e1534efe2bb154f")
         (version "0.0.1")
-        (revision "1"))
+        (revision "2"))
     (package
       (name "emacs-exwm-edit")
       (version (git-version version revision commit))
@@ -19328,7 +19605,7 @@ be used in @code{dired-mode}.")
          (file-name (git-file-name name version))
          (sha256
           (base32
-           "087pk5ckx753qrn6xpka9khhlp7iqlz76w7861x90av2f5cgy6fw"))))
+           "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv"))))
       (build-system emacs-build-system)
       (propagated-inputs
        `(("emacs-exwm" ,emacs-exwm)))
@@ -20206,6 +20483,29 @@ commands in @code{evil-mode}.")
 Emacs windows and tmux panes.")
     (license license:expat)))
 
+(define-public emacs-xclip
+  (package
+    (name "emacs-xclip")
+    (version "1.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://elpa.gnu.org/packages/"
+                           "xclip-" version ".el"))
+       (sha256
+        (base32 "0i3i9kwfg8qmhcmqhhnrb1kljgwkccv63s9q1mjwqfjldyfh8j8i"))))
+    (build-system emacs-build-system)
+    (home-page "http://elpa.gnu.org/packages/xclip.html")
+    (synopsis "Copy and paste GUI clipboard from Emacs in text terminal")
+    (description
+     "This package allows Emacs to copy to and paste from the GUI clipboard
+when running in text terminal.
+
+It can use external command-line tools for that, e.g., @command{xclip} or
+@command{xsel}, which you may need to install in order for the package to
+work.")
+    (license license:gpl3+)))
+
 (define-public emacs-xterm-color
   (package
     (name "emacs-xterm-color")
@@ -20883,14 +21183,14 @@ Emacs that integrate with major modes like Org-mode.")
 (define-public emacs-modus-operandi-theme
   (package
     (name "emacs-modus-operandi-theme")
-    (version "0.7.0")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "modus-operandi-theme-" version ".el"))
        (sha256
-        (base32 "17zvcqplbl3rk39k61v43ganzv06j49rlyickanwll5m1a3iibw2"))))
+        (base32 "0i8s6blkhx53m1jk1bblqs7fwlbn57xkxxhsp9famcj5m0xyfimb"))))
     (build-system emacs-build-system)
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible light theme (WCAG AAA)")
@@ -20904,14 +21204,14 @@ standard.  This is the highest standard of its kind.")
 (define-public emacs-modus-vivendi-theme
   (package
     (name "emacs-modus-vivendi-theme")
-    (version "0.7.0")
+    (version "0.8.1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "modus-vivendi-theme-" version ".el"))
        (sha256
-        (base32 "1w4vrg39dghghkvll3h4kmzykc3zpp6pbychb39gcc13z2b06v8g"))))
+        (base32 "121nlr5w58j4q47rh9xjjf9wzb97yl2m1n2l6g58ck4vnarwndl1"))))
     (build-system emacs-build-system)
     (home-page "https://gitlab.com/protesilaos/modus-themes")
     (synopsis "Accessible dark theme (WCAG AAA)")
@@ -21220,6 +21520,7 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
          (sha256
           (base32
            "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"))
+         (patches (search-patches "emacs-telega-test-env.patch"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
@@ -21311,7 +21612,12 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
       (native-inputs
        `(("tdlib" ,tdlib)
          ("libtgvoip" ,libtgvoip) ; VoIP support.
-         ("emacs" ,emacs)
+         ;; Use Emacs with wide ints on 32-bit architectures.
+         ("emacs" ,(match (%current-system)
+                     ((or "i686-linux" "armhf-linux")
+                      emacs-wide-int)
+                     (_
+                      emacs)))
          ("python" ,python)))
       (synopsis "GNU Emacs client for the Telegram messenger")
       (description
@@ -21514,6 +21820,32 @@ interface.")
       (home-page "https://github.com/akirak/ivy-omni-org")
       (license license:gpl3+))))
 
+(define-public emacs-ivy-posframe
+  (let ((commit "ae9bafe94fe6b77b6fe45766ae6172646f6a5d50"))
+    (package
+      (name "emacs-ivy-posframe")
+      (version (git-version "0.1.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/tumashu/ivy-posframe.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "1j6yns5d7lh2v1nfcznrirl7qicdli9csciqvfgj4gkh72a97pw1"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-posframe" ,emacs-posframe)
+         ("emacs-ivy" ,emacs-ivy)))
+      (home-page "https://github.com/tumashu/ivy-posframe")
+      (synopsis "Pop a posframe (a child frame) to show Ivy candidates")
+      (description
+       "This package provides an Emacs Ivy extension, which let Ivy use
+posframe to show its candidate menu.")
+      (license license:gpl3+))))
+
 (define-public emacs-shackle
   (let ((commit "7ccbe513852a1d1700b698547efca14b8940319d")
         (revision "1"))
@@ -22421,3 +22753,82 @@ conventions.")
       (description "Haskell-Snippets is a collection of YASnippet Haskell
 snippets for Emacs.")
       (license license:expat))))
+
+(define-public emacs-org-roam
+  (package
+    (name "emacs-org-roam")
+    (version "1.0.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jethrokuan/org-roam.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "08pfa63k194dpk0y2gfa0nzn5lig81q0l9axkq5j4ibj6ifaap4a"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-company" ,emacs-company)
+       ("emacs-dash" ,emacs-dash)
+       ("emacs-emacsql-sqlite" ,emacs-emacsql)
+       ("emacs-f" ,emacs-f)
+       ("emacs-org-ref" ,emacs-org-ref)
+       ("emacs-s" ,emacs-s)))
+    (home-page "https://github.com/jethrokuan/org-roam/")
+    (synopsis "Non-hierarchical note-taking with Org mode")
+    (description "Emacs Org Roam is a solution for taking non-hierarchical
+notes with Org mode.  Notes are captured without hierarchy and are connected
+by tags.  Notes can be found and created quickly.  Org Roam should also work
+as a plug-and-play solution for anyone already using Org mode for their
+personal wiki.")
+    (license license:gpl3+)))
+
+(define-public emacs-uml-mode
+  ;; Package has no release.  Version is extracted from "Version:" keyword in
+  ;; main file.
+  (let ((commit "4c37ac1c4424b2313cd8f16ba48a98a4cc214200")
+        (revision "1"))
+    (package
+      (name "emacs-uml-mode")
+      (version (git-version "0.0.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/ianxm/emacs-uml.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "145i4srnfvd1vyibri2a1l6p9mbjvkkwlrpi41134pbarqffcnka"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/ianxm/emacs-uml")
+      (synopsis "Minor mode for editing ASCII UML sequence diagrams")
+      (description "Emacs UML mode is a minor mode that makes it easy to build
+ASCII UML sequence diagrams in Emacs, which can be embedded in source code,
+comments or emails.")
+      (license license:gpl3+))))
+
+(define-public emacs-trashed
+  (package
+    (name "emacs-trashed")
+    (version "1.9.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/shingo256/trashed/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "13grdi12iwlw4fiphdfmvclfpbr6ajlgfbfyi7v41z8k3rxz4ypz"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/shingo256/trashed/")
+    (synopsis "View and edit system trash can in Emacs")
+    (description "Open, view, browse, restore or permanently delete trashed
+files or directories in trash can with Dired-like look and feel.  The trash
+can has to be compliant with freedesktop.org. In Emacs, you can trash files by
+deleting them with @code{(setq delete-by-moving-to-trash t)}.  This package
+provides a simple but convenient user interface to manage those trashed
+files.")
+    (license license:gpl3+)))