Merge branch 'staging' into core-updates
[jackhill/guix/guix.git] / gnu / packages / emacs-xyz.scm
index d9d83b4..99e50aa 100644 (file)
 ;;; 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.
 ;;;
@@ -968,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
@@ -1242,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.")
@@ -1786,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
@@ -2293,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
@@ -2302,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")
@@ -3674,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")
@@ -5323,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
@@ -5332,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")
@@ -5350,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
@@ -5637,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
@@ -6540,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
@@ -6549,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
@@ -6965,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))
@@ -6978,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)))
@@ -7906,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")
@@ -7940,7 +7998,7 @@ distribution, primarily targeting Clojure users")
         (base32
          "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,
@@ -8088,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)
@@ -8097,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+)))
 
@@ -8960,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}
@@ -9522,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 _
@@ -9724,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
@@ -10796,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
@@ -10818,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.
@@ -12493,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")
@@ -12914,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}.")
@@ -14484,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"))))
@@ -14587,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
@@ -14651,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)
@@ -14660,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")
@@ -17726,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")
@@ -17753,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"))
@@ -19134,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
@@ -20161,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 "2")
+  (let ((commit "69565cc4de72e28148c8041de8930a122a39b800")
+       (revision "4")
        (version "0.5.4"))
     (package
       (name "emacs-telega")
@@ -20175,7 +20433,7 @@ 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
@@ -20262,6 +20520,7 @@ 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)
@@ -20661,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+))))