summaryrefslogtreecommitdiff
path: root/gnu/packages/emacs-xyz.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-02-03 15:45:44 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-02-03 15:45:44 +0100
commit52665d2b6bd709ba46c1e364a6d6164f5f4824ff (patch)
tree55fd79b3939c08f6f6e9fe383f0df5e4caa82b57 /gnu/packages/emacs-xyz.scm
parent584d08c5c98cb1893e4f44bd1c4191f405b13f01 (diff)
parent0a83339bb1429332ee889e9a976aa214ae2ac0db (diff)
downloadguix-patches-52665d2b6bd709ba46c1e364a6d6164f5f4824ff.tar
guix-patches-52665d2b6bd709ba46c1e364a6d6164f5f4824ff.tar.gz
Merge branch 'staging' into core-updates
Diffstat (limited to 'gnu/packages/emacs-xyz.scm')
-rw-r--r--gnu/packages/emacs-xyz.scm508
1 files changed, 426 insertions, 82 deletions
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 3359f89bc5..8adcf84f5d 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -46,12 +46,12 @@
;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
;;; Copyright © 2019 mikadoZero <mikadozero@yandex.com>
;;; Copyright © 2019 Gabriel Hondet <gabrielhondet@gmail.com>
-;;; Copyright © 2019 LaFreniere, Joseph <joseph@lafreniere.xyz>
+;;; Copyright © 2019, 2020 Joseph LaFreniere <joseph@lafreniere.xyz>
;;; Copyright © 2019 Amar Singh <nly@disroot.org>
;;; 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 <mab@gnu.org>
+;;; Copyright © 2019, 2020 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>
@@ -105,6 +105,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages telephony)
+ #:use-module (gnu packages terminals)
#:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tcl)
@@ -959,15 +960,13 @@ in certain cases. It also enables recursion for anonymous functions.")
(define-public emacs-xr
(package
(name "emacs-xr")
- (version "1.13")
+ (version "1.15")
(source
(origin
(method url-fetch)
- (uri (string-append
- "https://elpa.gnu.org/packages/xr-" version ".tar"))
+ (uri (string-append "https://elpa.gnu.org/packages/xr-" version ".tar"))
(sha256
- (base32
- "1km4x92pii8c4bcimks4xzhmwpypdf183z0zh7raj062jz4jb74r"))))
+ (base32 "0pxzr6n0qa29ly8j3cl46rv9a65ajfcgahrhdylg4yfb9gh1x4ly"))))
(build-system emacs-build-system)
(home-page "https://elpa.gnu.org/packages/xr.html")
(synopsis "Convert string regexp to rx notation")
@@ -1065,14 +1064,14 @@ optional minor mode which can apply this command automatically on save.")
(define-public emacs-relint
(package
(name "emacs-relint")
- (version "1.11")
+ (version "1.13")
(source
(origin
(method url-fetch)
(uri (string-append
"https://elpa.gnu.org/packages/relint-" version ".tar"))
(sha256
- (base32 "0c7d35kp5k11fnyjrq9cg8i2r005gs57pmb3rvpf8ilwv0scn1m7"))))
+ (base32 "1kzzlixhd6kp0mkmgn02b7pqv6m55g708xsys7vjskdxbfb6jjib"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-xr" ,emacs-xr)))
(home-page "https://github.com/mattiase/relint")
@@ -8054,14 +8053,13 @@ passive voice.")
(name "emacs-org")
;; emacs-org-contrib inherits from this package. Please update it as
;; well.
- (version "9.3.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://elpa.gnu.org/packages/org-"
- version ".tar"))
- (sha256
- (base32
- "1n79h6ihhsaxxbnl9hw511aav0215m3pa51sa5fh3ddknjfplian"))))
+ (version "9.3.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://elpa.gnu.org/packages/org-" version ".tar"))
+ (sha256
+ (base32 "1275s3hzyka2wwxl6nc2sndnwyl7kbc1nnl0hrznxb3wpy2abfd6"))))
(build-system emacs-build-system)
(home-page "https://orgmode.org/")
(synopsis "Outline-based notes management and organizer")
@@ -8075,14 +8073,14 @@ programming and reproducible research.")
(package
(inherit emacs-org)
(name "emacs-org-contrib")
- (version "20191226")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://orgmode.org/elpa/"
- "org-plus-contrib-" version ".tar"))
- (sha256
- (base32
- "08h6qiplvm7rvrb1pv2arwdlv6p31p0a6h0fk64kb79g6br8rk8i"))))
+ (version "20200126")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://orgmode.org/elpa/"
+ "org-plus-contrib-" version ".tar"))
+ (sha256
+ (base32 "08yik0i8ya2x5j4vsnwxdcdlcxbiq58lvy30vcbdbf0hqrd40kjv"))))
(arguments
`(#:modules ((guix build emacs-build-system)
(guix build utils)
@@ -12355,7 +12353,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.3")
+ (version "0.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -12364,7 +12362,7 @@ into sections while preserving the structure imposed by any timestamps.")
(file-name (git-file-name name version))
(sha256
(base32
- "0syhj8q4pv33xgl5qa6x27yhwqvfhffw5xqp819hj4qs1ddlc7j5"))))
+ "0348iq3bc3rxs5bqdvskyly4agqxiapamqkfm0323620kxl70agw"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-org" ,emacs-org)
@@ -15376,56 +15374,54 @@ try completing. See @code{fish-completion-fallback-on-bash-p}.")
(license license:gpl3+)))
(define-public emacs-gif-screencast
- (let ((commit "248d1e158405e6cba2c65ecaed40e2c59b089cd8")
- (revision "2"))
- (package
- (name "emacs-gif-screencast")
- (version (git-version "1.0" revision commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/Ambrevar/emacs-gif-screencast.git")
- (commit commit)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "19xqi5mgalnnhb4hw0fh7py2s2dllldx1xxbhwhknkdpifai8hl8"))))
- (build-system emacs-build-system)
- (inputs
- `(("scrot" ,scrot)
- ("imagemagick" ,imagemagick)
- ("gifsicle" ,gifsicle)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((scrot (assoc-ref inputs "scrot"))
- (imagemagick (assoc-ref inputs "imagemagick"))
- (gifsicle (assoc-ref inputs "gifsicle")))
- (make-file-writable "gif-screencast.el")
- ;; Specify the absolute file names of the various
- ;; programs so that everything works out-of-the-box.
- (emacs-substitute-variables
- "gif-screencast.el"
- ("gif-screencast-program"
- (string-append scrot "/bin/scrot"))
- ("gif-screencast-convert-program"
- (string-append imagemagick "/bin/convert"))
- ("gif-screencast-cropping-program"
- (string-append imagemagick "/bin/mogrify"))
- ("gif-screencast-optimize-program"
- (string-append gifsicle "/bin/gifsicle")))))))))
- (home-page
- "https://gitlab.com/Ambrevar/emacs-gif-screencast")
- (synopsis "One-frame-per-action GIF recording")
- (description
- "Call @code{gif-screencast} to start a recording.
+ (package
+ (name "emacs-gif-screencast")
+ (version "1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/Ambrevar/emacs-gif-screencast.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1g1by8lvf8c9vzm4wwsi5kp285kaj0ahsl54048ympin4pi0njw9"))))
+ (build-system emacs-build-system)
+ (inputs
+ `(("scrot" ,scrot)
+ ("imagemagick" ,imagemagick)
+ ("gifsicle" ,gifsicle)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((scrot (assoc-ref inputs "scrot"))
+ (imagemagick (assoc-ref inputs "imagemagick"))
+ (gifsicle (assoc-ref inputs "gifsicle")))
+ (make-file-writable "gif-screencast.el")
+ ;; Specify the absolute file names of the various
+ ;; programs so that everything works out-of-the-box.
+ (emacs-substitute-variables
+ "gif-screencast.el"
+ ("gif-screencast-program"
+ (string-append scrot "/bin/scrot"))
+ ("gif-screencast-convert-program"
+ (string-append imagemagick "/bin/convert"))
+ ("gif-screencast-cropping-program"
+ (string-append imagemagick "/bin/mogrify"))
+ ("gif-screencast-optimize-program"
+ (string-append gifsicle "/bin/gifsicle")))))))))
+ (home-page
+ "https://gitlab.com/Ambrevar/emacs-gif-screencast")
+ (synopsis "One-frame-per-action GIF recording")
+ (description
+ "Call @code{gif-screencast} to start a recording.
A screenshot is taken for every user action. Call
@code{gif-screencast-stop} (<f9> by default) to finish recording and create
the GIF result.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
(define-public emacs-google-translate
(package
@@ -17398,6 +17394,73 @@ next, volume) and display and control the current playlist as well as your
stored playlists.")
(license license:gpl3+)))
+(define-public emacs-vterm
+ (let ((version "0")
+ (revision "1")
+ (commit "7d7381fa8104b55b70148cf147523d9ab7f01fcd"))
+ (package
+ (name "emacs-vterm")
+ (version (git-version version revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/akermu/emacs-libvterm.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "04a2jlhmr20ipgzpnba3yryw3ly7qdxjgaw10dwn9wxy1yqmapz1"))))
+ (build-system emacs-build-system)
+ (arguments
+ `(#:modules ((guix build emacs-build-system)
+ ((guix build cmake-build-system) #:prefix cmake:)
+ (guix build emacs-utils)
+ (guix build utils))
+ #:imported-modules (,@%emacs-build-system-modules
+ (guix build cmake-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'add-source-to-load-path 'remove-vterm-module-make
+ (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")
+ (emacs-substitute-sexps "vterm.el"
+ ("(or (require 'vterm-module nil t)"
+ `(module-load
+ ,(string-append (assoc-ref outputs "out")
+ "/lib/vterm-module.so"))))
+ #t))
+ (add-after 'build 'configure
+ ;; Run cmake.
+ (lambda* (#:key outputs #:allow-other-keys)
+ ((assoc-ref cmake:%standard-phases 'configure)
+ #:outputs outputs
+ #:out-of-source? #f
+ #:configure-flags '("-DUSE_SYSTEM_LIBVTERM=ON"))
+ #t))
+ (add-after 'configure 'make
+ ;; Run make.
+ (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
+ ;; Compile the shared object file.
+ (apply invoke "make" "all" make-flags)
+ ;; Move the file into /lib.
+ (install-file
+ "vterm-module.so"
+ (string-append (assoc-ref outputs "out") "/lib"))
+ #t)))
+ #:tests? #f))
+ (native-inputs
+ `(("cmake" ,cmake-minimal)
+ ("libtool" ,libtool)
+ ("libvterm" ,libvterm)))
+ (home-page "https://github.com/akermu/emacs-libvterm")
+ (synopsis "Emacs libvterm integration")
+ (description "This package implements a bridge to @code{libvterm} to
+display a terminal in an Emacs buffer.")
+ (license license:gpl3+))))
+
(define-public emacs-simple-mpc
;; There have been no releases.
(let ((commit "bee8520e81292b4c7353e45b193f9a13b482f5b2")
@@ -18931,6 +18994,29 @@ previewed by scrolling up and down within a @code{dired} buffer.")
and searching through @code{Ctags} files.")
(license license:gpl3+)))
+(define-public emacs-ivy-clipmenu
+ (let ((commit "d2071f2c5043a05d610cd1952e84176ca78c31dc"))
+ (package
+ (name "emacs-ivy-clipmenu")
+ (version (git-version "0.0.1" "1" commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/wpcarro/ivy-clipmenu.el.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0npd8glzk5z4n7y9mzbsbzi0cf3by19fqcki052jr3dga363lds7"))))
+ (propagated-inputs
+ `(("emacs-f" ,emacs-f)
+ ("emacs-ivy" ,emacs-ivy)))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/wpcarro/ivy-clipmenu.el")
+ (synopsis "Ivy integration with clipmenu")
+ (description "Ivy integration with the clipboard manager, clipmenu.")
+ (license license:expat))))
+
(define-public emacs-org-download
(let ((commit "10c9d7c8eed928c88a896310c882e3af4d8d0f61")
(revision "2"))
@@ -20140,7 +20226,7 @@ Emacs that integrate with major modes like Org-mode.")
(define-public emacs-modus-themes
(package
(name "emacs-modus-themes")
- (version "0.3.0")
+ (version "0.4.0")
(source
(origin
(method git-fetch)
@@ -20149,8 +20235,7 @@ Emacs that integrate with major modes like Org-mode.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1xrrjhpdxi9bgx877gvq8xrc2ph5qp9y5j3ssdphy333x9km1px1"))))
+ (base32 "0c4y3y9mjf6x2b9087fk6nkxvgvm9f5l1p2vdwqny80vp4krsb8r"))))
(build-system emacs-build-system)
(home-page "https://gitlab.com/protesilaos/modus-themes")
(synopsis "Emacs themes designed for colour-contrast accessibility")
@@ -20419,9 +20504,9 @@ 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 "69565cc4de72e28148c8041de8930a122a39b800")
- (revision "4")
- (version "0.5.4"))
+ (let ((commit "ae09592498ce380e57fbb76725fd4c89ae248864")
+ (revision "0")
+ (version "0.6.0"))
(package
(name "emacs-telega")
(version (git-version version revision commit))
@@ -20433,7 +20518,7 @@ fish-completion. It can be used in both Eshell and M-x shell.")
(commit commit)))
(sha256
(base32
- "0blvj07f1sbdmp68qwlwgnhnv42ib0mjai5ndf8scbi12drn4rmk"))
+ "0mv6i80958d9crzspzik5xh5g8326115bvg2frgv0dp9p6rm86m3"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@@ -20631,6 +20716,31 @@ each slide with left/right keys.")
execution of buffer-exposing commands.")
(license license:gpl3+)))
+(define-public emacs-eshell-toggle
+ (let ((commit "ddfbe0a693497c4d4bc5494a19970ba4f6ab9033")
+ (revision "1"))
+ (package
+ (name "emacs-eshell-toggle")
+ (version (git-version "0.10.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/4DA/eshell-toggle.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "0xqrp8pwbmfxjdqipgpw5nw633mvhjjjm3k3j9sh9xdpmw05hhws"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-dash" ,emacs-dash)))
+ (home-page "https://github.com/4DA/eshell-toggle")
+ (synopsis "Show and hide an @code{eshell} instance")
+ (description "This package toggles an @code{eshell} instance for the
+current buffer.")
+ (license license:gpl3+))))
+
(define-public emacs-repl-toggle
(package
(name "emacs-repl-toggle")
@@ -20995,7 +21105,7 @@ data format @code{edn}. See @url{https://github.com/edn-format/edn}.")
`(("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
+ (description "This package provides a Helm interface to lookup Clojure
documentation on @url{https://clojuredocs.org} with Helm.
Two function are exposed:
@@ -21033,3 +21143,237 @@ pattern guessed from thing under current cursor position.
mercury-mode provided by Emacs as a wrapper around prolog-mode.")
(home-page "https://github.com/ahungry/metal-mercury-mode")
(license license:gpl3+))))
+
+(define-public emacs-boxquote
+ ;; The following commit is 2.1 release with a switch to GPL3+ license.
+ (let ((commit "7e47e0e2853bc1215739b2e28f260e9eed93b2c5")
+ (revision "0"))
+ (package
+ (name "emacs-boxquote")
+ (version (git-version "2.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/davep/boxquote.el.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1aqhg24gajvllbqxb0zxrnx6sddas37k2ldfinqyszd856sjhsg3"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/davep/boxquote.el")
+ (synopsis "Quote text with different kinds of boxes")
+ (description "@code{boxquote} provides a set of functions for using
+a text quoting style that partially boxes in the left hand side of an area of
+text, such a marking style might be used to show externally included text or
+example code.")
+ (license license:gpl3+))))
+
+(define-public emacs-company-ebdb
+ (package
+ (name "emacs-company-ebdb")
+ (version "1.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://elpa.gnu.org/packages/"
+ "company-ebdb-" version ".el"))
+ (sha256
+ (base32 "146qpiigz12zp1823ggxfrx090g0mxs7gz1ba7sa0iq6ibgzwwm9"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-company" ,emacs-company)))
+ (home-page "https://elpa.gnu.org/packages/company-ebdb.html")
+ (synopsis "Company completion backend for EBDB in Message mode")
+ (description "@code{company-ebdb} provides Company mode integration for
+EBDB. It is copied more or less intact from @code{company-bbdb}, originally
+by Jan Tatarik.")
+ (license license:gpl3+)))
+
+(define-public emacs-mwim
+ ;; Use the latest commit not in a release version as of yet, since it
+ ;; contains a bug fix for the cases where `comment-start-skip' is nil.
+ (let ((commit "b4f3edb4c0fb8f8b71cecbf8095c2c25a8ffbf85")
+ (revision "0"))
+ (package
+ (name "emacs-mwim")
+ (version (git-version "0.4" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/alezost/mwim.el.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0l3k611gp9g2x2vfmh92wnhnda81dslpwwpb8mxmzk308man77ya"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/alezost/mwim.el")
+ (synopsis "Move to the beginning/end of line, code or comment")
+ (description "@code{mwim} provides several commands to switch between
+various line positions, like moving to the beginning/end of code, line, or
+comment.")
+ (license license:gpl3+))))
+
+(define-public emacs-delight
+ (package
+ (name "emacs-delight")
+ (version "1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://elpa.gnu.org/packages/"
+ "delight-" version ".el"))
+ (sha256
+ (base32 "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7"))))
+ (build-system emacs-build-system)
+ (home-page "https://elpa.gnu.org/packages/delight.html")
+ (synopsis "Dimmer switch for your mode-line lighter text")
+ (description "@code{delight} enables customizing or hiding the
+mode-line text (lighter) of major and minor modes.")
+ (license license:gpl3+)))
+
+(define-public emacs-unkillable-scratch
+ ;; Use the latest (unreleased) commit as of now, since it contains a handy
+ ;; `unkillable-scratch-do-not-reset-scratch-buffer' customization to not
+ ;; repopulate the scratch buffer with `initial-scratch-message'.
+ (let ((commit "b24c2a760529833f230c14cb02ff6e7ec92288ab")
+ (revision "0"))
+ (package
+ (name "emacs-unkillable-scratch")
+ (version (git-version "1.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/EricCrosson/unkillable-scratch.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "13wjbcxr3km4s96yhpavgs5acs5pvqv3ih1p84diqb3x3i6wd4pa"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/EricCrosson/unkillable-scratch")
+ (synopsis "Prevents the *scratch* buffer from being killed")
+ (description "@code{unkillable-scratch} helps prevent killing buffers
+matching a given regexp.")
+ (license license:gpl2+))))
+
+(define-public emacs-switch-buffer-functions
+ (package
+ (name "emacs-switch-buffer-functions")
+ (version "0.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/10sr/switch-buffer-functions-el.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0pq53b8wrjbrxd5hnrcdi0z7mffp4bax55hn90k9ca3j76lhbn1k"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/10sr/switch-buffer-functions-el")
+ (synopsis "Hooks run when switching current buffer")
+ (description "This package provides a hook variable
+@code{switch-buffer-functions}. The hooks will be run when the current buffer
+is changed after an interactive command, i.e., when @code{post-command-hook}
+hooks are run. The hooked functions will be called with both the previous and
+the current buffer.")
+ (license license:unlicense)))
+
+(define-public emacs-erc-scrolltoplace
+ (package
+ (name "emacs-erc-scrolltoplace")
+ (version "0.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/jgkamat/erc-scrolltoplace.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "11zpqwh1mlfifbgnvhc63bvnhg340jgxssm3m43hr1sxsyb52lh6"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-switch-buffer-functions" ,emacs-switch-buffer-functions)))
+ (home-page "https://gitlab.com/jgkamat/erc-scrolltoplace")
+ (synopsis "ERC module to replace scrolltobottom while using keep-place")
+ (description "@code{erc-scrolltoplace} is an ERC module to try
+to emulate @code{scrolltobottom} while @code{keep-place} is enabled.")
+ (license license:gpl3+)))
+
+(define-public emacs-dmenu
+ ;; Use the latest commit, as there are no tagged releases.
+ (let ((commit "e8cc9b27c79d3ecc252267c082ab8e9c82eab264")
+ (revision "0"))
+ (package
+ (name "emacs-dmenu")
+ (version (git-version "0.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lujun9972/el-dmenu.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "098ncygms1r33zhjlq4fj2p4jc91v5whqrm3fazzdk7sd6dilf25"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/lujun9972/el-dmenu")
+ (synopsis "Simulate the @command{dmenu} command line program")
+ (description "This package provides a @command{dmenu} command for
+launching other commands/applications from within Emacs, similar to the
+@command{dmenu} program. This is especially useful when using EXWM.")
+ (license license:gpl3+))))
+
+(define-public emacs-no-littering
+ (package
+ (name "emacs-no-littering")
+ (version "1.0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/emacscollective/no-littering.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "17is06l0w6glppabv2kaclrnqi3dqb6p6alpslpg7lrjd8vd45ir"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/emacscollective/no-littering")
+ (synopsis "Help keep ~/.emacs.d/ clean")
+ (description "The default paths used to store configuration files and
+persistent data are not consistent across Emacs packages, be them built-in or
+third-party ones. @code{no-littering} sets out to help clean
+@file{~/.emacs.d/} by putting configuration files and persistent data files in
+two user-defined directories, as well as using more descriptive names for
+files and subdirectories when appropriate.")
+ (license license:gpl3+)))
+
+(define-public emacs-message-x
+ ;; Use the latest commit, as there are no tagged releases.
+ (let ((commit "5524de7bbfdd8749c110f48de5afb024d9f83133")
+ (revision "0"))
+ (package
+ (name "emacs-message-x")
+ (version (git-version "1.23" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/emacsmirror/message-x.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qy1xf11j357lsnbb829hnbg7fq1cii4cx54fwf0wgjh1bv2abvj"))))
+ (build-system emacs-build-system)
+ (home-page "https://www.emacswiki.org/emacs/message-x.el")
+ (synopsis "Customizable completion in message headers")
+ (description "@code{message-x} assigns a context-sensitive function to
+the TAB key in Message mode. When on a header line, it performs completion
+based on which header we are in (for example, newsgroup name completion makes
+sense on the @samp{Newsgroups} header, whereas mail alias expansion makes
+sense in the @samp{To} and @samp{Cc} headers). When in the message body, this
+executes a different function (default: @code{indent-relative}).")
+ (license license:gpl2+))))