From f88716a2781cce78e6833297f2e9de72d247f42e Mon Sep 17 00:00:00 2001 From: "Collin J. Doering" Date: Tue, 18 Jun 2019 17:26:37 -0400 Subject: [PATCH] gnu: Add emacs-helm-tramp * gnu/packages/emacs-xyz.scm (emacs-helm-tramp): New variable. --- gnu/packages/emacs-xyz.scm | 24109 +++++++++++++++++++++++++++++++++++ 1 file changed, 24109 insertions(+) create mode 100644 gnu/packages/emacs-xyz.scm diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm new file mode 100644 index 0000000..24bc0cb --- /dev/null +++ b/gnu/packages/emacs-xyz.scm @@ -0,0 +1,24109 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Alex Kost +;;; Copyright © 2015 Federico Beffa +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus +;;; Copyright © 2016, 2017, 2018, 2019 Chris Marusich +;;; Copyright © 2015, 2016, 2018, 2020 Christopher Lemmer Webber +;;; Copyright © 2016 Adriano Peluso +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner +;;; Copyright © 2016 David Thompson +;;; Copyright © 2016 Matthew Jordan +;;; Copyright © 2016, 2017 Roel Janssen +;;; Copyright © 2016, 2017 Nikita +;;; Copyright © 2016, 2019 Alex Griffin +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nicolas Goaziou +;;; Copyright © 2016, 2017, 2018 Alex Vong +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Arun Isaac +;;; Copyright © 2017 Christopher Baines +;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe +;;; Copyright © 2017, 2018, 2019, 2020 Clément Lassieur +;;; Copyright © 2017 Vasile Dumitrascu +;;; Copyright © 2017, 2018 Kyle Meyer +;;; Copyright © 2017 Kei Kebreau +;;; Copyright © 2017 George Clemmer +;;; Copyright © 2017, 2018 Feng Shu +;;; Copyright © 2017 Jan Nieuwenhuizen +;;; Copyright © 2017, 2018, 2019, 2020 Oleg Pykhalov +;;; Copyright © 2017 Mekeor Melire +;;; Copyright © 2017 Peter Mikkelsen +;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2017 Mike Gerwitz +;;; Copyright © 2017, 2018, 2019, 2020 Maxim Cournoyer +;;; Copyright © 2018 Sohom Bhattacharjee +;;; Copyright © 2018, 2019 Mathieu Lirzin +;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt +;;; Copyright © 2018, 2019 Tim Gesthuizen +;;; Copyright © 2018, 2019 Jack Hill +;;; Copyright © 2018 Pierre-Antoine Rouby +;;; Copyright © 2018 Alex Branham +;;; Copyright © 2018 Thorsten Wilms +;;; Copyright © 2018, 2019, 2020 Pierre Langlois +;;; Copyright © 2018, 2019, 2020 Brett Gilio +;;; Copyright © 2019, 2020 Dimakakos Dimos +;;; Copyright © 2019, 2020 Brian Leung +;;; Copyright © 2019 mikadoZero +;;; Copyright © 2019 Gabriel Hondet +;;; Copyright © 2019, 2020 Joseph LaFreniere +;;; Copyright © 2019 Amar Singh +;;; Copyright © 2019 Baptiste Strazzulla +;;; Copyright © 2019 Giacomo Leidi +;;; Copyright © 2019 Jens Mølgaard +;;; Copyright © 2019, 2020 Amin Bandali +;;; Copyright © 2019 Jelle Licht +;;; Copyright © 2019 Björn Höfling +;;; Copyright © 2019 Stephen Webber +;;; Copyright © 2019 Leo Prikler +;;; Copyright © 2019 David Wilson +;;; Copyright © 2020 Paul Garlick +;;; Copyright © 2020 Robert Smith +;;; Copyright © 2020 Evan Straw +;;; Copyright © 2020 Masaya Tojo +;;; Copyright © 2020 Martin Becze +;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 6033fe7de85d <6033fe7de85d@airmail.cc> +;;; Copyright © 2020 John Soo +;;; Copyright © 2020 Jérémy Korwin-Zmijowski +;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero +;;; Copyright © 2020 Marius Bakke +;;; Copyright © 2020 pinoaffe +;;; Copyright © 2020 Vinicius Monego +;;; Copyright © 2020 Ryan Desfosses +;;; Copyright © 2020 Marcin Karpezo +;;; Copyright © 2020 Fredrik Salomonsson +;;; Copyright © 2020 Ryan Desfosses +;;; Copyright © 2020 Eric Bavier +;;; Copyright © 2020 Morgan Smith +;;; Copyright © 2020 Peng Mei Yu +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages emacs-xyz) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix cvs-download) + #:use-module (guix download) + #:use-module (guix bzr-download) + #:use-module (guix git-download) + #:use-module (guix hg-download) + #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) + #:use-module (guix build-system emacs) + #:use-module (guix build-system glib-or-gtk) + #:use-module (guix build-system perl) + #:use-module (guix build-system trivial) + #:use-module (gnu packages) + #:use-module (gnu packages admin) + #:use-module (gnu packages audio) + #:use-module (gnu packages bash) + #:use-module (gnu packages cmake) + #:use-module (gnu packages code) + #:use-module (gnu packages cpp) + #:use-module (gnu packages curl) + #:use-module (gnu packages databases) + #:use-module (gnu packages dictionaries) + #:use-module (gnu packages emacs) + #:use-module (gnu packages guile) + #:use-module (gnu packages gtk) + #:use-module (gnu packages gnome) + #:use-module (gnu packages haskell-apps) + #:use-module (gnu packages ibus) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages telephony) + #:use-module (gnu packages terminals) + #:use-module (gnu packages tex) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages tcl) + #:use-module (gnu packages tls) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages xorg) + #:use-module (gnu packages lesstif) + #:use-module (gnu packages llvm) + #:use-module (gnu packages image) + #:use-module (gnu packages linux) + #:use-module (gnu packages libevent) + #:use-module (gnu packages lua) + #:use-module (gnu packages music) + #:use-module (gnu packages version-control) + #:use-module (gnu packages imagemagick) + #:use-module (gnu packages w3m) + #:use-module (gnu packages web) + #:use-module (gnu packages wget) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages compression) + #:use-module (gnu packages node) + #:use-module (gnu packages xml) + #:use-module (gnu packages glib) + #:use-module (gnu packages acl) + #:use-module (gnu packages mail) + #:use-module (gnu packages messaging) + #:use-module (gnu packages package-management) + #:use-module (gnu packages perl) + #:use-module (gnu packages pdf) + #:use-module (gnu packages ruby) + #:use-module (gnu packages rust-apps) + #:use-module (gnu packages scheme) + #:use-module (gnu packages speech) + #:use-module (gnu packages xiph) + #:use-module (gnu packages mp3) + #:use-module (gnu packages gettext) + #:use-module (gnu packages fribidi) + #:use-module (gnu packages gd) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages password-utils) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages sphinx) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages shells) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages gnupg) + #:use-module (gnu packages video) + #:use-module (gnu packages haskell-xyz) + #:use-module (gnu packages wordnet) + #:use-module (gnu packages photo) + #:use-module (gnu packages uml) + #:use-module (gnu packages finance) + #:use-module (guix utils) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match)) + +;;; +;;; Emacs hacking. +;;; + +(define-public emacs-geiser + (package + (name "emacs-geiser") + (version "0.11.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jaor/geiser/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1khi1bghsjx6cs5acizmlbw9z19s4qycnji9krdbn42cbpv0rysv")))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + (symlink "geiser-install.el" + (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp/" + "geiser-autoloads.el")) + #t))))) + (inputs `(("guile" ,guile-2.2))) + (native-inputs + `(("emacs" ,emacs-minimal) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo))) + (home-page "https://nongnu.org/geiser/") + (synopsis "Collection of Emacs modes for Guile and Racket hacking") + (description + "Geiser is a collection of Emacs major and minor modes that conspire with +one or more Scheme implementations to keep the Lisp Machine Spirit alive. The +continuously running Scheme interpreter takes the center of the stage in +Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme +implementation, Emacs and, ultimately, the schemer, giving them access to live +metadata.") + (license license:bsd-3))) + +(define-public emacs-ac-geiser + (let ((commit "93818c936ee7e2f1ba1b315578bde363a7d43d05") + (revision "0")) + (package + (name "emacs-ac-geiser") + (version (git-version "0.1" revision commit)) + (source + (origin + (uri (git-reference + (url "https://github.com/xiaohanyu/ac-geiser") + (commit commit))) + (method git-fetch) + (sha256 + (base32 "00n2qa26yilaj837n1yp6lbqa4gf30nkkbvanl7m9ih7k48ssqmw")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("geiser" ,emacs-geiser) + ("auto-complete" ,emacs-auto-complete))) + (synopsis "Auto-complete backend for geiser") + (description + "This package provides an auto-complete source for Scheme projects +using geiser.") + (license license:bsd-3) + (home-page "https://github.com/xiaohanyu/ac-geiser")))) + +(define-public emacs-hyperbole + (package + (name "emacs-hyperbole") + (version "7.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "hyperbole-" version ".tar")) + (sha256 + (base32 "1bspmqnbniwr9385wh823dsr5fgch5qnlkf45s4vi0nvg8jdccp1")) + (patches + (search-patches "emacs-hyperbole-toggle-messaging.patch")))) + (build-system emacs-build-system) + (arguments + `(#:include '("DEMO" + "DEMO-ROLO.otl" + "HY-ABOUT" + "\\.el$" + "\\.info$" + "\\.kotl$") + #:phases + (modify-phases %standard-phases + ;; Fix build issues about missing "domainname" and "hpmap:dir-user" + ;; parent dir. + (add-after 'unpack 'fix-build + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "hypb.el" + (("/bin/domainname") + (string-append (assoc-ref inputs "inetutils") + "/bin/dnsdomainname"))) + (substitute* "hyperbole.el" + (("\\(hyperb:check-dir-user\\)") "")) + #t))))) + (inputs + `(("inetutils" ,inetutils))) + (home-page "https://www.gnu.org/software/hyperbole/") + (synopsis "The Everyday Hypertextual Information Manager") + (description + "GNU Hyperbole, or just Hyperbole, is an easy-to-use, yet powerful and +programmable hypertextual information management system implemented as a GNU +Emacs package. It offers rapid views and interlinking of all kinds of textual +information, utilizing Emacs for editing. It can dramatically increase your +productivity and greatly reduce the number of keyboard/mouse keys you'll need +to work efficiently. Hyperbole lets you: + +@itemize +@item Quickly create hyperlink buttons either from the keyboard or by dragging +between a source and destination window with a mouse button depressed. Later, +activate buttons by pressing/clicking on them or by giving the name of the +button. +@item Activate many kinds of \"implicit buttons\" recognized by context within +text buffers, e.g. URLs, grep output lines, and git commits. A single key or +mouse button automatically does the right thing in dozens of contexts; just +press and go. +@item Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6, +that all renumber automatically as any node or tree is moved in the outline. +Each node also has a permanent hyperlink anchor that you can reference from +any other node. +@item Manage all your contacts quickly with hierarchical categories and embed +hyperlinks within each entry. Or create an archive of documents with +hierarchical entries and use the same search mechanism to quickly find any +matching entry. +@item Use single keys to easily manage your Emacs windows or frames and +quickly retrieve saved window and frame configurations. +@item Search for things in your current buffers, in a directory tree or across +major web search engines with the touch of a few keys. +@end itemize + +The common thread in all these features is making retrieval, management and +display of information fast and easy. That is Hyperbole's purpose.") + (license license:gpl3+))) + +(define-public emacs-paredit + (package + (name "emacs-paredit") + (version "24") + (source (origin + (method url-fetch) + (uri (string-append "http://mumble.net/~campbell/emacs/paredit-" + version ".el")) + (sha256 + (base32 + "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka")))) + (build-system emacs-build-system) + (home-page "http://mumble.net/~campbell/emacs/paredit/") + (synopsis "Emacs minor mode for editing parentheses") + (description + "ParEdit (paredit.el) is a minor mode for performing structured editing +of S-expression data. The typical example of this would be Lisp or Scheme +source code. + +ParEdit helps **keep parentheses balanced** and adds many keys for moving +S-expressions and moving around in S-expressions. Its behavior can be jarring +for those who may want transient periods of unbalanced parentheses, such as +when typing parentheses directly or commenting out code line by line.") + (license license:gpl3+))) + +(define-public git-modes + (package + (name "emacs-git-modes") + (version "1.2.8") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/git-modes") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08hy7rbfazs6grkpk54i82bz0i0c74zcjk96cip8970h6jn3mj72")))) + (build-system emacs-build-system) + (home-page "https://github.com/magit/git-modes") + (synopsis "Emacs major modes for Git configuration files") + (description + "This package provides Emacs major modes for editing various Git +configuration files, such as .gitattributes, .gitignore, and .git/config.") + (license license:gpl3+))) + +(define-public emacs-with-editor + (package + (name "emacs-with-editor") + (version "2.9.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/with-editor") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1m8bm8q5zakfjdkd0662gbkvzmcrlkxy1856xns2nfiflrkpw88b")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/magit/with-editor") + (synopsis "Emacs library for using Emacsclient as EDITOR") + (description + "This package provides an Emacs library to use the Emacsclient as +@code{$EDITOR} of child processes, making sure they know how to call home. +For remote processes a substitute is provided, which communicates with Emacs +on stdout instead of using a socket as the Emacsclient does.") + (license license:gpl3+))) + +(define-public emacs-libgit + (let ((commit "0ef8b13aef011a98b7da756e4f1ce3bb18e4d55a") + (revision "1")) + (package + (name "emacs-libgit") + (version (git-version "20200515" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/libegit2") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pnjr3bg6y6354dfjjxfj0g51swzgl1fncpprah75x4k94rd369f")) + (patches (search-patches + ;; Submitted for inclusion upstream (see: + ;; https://github.com/magit/libegit2/pull/96). + "emacs-libgit-use-system-libgit2.patch")))) + ;; Use the cmake-build-system as it provides support for cross builds. + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DUSE_SYSTEM_LIBGIT2=x") + ;; Add the emacs-build-system byte compilation and install phases. + #:imported-modules (,@%cmake-build-system-modules + (guix build emacs-build-system) + (guix build emacs-utils)) + #:modules ((guix build cmake-build-system) + ((guix build emacs-build-system) #:prefix emacs:) + (guix build emacs-utils) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-libgit--module-file + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (make-file-writable "libgit.el") + (emacs-substitute-variables "libgit.el" + ("libgit--module-file" + (string-append out "/share/emacs/site-lisp/libegit2.so"))) + #t))) + (add-before 'install 'prepare-for-install + (lambda _ + (let ((s (string-append "../" ,name "-" ,version "-checkout"))) + (copy-file "libegit2.so" (string-append s "/libegit2.so")) + (chdir s) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((install (assoc-ref emacs:%standard-phases 'install))) + (install #:outputs outputs + #:include (cons "\\.so$" + emacs:%default-include))))) + (add-after 'install 'make-autoloads + (assoc-ref emacs:%standard-phases 'make-autoloads)) + (add-after 'make-autoloads 'enable-autoloads-compilation + (assoc-ref emacs:%standard-phases 'enable-autoloads-compilation)) + (add-after 'enable-autoloads-compilation 'patch-el-files + (assoc-ref emacs:%standard-phases 'patch-el-files)) + (add-after 'patch-el-files 'emacs-build + (assoc-ref emacs:%standard-phases 'build)) + (add-after 'emacs-build 'validate-compiled-autoloads + (assoc-ref emacs:%standard-phases 'validate-compiled-autoloads))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("emacs" ,emacs-no-x) + ("git" ,git-minimal))) + (inputs + `(("libgit2" ,libgit2))) + (home-page "https://github.com/magit/libegit2") + (synopsis "Emacs bindings for libgit2") + (description "This is an experimental module written in C providing +libgit2 bindings for Emacs, intended to boost the performance of Magit.") + ;; The LICENSE file says GPL v2+, but libgit.el says GPL v3+. + (license license:gpl3+)))) + +(define-public emacs-magit + ;; There hasn't been an official release since 2018-11-16. + (let ((commit "7f486d47fe7042edba8d9a855a4c2c301a30bc6b") + (revision "6")) + (package + (name "emacs-magit") + (version (git-version "2.90.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/magit") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05kyc5y5wa1p3h8j7mbgvfc4zcj998zi26lnnmksj9wnvahzxfms")))) + (build-system emacs-build-system) + (arguments + `(#:emacs ,emacs-no-x ;module support is required + #:tests? #t + #:test-command '("make" "test") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'build-info-manual + (lambda _ + (invoke "make" "info") + ;; Copy info files to the lisp directory, which acts as + ;; the root of the project for the emacs-build-system. + (for-each (lambda (f) + (install-file f "lisp")) + (find-files "Documentation" "\\.info$")) + (chdir "lisp") + #t)) + (add-after 'build-info-manual 'set-magit-version + (lambda _ + (make-file-writable "magit.el") + (emacs-substitute-variables "magit.el" + ("magit-version" ,version)) + #t)) + (add-after 'set-magit-version 'patch-exec-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((perl (assoc-ref inputs "perl"))) + (make-file-writable "magit-sequence.el") + (emacs-substitute-variables "magit-sequence.el" + ("magit-perl-executable" (string-append perl "/bin/perl"))) + #t))) + (add-before 'check 'configure-git + (lambda _ + ;; Otherwise some tests fail with error "unable to auto-detect + ;; email address". + (setenv "HOME" (getcwd)) + (invoke "git" "config" "--global" "user.name" "toto") + (invoke "git" "config" "--global" "user.email" + "toto@toto.com"))) + (add-after 'configure-git 'disable-tramp-test + (lambda _ + ;; There is an issue causing TRAMP to fail in the build + ;; environment. Setting the tramp-remote-shell parameter of + ;; the sudo-method to the file name of the shell didn't help. + (chdir "..") + (substitute* "t/magit-tests.el" + (("^\\(ert-deftest magit-toplevel:tramp.*" all) + (string-append all " (skip-unless nil)"))) + #t)) + (add-before 'install 'enter-lisp-directory + (lambda _ + (chdir "lisp") + #t))))) + (native-inputs + `(("texinfo" ,texinfo))) + (inputs + `(("git" ,git) + ("perl" ,perl))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-libgit" ,emacs-libgit) + ("emacs-transient" ,emacs-transient) + ("emacs-with-editor" ,emacs-with-editor))) + (home-page "https://magit.vc/") + (synopsis "Emacs interface for the Git version control system") + (description + "With Magit, you can inspect and modify your Git repositories +with Emacs. You can review and commit the changes you have made to +the tracked files, for example, and you can browse the history of past +changes. There is support for cherry picking, reverting, merging, +rebasing, and other common Git operations.") + (license license:gpl3+)))) + +(define-public emacs-magit-svn + (let ((commit "9e33ceee32f665db59909e1c00a667ccdd04178f")) + (package + (name "emacs-magit-svn") + (version (git-version "2.2.1" "2" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/magit-svn") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mlqz8dh6jy5rv72lgkxv253dgh73fmbaidskicypapvbl3lr6xy")))) + (build-system emacs-build-system) + (propagated-inputs `(("dash" ,emacs-dash) + ("with-editor" ,emacs-with-editor) + ("magit" ,emacs-magit) + ("transient" ,emacs-transient))) + (home-page "https://github.com/magit/magit-svn") + (synopsis "Git-SVN extension to Magit") + (description + "This package is an extension to Magit, the Git Emacs mode, providing +support for Git-SVN.") + (license license:gpl3+)))) + +(define-public emacs-magit-popup + (package + (name "emacs-magit-popup") + (version "2.13.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/magit-popup") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0znp6gx6vpcsybg774ab06mdgxb7sfk3gki1yp2qhkanav13i6q1")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (invoke "make" "info")))))) + (native-inputs + `(("texinfo" ,texinfo))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/magit/magit-popup") + (synopsis "Define prefix-infix-suffix command combos") + (description + "This library implements a generic interface for toggling switches and +setting options and then invoking an Emacs command which does something with +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") + (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") + (version "0.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tarsius/minions") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16rplpbfy3dnvqqgavk9jb1f1ihr5875zlixd4zxb1pqxs3jkgw3")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/tarsius/minions") + (synopsis "Minor-mode menu for the mode line") + (description + "This package implements a menu that lists enabled minor-modes, as well +as commonly but not currently enabled minor-modes. It can be used to toggle +local and global minor-modes, to access mode-specific menus, and to get help +about modes. + +This menu is intended as a replacement for the incomplete yet wide list of +enabled minor-modes that is displayed in the mode line by default. To use the +menu like this, enable Minions mode. + +Alternatively the menu can be bound globally, for example: +@code{(global-set-key [S-down-mouse-3] 'minions-minor-modes-menu)}.") + (license license:gpl3+))) + +(define-public emacs-treepy + (package + (name "emacs-treepy") + (version "0.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/volrath/treepy.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04zwm6gx9pxfvgfkizx6pvb1ql8pqxjyzqp8flz0432x0gq5nlxk")))) + (build-system emacs-build-system) + (home-page + "https://github.com/volrath/treepy.el") + (synopsis "Tree traversal tools") + (description + "Generic tools for recursive and iterative tree traversal based on +clojure.walk and clojure.zip respectively.") + (license license:gpl3+))) + +(define-public emacs-graphql + (package + (name "emacs-graphql") + (version "0.1.1") + (source (origin + (modules '((guix build utils))) + ;; Remove examples file with references to external packages as + ;; they do not exist at compilation time. + (snippet + '(begin (delete-file "examples.el") + #t)) + (method git-fetch) + (uri (git-reference + (url "https://github.com/vermiculus/graphql.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sp0skc1rnhi39szfbq1i99pdgd3bhn4c15cff05iqhjy2d4hniw")))) + (build-system emacs-build-system) + (home-page + "https://github.com/vermiculus/graphql.el") + (synopsis "GraphQL utilities") + (description + "GraphQL.el provides a generally-applicable domain-specific language for +creating and executing GraphQL queries against your favorite web services. +GraphQL is a data query language and runtime designed and used to request and +deliver data to mobile and web apps.") + (license license:gpl3+))) + +(define-public emacs-ghub + (package + (name "emacs-ghub") + (version "3.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magit/ghub") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1229g0d9f4ywwjndx32x4z5jdr0kzyi44hjxmy0sifwfmg9nn251")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (invoke "make" "info")))))) + (native-inputs + `(("texinfo" ,texinfo))) + (propagated-inputs + `(("dash" ,emacs-dash) + ("emacs-let-alist" ,emacs-let-alist) + ("treepy" ,emacs-treepy))) + (home-page "https://github.com/magit/ghub") + (synopsis "Emacs client libraries for the APIs of various Git forges") + (description + "Ghub provides basic support for using the APIs of various Git forges from +Emacs packages. It supports the REST APIs of Github, Github GraphQL, Gitlab, +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") + (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")) + (package + (name "emacs-scribble-mode") + (version (git-version "0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-pe/scribble-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1s5ccw1a5ack01wd94ywfcrar9j98agchwdh30q7iyxr0d2z4sii")))) + (build-system emacs-build-system) + (home-page "https://github.com/emacs-pe/scribble-mode") + (synopsis "Emacs mode for editing the Scribble documentation syntax.") + (description + "This package provides basic syntax highlighting and editing support +for editing Racket's Scribble documentation syntax in Emacs.") + (license license:gpl3+)))) + +(define-public emacs-shroud + (package + (name "emacs-shroud") + (version "1.105") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/emacs-shroud.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0q2pb3w8s833fjhkzicciw2php4lsnismad1dnwgp2lcway757ra")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo) + ("perl" ,perl) + ("emacs-minimal" ,emacs-minimal))) + (propagated-inputs + `(("emacs-bui" ,emacs-bui) + ("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s) + ("gnupg" ,gnupg) + ("shroud" ,shroud))) + (home-page "https://www.nongnu.org/emacs-shroud") + (synopsis "Emacs interface to the Shroud password manager") + (description + "This package provides an Emacs interface to the Shroud password manager, +using the Buffers User Interface library. You can view, copy, and edit secrets +from within Emacs.") + (license license:gpl3+))) + +(define-public emacs-unpackaged-el + (let ((commit "746801a677ada6cd6fa076e423aa0953779f3fad") + (revision "3")) + (package + (name "emacs-unpackaged-el") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/unpackaged.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jvb2ci0h0lj368qhbff3pzkxj3nhlligpbkjzi525k9rkjgm7l8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-org" ,emacs-org) + ("emacs-s" ,emacs-s) + ("emacs-hydra" ,emacs-hydra) + ("emacs-use-package" ,emacs-use-package))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'require-hydra + (lambda _ + (substitute* "unpackaged.el" + ((";;; Code:") ";;; Code:\n(require 'hydra)")) + #t))))) + (home-page "https://github.com/alphapapa/unpackaged.el") + (synopsis "Useful snippets of Emacs Lisp code") + (description "This package provides Emacs Lisp utilities for a variety +of tasks, including version control, task management, and regex-based +replacement.") + (license license:gpl3+)))) + +(define-public emacs-haskell-mode + (package + (name "emacs-haskell-mode") + (version "17.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/haskell/haskell-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0izcasi2v02zh08c863h43m8mmsldzy8pck43cllrfn0zf24v2qn")))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (native-inputs + `(("emacs" ,emacs-minimal) + ("emacs-el-search" ,emacs-el-search) + ("emacs-stream" ,emacs-stream) + ("texinfo" ,texinfo))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "EMACS=" + (assoc-ref %build-inputs "emacs") + "/bin/emacs")) + #:modules ((ice-9 match) + (srfi srfi-26) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'build 'pre-build + (lambda* (#:key inputs #:allow-other-keys) + (define (el-dir store-dir) + (match (find-files store-dir "\\.el$") + ((f1 f2 ...) (dirname f1)) + (_ ""))) + + (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh"))) + (define emacs-prefix? (cut string-prefix? "emacs-" <>)) + + (setenv "SHELL" "sh") + (setenv "EMACSLOADPATH" + (string-concatenate + (map (match-lambda + (((? emacs-prefix? name) . dir) + (string-append (el-dir dir) ":")) + (_ "")) + inputs))) + (substitute* (find-files "." "\\.el") (("/bin/sh") sh)) + #t))) + (add-before 'check 'delete-failing-tests + ;; XXX: these tests require GHC executable, which would be a big + ;; native input. + (lambda _ + (with-directory-excursion "tests" + (for-each delete-file + '("haskell-customize-tests.el" + "inferior-haskell-tests.el"))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (el-dir (string-append out "/share/emacs/site-lisp")) + (doc (string-append + out "/share/doc/haskell-mode-" ,version)) + (info (string-append out "/share/info"))) + (define (copy-to-dir dir files) + (for-each (lambda (f) + (install-file f dir)) + files)) + + (with-directory-excursion "doc" + (invoke "makeinfo" "haskell-mode.texi") + (install-file "haskell-mode.info" info)) + (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md")) + (copy-to-dir el-dir (find-files "." "\\.elc?")) + #t)))))) + (home-page "https://github.com/haskell/haskell-mode") + (synopsis "Haskell mode for Emacs") + (description + "This is an Emacs mode for editing, debugging and developing Haskell +programs.") + (license license:gpl3+))) + +(define-public emacs-dante + (let ((commit "38b589417294c7ea44bf65b73b8046d950f9531b") + (revision "1")) + (package + (name "emacs-dante") + (version (git-version "1.6" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/dante") + (commit commit))) + (sha256 + (base32 + "1mnmn635552zlwd4zr68jbvdjipl6gi4mi6wiyck28fsmq8kw96h")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-haskell-mode" ,emacs-haskell-mode) + ("emacs-s" ,emacs-s) + ("emacs-company" ,emacs-company) + ("emacs-lcr" ,emacs-lcr))) + (home-page "https://github.com/jyp/dante") + (synopsis "Minor mode for interactive Haskell") + (description + "This package provides a minor mode for Haskell development that +supports type hints, definition-jumping, completion, and more.") + (license license:gpl3+)))) + +(define-public emacs-flycheck + ;; Last release version was more than 500 commits ago. + (let ((commit "9bcf6b665e15db94870bebc81dc8248c3eec20d3") + (revision "2")) + (package + (name "emacs-flycheck") + (version (git-version "31" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flycheck/flycheck/") + (commit commit))) + (sha256 + (base32 "015ixss5bjr7gvhj8mkw5x2x1hy6fvvsjarr2xpv0gskkkngs7pg")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (native-inputs + `(("emacs-shut-up" ,emacs-shut-up))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-flycheck-version + (lambda _ + (substitute* "flycheck.el" + (("\\(pkg-info-version-info 'flycheck\\)") + (string-append "\"" ,version "\""))) + #t))) + ;; TODO: many failing tests + #:tests? #f + #:test-command '("emacs" "-Q" "--batch" "-L" "." + "--load" "test/flycheck-test" + "--load" "test/run.el" + "-f" "flycheck-run-tests-main"))) + (home-page "https://www.flycheck.org") + (synopsis "On-the-fly syntax checking") + (description + "This package provides on-the-fly syntax checking for GNU Emacs. It is a +replacement for the older Flymake extension which is part of GNU Emacs, with +many improvements and additional features. + +Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax +checking for over 30 programming and markup languages with more than 70 +different tools. It highlights errors and warnings inline in the buffer, and +provides an optional IDE-like error list.") + (license license:gpl3+)))) ;+GFDLv1.3+ for the manual + +(define-public emacs-flymake-shellcheck + ;; No tag, version grabbed from source .el file. + (let ((commit "78956f0e5bb9c4d35989657a55929e8e3f5691e6") + (revision "0")) + (package + (name "emacs-flymake-shellcheck") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/federicotdn/flymake-shellcheck") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "068mx5p4drwgppy4ry1rfq6qi79w6d82b4rnpl2jm37grsg94lix")))) + (build-system emacs-build-system) + (home-page "https://github.com/federicotdn/flymake-shellcheck") + (synopsis "Flymake backend for Bash/Sh powered by ShellCheck") + (description + "This package provides a backend for Flymake to use the +tool ShellCheck for static analyzing @command{bash} and @command{sh} +scripts.") + (license license:gpl3+)))) + +(define-public emacs-a + (package + (name "emacs-a") + (version "0.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/plexus/a.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00v9w6qg3bkwdhypq0ssf0phdh0f4bcq59c20lngd6vhk0204dqi")))) + (build-system emacs-build-system) + (home-page "https://github.com/plexus/a.el/") + (synopsis + "Emacs library for dealing with association lists and hash tables") + (description "@code{emacs-a} provides Emacs Lisp functions for dealing +with associative structures in a uniform and functional way. These functions +can take association lists, hash tables, and in some cases vectors (where the +index is considered the key).") + (license license:gpl3+))) + +(define-public emacs-ace-jump-mode + (package + (name "emacs-ace-jump-mode") + (version "2.0") + (home-page "https://github.com/winterTTr/ace-jump-mode") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (sha256 + (base32 + "1bwvzh056ls2v7y26a0s4j5mj582dmds04lx4x6iqihs04ss74bb")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (synopsis "Cursor location minor mode for fast navigation") + (description "Ace-jump-mode is a fast/direct cursor location minor +mode. It creates an N-Branch search tree internally and marks all +the possible position with predefined keys in within the whole Emacs +view. This allows you to move to the character, word, or line almost +directly.") + (license license:gpl3+))) + +(define-public emacs-anaphora + (package + (name "emacs-anaphora") + (version "1.0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rolandwalker/anaphora") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11fgiy029sqz7nvdm7dcal95lacryz9zql0x5h05z48nrrcl4bib")))) + (build-system emacs-build-system) + (home-page "https://github.com/rolandwalker/anaphora/") + (synopsis "Anaphoric expressions for Emacs Lisp") + (description "@code{emacs-anaphora} implements anaphoric expressions for +Emacs Lisp. + +Anaphoric expressions implicitly create one or more temporary variables which +can be referred to during the expression. This technique can improve clarity +in certain cases. It also enables recursion for anonymous functions.") + (license license:public-domain))) + +(define-public emacs-xr + (package + (name "emacs-xr") + (version "1.19") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/xr-" version ".tar")) + (sha256 + (base32 "1aa3iqh0r635jw8k89zh8y4am9d4hfrqpk9mrdh2b51invjn8llq")))) + (build-system emacs-build-system) + (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 +regexps in string form to the @code{rx} notation. Its chief uses are: + +@itemize +@item Migrating existing code to @code{rx} form, for better readability and +maintainability +@item Understanding complex regexp strings and finding errors in them +@end itemize + +In addition to Emacs regexps, this package can also parse and troubleshoot +skip set strings, which are arguments to @code{skip-chars-forward} and +@code{skip-chars-backward}.") + (license license:gpl3+))) + +(define-public emacs-ample-regexps + (let ((commit "cbe91e148cac1ee8e223874dc956ed4cf607f046") + (revision "1")) + (package + (name "emacs-ample-regexps") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/immerrr/ample-regexps.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1mm4icrwx4mscp7kbbmlc34995r164dhrfczn5ybkyxjzzf76jn1")))) + (build-system emacs-build-system) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner" "-l" "ample-regexps"))) + (home-page "https://github.com/immerrr/ample-regexps.el") + (synopsis "Compose and reuse Emacs regexps") + (description + "This package allows common parts of regexps to be easily picked out +and reused.") + (license license:gpl3+)))) + +(define-public emacs-ample-theme + (let ((commit "536966adf882446165a1f756830028faa792c7a9") + (revision "1")) + (package + (name "emacs-ample-theme") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jordonbiondo/ample-theme") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07bpv8dag40qjnm5000pgzpazj4whfxf93x2vprz26sg3mjfx0nf")))) + (build-system emacs-build-system) + (home-page "https://github.com/jordonbiondo/ample-theme") + (synopsis "Theme for Emacs providing dark, light, and flat versions") + (description "Ample themes is a collection of three themes sharing a +similar pallet with a light, dark and flat versions with a focus on being easy +on the eyes during night and day. They only support GUI and 256 colour +terminals.") + (license license:gpl3+)))) + +(define-public emacs-reformatter + (package + (name "emacs-reformatter") + (version "0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/reformatter.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hhy6x1bkwlhdlarsgm06g3am4yh02yqv8qs34szpzgy53x84qah")))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/reformatter.el") + (synopsis "Define commands which run reformatters on the current buffer") + (description + "This library lets elisp authors easily define an idiomatic command to +reformat the current buffer using a command-line program, together with an +optional minor mode which can apply this command automatically on save.") + (license license:gpl3+))) + +(define-public emacs-relint + (package + (name "emacs-relint") + (version "1.18") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "relint-" version ".tar")) + (sha256 + (base32 "0zfislsksrkn6qs0w26yaff5xr7xqy2x235dcdpz8s2v35b6dhci")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-xr" ,emacs-xr))) + (home-page "https://github.com/mattiase/relint") + (synopsis "Elisp regexp mistake finder") + (description + "Relint (regular expression lint) scans Elisp files for mistakes in +regexps, including deprecated syntax and bad practice. It also checks the +regexp-like arguments to @code{skip-chars-forward} and +@code{skip-chars-backward}.") + (license license:gpl3+))) + +(define-public emacs-bug-hunter + (let ((commit "b88d981afa9154b236c5a3a83b50d5889d46c6a7") + (revision "1")) + (package + (name "emacs-bug-hunter") + (version (git-version "1.3.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Malabarba/elisp-bug-hunter") + (commit commit))) + (file-name (git-file-name name commit)) + (sha256 + (base32 + "134fj493sdn93pyyac8rpz1fzahzmayvphsrmqp3wvgysmfqm38l")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-seq" ,emacs-seq))) + (home-page "https://github.com/Malabarba/elisp-bug-hunter") + (synopsis "Hunt down errors by bisecting elisp files") + (description + "The Bug Hunter is an Emacs library that finds the source of an error +or unexpected behavior inside an elisp configuration file (typically +@file{init.el} or @file{.emacs}).") + (license license:gpl3+)))) + + +;;; +;;; Web browsing. +;;; + +(define-public emacs-w3m + ;; Emacs-w3m follows a "rolling release" model. + (package + (name "emacs-w3m") + (version "2018-11-11") + (source (origin + (method cvs-fetch) + (uri (cvs-reference + (root-directory + ":pserver:anonymous@cvs.namazu.org:/storage/cvsroot") + (module "emacs-w3m") + (revision version))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0nvahdbjs12zg7zsk4gql02mvnv56cf1rwj2f5p42lwp3xvswiwp")))) + (build-system gnu-build-system) + (native-inputs `(("autoconf" ,autoconf) + ("texinfo" ,texinfo) + ("emacs" ,emacs-minimal))) + (inputs `(("w3m" ,w3m) + ("imagemagick" ,imagemagick))) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:configure-flags + (let ((out (assoc-ref %outputs "out"))) + (list (string-append "--with-lispdir=" + out "/share/emacs/site-lisp") + (string-append "--with-icondir=" + out "/share/images/emacs-w3m") + ;; Leave .el files uncompressed, otherwise GC can't + ;; identify run-time dependencies. See + ;; + "--without-compress-install")) + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autoconf + (lambda _ + (invoke "autoconf"))) + (add-before 'configure 'support-emacs! + (lambda _ + ;; For some reason 'AC_PATH_EMACS' thinks that 'Emacs 26' is + ;; unsupported. + (substitute* "configure" + (("EMACS_FLAVOR=unsupported") + "EMACS_FLAVOR=emacs")) + #t)) + (add-before 'build 'patch-exec-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (w3m (assoc-ref inputs "w3m")) + (imagemagick (assoc-ref inputs "imagemagick")) + (coreutils (assoc-ref inputs "coreutils"))) + (make-file-writable "w3m.el") + (emacs-substitute-variables "w3m.el" + ("w3m-command" (string-append w3m "/bin/w3m")) + ("w3m-touch-command" + (string-append coreutils "/bin/touch")) + ("w3m-icon-directory" + (string-append out "/share/images/emacs-w3m"))) + (make-file-writable "w3m-image.el") + (emacs-substitute-variables "w3m-image.el" + ("w3m-imagick-convert-program" + (string-append imagemagick "/bin/convert")) + ("w3m-imagick-identify-program" + (string-append imagemagick "/bin/identify"))) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "install" "install-icons") + (with-directory-excursion + (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp") + (for-each delete-file '("ChangeLog" "ChangeLog.1")) + (symlink "w3m-load.el" "w3m-autoloads.el") + #t)))))) + (home-page "http://emacs-w3m.namazu.org/") + (synopsis "Simple Web browser for Emacs based on w3m") + (description + "Emacs-w3m is an emacs interface for the w3m web browser.") + (license license:gpl2+))) + +(define-public emacs-wget + (package + (name "emacs-wget") + (version "0.5.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_" + version ".orig.tar.gz")) + (sha256 + (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff")))) + (build-system gnu-build-system) + (inputs `(("wget" ,wget))) + (native-inputs `(("emacs" ,emacs-minimal))) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile" + (("/usr/local") (assoc-ref outputs "out")) + (("/site-lisp/emacs-wget") "/site-lisp")) + #t)) + (add-before 'build 'patch-exec-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((wget (assoc-ref inputs "wget"))) + (emacs-substitute-variables "wget.el" + ("wget-command" (string-append wget "/bin/wget")))) + #t)) + (add-after 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + (emacs-generate-autoloads + "wget" (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp/")) + #t))))) + (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.") + (license license:gpl2+))) + +(define-public emacs-eww-lnum + (package + (name "emacs-eww-lnum") + (version "1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/m00natic/eww-lnum") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gs6bi3s2sszc6v2b26929azmn5513kvyin99n4d0ark1jdbjmv2")))) + (build-system emacs-build-system) + (home-page "https://github.com/m00natic/eww-lnum") + (synopsis "Conkeror-like functionality for Eww") + (description "This is extension to the Emacs browser Eww that adds +Conkeror-like functionality. In short, currently visible links, forms, +buttons are temporarily assigned numbers with which the former can be +immediately activated. Also filtering can be applied so selection can be +incrementally confined in Isearch manner.") + (license license:gpl3+))) + + + +;;; +;;; Multimedia. +;;; + +(define-public emacs-emms + (package + (name "emacs-emms") + (version "5.42") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "emms-" version ".tar")) + (sha256 + (base32 "1khx1fvllrs6w9kxk12mp1hj309c90mc7lkq1vvlqlr7vd6zmnpj")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-external-programs + ;; Specify the absolute file names of the various programs + ;; so that everything works out-of-the-box. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (flac (assoc-ref inputs "flac")) + (vorbis (assoc-ref inputs "vorbis-tools")) + (alsa (assoc-ref inputs "alsa-utils")) + (mpg321 (assoc-ref inputs "mpg321")) + (mp3info (assoc-ref inputs "mp3info")) + (mutagen (assoc-ref inputs "mutagen")) + (opus (assoc-ref inputs "opus-tools"))) + (emacs-substitute-variables "emms-player-mpg321-remote.el" + ("emms-player-mpg321-remote-command" + (string-append mpg321 "/bin/mpg321"))) + (substitute* "emms-player-simple.el" + (("\"ogg123\"") + (string-append "\"" vorbis "/bin/ogg123\""))) + (substitute* "emms-player-simple.el" + (("\"mpg321\"") + (string-append "\"" mpg321 "/bin/mpg321\""))) + (emacs-substitute-variables "emms-info-ogginfo.el" + ("emms-info-ogginfo-program-name" + (string-append vorbis "/bin/ogginfo"))) + (emacs-substitute-variables "emms-info-opusinfo.el" + ("emms-info-opusinfo-program-name" + (string-append opus "/bin/opusinfo"))) + (emacs-substitute-variables "emms-info-libtag.el" + ("emms-info-libtag-program-name" + (string-append out "/bin/emms-print-metadata"))) + (emacs-substitute-variables "emms-info-mp3info.el" + ("emms-info-mp3info-program-name" + (string-append mp3info "/bin/mp3info"))) + (emacs-substitute-variables "emms-info-metaflac.el" + ("emms-info-metaflac-program-name" + (string-append flac "/bin/metaflac"))) + (emacs-substitute-variables "emms-source-file.el" + ("emms-source-file-gnu-find" (which "find"))) + (substitute* "emms-volume-amixer.el" + (("\"amixer\"") + (string-append "\"" alsa "/bin/amixer\""))) + (substitute* "emms-tag-editor.el" + (("\"mid3v2\"") + (string-append "\"" mutagen "/bin/mid3v2\""))) + #t)))))) + (inputs + `(("alsa-utils" ,alsa-utils) + ("flac" ,flac) ;for metaflac + ("vorbis-tools" ,vorbis-tools) + ("mpg321" ,mpg321) + ("taglib" ,taglib) + ("mp3info" ,mp3info) + ("mutagen" ,python-mutagen) + ("opus-tools" ,opus-tools))) + (home-page "https://www.gnu.org/software/emms/") + (synopsis "The Emacs Multimedia System") + (description + "EMMS is the Emacs Multimedia System. It is a small front-end which +can control one of the supported external players. Thus, it supports +whatever formats are supported by your music player. It also +supports tagging and playlist management, all behind a clean and +light user interface.") + (license license:gpl3+))) + +(define-public emacs-emms-mode-line-cycle + (package + (name "emacs-emms-mode-line-cycle") + (version "0.2.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/momomo5717/emms-mode-line-cycle") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0q80f0plch6k4lhs8c9qm3mfycfbp3kn5sjrk9zxgxwnn901y9mp")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emms" ,emacs-emms))) + (home-page "https://github.com/momomo5717/emms-mode-line-cycle") + (synopsis "Display the EMMS mode line as a ticker") + (description + "This is a minor mode for updating the EMMS mode-line string cyclically +within a specified width. It is useful for displaying long track titles.") + (license license:gpl3+))) + + +;;; +;;; Miscellaneous. +;;; + +(define-public emacs-ace-link + (package + (name "emacs-ace-link") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/ace-link") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "147dz79vg4ym5wg3d544bw2khdb2j3hr73rw4qfm64wf0q2dj0vk")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-avy" ,emacs-avy))) + (home-page "https://github.com/abo-abo/ace-link") + (synopsis "Quickly follow links in Emacs") + (description + "Currently, to jump to a link in a @code{Info-mode}, @code{help-mode}, +@code{woman-mode}, @code{org-mode}, @code{eww-mode}, @code{compilation-mode}, +@code{goto-address-mode} buffer, you can tab through the links to select the +one you want. This is an O(N) operation, where the N is the amount of links. +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") + (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") + (version "3.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "bbdb-" version ".tar")) + (sha256 + (base32 "1p56dg0mja2b2figy7yhdx714zd5j6njzn0k07zjka3jc06izvjx")))) + (build-system emacs-build-system) + (arguments + ;; XXX: The following file cannot be byte-compiled, because et requires + ;; `vm-autoloads', from the VM package, with is neither in Emacs nor + ;; packaged in Guix. So, don't bother for now. + `(#:exclude '("bbdb-vm\\.el"))) + (home-page "http://elpa.gnu.org/packages/bbdb.html") + (synopsis "Contact management utility for Emacs") + (description + "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides +an address book for email and snail mail addresses, phone numbers and the +like. It can be linked with various Emacs mail clients (Message and Mail +mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.") + (license license:gpl3+))) + +(define-public emacs-bluetooth + (package + (name "emacs-bluetooth") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "bluetooth-" version ".el")) + (sha256 + (base32 "1vp2vpyq0ybjni35ics1mg1kiwgvc7x12dlmvygy78sqp52sfkcv")))) + (build-system emacs-build-system) + (inputs + `(("bluez" ,bluez))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://gitlab.com/rstocker/emacs-bluetooth") + (synopsis "Manage Bluetooth devices using Emacs") + (description + "This package implements basic Bluetooth management functionality, such +as connecting and disconnecting devices, setting properties and aliases, +putting the adapter in discovery mode and controlling its power supply. It +also includes a pairing agent.") + (license license:gpl3+))) + +(define-public emacs-aggressive-indent + (package + (name "emacs-aggressive-indent") + (version "1.8.3") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "aggressive-indent-" version ".el")) + (sha256 + (base32 + "0jnzccl50x0wapprgwxinp99pwwa6j43q6msn4gv437j7swy8wnj")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/aggressive-indent.html") + (synopsis "Minor mode to aggressively keep your code always indented") + (description + "@code{aggressive-indent-mode} is a minor mode that keeps your code +always indented. It reindents after every change, making it more reliable +than @code{electric-indent-mode}.") + (license license:gpl2+))) + +(define-public emacs-ctrlf + (package + (name "emacs-ctrlf") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/ctrlf") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ffcjf0ff0748gqipkklz6jmcj4f3blgzdcax93ql9ws8bmvlsdc")))) + (build-system emacs-build-system) + (home-page "https://github.com/raxod502/ctrlf/") + (synopsis "Single-buffer text search in Emacs") + (description "CTRLF (pronounced @emph{control F}) is an intuitive and +efficient solution for single-buffer text search in Emacs, replacing packages +such as Isearch, Swiper, and helm-swoop. It takes inspiration from the +widely-adopted and battle-tested @samp{Ctrl+F} interfaces in programs such as +web browsers, but follows the flow and keybindings of Isearch.") + (license license:expat))) + +(define-public emacs-dhall-mode + ;; There is no proper release. The base version is extracted from the + ;; "Version" keyword in the main file. + (let ((revision "0") + (commit "ef4d33debe224c6ba37e51a29b9dc8b74f20f1c2")) + (package + (name "emacs-dhall-mode") + (version (git-version "0.1.3" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/psibi/dhall-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1232y2k4l3bsz90pgis78zxmrw7jv09dfaip21yc1w4vpxfyr384")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-reformatter" ,emacs-reformatter))) + (home-page "https://github.com/psibi/dhall-mode") + (synopsis "Major mode for working with Dhall configuration language") + (description + "Dhall-mode provides an Emacs Major mode for working with the Dhall +configuration language. It features: + +@itemize +@item Syntax highlighting +@item Multiline support for String +@item Basic indentation, commenting +@item Automatic formatting on save using dhall-format. +@item Error highlighting. +@end itemize") + (license license:gpl3+)))) + +(define-public emacs-link-hint + ;; Last release was in 2015. + (let ((commit "d74a483652486260c052941fedeadddb1ea71f88") + (revision "1")) + (package + (name "emacs-link-hint") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/noctuid/link-hint.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0dghxd165fbds6czy9bfwpid3i4irgp3q08n9mg57sfifi0cmij0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-avy" ,emacs-avy))) + (home-page "https://github.com/noctuid/link-hint.el") + (synopsis "Vimperator-style link-hinting in Emacs") + (description "This package provides commands for visiting and acting on +links.") + (license license:gpl3+)))) + +(define-public emacs-ag + (package + (name "emacs-ag") + (version "0.48") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Wilfred/ag.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1p918y24vcn2pdliaymd210xp9fvhd4a1srqbv2lfiqrh59yjidx")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (with-directory-excursion "docs" + (invoke "make" "info")))) + (add-after 'install 'install-info + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info"))) + (install-file "docs/_build/texinfo/agel.info" info) + #t)))))) + (native-inputs + `(("python-sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) + (propagated-inputs + `(("dash" ,emacs-dash) + ("s" ,emacs-s) + ;; We need to use 'ag' as the executable on remote systems. + ("the-silver-searcher" ,the-silver-searcher))) + (home-page "https://github.com/Wilfred/ag.el") + (synopsis "Front-end for ag (the-silver-searcher) for Emacs") + (description "This package provides the ability to use the silver +searcher, a code searching tool, sometimes abbreviated to @code{ag}. Features +include version control system awareness, use of Perl compatible regular +expressions, editing the search results directly and searching file names +rather than the contents of files.") + (license license:gpl3+))) + +(define-public emacs-async + (package + (name "emacs-async") + (home-page "https://github.com/jwiegley/emacs-async") + (version "1.9.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hhpyxb3d531jb2f3wvzx25183f0anm8nxv6mh0p825q2gkm6ly7")))) + (build-system emacs-build-system) + (synopsis "Asynchronous processing in Emacs") + (description + "This package provides the ability to call asynchronous functions and +processes. For example, it can be used to run dired commands (for copying, +moving, etc.) asynchronously using @code{dired-async-mode}. Also it is used +as a library for other Emacs packages.") + (license license:gpl3+))) + +(define-public emacs-auctex + (package + (name "emacs-auctex") + (version "12.2.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "auctex-" version ".tar")) + (sha256 + (base32 "1yz2h692mr35zgqwlxdq8rzv8n0jixhpaqmbiki00hlysm4zh9py")))) + (build-system emacs-build-system) + ;; We use 'emacs' because AUCTeX requires dbus at compile time + ;; ('emacs-minimal' does not provide dbus). + (arguments + `(#:emacs ,emacs + #:include '("\\.el$" "^images/" "^latex/" "\\.info$") + #:exclude '("^tests/" "^latex/README") + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (etc-dir (string-append out "/share/" ,name "/" + ,version "/etc"))) + (with-directory-excursion "doc" + (setenv "HOME" (getenv "TMPDIR")) ; for mktextfm + (invoke "pdftex" "tex-ref") + (install-file "tex-ref.pdf" + (string-append etc-dir "/refcards"))) + #t)))))) + (native-inputs + `(("perl" ,perl))) + (inputs + `(("texlive" ,(texlive-union (list texlive-amsfonts))))) + (home-page "https://www.gnu.org/software/auctex/") + (synopsis "Integrated environment for TeX") + (description + "AUCTeX is a comprehensive customizable integrated environment for +writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs +or XEmacs.") + (license license:gpl3+))) + +(define-public emacs-autothemer + (package + (name "emacs-autothemer") + (version "0.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sebastiansturm/autothemer") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cd2pqh6k32sjidkcd8682y4l6mx52xw4a05f38kk8nsrk28m74k")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/sebastiansturm/autothemer") + (synopsis "Conveniently create Emacs themes") + (description + "Autothemer provides a thin layer on top of @code{deftheme} and +@code{custom-theme-set-faces} that creates a new custom color theme, based on +a set of simplified face specifications and a user-supplied color palette") + (license license:gpl3+))) + +(define-public emacs-howm + (package + (name "emacs-howm") + (version "1.4.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://howm.sourceforge.jp/a/" + "howm-" version ".tar.gz")) + (sha256 + (base32 "17ihch1zbk08ih7gc232jlmbw7hax8ldb9glxp8d75k4asa98qh5")))) + (build-system gnu-build-system) + (native-inputs + `(("emacs" ,emacs-minimal))) + (arguments + `(#:configure-flags + (list (string-append "--with-howmdir=" %output + "/share/emacs/site-lisp/")) + #:modules ((guix build gnu-build-system) + ((guix build emacs-build-system) #:prefix emacs:) + (guix build utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-build-system) + (guix build emacs-utils)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'make-autoloads + (assoc-ref emacs:%standard-phases 'make-autoloads))))) + (home-page "https://howm.osdn.jp/") + (synopsis "Note-taking tool for Emacs") + (description "Howm is a note-taking tool for Emacs. Like +code@{emacs-wiki.el}, it facilitates using hyperlinks and doing full-text +searches. Unlike code@{emacs-wiki.el}, it can be combined with any format.") + (license license:gpl1+))) + +(define-public emacs-bm + (package + (name "emacs-bm") + (version "201905") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joodland/bm") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "180b3rc13asrmsdh7v405d54jkrininvaj52xhp71vw91ng51dkn")))) + (build-system emacs-build-system) + (home-page "https://github.com/joodland/bm") + (synopsis "Visual bookmarks for Emacs") + (description "This package provides visible, buffer local bookmarks and +the ability to jump forward and backward to the next bookmark.") + (license license:gpl2+))) + +(define-public emacs-calfw + (package + (name "emacs-calfw") + (version "1.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kiwanami/emacs-calfw") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0r42cagvmvvib76kd15nd9ix55ys6i549vxnls4z16s864695zpa")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-howm" ,emacs-howm))) + (home-page "https://github.com/kiwanami/emacs-calfw/") + (synopsis "Calendar framework for Emacs") + (description + "This package displays a calendar view with various schedule data in the +Emacs buffer.") + (license license:gpl3+))) + +(define-public emacs-caps-lock + (package + (name "emacs-caps-lock") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "caps-lock-" version ".el")) + (sha256 + (base32 "1i4hwam81p4dr0bk8257fkiz4xmv6knkjxj7a00fa35kgx5blpva")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/caps-lock.html") + (synopsis "Caps Lock as a minor mode") + (description + "This package provides a minor mode to emulate the behavior of a Caps +Lock key.") + (license license:gpl3+))) + +(define-public emacs-chronometrist + (package + (name "emacs-chronometrist") + (version "0.5.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/contrapunctus-1/chronometrist.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jz35972m372kx9x8mgf42zhzdw2w9wv2ri52chfb2fin4bh1biy")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir-elisp + ;; Elisp directory is not in root of the source. + (lambda _ + (chdir "elisp") + #t)) + (add-after 'install 'install-doc + ;; Documentation consists of several Markdown files. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out + "/share/doc/emacs-chronometrist-" + ,version))) + (with-directory-excursion "../doc" + (for-each (lambda (f) (install-file f doc)) + (cons* "../UNLICENSE" + "../WTFPL" + (find-files "." "\\.md$"))))) + #t))))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s) + ("emacs-ts" ,emacs-ts))) + (home-page "https://github.com/contrapunctus-1/chronometrist") + (synopsis "Time tracker for Emacs") + (description "Chronometrist is a time tracker in Emacs, largely modelled +after the Android application, @emph{A Time Tracker}. + +Its features are: +@itemize +@item Simple and efficient to use, +@item Displays useful information about your time usage, +@item Support for both mouse and keyboard, +@item Human errors in tracking are easily fixed by editing a plain text file, +@item Hooks to let you perform arbitrary actions when starting/stopping tasks. +@end itemize") + ;; Software is dual-licensed. + (license (list license:unlicense license:wtfpl2)))) + +(define-public emacs-direnv + (package + (name "emacs-direnv") + (version "2.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wbolster/emacs-direnv") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "005ibyzsx1fdyrl5iyhqpb1bg83mphzahq7zvw58x00syyqi2z49")))) + (build-system emacs-build-system) + (propagated-inputs + `(("dash" ,emacs-dash) + ("with-editor" ,emacs-with-editor))) + (home-page "https://github.com/wbolster/emacs-direnv") + (synopsis "Direnv integration for Emacs") + (description + "This package provides support for invoking direnv to get the environment +for the current file and updating the environment within Emacs to match. + +Direnv can be invoked manually, and a global minor mode is included that will +update the environment when the active buffer changes. + +Using emacs-direnv means that programs started from Emacs will use the +environment set through Direnv.") + (license license:gpl3+))) + +(define-public emacs-elf-mode + (package + (name "emacs-elf-mode") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/abo-abo/elf-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cbvjbk2893ag1iy8ggixpirfiyhssm7fii96hb9jqdz874cdl0k")))) + (build-system emacs-build-system) + (home-page "https://github.com/abo-abo/elf-mode") + (synopsis "Show symbol list when opening a binary file in Emacs") + (description "This Emacs package provides a command showing the symbols +that the binary uses instead of the actual binary contents.") + (license license:gpl3+))) + +(define-public emacs-form-feed + (package + (name "emacs-form-feed") + (version "0.2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wasamasa/form-feed") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "171jna631b2iqcimfsik9c66gii8nc0zdb58m077w00rn7rcxbh2")))) + (build-system emacs-build-system) + (home-page "https://github.com/wasamasa/form-feed") + (synopsis "Display ^L glyphs as horizontal lines") + (description + "This package provides a minor mode @code{form-feed-mode} to display page +delimiters which usually appear as ^L glyphs on a single line as horizontal +lines spanning the entire window. The minor mode is suitable for inclusion +into mode hooks and is intended to be used that way.") + (license license:gpl3+))) + +(define-public emacs-ggtags + (package + (name "emacs-ggtags") + (version "0.8.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/ggtags-" + version ".el")) + (sha256 + (base32 + "1qa7lcrcmf76sf6dy8sxbg4adq7rg59fm0n5848w3qxgsr0h45fg")))) + (build-system emacs-build-system) + (inputs + `(("global" ,global))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (chmod "ggtags.el" #o644) + (emacs-substitute-variables "ggtags.el" + ("ggtags-executable-directory" + (string-append (assoc-ref inputs "global") "/bin"))) + #t))))) + (home-page "https://github.com/leoliu/ggtags") + (synopsis "Frontend to the GNU Global source code tagging system") + (description "@code{ggtags} provides a frontend to the GNU Global source +code tagging system. + +Features: + +@itemize +@item Build on @code{compile.el} for asynchronicity and its large feature-set. +@item Automatically update Global's tag files when needed with tuning for +large source trees. +@item Intuitive navigation among multiple matches with mode-line display of +current match, total matches and exit status. +@item Read tag with completion. +@item Show definition at point. +@item Jump to #include files. +@item Support search history and saving a search to register/bookmark. +@item Query replace. +@item Manage Global's environment variables on a per-project basis. +@item Highlight (definition) tag at point. +@item Abbreviated display of file names. +@item Support all Global search backends: @code{grep}, @code{idutils}, etc. +@item Support exuberant ctags @url{http://ctags.sourceforge.net/} and +@code{pygments} backend. +@item Support all Global's output formats: @code{grep}, @code{ctags-x}, +@code{cscope} etc. +@item Support projects on remote hosts (e.g. via @code{tramp}). +@item Support eldoc. +@item Search @code{GTAGSLIBPATH} for references and symbols. +@end itemize\n") + (license license:gpl3+))) + +(define-public emacs-go-mode + (package + (name "emacs-go-mode") + (version "1.5.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dominikh/go-mode.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1nd2h50yb0493wvf1h7fzplq45rmqn2w7kxpgnlxzhkvq99v8vzf")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-writable + (lambda _ + (for-each make-file-writable (find-files "." "\\.el$")) + #t))))) + (home-page "https://github.com/dominikh/go-mode.el") + (synopsis "Go mode for Emacs") + (description + "This package provides go-mode, an Emacs mode for working with software +written in the Go programming language.") + (license license:bsd-3))) + +(define-public emacs-google-maps + (package + (name "emacs-google-maps") + (version "1.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jd/google-maps.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "183igr5lp20zcqi7rc01fk76sfxdhksd74i11v16gdsifdkjimd0")))) + (build-system emacs-build-system) + (home-page "https://github.com/jd/google-maps.el") + (synopsis "Access Google Maps from Emacs") + (description "The @code{google-maps} package displays Google +Maps directly inside Emacs.") + (license license:gpl3+))) + +(define-public emacs-graphviz-dot-mode + (package + (name "emacs-graphviz-dot-mode") + (version "0.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ppareit/graphviz-dot-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1v1p85wk73nfsvv66qf90flgf9dqhmv15z1r7q4zmc4ifklqn08m")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "texinfo" + (substitute* "Makefile" + (("\\/usr\\/bin\\/gzip") + (string-append (assoc-ref inputs "gzip") "/bin/gzip"))) + (invoke "make" + "clean" + "info" + (string-append "TEXINFODIR=" + (assoc-ref inputs "texinfo") + "/bin"))))) + (add-after 'install 'install-info + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info (string-append out "/share/info"))) + (install-file "texinfo/graphviz-dot-mode.info.gz" info) + #t)))))) + (native-inputs + `(("gzip" ,gzip) + ("texinfo" ,texinfo))) + (propagated-inputs + `(("emacs-company" ,emacs-company))) + (home-page "http://ppareit.github.com/graphviz-dot-mode") + (synopsis "Major mode for editing Graphviz DOT files") + (description + "This Emacs package helps you to create @file{.dot} or @file{.gv} files +using the DOT syntax, and use Graphviz to convert these files to diagrams.") + (license license:gpl2+))) + +(define-public emacs-imenu-list + (package + (name "emacs-imenu-list") + (version "0.8") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/bmag/imenu-list") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "13xh9bdl3k6ccfq83wjmkpi4269qahv4davki4wq18dr4amrzhlx")))) + (build-system emacs-build-system) + (home-page "https://github.com/bmag/imenu-list") + (synopsis + "Automatically tracks the current buffer's imenu entries") + (description + "This Emacs minor mode creates an automatically updated buffer called +@code{*Ilist*} that is populated with the current buffer's imenu entries. +This buffer is typically shown as a sidebar (Emacs vertically splits the +window).") + (license license:gpl3+))) + +(define-public emacs-mmm-mode + (package + (name "emacs-mmm-mode") + (version "0.5.8") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "mmm-mode-" version ".tar")) + (sha256 + (base32 "05ckf4zapdpvnd3sqpw6kxaa567zh536a36m9qzx3sqyjbyn5fb4")))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/mmm-mode") + (synopsis "Allow multiple major modes in an Emacs buffer") + (description + "MMM Mode is a minor mode that allows multiple major modes to coexist in +a 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") + (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") + (version "1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/politza/tablist") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0pzsdg0rm59daw34ppss79cg05z9wnr8nkmdcc48nkd0p69ip2yy")))) + (build-system emacs-build-system) + (home-page "https://github.com/politza/tablist") + (synopsis "Extension for @code{tabulated-list-mode}") + (description "Tablist is the Emacs package that provides several +additional features to @code{tabulated-list-mode}: it adds marks, +filters, new key bindings and faces. It can be enabled by +@code{tablist-mode} or @code{tablist-minor-mode} commands.") + (license license:gpl3+))) + +(define-public emacs-djvu + (package + (name "emacs-djvu") + (version "1.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "djvu-" version ".el")) + (sha256 + (base32 "0njgyx09q225hliacsnjk8wallg5i6xkz6bj501pb05nwqfbvfk7")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/djvu.html") + (synopsis "Edit and view Djvu files via djvused") + (description + "This package is a front end for the command-line program djvused from +DjVuLibre, see @url{http://djvu.sourceforge.net/}. It assumes you have the +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") + (version "0.90") + (home-page "https://github.com/politza/pdf-tools") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0iv2g5kd14zk3r5dzdw7b7hk4b5w7qpbilcqkja46jgxbb6xnpl9")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; there are no tests + #:modules ((guix build gnu-build-system) + ((guix build emacs-build-system) #:prefix emacs:) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-build-system) + (guix build emacs-utils)) + #:phases + (modify-phases %standard-phases + ;; Build server side using 'gnu-build-system'. + (add-after 'unpack 'enter-server-dir + (lambda _ (chdir "server") #t)) + (add-after 'enter-server-dir 'autogen + (lambda _ + (invoke "bash" "autogen.sh"))) + + ;; Build emacs side using 'emacs-build-system'. + (add-after 'compress-documentation 'enter-lisp-dir + (lambda _ (chdir "../lisp") #t)) + (add-after 'enter-lisp-dir 'emacs-patch-variables + (lambda* (#:key outputs #:allow-other-keys) + (for-each make-file-writable (find-files ".")) + + ;; Set path to epdfinfo program. + (emacs-substitute-variables "pdf-info.el" + ("pdf-info-epdfinfo-program" + (string-append (assoc-ref outputs "out") + "/bin/epdfinfo"))) + ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto + ;; upgrading" that pdf-tools tries to perform. + (emacs-substitute-variables "pdf-tools.el" + ("pdf-tools-handle-upgrades" '())))) + (add-after 'emacs-patch-variables 'emacs-add-source-to-load-path + (assoc-ref emacs:%standard-phases 'add-source-to-load-path)) + (add-after 'emacs-add-source-to-load-path 'emacs-install + (assoc-ref emacs:%standard-phases 'install)) + (add-after 'emacs-install 'emacs-build + (assoc-ref emacs:%standard-phases 'build)) + (add-after 'emacs-install 'emacs-make-autoloads + (assoc-ref emacs:%standard-phases 'make-autoloads))))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("emacs" ,emacs-minimal))) + (inputs `(("poppler" ,poppler) + ("cairo" ,cairo) + ("glib" ,glib) + ("libpng" ,libpng) + ("zlib" ,zlib))) + (propagated-inputs `(("tablist" ,emacs-tablist))) + (synopsis "Emacs support library for PDF files") + (description + "PDF Tools is, among other things, a replacement of DocView for PDF +files. The key difference is that pages are not pre-rendered by +e.g. ghostscript and stored in the file-system, but rather created on-demand +and stored in memory.") + (license license:gpl3+))) + +(define-public emacs-dash + (package + (name "emacs-dash") + (version "2.17.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magnars/dash.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "153f55dqkhs8w2xlf6b88wp5vlkap7h8vjd9wxh4jp2ram5g4l1n")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("./run-tests.sh"))) + (home-page "https://github.com/magnars/dash.el") + (synopsis "Modern list library for Emacs") + (description "This package provides a modern list API library for Emacs.") + (license license:gpl3+))) + +(define-public emacs-bui + (package + (name "emacs-bui") + (version "1.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://notabug.org/alezost/emacs-bui.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sszdl4kvqbihdh8d7mybpp0d8yw2p3gyiipjcxz9xhvvmw3ww4x")))) + (build-system emacs-build-system) + (propagated-inputs + `(("dash" ,emacs-dash))) + (home-page "https://notabug.org/alezost/emacs-bui") + (synopsis "Buffer interface library for Emacs") + (description + "BUI (Buffer User Interface) is a library for making @code{list} and +@code{info} interfaces to display an arbitrary data of the same +type, for example: packages, buffers, files, etc.") + (license license:gpl3+))) + +(define-public emacs-guix + (package + (name "emacs-guix") + (version "0.5.2") + (source (origin + (method url-fetch) + (uri (string-append "https://emacs-guix.gitlab.io/website/" + "releases/emacs-guix-" version ".tar.gz")) + (sha256 + (base32 + "0yz64c0z4ygi2k4af18k4r1ncgys18jb8icywkp2g5pgmpn5l7ps")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Add support for Guile 3.0. Remove for versions > 0.5.2. + (substitute* "configure" + (("\"2\\.2 2\\.0\"") + "\"3.0 2.2 2.0\"")) + #t)))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("emacs" ,emacs-minimal))) + (inputs + `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile")) + ("guix" ,guix))) + (propagated-inputs + `(("geiser" ,emacs-geiser) + ("guile-gcrypt" ,guile-gcrypt) + ("dash" ,emacs-dash) + ("bui" ,emacs-bui) + ("edit-indirect" ,emacs-edit-indirect) + ("magit-popup" ,emacs-magit-popup))) + (home-page "https://emacs-guix.gitlab.io/website/") + (synopsis "Emacs interface for GNU Guix") + (description + "Emacs-Guix provides a visual interface, tools and features for the GNU +Guix package manager. Particularly, it allows you to do various package +management tasks from Emacs. To begin with, run @code{M-x guix-about} or +@code{M-x guix-help} command.") + (license license:gpl3+))) + +(define-public emacs-build-farm + (package + (name "emacs-build-farm") + (version "0.2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://notabug.org/alezost/emacs-build-farm.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0i0bwbav5861j2y15j9nd5m9rdqg9q97zgcbld8pivr9nyxy63lz")))) + (build-system emacs-build-system) + (propagated-inputs + `(("bui" ,emacs-bui) + ("magit-popup" ,emacs-magit-popup))) + (home-page "https://notabug.org/alezost/emacs-build-farm") + (synopsis "Emacs interface for Hydra and Cuirass build farms") + (description + "This Emacs package provides an interface for Hydra and +Cuirass (build farms used by Nix and Guix). It allows you to look at +various data related to the build farm projects, jobsets, builds and +evaluations. The entry point is @code{M-x build-farm} command.") + (license license:gpl3+))) + +(define-public emacs-d-mode + (package + (name "emacs-d-mode") + (version "2.0.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0915kb9jcaixgindhj85fmykkhvj31ckp1yg6746fznwdgfrlifv")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-undercover" ,emacs-undercover))) + (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode") + (synopsis "Emacs major mode for editing D code") + (description "This package provides an Emacs major mode for highlighting +code written in the D programming language. This mode is currently known to +work with Emacs 24 and 25.") + (license license:gpl2+))) + +(define-public emacs-extempore-mode + ;; Use the latest commit at time of packaging. There are no releases or tags. + (let ((commit "09518ae6650d7be33a4633a4c0f31b7130d04c6e") + (revision "1")) + (package + (name "emacs-extempore-mode") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/extemporelang/extempore-emacs-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hfza9lzdsz94gxhmzyp9fwviscv19rmnjgd0q613faayn11sjsp")))) + (build-system emacs-build-system) + (home-page "https://github.com/extemporelang/extempore-emacs-mode") + (synopsis "Emacs major mode for Extempore source files") + (description + "This package provides a major mode for editing Extempore code. It can +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") + (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") + (version "20160516.716") + (source + (origin + (method url-fetch) + (uri (string-append "http://melpa.org/packages/keyfreq-" + version ".el")) + (sha256 + (base32 + "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8")))) + (build-system emacs-build-system) + (home-page "https://github.com/dacap/keyfreq") + (synopsis "Track Emacs command frequencies") + (description "@code{emacs-keyfeq} tracks and shows how many times you used +a command.") + (license license:gpl3+))) + +(define-public emacs-olivetti + (package + (name "emacs-olivetti") + (version "1.8.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rnkn/olivetti") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fbj9s49y5yx5i429awv9rybacfgvhwp7v5h0zw67bpgx4qs44pa")))) + (build-system emacs-build-system) + (home-page "https://github.com/rnkn/olivetti") + (synopsis "Emacs minor mode for a nice writing environment") + (description "This package provides an Emacs minor mode that puts writing +in the center.") + (license license:gpl3+))) + +(define-public emacs-undo-tree + (package + (name "emacs-undo-tree") + (version "0.7.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "undo-tree-" version ".el")) + (sha256 + (base32 "018ixl802f076sfyf4gkacpgrdpybin88jd8vq9zgyvc6x2dalfa")))) + (build-system emacs-build-system) + (home-page "http://www.dr-qubit.org/emacs.php") + (synopsis "Treat undo history as a tree") + (description + "Tree-like interface to Emacs undo system, providing +graphical tree presentation of all previous states of buffer that +allows easily move between them.") + (license license:gpl3+))) + +(define-public emacs-s + (package + (name "emacs-s") + (version "1.12.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magnars/s.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1g8mqd13llj007al4nlxxx4z2lcsg3wk970mgjn0avwrhjjgdmmv")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:emacs ,emacs ; FIXME: tests fail with emacs-minimal + #:test-command '("./run-tests.sh"))) + (home-page "https://github.com/magnars/s.el") + (synopsis "Emacs string manipulation library") + (description "This package provides an Emacs library for manipulating +strings.") + (license license:gpl3+))) + +(define-public emacs-symon + (package + (name "emacs-symon") + (version "20160630") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zk-phi/symon") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1q7di9s8k710nx98wnqnbkkhdimrn0jf6z4xkm4c78l6s5idjwlz")))) + (build-system emacs-build-system) + (home-page "https://github.com/zk-phi/symon") + (synopsis "Tiny graphical system monitor") + (description + "Tiny graphical system monitor for the Emacs minibuffer when idle.") + (license license:gpl2+))) + +(define-public emacs-sx + (let ((version "20191229") + (revision "0") + (commit "e9d1093c97507a6d7b4f4710ef65200dae725e5f")) + (package + (name "emacs-sx") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vermiculus/sx.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0m90ddwm8j0y6d1ppqhd2gil1107k202blw6mzm5bdambn4nfqkf")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-markdown-mode" ,emacs-markdown-mode))) + (home-page "https://github.com/vermiculus/sx.el") + (synopsis "Emacs StackExchange client") + (description + "Emacs StackExchange client. Ask and answer questions on +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") + (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") + (version "0.20.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rejeep/f.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a47xk3yp1rp17fqg7ldl3d3fb888h0fz3sysqfdz1bfdgs8a9bk")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/rejeep/f.el") + (synopsis "Emacs API for working with files and directories") + (description "This package provides an Emacs library for working with +files and directories.") + (license license:gpl3+))) + +(define-public emacs-fountain-mode + (package + (name "emacs-fountain-mode") + (version "3.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rnkn/fountain-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08giwg0jwk8zzj2i4cm08322qr6znrnv9a49za7c6j47bykpwj6s")))) + (build-system emacs-build-system) + (home-page "https://github.com/rnkn/fountain-mode") + (synopsis "Major mode for screenwriting in Fountain markup") + (description "Fountain Mode is a scriptwriting program for GNU Emacs +using the Fountain plain text markup format.") + (license license:gpl3+))) + +(define-public emacs-fringe-helper + (let ((commit "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd") + (revision "1")) + (package + (name "emacs-fringe-helper") + (version (git-version "1.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nschum/fringe-helper.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ra9rc53l1gvkqank8apasl3r7wz2yfjrcvmfk3wpxhh24ppxv9d")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/nschum/fringe-helper.el") + (synopsis "Helper functions for fringe bitmaps") + (description + "This package allows fringe bitmaps to be defined with a visual string +representation.") + (license license:gpl2+)))) + +(define-public emacs-git-gutter + (package + (name "emacs-git-gutter") + (version "0.90") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-git-gutter") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1abagq0psip7cgsqbfjv72qy60ywsny0ibsfcn74ldj6a9v17mz5")))) + (build-system emacs-build-system) + (home-page "https://github.com/syohex/emacs-git-gutter") + (synopsis "See and manage hunks of text in a version control system") + (description + "This package is an Emacs minor mode for displaying and interacting with +hunks of text managed in a version control system. Added modified and deleted +areas can be indicated with symbols on the edge of the buffer, and commands +can be used to move between and perform actions on these hunks. + +Git, Mercurial, Subversion and Bazaar are supported, and many parts of the +display and behaviour is easily customisable.") + (license license:gpl3+))) + +(define-public emacs-git-gutter-fringe + (let ((commit "16226caab44174301f1659f7bf8cc67a76153445") + (revision "1")) + (package + (name "emacs-git-gutter-fringe") + (version (git-version "0.23" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/git-gutter-fringe") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1y77gjl0yznamdj0f55d418zb75k22izisjg7ikvrfsl2yfqf3pm")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-git-gutter" ,emacs-git-gutter) + ("emacs-fringe-helper" ,emacs-fringe-helper))) + (home-page "https://github.com/syohex/git-gutter-fringe") + (synopsis "See and manage hunks of text in a version control system") + (description + "This package extends @code{git-gutter} to use the fringe area of a +window.") + (license license:gpl3+)))) + +(define-public emacs-git-link + (package + (name "emacs-git-link") + (version "0.7.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sshaw/git-link") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04xa6lp8wkjb6zs096bf4sz124grcjj15xv1h009bmn2j95rggj6")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/sshaw/git-link") + (synopsis "Create links for files and commits in GitHub/GitLab/etc. repos") + (description + "@code{git-link} returns the URL for the current buffer's file location +at the current line number or active region. @code{git-link-commit} returns +the URL for a commit. URLs are added to the kill ring.") + (license license:gpl3+))) + +(define-public emacs-apheleia + (package + (name "emacs-apheleia") + (version "1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/apheleia") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04pls7zahy4jfkikv6fvd9vfpm4glhyanmmkx79hgi9pwdv966rf")))) + (build-system emacs-build-system) + (home-page "https://github.com/raxod502/apheleia") + (synopsis "Reformat buffer stably") + (description + "This package allows for a buffer to be reformatted without moving point, +so that running a formatting tool like @code{Prettier} or @code{Black} upon +saving won't move point back to the beginning of the buffer.") + (license license:gpl3+))) + +(define-public emacs-git-timemachine + (package + (name "emacs-git-timemachine") + (version "4.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/pidu/git-timemachine.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-transient" ,emacs-transient))) + (home-page "https://gitlab.com/pidu/git-timemachine") + (synopsis "Step through historic versions of Git-controlled files") + (description "This package enables you to step through historic versions +of files under Git version control from within Emacs.") + (license license:gpl3+))) + +(define-public emacs-minitest + (let ((commit "1aadb7865c1dc69c201cecee275751ecec33a182") + (revision "1")) + (package + (name "emacs-minitest") + (version (git-version "0.8.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/arthurnn/minitest-emacs") + (commit commit))) + (file-name (git-file-name name commit)) + (sha256 + (base32 + "1l18zqpdzbnqj2qawq8hj7z7pl8hr8z9d8ihy8jaiqma915hmhj1")))) + (build-system emacs-build-system) + (arguments + '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include) + #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f))) + (home-page "https://github.com/arthurnn/minitest-emacs") + (synopsis "Emacs minitest mode") + (description + "The minitest mode provides commands to run the tests for the current +file or line, as well as rerunning the previous tests, or all the tests for a +project. + +This package also includes relevant snippets for yasnippet.") + (license license:expat)))) + +(define-public emacs-el-mock + (package + (name "emacs-el-mock") + (version "1.25.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rejeep/el-mock.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "13mv1rhgkwiww2wh5w926jz7idppp492wir1vdl245c5x50dh4f7")))) + (build-system emacs-build-system) + (home-page "https://github.com/rejeep/el-mock.el") + (synopsis "Tiny mock and stub framework in Emacs Lisp") + (description + "Emacs Lisp Mock is a library for mocking and stubbing using readable +syntax. Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp +Expectations, but it can be used in other contexts.") + (license license:gpl3+))) + +(define-public emacs-espuds + (package + (name "emacs-espuds") + (version "0.3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ecukes/espuds") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16r4j27j9yfdiy841w9q5ykkc6n3wrm7hvfacagb32mydk821ijg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s) + ("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f))) + (home-page "https://github.com/ecukes/espuds") + (synopsis "Common step definitions for Ecukes") + (description "Espuds is a collection of the most commonly used step +definitions for testing with the Ecukes framework.") + (license license:gpl3+))) + +(define-public emacs-spark + (let ((version "20160503") ; no proper tag, use date of commit + (commit "0bf148c3ede3b31d56fd75f347cdd0b0eae60025") + (revision "1")) + (package + (name "emacs-spark") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alvinfrancis/spark") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ykqr86j17mi95s08d9fp02d7ych1331b04dcqxzxnmpkhwngyj1")))) + (build-system emacs-build-system) + (home-page "https://github.com/alvinfrancis/spark") + (synopsis "Sparkline generation library for Emacs Lisp") + (description "@code{emacs-spark} is a sparkline generation library for +Emacs Lisp. It generates a sparkline string given a list of numbers. It is a +port of @code{cl-spark} to Emacs Lisp.") + (license license:expat)))) + +(define-public emacs-es-mode + (package + (name "emacs-es-mode") + (version "4.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dakrone/es-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1qhfnd5anp5qrmravv7ks5ix763xnki2f5jwcyj70qyxwr0l60cg")))) + (build-system emacs-build-system) + (propagated-inputs + ;; The version of org in Emacs 24.5 is not sufficient, and causes tables + ;; to be rendered incorrectly + `(("emacs-dash" ,emacs-dash) + ("emacs-org" ,emacs-org) + ("emacs-spark" ,emacs-spark))) + (home-page "https://github.com/dakrone/es-mode") + (synopsis "Major mode for editing Elasticsearch queries") + (description "@code{es-mode} includes highlighting, completion and +indentation support for Elasticsearch queries. Also supported are +@code{es-mode} blocks in @code{org-mode}, for which the results of queries can +be processed through @code{jq}, or in the case of aggregations, can be +rendered in to a table. In addition, there is an @code{es-command-center} +mode, which displays information about Elasticsearch clusters.") + (license license:gpl3+))) + +(define-public emacs-expand-region + (package + (name "emacs-expand-region") + (version "0.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magnars/expand-region.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0h40dhc3kn8fq86xnwi5lz7ql8my8737y7wkqr897p15y90swr35")))) + (build-system emacs-build-system) + (home-page "https://github.com/magnars/expand-region.el") + (synopsis "Increase selected region by semantic units") + (description + "Expand region increases the selected region by semantic units. Just +keep pressing the key until it selects what you want. There's also +@code{er/contract-region} if you expand too far.") + (license license:gpl3+))) + +(define-public emacs-fill-column-indicator + (package + (name "emacs-fill-column-indicator") + (version "1.90") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alpaker/Fill-Column-Indicator") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0snjznxdwwfdgccdcvrnk467416r244r2r5qcm2sga8l0ha9gw9z")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator") + (synopsis "Graphically indicate the fill column") + (description + "Fill-column-indicator graphically indicates the location of the fill +column by drawing a thin line down the length of the editing window.") + (license license:gpl3+))) + +(define-public emacs-grep-a-lot + (package + (name "emacs-grep-a-lot") + (version "1.0.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ZungBang/emacs-grep-a-lot") + (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw")))) + (build-system emacs-build-system) + (home-page "https://github.com/ZungBang/emacs-grep-a-lot") + (synopsis "Enables multiple grep buffers in Emacs") + (description + "This Emacs package allows managing multiple grep buffers.") + (license license:gpl3+))) + +(define-public emacs-fd + (package + (name "emacs-fd") + (version "0.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yqrashawn/fd-dired") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fas0fpvym2lyzybwm44gly9jz6a2fpp72yxnwfbqqjkfgk9910y")))) + (build-system emacs-build-system) + (home-page "https://github.com/yqrashawn/fd-dired") + (synopsis "Dired-mode interface for fd result") + (description "This package provides a dired-mode interface for fd's +result.") + (license license:gpl3+))) + +(define-public emacs-rg + (package + (name "emacs-rg") + (version "1.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dajva/rg.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k7x5z7mh9flwih35cqy8chs54rack3nswdcpw5wcpgv6xim227y")))) + (build-system emacs-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'hardcode-rg-path + ;; Hardcode the path to ripgrep. + (lambda _ + (let ((file "rg.el")) + (chmod file #o644) + (emacs-substitute-sexps file + ("(defcustom rg-executable" (which "rg"))))))))) + (propagated-inputs + `(("emacs-s" ,emacs-s) + ("emacs-wgrep" ,emacs-wgrep))) + (inputs + `(("ripgrep" ,ripgrep))) + (home-page "https://rgel.readthedocs.io/en/latest/") + (synopsis "Search tool based on @code{ripgrep}") + (description + "@code{rg} is an Emacs search package based on the @code{ripgrep} command +line tool. It allows one to interactively search based on the editing context +then refine or modify the search results.") + (license license:gpl3+))) + +(define-public emacs-inf-ruby + (package + (name "emacs-inf-ruby") + (version "2.5.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nonsequitur/inf-ruby") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0a1hhvfbl6mq8rjsi77fg9fh5a91hi5scjrg9rjqc5ffbql67y0v")))) + (build-system emacs-build-system) + (home-page "https://github.com/nonsequitur/inf-ruby") + (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs") + (description + "@code{inf-ruby} provides a Read Eval Print Loop (REPL) buffer, allowing +for easy interaction with a ruby subprocess. Features include support for +detecting specific uses of Ruby, e.g. when using rails, and using a +appropriate console.") + (license license:gpl3+))) + +(define-public emacs-znc + (package + (name "emacs-znc") + (version "0.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://marmalade-repo.org/packages/znc-" + version ".el")) + (sha256 + (base32 + "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh")))) + (build-system emacs-build-system) + (home-page "https://github.com/sshirokov/ZNC.el") + (synopsis "Make ERC and ZNC get along better") + (description + "This is a thin wrapper around @code{erc} that enables one to use the ZNC +IRC bouncer with ERC.") + (license license:expat))) + +(define-public emacs-erc-status-sidebar + (let ((commit "ea4189a1dbfe60117359c36e681ad7c389e2968c") + (revision "1")) + (package + (name "emacs-erc-status-sidebar") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/drewbarbs/erc-status-sidebar") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hwlhzgx03z8891sblz56zdp8zj0izh72kxykgcnz5rrkyc3vfi3")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-seq" ,emacs-seq))) + (home-page "https://github.com/drewbarbs/erc-status-sidebar") + (synopsis "Hexchat-like activity overview for ERC channels") + (description + "This package provides a Hexchat-like status bar for joined channels in +ERC, an Emacs client for IRC (Internet Relay Chat). It relies on the +@code{erc-track} module, and displays all the same information +@code{erc-track} does in the mode line, but in an alternative format.") + (license license:expat)))) + +(define-public emacs-shut-up + (package + (name "emacs-shut-up") + (version "0.3.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cask/shut-up") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "103yvfgkj78i4bnv1fwk76izsa8h4wyj3vwj1vq7xggj607hkxzq")))) + (build-system emacs-build-system) + (home-page "https://github.com/cask/shut-up") + (synopsis "Silence Emacs") + (description "This package silences most output of Emacs when running an +Emacs shell script.") + (license license:expat))) + +(define-public emacs-undercover + (package + (name "emacs-undercover") + (version "0.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sviridov/undercover.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "080bmfwyfi8663y8x594770hqz7mff7zvj2v03qdfwbhdr9w9y29")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-shut-up" ,emacs-shut-up))) + (home-page "https://github.com/sviridov/undercover.el") + (synopsis "Test coverage library for Emacs Lisp") + (description + "Undercover is a test coverage library for software written in Emacs +Lisp.") + (license license:expat))) + +(define-public emacs-paren-face + (package + (name "emacs-paren-face") + (version "1.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tarsius/paren-face") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17bdcxah216z928387yx6z9lmp4jsi461n8fwiqaibn2qy5fagas")))) + (build-system emacs-build-system) + (home-page "https://github.com/tarsius/paren-face") + (synopsis "Face for parentheses in Lisp modes") + (description + "This library defines a face named @code{parenthesis} used just for +parentheses. The intended purpose of this face is to make parentheses less +visible in Lisp code by dimming them. Lispers probably don't need to be +constantly made aware of the existence of the parentheses. Dimming them might +be even more useful for people new to Lisp who have not yet learned to +subconsciously blend out the parentheses.") + (license license:gpl3+))) + +(define-public emacs-page-break-lines + (package + (name "emacs-page-break-lines") + (version "0.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/page-break-lines") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1wp974716ih2cz9kdmdz7xwjy1qnnfzdzlfr9kchknagw8d9nn12")))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/page-break-lines") + (synopsis "Display page breaks as tidy horizontal lines") + (description + "This library provides a global mode which displays form feed characters +as horizontal rules.") + (license license:gpl3+))) + +(define-public emacs-simple-httpd + (package + (name "emacs-simple-httpd") + (version "1.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/emacs-web-server") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0dpn92rg813c4pq7a1vzj3znyxzp2lmvxqz6pzcqi0l2xn5r3wvb")))) + (build-system emacs-build-system) + (home-page "https://github.com/skeeto/emacs-web-server") + (synopsis "HTTP server in pure Emacs Lisp") + (description + "This package provides a simple HTTP server written in Emacs Lisp to +serve files and directory listings.") + (license license:unlicense))) + +(define-public emacs-skewer-mode + (package + (name "emacs-skewer-mode") + (version "1.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/skewer-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ha7jl7776pk1bki5zj2q0jy66450mn8xr3aqjc0m9kj3gc9qxgw")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-simple-httpd" ,emacs-simple-httpd) + ("emacs-js2-mode" ,emacs-js2-mode))) + (arguments '(#:include '("\\.el$" "\\.js$" "\\.html$"))) + (home-page "https://github.com/skeeto/skewer-mode") + (synopsis "Live web development in Emacs") + (description + "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in +a web browser. Expressions are sent on-the-fly from an editing buffer to be +evaluated in the browser, just like Emacs does with an inferior Lisp process +in Lisp modes.") + (license license:unlicense))) + +(define-public emacs-litable + (let ((commit "b0278f3f8dcff424bfbdfdefb545b1fbff33206f")) + (package + (name "emacs-litable") + (version (git-version "0.1" "0" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fuco1/litable") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bny40hv9a024n01clxns351cs4j4ifhgcc7m4743xncqf612p7g")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/Fuco1/litable/") + (synopsis "Dynamic evaluation replacement with Emacs") + (description "This package provides dynamic evaluation in Emacs.") + (license license:gpl3+)))) + +(define-public emacs-literate-calc-mode + (let ((commit "e855bd718fa7d0d70b8f43264e10664369dd3a37") + (revision "0")) + (package + (name "emacs-literate-calc-mode") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sulami/literate-calc-mode.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mk4cig8g8ibz97mvyan79fkypyanh7r0h7h20ibafq09nb0mw01")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s))) + (home-page "https://github.com/sulami/literate-calc-mode.el") + (synopsis "Literate programming for Emacs Calc") + (description + "This library provides literate programming for Calc. There is both +a major and a minor mode. The major mode does some basic syntax highlighting, +while the minor mode only evaluates all Calc statements while typing. In +particular, the minor mode works quite well with Org or Markdown modes, or +other markup language major modes.") + (license license:gpl3+)))) + +(define-public emacs-string-inflection + (package + (name "emacs-string-inflection") + (version "1.0.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/akicho8/string-inflection") + (commit "a150e7bdda60b7824d3a936750ce23f73b0e4edd"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k")))) + (build-system emacs-build-system) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner"))) + (home-page "https://github.com/akicho8/string-inflection") + (synopsis "Convert symbol names between different naming conventions") + (description + "This Emacs package provides convenient methods for manipulating the +naming style of a symbol. It supports different naming conventions such as: + +@enumerate +@item camel case +@item Pascal case +@item all upper case +@item lower case separated by underscore +@item etc... +@end enumerate\n") + (license license:gpl2+))) + +(define-public emacs-stripe-buffer + (package + (name "emacs-stripe-buffer") + (version "0.2.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sabof/stripe-buffer") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "035ym1c1vzg6hjsnd258z4dkrfc11lj4c0y4gpgybhk54dq3w9dk")))) + (build-system emacs-build-system) + (home-page "https://github.com/sabof/stripe-buffer/") + (synopsis "Add stripes to list buffers") + (description + "This Emacs package adds faces to add stripes to list buffers and org +tables.") + (license license:gpl2+))) + +(define-public emacs-org-beautify-theme + ;; Latest release (0.4) is not tagged, use commit hash. + (let ((commit "df6a1114fda313e1689363e196c8284fbe2a2738") + (revision "0")) + (package + (name "emacs-org-beautify-theme") + (version "0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jonnay/org-beautify-theme") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lkz7736swimad12khwbbqc4gxjydgr1k45p4mx03s25pv1w920y")))) + (build-system emacs-build-system) + (home-page "https://github.com/jonnay/org-beautify-theme") + (synopsis "Theme to make Org mode look more beautiful") + (description + "The theme adds padding between headings, increases the size of titles, +strike through completed TODO headings, changes Org blocks, changes Org check +boxes, and more.") + (license license:gpl3+)))) + +(define-public emacs-org-rich-yank + (package + (name "emacs-org-rich-yank") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/unhammer/org-rich-yank") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z")))) + (build-system emacs-build-system) + (home-page "https://github.com/unhammer/org-rich-yank") + (synopsis "Automatically surround source code pasted into Org with +@code{#+BEGIN_SRC} blocks") + (description + "This package provides a utility function for Org buffers that makes a +@code{_SRC} block with the appropriate language annotation for code that has +been copied from an Emacs major mode.") + (license license:gpl2+))) + +(define-public emacs-ob-erlang + (let ((revision "1") + (commit "f1a8c665b8f7d0ab32267a9961de8eed872e6333")) + (package + (name "emacs-ob-erlang") + (version (git-version "20180827" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xfwduke/ob-erlang") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0b5zajqiy6955yvlqwy92prrqy89lqchsv4ss2ylws3p4s14rhij")))) + (build-system emacs-build-system) + (home-page "https://github.com/xfwduke/ob-erlang/") + (synopsis "Org-babel support for Erlang") + (description "This package adds support for working with Erlang code +blocks with @code{org-babel} in @code{org-mode}.") + (license license:gpl3+)))) + +(define-public emacs-ob-restclient + (let ((commit "53376667eeddb1388fd6c6976f3222e7c8adcd46")) + (package + (name "emacs-ob-restclient") + (version (git-version "0.02" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alf/ob-restclient.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1djg53cp7y83gic2v71y6r5z76kwrbkp0r69hl25rs99dx6p89dy")))) + (propagated-inputs + `(("emacs-restclient" ,emacs-restclient))) + (build-system emacs-build-system) + (home-page "https://github.com/alf/ob-restclient.el") + (synopsis "Org-babel functionality for @code{restclient-mode}") + (description + "This package integrates @code{restclient-mode} with Org.") + (license license:gpl3+)))) + +(define-public emacs-org-now + (let ((commit "8f6b277a73f1c66e58ccb4b7f40d406851befc91")) + (package + (name "emacs-org-now") + (version (git-version "0.1-pre" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/org-now") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "117zzkryznznk6h4i1jqzdn888nl019xrgxm2gza0lndx8dxsg2c")))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (build-system emacs-build-system) + (home-page "https://github.com/alphapapa/org-now") + (synopsis "Show current Org tasks in a sidebar") + (description + "This package provides commands to show Org headings in a sidebar +window while working on them. After defining one heading as the \"now\" +heading, other headings can be refiled to it with one command, and back to +their original location with another.") + (license license:gpl3+)))) + +(define-public emacs-rich-minority + (package + (name "emacs-rich-minority") + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Malabarba/rich-minority") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1kn7c9qr9ykj68iqffzzmjsr6aazwac8cxb7j960sjb282rq0yyj")))) + (build-system emacs-build-system) + (home-page "https://github.com/Malabarba/rich-minority") + (synopsis "Clean-up and beautify the list of minor modes") + (description + "This Emacs package hides and/or highlights minor modes in the +mode-line.") + (license license:gpl2+))) + +(define-public emacs-robe + (package + (name "emacs-robe") + (version "0.8.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dgutov/robe") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qw18wi54yg971n4wnjqkd8lqj5lbs9ra8bvmngif2bzhqlfdsbn")))) + (build-system emacs-build-system) + (arguments + '(#:include (cons "^lib\\/" %default-include))) + (propagated-inputs + `(("emacs-inf-ruby" ,emacs-inf-ruby))) + (home-page "https://github.com/dgutov/robe") + (synopsis "Ruby code assistance tool for Emacs") + (description + "Robe can provide information on loaded classes and modules in Ruby code, +as well as where methods are defined. This allows the user to jump to method +definitions, modules and classes, display method documentation and provide +method and constant name completion.") + (license license:gpl3+))) + +(define-public emacs-robot-mode + (let ((commit "32846e7e80ae3471b7c07f9709dcaa4f9b9ed4a0") + (revision "1")) + (package + (name "emacs-robot-mode") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + ;; A better maintained fork of robot-mode. + (url "https://github.com/jvalkeejarvi/robot-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1i8wf7m0gml8zvvmlgppjzv78b432686p1qdbzgclc7qfcvzag0d")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-s" ,emacs-s))) + (home-page "https://github.com/jvalkeejarvi/robot-mode") + (synopsis "Emacs mode for Robot Framework") + (description "This major mode facilitates editing Robot Framework source +files with features such as syntax highlighting, comments, finding keywords, +completing keywords and smart indentation.") + (license license:gpl3+)))) + +(define-public emacs-rspec + (let ((commit "66ea7cc9699d6edc6115daa024818adbd85efc20") + (revision "1")) + (package + (name "emacs-rspec") + (version (git-version "1.11" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pezra/rspec-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b11s8r0pi7ah54km4yg4fqff8wkk409d25qnlwm1l94pdwjd1c8")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons "^snippets\\/rspec-mode\\/" %default-include) + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/pezra/rspec-mode") + (synopsis "Provides a rspec mode for working with RSpec") + (description + "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to +verify the spec associated with the current buffer, or entire project, as well +as moving between the spec files, and corresponding code files. + +Also included are keybindings for spec files and Dired buffers, as well as +snippets for yasnippet.") + (license license:gpl3+)))) + +(define-public emacs-smart-mode-line + (package + (name "emacs-smart-mode-line") + (version "2.13") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Malabarba/smart-mode-line") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "164b697xm1rwcggv37dymhf3npbyh2bs59z8b6m5x35lb4c3lf8b")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-rich-minority" ,emacs-rich-minority))) + (home-page "https://github.com/Malabarba/smart-mode-line") + (synopsis "Color-coded smart mode-line") + (description + "Smart Mode Line is a mode-line theme for Emacs. It aims to be easy to +read from small to large monitors by using colors, a prefix feature, and smart +truncation.") + (license license:gpl2+))) + +(define-public emacs-sr-speedbar + (let ((commit "77a83fb50f763a465c021eca7343243f465b4a47") + (revision "0")) + (package + (name "emacs-sr-speedbar") + (version (git-version "20161025" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsorphanage/sr-speedbar") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0sd12555hk7z721y00kv3crdybvcn1i08wmd148z5imayzibj153")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/SrSpeedbar") + (synopsis "Same frame Emacs @code{speedbar}") + (description + "This Emacs package allows you to show @code{M-x speedbar} in the +same frame (in an extra window). You can customize the initial width of +the speedbar window.") + (license license:gpl3+)))) + +(define-public emacs-shell-switcher + (package + (name "emacs-shell-switcher") + (version "1.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DamienCassou/shell-switcher") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ia7sdip4hl27avckv3qpqgm3k4ynvp3xxq1cy53bqfzzx0gcria")))) + (build-system emacs-build-system) + (home-page "https://github.com/DamienCassou/shell-switcher") + (synopsis "Provide fast switching between shell buffers") + (description + "This package provides commands to quickly switch between shell buffers.") + (license license:gpl3+))) + +(define-public emacs-shx + (package + (name "emacs-shx") + (version "1.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/riscy/shx-for-emacs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0p9b621rgy34r1hl9xfzxh4xpx9gpsr3n330ypfxhlr0s5754j73")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; A docstring provides examples of mapping hosts to programs in /bin. + ;; These examples are valid as-is. + (delete 'patch-el-files)) + #:tests? #t + #:test-command + '("emacs" "--batch" "--quiet" + "--script" "test/script.el"))) + (home-page "https://github.com/riscy/shx-for-emacs") + (synopsis "Extras for the comint-mode shell") + (description + "This package extends @code{comint-mode}: it parses markup in the output +stream, enabling plots and graphics to be embedded, and adds command-line +functions which plug into Emacs (e.g. use @code{:e } to edit a +file).") + (license license:gpl3+))) + +(define-public emacs-names + (let ((commit "d8baba5360e5253938a25d3e005455b6d2d86971") + (version "20151201.0") + (revision "8")) + (package + (name "emacs-names") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Malabarba/names") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11wyha2q8y7bzqq3jrzix8n97ywvsibvddrahqcps1a1yqk4hzfz")))) + (build-system emacs-build-system) + (home-page "https://github.com/Malabarba/names/") + (synopsis "Namespace implementation for Emacs Lisp") + (description + "This package provides a macro that writes your namespaces for you.") + (license license:gpl3+)))) + +(define-public emacs-evil-leader + (package + (name "emacs-evil-leader") + (version "0.4.3") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/cofi/evil-leader") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1k2zinchs0jjllp8zkpggckyy63dkyi5yig3p46vh4w45jdzysk5")))) + (inputs + `(("emacs-evil" ,emacs-evil))) + (build-system emacs-build-system) + (home-page "https://github.com/cofi/evil-leader") + (synopsis "Implement feature from Vim") + (description + "Evil Leader provides the @code{} feature from Vim that provides +an easy way to bind keys under a configurable prefix key.") + (license license:gpl3+))) + +(define-public emacs-evil-textobj-syntax + (let ((commit "2d9ba8c75c754b409aea7469f46a5cfa52a872f3") + (version "0") + (revision "1")) + (package + (name "emacs-evil-textobj-syntax") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/laishulu/evil-textobj-syntax/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "031p5i3274dazp7rz6m5y38shfgszm1clmkcf58qfqlvy978ammc")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil) + ("emacs-names" ,emacs-names))) + (home-page "https://github.com/laishulu/evil-textobj-syntax/") + (synopsis "Text objects based on syntax highlighting") + (description + "This package provides text objects for @code{evil-mode} with +boundaries defined by syntax highlighting.") + (license license:gpl3+)))) + +(define-public emacs-flycheck-flow + (let ((commit "9e8e52cfc98af6a23fd906f9cb5d5d470d8cf82d") + (version "1.1") + (revision "1")) + (package + (name "emacs-flycheck-flow") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lbolla/emacs-flycheck-flow") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14qldlisbmxzammr500gyha2hiv2xgyzfc6mysqii06kbcqn1ik1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-flycheck" ,emacs-flycheck))) + (home-page "https://github.com/lbolla/emacs-flycheck-flow") + (synopsis "Flow support for @code{flycheck-mode}") + (description + "This package allows @code{flycheck-mode} to provide syntax-checking +for Flow files.") + (license license:gpl3+)))) + +(define-public emacs-flycheck-grammalecte + (package + (name "emacs-flycheck-grammalecte") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://git.deparis.io/" + "flycheck-grammalecte/snapshot/" + "flycheck-grammalecte-" version ".tar.xz")) + (sha256 + (base32 "1mzmzyik843r4j0ibpwqrxmb0g4xmirrf3lxr010bddkmmxf749a")))) + (build-system emacs-build-system) + (arguments + `(#:include '("\\.(el|py)$") + #:exclude '("^test-profile.el$") + #:emacs ,emacs ;need libxml support + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'specify-python-location + ;; Hard-code python3 executable location in the library. + (lambda* (#:key inputs #:allow-other-keys) + (let ((python3 (string-append (assoc-ref inputs "python") + "/bin/python3"))) + (substitute* "flycheck-grammalecte.el" + (("\"python3") (string-append "\"" python3))) + (substitute* '("conjugueur.py" "flycheck-grammalecte.py") + (("/usr/bin/env python3?") python3)) + #t))) + (add-before 'build 'link-to-grammalecte + ;; XXX: The Python part of the package requires grammalecte, but + ;; the library is not specified in PYTHONPATH, since we're not + ;; using Python build system. As a workaround, we symlink + ;; grammalecte libraries here. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (grammalecte (assoc-ref inputs "grammalecte")) + (version ,(version-major+minor (package-version python)))) + (with-directory-excursion + (string-append out "/share/emacs/site-lisp") + (symlink (string-append grammalecte "/lib/" + "python" version "/site-packages/" + "grammalecte") + "grammalecte")) + #t)))))) + (inputs + `(("grammalecte" ,grammalecte) + ("python" ,python))) + (propagated-inputs + `(("emacs-flycheck" ,emacs-flycheck))) + (home-page "https://git.deparis.io/flycheck-grammalecte/") + (synopsis "Integrate Grammalecte with Flycheck") + (description + "Integrate the French grammar and typography checker Grammalecte with +Flycheck to automatically look for mistakes in your writings. It also +provides an easy way to find synonyms and antonyms for a given word (to avoid +repetitions for example).") + (license license:gpl3+))) + +(define-public emacs-flycheck-guile + (package + (name "emacs-flycheck-guile") + (version "0.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/flatwhatson/flycheck-guile") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cs5r0ik6a3bl1k3imjl0r8y1i69kx9x9m9cgxj470qk34brwyj5")))) + (propagated-inputs + `(("emacs-flycheck" ,emacs-flycheck) + ("emacs-geiser" ,emacs-geiser))) + (build-system emacs-build-system) + (home-page "https://github.com/flatwhatson/flycheck-guile") + (synopsis "GNU Guile support for Flycheck") + (description + "This package provides a Flycheck checker for GNU Guile using @code{guild +compile}.") + (license license:gpl3+))) + +(define-public emacs-flycheck-ledger + (package + (name "emacs-flycheck-ledger") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/flycheck-ledger.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1djrj3is0dzrl2703bw7bclf33dp4xqmy144q7xj5pvpb9v3kf50")))) + (inputs `(("ledger" ,ledger))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((ledger (assoc-ref inputs "ledger"))) + ;; Specify the absolute executable location of ledger. + (substitute* "flycheck-ledger.el" + (("\"ledger\"") (string-append "\"" ledger "\"")))) + #t))))) + (propagated-inputs + `(("emacs-flycheck" ,emacs-flycheck))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/flycheck-ledger") + (synopsis "Ledger support for Flycheck") + (description + "This Flycheck checker uses the output of @code{ledger balance} on the +current file to find errors such as unbalanced transactions and syntax +errors.") + (license license:gpl3+))) + +(define-public emacs-flycheck-rust + (package + (name "emacs-flycheck-rust") + (version "1.1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/flycheck/flycheck-rust") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1fh6j5w2387nh2fwwjphkhq17cgj5m2q5k0fhidvgc2w65lzbr1r")))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-let-alist" ,emacs-let-alist))) + (build-system emacs-build-system) + (home-page "https://github.com/flycheck/flycheck-rust") + (synopsis "Rust/Cargo support for Flycheck") + (description + "This Flycheck extension configures Flycheck automatically for +the current Cargo project.") + (license license:gpl3+))) + +(define-public emacs-elisp-demos + (package + (name "emacs-elisp-demos") + (version "2020.02.19") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xuchunyang/elisp-demos") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mckgaz92v3y2vlkggx9kd51fd1mahylw39c42l51dyv8wscm7sc")))) + (build-system emacs-build-system) + (arguments + `(#:include '("\\.el$" "\\.org$") + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/xuchunyang/elisp-demos/") + (synopsis "Enhance @code{*Help*} buffers with additional examples") + (description + "This package injects example uses of Elisp functions into their +respective @code{*Help*} buffers.") + (license license:gpl3+))) + +(define-public emacs-docker-compose-mode + (package + (name "emacs-docker-compose-mode") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/meqif/docker-compose-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fbcxwfvm33xcdj3cs26d9i1zyrryyjjkv7sc3mfxd45nq8d3ivj")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f))) + (home-page "https://github.com/meqif/docker-compose-mode/") + (synopsis "Major mode for editing @file{docker-compose} files") + (description + "This is a major mode for @file{docker-compose} files that provides +completion of relevant keywords.") + (license license:expat))) + +(define-public emacs-dvc + (let ((revision "591") ;no tags or official releases + (guix-revision "1")) + (package + (name "emacs-dvc") + (version (string-append "0.0.0-" guix-revision "." revision)) + (source + (origin + (method bzr-fetch) + (uri (bzr-reference + (url "lp:dvc") + (revision revision))) + (sha256 + (base32 + "03pqn493w70wcpgaxvqnfgynxghw114l9pyiv3r414d84vzhan6h")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-lispdir=" (assoc-ref %outputs "out") + "/share/emacs/site-lisp/")) + #:tests? #f ;no test suite + #:phases + (modify-phases %standard-phases + (add-before 'build 'set-home + ;; Something in dvc-bookmarks.el attempts to write config files in + ;; $HOME during the autoload generation. + (lambda _ (setenv "HOME" (getenv "TMPDIR")) #t)) + (add-before 'build 'fix-texinfo + ;; See https://bugs.launchpad.net/dvc/+bug/1264383. + (lambda _ + (substitute* "texinfo/dvc-intro.texinfo" + (("@itemx update ``to''") + "@item update ``to''") + (("@itemx brief") + "@item brief") + (("@itemx full") + "@item full") + (("@itemx drop") + "@item drop") + (("@itemx left file") + "@item left file")) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) ;for aclocal + ("emacs" ,emacs-minimal) + ("texinfo" ,texinfo))) + (home-page "http://xsteve.at/prg/emacs_dvc/index.html") + (synopsis "Emacs front-end for various distributed version control systems.") + (description "DVC is a legacy Emacs front-end for a number of +distributed version control systems. It currently supports GNU Arch, GNU +Bazaar, git, Mercurial, and Monotone. It also provides some integration with +Gnus, e.g., for applying patches received by email.") + (license license:gpl2+)))) + +(define-public emacs-sudo-edit + (let ((commit "cc3d478937b1accd38742bfceba92af02ee9357d") + (revision "6")) + (package + (name "emacs-sudo-edit") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nflath/sudo-edit") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qv58x5j5a3v1s2ylhck1ykbfclq0mbi0gsvaql3nyv8cxazqlwl")))) + (build-system emacs-build-system) + (native-inputs + `(("emacs-undercover" ,emacs-undercover))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("\\$\\(CASK\\) exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/nflath/sudo-edit/") + (synopsis "Open files as another user") + (description + "This package allows editing files as another user, including the root +user.") + (license license:gpl3+)))) + +(define-public emacs-miniedit + (package + (name "emacs-miniedit") + (version "2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsmirror/miniedit") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1850z96gly0jnr50472idqz1drzqarr0n23bbasslrc501xkg0bq")))) + (build-system emacs-build-system) + (home-page "https://github.com/emacsmirror/miniedit/") + (synopsis "Enhanced editing for minibuffer fields") + (description + "This package provides a function that can be called from the +minibuffer to enable editing the minibuffer input in another buffer with +@code{text-mode} enabled.") + (license license:gpl2+))) + +(define-public emacs-ob-ipython + (package + (name "emacs-ob-ipython") + (version "20180224") + (source (origin + (method git-fetch) + (uri (git-reference + (commit "7147455230841744fb5b95dcbe03320313a77124") + (url "https://github.com/gregsexton/ob-ipython"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a10fc2jk37ni5sjjvf87s5nyaz2a6h2mlj5dxh4dhv5sd3bb85p")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-f" ,emacs-f))) + (home-page "http://www.gregsexton.org") + (synopsis "Org-Babel functions for IPython evaluation") + (description "This package adds support to Org-Babel for evaluating Python +source code using IPython.") + (license license:gpl3+))) + +(define-public emacs-debbugs + (package + (name "emacs-debbugs") + (version "0.25") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/debbugs-" + version ".tar")) + (sha256 + (base32 "0h0pxav170yzfpjf4vb8simiw67x9dkcjx9m4ghdk6wia25y8jni")))) + (build-system emacs-build-system) + (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$"))) + (propagated-inputs + `(("emacs-async" ,emacs-async))) + (home-page "https://elpa.gnu.org/packages/debbugs.html") + (synopsis "Access the Debbugs bug tracker in Emacs") + (description + "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug +Tracker} from within Emacs. + +For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs, +and the command @code{M-x debbugs-gnu-search} for bug searching. If you +prefer the listing of bugs as TODO items of @code{org-mode}, you could use +@code{M-x debbugs-org} and related commands. + +A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug +Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.") + (license license:gpl3+))) + +(define-public emacs-ert-expectations + (package + (name "emacs-ert-expectations") + (version "0.2") + (source + (origin + (method url-fetch) + (uri "https://www.emacswiki.org/emacs/download/ert-expectations.el") + (sha256 + (base32 + "0cwy3ilsid90abzzjb7ha2blq9kmv3gfp3icwwfcz6qczgirq6g7")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/ert-expectations.el") + (synopsis "Simple unit test framework for Emacs Lisp") + (description "@code{emacs-ert-expectations} is a simple unit test +framework for Emacs Lisp to be used with @code{ert}.") + (license license:gpl3+))) + +(define-public emacs-deferred + (package + (name "emacs-deferred") + (version "0.5.1") + (home-page "https://github.com/kiwanami/emacs-deferred") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-shell + ;; Setting the SHELL environment variable is required for the tests + ;; to find sh. + (lambda _ + (setenv "SHELL" (which "sh")) + #t)) + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("\\$\\(CASK\\) exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) + (native-inputs + `(("emacs-ert-expectations" ,emacs-ert-expectations) + ("emacs-undercover" ,emacs-undercover) + ("ert-runner" ,emacs-ert-runner))) + (synopsis "Simple asynchronous functions for Emacs Lisp") + (description + "The @code{deferred.el} library provides support for asynchronous tasks. +The API is almost the same as that of +@uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library +for asynchronous tasks.") + (license license:gpl3+))) + +(define-public emacs-butler + (package + (name "emacs-butler") + (version "0.2.4") + (home-page "https://github.com/AshtonKem/Butler") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-deferred" ,emacs-deferred))) + (synopsis "Emacs client for Jenkins") + (description + "Butler provides an interface to connect to Jenkins continuous +integration servers. Users can specify a list of server in the +@code{butler-server-list} variable and then use @code{M-x butler-status} to +view the build status of those servers' build jobs, and possibly to trigger +build jobs.") + (license license:gpl3+))) + +(define-public emacs-company + (package + (name "emacs-company") + (version "0.9.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "company-" version ".tar")) + (sha256 + (base32 "1c9x9wlzzsn7vrsm57l2l44nqx455saa6wrm853szzg09qn8dlnw")))) + (build-system emacs-build-system) + (home-page "https://company-mode.github.io/") + (synopsis "Modular text completion framework") + (description + "Company is a modular completion mechanism. Modules for retrieving +completion candidates are called back-ends, modules for displaying them are +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") + (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") + (version "1.4.0") + (home-page "https://github.com/Sarcasm/irony-mode") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append home-page ".git")) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0n2nfcq58md1p2xdhq1smh8v7lsyj0ci7ma5xyd6bkg5rvhsh10i")))) + (build-system emacs-build-system) + (inputs `(("server" ,emacs-irony-mode-server))) + (arguments `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (chmod "irony.el" #o644) + (emacs-substitute-variables "irony.el" + ("irony-server-install-prefix" + (assoc-ref inputs "server"))) + #t))))) + (synopsis "C/C++/ObjC Code completion and syntax checks for Emacs") + (description "Irony-mode provides Clang-assisted syntax checking and +completion for C, C++, and ObjC in GNU Emacs. Using @code{libclang} it can +provide syntax checking and autocompletion on compiler level which is very +resistant against false positives. It also integrates well with other +packages like @code{eldoc-mode} and especially @code{company-mode} as +described on the homepage.") + (license license:gpl3+))) + +(define-public emacs-irony-mode-server + (package (inherit emacs-irony-mode) + (name "emacs-irony-mode-server") + (inputs + `(("clang" ,clang))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (invoke "cmake" + "server" + (string-append "-DCMAKE_INSTALL_PREFIX=" out)) #t)))))) + (build-system cmake-build-system) + (synopsis "Server for the Emacs @dfn{irony mode}"))) + +(define-public emacs-company-irony + (package + (name "emacs-company-irony") + (version "1.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Sarcasm/company-irony") + (commit (string-append "v" version)))) + (sha256 (base32 + "1qgyam2vyjw90kpxns5cd6bq3qiqjhzpwrlvmi18vyb69qcgqd8a")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (inputs + `(("emacs-irony-mode" ,emacs-irony-mode) + ("emacs-company" ,emacs-company))) + (synopsis "C++ completion backend for Company using irony-mode") + (description "This backend for company-mode allows for C++ code completion +with irony-mode using clang-tooling.") + (home-page "https://github.com/Sarcasm/company-irony") + (license license:gpl3+))) + +(define-public emacs-flycheck-irony + (package + (name "emacs-flycheck-irony") + (version "0.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Sarcasm/flycheck-irony") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qa5a8wzvzxwqql92ibc9s43k8sj3vwn7skz9hfr8av0skkhx996")))) + (build-system emacs-build-system) + (inputs + `(("irony-mode" ,emacs-irony-mode) + ("flycheck-mode" ,emacs-flycheck) + ("emacs-company" ,emacs-company))) + (synopsis "Live syntax checking frontend for Flycheck using irony-mode") + (description "This package provides a frontend for Flycheck that lets +irony-mode do the syntax checking.") + (home-page "https://github.com/Sarcasm/flycheck-irony") + (license license:gpl3+))) + +(define-public emacs-irony-eldoc + (package + (name "emacs-irony-eldoc") + (version (package-version emacs-irony-mode)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ikirill/irony-eldoc") + (commit "0df5831eaae264a25422b061eb2792aadde8b3f2"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1l5qpr66v1l12fb50yh73grb2rr85xxmbj19mm33b5rdrq2bqmmd")))) + (build-system emacs-build-system) + (inputs + `(("irony-mode" ,emacs-irony-mode))) + (synopsis "Eldoc integration for irony-mode") + (description "Irony-eldoc is an eldoc extension that shows documentation +for the current function or variable in the minibuffer.") + (home-page "https://github.com/ikirill/irony-eldoc") + (license license:gpl3+))) + +(define-public emacs-company-quickhelp + ;; XXX: release version 2.3.0 is on an unmaintained branch for some reason, + ;; so we use the latest 2.2.0 commit instead + (let ((commit "479676cade80a9f03802ca3d956591820ed5c537") + (revision "1")) + (package + (name "emacs-company-quickhelp") + (version (git-version "2.2.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/expez/company-quickhelp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-pos-tip" ,emacs-pos-tip) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/expez/company-quickhelp") + (synopsis "Popup documentation for completion candidates") + (description "@code{company-quickhelp} shows documentation for the +completion candidate when using the Company text completion framework.") + (license license:gpl3+)))) + +(define-public emacs-math-symbol-lists + (let ((commit "dc7531cff0c845d5470a50c24d5d7309b2ced7eb") + (revision "1")) + (package + (name "emacs-math-symbol-lists") + (version (git-version "1.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vspinu/math-symbol-lists") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "094m21i9rns6m59cmhxcivxxafbg52w8f8na4y3v47aq67zmhhqm")))) + (build-system emacs-build-system) + (home-page "https://github.com/vspinu/math-symbol-lists") + (synopsis "Lists of Unicode math symbols and @code{LaTeX} commands") + (description "This is a storage package used by completion engines like +@code{company-math}.") + (license license:gpl3+)))) + +(define-public emacs-company-coq + (package + (name "emacs-company-coq") + (version "1.0.1") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/cpitclaudel/company-coq") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0dxi4h8xqq5647k7h89s4pi8nwyj3brlhsckrv3p3b1g4dr6mk3b")))) + (inputs + `(("emacs-company" ,emacs-company) + ("emacs-company-math" ,emacs-company-math) + ("emacs-dash" ,emacs-dash) + ("emacs-yasnippet" ,emacs-yasnippet))) + (build-system emacs-build-system) + (home-page "https://github.com/cpitclaudel/company-coq") + (synopsis "Emacs extensions for Proof General's Coq mode") + (description "This package includes a collection of Company mode backends +for Proof-General's Coq mode, and many useful extensions to Proof-General. It +features: + +@itemize +@item Prettification of operators, types, and subscripts, +@item Auto-completion, +@item Insertion of cases, +@item Fully explicit intros, +@item Outlines, code folding, and jumping to definition, +@item Help with errors, +@item and more. +@end itemize") + (license license:gpl3+))) + +(define-public emacs-company-math + (let ((commit "600e49449644f6835f9dc3501bc58461999e8ab9") + (revision "1")) + (package + (name "emacs-company-math") + (version (git-version "1.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vspinu/company-math") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ps2lpkzn8mjbpcbvvy1qz3xbgrh6951x8y9bsd1fm32drdph9lh")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-math-symbol-lists" ,emacs-math-symbol-lists) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/vspinu/company-math") + (synopsis "Completion backends for Unicode math symbols and @code{LaTeX} tags") + (description "This package provides a backend for use with +@code{company-mode} allowing for completion of common math symbols.") + (license license:gpl3+)))) + +(define-public emacs-compdef + (let ((commit "67104a38763cc819644f711248b170a43bce151b") + (revision "2")) + (package + (name "emacs-compdef") + (version (git-version "0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jjzmajic/compdef.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1f6y6cr67gps9jp5hd20xszfd3k26v70g6z4g5db6wdkvlnc2wkg")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/jjzmajic/compdef") + (synopsis "Set local completion backends") + (description "This package provides a function to cleanly set local +completion backends according to mode, and integrates with +@code{use-package}.") + (license license:gpl3+)))) + +(define-public emacs-icomplete-vertical + (package + (name "emacs-icomplete-vertical") + (version "0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oantolin/icomplete-vertical") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1bqnlvv1gvrjriazvzd3bq98r8ii6fqax0zznhvkl1ij5pf55a90")))) + (build-system emacs-build-system) + (home-page "https://github.com/oantolin/icomplete-vertical") + (synopsis "Display icomplete candidates vertically") + (description + "This package defines a global minor mode to display Icomplete +completion candidates vertically.") + (license license:gpl3+))) + +(define-public emacs-handle + (let ((commit "51c050bc1c6e5caf0eb47ecd985daea1db7241ab") + (revision "2")) + (package + (name "emacs-handle") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jjzmajic/handle.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14f15qzfmwdslml4rv37zb5d1lsjf0jibriz636hb7q7knx1n4sg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-parent-mode" ,emacs-parent-mode))) + (home-page "https://gitlab.com/jjzmajic/handle") + (synopsis "Handle generic functions across related major modes") + (description "This package provides generic functions that specialize on +major modes and intended purpose rather than on arguments. Different +callables for tasks like expression evaluation, definition-jumping, and more +can now be grouped accordingly and tried in sequence until one of them +succeeds.") + (license license:gpl3+)))) + +(define-public emacs-nswbuff + (let ((commit "362da7f3687e2eb5bb11667347de85f4a9d002bc") + (revision "1")) + (package + (name "emacs-nswbuff") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joostkremers/nswbuff") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l2xfz8z5qd4hz3kv6zn7h6qq3narkilri8a071y1n8j31jps4ma")))) + (build-system emacs-build-system) + (home-page "https://github.com/joostkremers/nswbuff") + (synopsis "Quickly switch between buffers") + (description "This package allows for navigating between buffers within +a customizable list.") + (license license:gpl3+)))) + +(define-public emacs-phi-search + (let ((commit "9a089b8271cb1cff9640848850298c9ec855286c") + (revision "1")) + (package + (name "emacs-phi-search") + (version (git-version "20160630" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zk-phi/phi-search") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1gr5plcbrfdc4pglfj905s89hf8x0kc083h30wcnd81bnw9jwz1x")))) + (build-system emacs-build-system) + (home-page "https://github.com/zk-phi/phi-search") + (synopsis "Interactive search compatible with @code{multiple-cursors}") + (description "This package can be used with @code{multiple-cursors} to +provide an incremental search that moves all fake cursors in sync.") + (license license:gpl2+)))) + +(define-public emacs-phi-search-mc + (let ((commit "7aa671910f766437089aec26c3aa7814222d1356") + (revision "1")) + (package + (name "emacs-phi-search-mc") + (version (git-version "2.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/knu/phi-search-mc.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wr86ad0yl52im6b9z0b9pzmhcn39qg5m9878yfv1nbxliw40lcd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-phi-search" ,emacs-phi-search) + ("emacs-multiple-cursors" ,emacs-multiple-cursors))) + (home-page "https://github.com/knu/phi-search-mc.el") + (synopsis "Extend @code{phi-search} with additional +@code{multiple-cursors} functionality") + (description "This package provides further integration between +@code{multiple-cursors} and @code{phi-search}, a package that allows for +interactive searches to move multiple fake cursors.") + (license license:bsd-2)))) + +(define-public emacs-multiple-cursors + (package + (name "emacs-multiple-cursors") + (version "1.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magnars/multiple-cursors.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ijgvzv5r44xqvz751fd5drbvrspapw6xwv47582w255j363r6ss")))) + (build-system emacs-build-system) + (home-page "https://github.com/magnars/multiple-cursors.el") + (synopsis "Multiple cursors for Emacs") + (description + "This package adds support to Emacs for editing text with multiple +simultaneous cursors.") + (license license:gpl3+))) + +(define-public emacs-mc-extras + (let ((commit "053abc52181b8718559d7361a587bbb795faf164") + (revision "1")) + (package + (name "emacs-mc-extras") + (version (git-version "1.2.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/knu/mc-extras.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "16y48qrd20m20vypvys5jp4v4gc1qrqlkm75s1pk1r68i9zrw481")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-multiple-cursors" ,emacs-multiple-cursors))) + (home-page "https://github.com/knu/mc-extras.el") + (synopsis "Extra functions for manipulating multiple cursors") + (description + "This package provides additional functions for +@code{multiple-cursors}, including functions for marking s-expressions, +comparing characters, removing cursors, and more.") + (license license:bsd-2)))) + +(define-public emacs-typo + (package + (name "emacs-typo") + (version "1.1") + (home-page "https://github.com/jorgenschaefer/typoel") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2")))) + (build-system emacs-build-system) + (synopsis "Minor mode for typographic editing") + (description + "This package provides two Emacs modes, @code{typo-mode} and +@code{typo-global-mode}. These modes automatically insert Unicode characters +for quotation marks, dashes, and ellipses. For example, typing @kbd{\"} +automatically inserts a Unicode opening or closing quotation mark, depending +on context.") + (license license:gpl3+))) + +(define-public emacs-company-lsp + (package + (name "emacs-company-lsp") + (version "2.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tigersoldier/company-lsp") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hy1x2w0yp5brm7714d1hziz3rpkywb5jp3yj78ibmi9ifny9vri")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-lsp-mode" ,emacs-lsp-mode) + ("emacs-company" ,emacs-company) + ("emacs-s" ,emacs-s) + ("emacs-dash" ,emacs-dash))) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup))) + (arguments + `(#:tests? #t + #:test-command '("buttercup" "-L" "."))) + (home-page "https://github.com/tigersoldier/company-lsp") + (synopsis "Completion for @code{lsp-mode}") + (description + "This package provides completion features that are not possible with +@code{lsp-mode} and @code{company-capf} alone, including support for trigger +characters and asynchronous fetching of completion candidates.") + (license license:gpl3+))) + +(define-public emacs-scala-mode + (package + (name "emacs-scala-mode") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hvesalai/emacs-scala-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1072lsin7dxadc0xyhy42wd0cw549axbbd4dy95wfmfcc1xbzjwv")))) + (build-system emacs-build-system) + (home-page "https://github.com/hvesalai/emacs-scala-mode") + (synopsis "Emacs major mode for Scala") + (description + "This package provides basic Emacs support for the Scala language, +including: local indenting of code, comments and multi-line strings, motion +commands and highlighting.") + ;; There are no copyright headers in the source code. The LICENSE file + ;; indicates GPL3. + (license license:gpl3))) + +(define-public emacs-scheme-complete + (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5")) + (package + (name "emacs-scheme-complete") + (version (string-append "20151223." (string-take commit 8))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ashinn/scheme-complete") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x")) + (patches + (search-patches "emacs-scheme-complete-scheme-r5rs-info.patch")))) + (build-system emacs-build-system) + (home-page "https://github.com/ashinn/scheme-complete") + (synopsis "Smart tab completion for Scheme in Emacs") + (description + "This file provides a single function, @code{scheme-smart-complete}, +which you can use for intelligent, context-sensitive completion for any Scheme +implementation in Emacs. To use it just load this file and bind that function +to a key in your preferred mode.") + (license license:public-domain)))) + +(define-public emacs-scel + (let ((version "20170629") + (revision "1") + (commit "aeea3ad4be9306d14c3a734a4ff54fee10ac135b")) + (package + (name "emacs-scel") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/supercollider/scel") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw")))) + (build-system emacs-build-system) + (arguments + `(#:modules ((guix build emacs-build-system) + ((guix build cmake-build-system) #:prefix cmake:) + (guix build utils)) + #:imported-modules (,@%emacs-build-system-modules + (guix build cmake-build-system)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "el/CMakeLists.txt" + (("share/emacs/site-lisp/SuperCollider") + (string-append + "share/emacs/site-lisp"))) + ((assoc-ref cmake:%standard-phases 'configure) + #:outputs outputs + #:configure-flags '("-DSC_EL_BYTECOMPILE=OFF")))) + (add-after 'add-source-to-load-path 'add-el-dir-to-emacs-load-path + (lambda _ + (setenv "EMACSLOADPATH" + (string-append (getcwd) "/el:" (getenv "EMACSLOADPATH"))) + #t)) + (replace 'install (assoc-ref cmake:%standard-phases 'install))))) + (inputs + `(("supercollider" ,supercollider))) + (native-inputs + `(("cmake" ,cmake-minimal))) + (home-page "https://github.com/supercollider/scel") + (synopsis "SuperCollider Emacs interface") + (description "@code{emacs-scel} is an Emacs interface to SuperCollider. +SuperCollider is a platform for audio synthesis and algorithmic composition.") + (license license:gpl2+)))) + +(define-public emacs-company-auctex + (let ((commit "48c42c58ce2f0e693301b0cb2d085055410c1b25") + (revision "1")) + (package + (name "emacs-company-auctex") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alexeyr/company-auctex") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10qn7frn5wcmrlci3v6iliqzj7r9dls87h9zp3xkgrgn4bqprfp8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-yasnippet" ,emacs-yasnippet) + ("emacs-auctex" ,emacs-auctex) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/alexeyr/company-auctex/") + (synopsis "Completion for @code{AUCTeX}") + (description + "This package provides a group of backends permitting auto-completion +for @code{AUCTeX}.") + (license license:gpl3+)))) + +(define-public emacs-mit-scheme-doc + (package + (name "emacs-mit-scheme-doc") + (version "20140203") + (source + (origin + (modules '((guix build utils))) + (snippet + ;; keep only file of interest + '(begin + (for-each delete-file '("dot-emacs.el" "Makefile")) + (install-file "6.945-config/mit-scheme-doc.el" ".") + (delete-file-recursively "6.945-config") + #t)) + (file-name (string-append name "-" version ".tar.bz2")) + (method url-fetch) + (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/" + "6.945/dont-panic/emacs-basic-config.tar.bz2")) + (sha256 + (base32 + "0dqidg2bd66pawqfarvwca93w5gqf9mikn1k2a2rmd9ymfjpziq1")))) + (build-system emacs-build-system) + (inputs `(("mit-scheme" ,mit-scheme))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure-doc + (lambda* (#:key inputs #:allow-other-keys) + (let* ((mit-scheme-dir (assoc-ref inputs "mit-scheme")) + (doc-dir (string-append mit-scheme-dir "/share/doc/" + "mit-scheme-" + ,(package-version mit-scheme)))) + (substitute* "mit-scheme-doc.el" + (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/") + (string-append "file:" doc-dir "/mit-scheme-ref/"))))))))) + (home-page "https://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/") + (synopsis "MIT-Scheme documentation lookup for Emacs") + (description + "This package provides a set of Emacs functions to search definitions of +identifiers in the MIT-Scheme documentation.") + (license license:gpl2+))) + +(define-public emacs-constants + (package + (name "emacs-constants") + (version "2.6") + (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fedeinthemix/emacs-constants") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0f5sh6b45a8p9kancjp9jk44ws8ww6x50a0i6zgyyvr7dbvii1a0")))) + (build-system emacs-build-system) + (synopsis "Enter definition of constants into an Emacs buffer") + (description + "This package provides functions for inserting the definition of natural +constants and units into an Emacs buffer.") + (license license:gpl2+))) + +(define-public emacs-tagedit + (package + (name "emacs-tagedit") + (version "1.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/magnars/tagedit") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kq40g46s8kgiafrhdq99h79rz9h5fvgz59k7ralmf86bl4sdmdb")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/magnars/tagedit") + (synopsis "Some paredit-like features for html-mode") + (description + "This package provides a collection of paredit-like functions for editing +in @code{html-mode}.") + (license license:gpl3+))) + +(define-public emacs-slime + (package + (name "emacs-slime") + (version "2.25") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/slime/slime") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0rz54943cbs9lvpc8hnyw5ka60f3bi8x4xykk8pq0lpmv1zbij1x")))) + (build-system emacs-build-system) + (native-inputs + `(("texinfo" ,texinfo))) + (arguments + `(#:include '("\\.el$" "\\.lisp$" "\\.asd$" "contrib") + #:exclude '("^slime-tests.el" "^contrib/test/" + "^contrib/Makefile$" "^contrib/README.md$") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t)) + (add-before 'install 'configure + (lambda* _ + (emacs-substitute-variables "slime.el" + ("inferior-lisp-program" "sbcl")) + #t)) + (add-before 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info-dir (string-append out "/share/info")) + (doc-dir (string-append out "/share/doc/" + ,name "-" ,version)) + (doc-files '("doc/slime-refcard.pdf" + "README.md" "NEWS" "PROBLEMS" + "CONTRIBUTING.md"))) + (with-directory-excursion "doc" + (substitute* "Makefile" + (("infodir=/usr/local/info") + (string-append "infodir=" info-dir))) + (invoke "make" "html/index.html") + (invoke "make" "slime.info") + (install-file "slime.info" info-dir) + (copy-recursively "html" (string-append doc-dir "/html"))) + (for-each (lambda (f) + (install-file f doc-dir) + (delete-file f)) + doc-files) + (delete-file-recursively "doc") + #t)))))) + (home-page "https://github.com/slime/slime") + (synopsis "Superior Lisp Interaction Mode for Emacs") + (description + "SLIME extends Emacs with support for interactive programming in +Common Lisp. The features are centered around @command{slime-mode}, +an Emacs minor mode that complements the standard @command{lisp-mode}. +While lisp-mode supports editing Lisp source files, @command{slime-mode} +adds support for interacting with a running Common Lisp process +for compilation, debugging, documentation lookup, and so on.") + (license (list license:gpl2+ license:public-domain)))) + +(define-public emacs-popup + (package + (name "emacs-popup") + (version "0.5.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/auto-complete/popup-el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qrsz4z9q2bfq9xv4n94mvyslm232v2ql9r1fjycx7rnmpqggiwl")))) + (build-system emacs-build-system) + (home-page "https://github.com/auto-complete/popup-el") + (synopsis "Visual Popup User Interface for Emacs") + (description + "Popup.el is a visual popup user interface library for Emacs. +This provides a basic API and common UI widgets such as popup tooltips +and popup menus.") + (license license:gpl3+))) + +(define-public emacs-python-environment + (package + (name "emacs-python-environment") + (version "0.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/emacs-python-environment/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0q6bib9nr6xiq6npzbngyfcjk87yyvwzq1zirr3z1h5wadm34lsk")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-deferred" ,emacs-deferred))) + (home-page "https://github.com/tkf/emacs-python-environment") + (synopsis "Provides a @code{virtualenv} API in Emacs Lisp") + (description + "This package permits automated installation of tools written in Python.") + (license license:gpl3+))) + +(define-public emacs-jedi + (package + (name "emacs-jedi") + (version "0.2.8") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/emacs-jedi/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1bckxppfzd5gwn0aw4h86igb7igal9axqncq7j8zmflg7zppncf1")))) + (build-system emacs-build-system) + (native-inputs + `(("emacs-mocker" ,emacs-mocker))) + (propagated-inputs + `(("emacs-auto-complete" ,emacs-auto-complete) + ("emacs-python-environment" ,emacs-python-environment) + ("emacs-epc" ,emacs-epc))) + (home-page "https://github.com/tkf/emacs-jedi") + (synopsis "Provides Python completion in Emacs") + (description + "This package provides completion in Python buffers and also helps find +the locations of docstrings, arguments, and functions.") + (license license:gpl3+))) + +(define-public emacs-company-jedi + (package + (name "emacs-company-jedi") + (version "0.04") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-company-jedi") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ihqapp4dv92794rsgyq0rmhwika60cmradqd4bn9b72ss6plxs1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-jedi" ,emacs-jedi) + ("emacs-company" ,emacs-company))) + (home-page "https://github.com/syohex/emacs-company-jedi") + (synopsis "Provides Python completion in @code{company-mode}") + (description + "This package provides a Company backend for Python.") + (license license:gpl3+))) + +(define-public emacs-puppet-mode + (let ((commit "b3ed5057166a4f49dfa9be638523a348b55a2fd2") + (revision "1")) + (package + (name "emacs-puppet-mode") + ;; The last release, 0.3 was several years ago, and there have been many + ;; commits since + (version (git-version "0.3" revision commit)) + (source + (origin + (method url-fetch) + (uri (string-append + "https://raw.githubusercontent.com/voxpupuli/puppet-mode/" + commit "/puppet-mode.el")) + (sha256 + (base32 + "1indycxawsl0p2aqqg754f6735q3cmah9vd886rpn0ncc3ipi1xm")))) + (build-system emacs-build-system) + (home-page "https://github.com/voxpupuli/puppet-mode") + (synopsis "Emacs major mode for the Puppet configuration language") + (description + "This package provides support for the Puppet configuration language, +including syntax highlighting, indentation of expressions and statements, +linting of manifests and integration with Puppet Debugger.") + ;; Also incorporates work covered by the Apache License, Version 2.0 + (license license:gpl3+)))) + +(define-public emacs-god-mode + (package + (name "emacs-god-mode") + (version "2.17.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chrisdone/god-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1d2nrj35fzhnycchi0b7m5mbk5fyq7bgpbkkvc5xzqafclrsnapi")))) + (build-system emacs-build-system) + (home-page "https://github.com/chrisdone/god-mode") + (synopsis "Minor mode for entering commands without modifier keys") + (description + "This package provides a global minor mode for entering Emacs commands +without modifier keys. It's similar to Vim's separation of commands and +insertion mode. When enabled all keys are implicitly prefixed with +@samp{C-} (among other helpful shortcuts).") + (license license:gpl3+))) + +(define-public emacs-jinja2-mode + (package + (name "emacs-jinja2-mode") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/paradoxxxzero/jinja2-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381")))) + (build-system emacs-build-system) + (home-page "https://github.com/paradoxxxzero/jinja2-mode") + (synopsis "Major mode for jinja2") + (description + "Emacs major mode for jinja2 with: syntax highlighting, +sgml/html integration, and indentation (working with sgml).") + (license license:gpl3+))) + +(define-public emacs-company-cabal + ;; The latest version is 0.3.0, but no release has been provided after 0.2.1. + (let ((commit "62112a7259e24bd6c08885629a185afe512b7d3d") + (revision "1")) + (package + (name "emacs-company-cabal") + (version (git-version "0.3.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iquiw/company-cabal/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gf45xwjzdm8i4q6c6khk4dbg1mmp2r0awz2sjr4dcr2dbd1n7mg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company))) + (arguments + `(#:include (cons "^tools\\/" %default-include))) + (home-page "https://github.com/iquiw/company-cabal/") + (synopsis "Company completion for Haskell Cabal files") + (description + "This package allows for completion of field names, section names, +field values, and more within @code{haskell-cabal-mode}.") + (license license:gpl3+)))) + +(define-public emacs-rfcview + (package + (name "emacs-rfcview") + (version "0.13") + (home-page "http://www.loveshack.ukfsn.org/emacs") + (source (origin + (method url-fetch) + (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el") + (sha256 + (base32 + "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz")))) + (build-system emacs-build-system) + (synopsis "Prettify Request for Comments (RFC) documents") + (description "The Internet Engineering Task Force (IETF) and the Internet +Society (ISOC) publish various Internet-related protocols and specifications +as \"Request for Comments\" (RFC) documents and Internet Standard (STD) +documents. RFCs and STDs are published in a simple text form. This package +provides an Emacs major mode, rfcview-mode, which makes it more pleasant to +read these documents in Emacs. It prettifies the text and adds +hyperlinks/menus for easier navigation. It also provides functions for +browsing the index of RFC documents and fetching them from remote servers or +local directories.") + (license license:gpl3+))) + +(define-public emacs-ffap-rfc-space + (package + (name "emacs-ffap-rfc-space") + (version "12") + (home-page "https://user42.tuxfamily.org/ffap-rfc-space/index.html") + (source (origin + (method url-fetch) + (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el") + (sha256 + (base32 + "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck")))) + (build-system emacs-build-system) + (synopsis "Make ffap recognize an RFC with a space before its number") + (description "The Internet Engineering Task Force (IETF) and the +Internet Society (ISOC) publish various Internet-related protocols and +specifications as \"Request for Comments\" (RFC) documents. The +built-in Emacs module \"ffap\" (Find File at Point) has the ability to +recognize names at point which look like \"RFC1234\" and \"RFC-1234\" +and load the appropriate RFC from a remote server. However, it fails +to recognize a name like \"RFC 1234\". This package enhances ffap so +that it correctly finds RFCs even when a space appears before the +number.") + (license license:gpl3+))) + +(define-public emacs-feature-mode + (let ((version "20190801") + (revision "1") + (commit "11ae1671629bfedaa553c7b819676d64eb320992")) + (package + (name "emacs-feature-mode") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/michaelklishin/cucumber.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0yd4gkxz9xcbgibfgr8apsid3f83nmg5jgqk5nql0linj5gymc28")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons* "^features\\/" "snippets\\/" "^support\\/" + %default-include))) + (home-page "https://github.com/michaelklishin/cucumber.el/") + (synopsis "Emacs mode for editing Gherkin plain text user stories") + (description "Major mode for editing Gherkin (popularized by the +Cucumber tool) user stories. Also known by the name @code{cucumber.el}.") + (license license:gpl2+)))) + +(define-public emacs-org-bullets + (package + (name "emacs-org-bullets") + (version "0.2.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sabof/org-bullets") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10nr4sjffnqbllv6gmak6pviyynrb7pi5nvrq331h5alm3xcpq0w")))) + (build-system emacs-build-system) + (home-page "https://github.com/sabof/org-bullets") + (synopsis "Show bullets in org-mode as UTF-8 characters") + (description + "This package provides an Emacs minor mode causing bullets in +@code{org-mode} to be rendered as UTF-8 characters.") + (license license:gpl3+))) + +(define-public emacs-org-drill + (package + (name "emacs-org-drill") + (version "2.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/phillord/org-drill") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "13y302lyscdqrba1sfx60yf5ji2xi7fbsvjsjbw7hiz63kg6rccy")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-org" ,emacs-org) + ("emacs-persist" ,emacs-persist))) + (home-page "https://gitlab.com/phillord/org-drill") + (synopsis "Flash card memorization system using Org mode") + (description + "This package uses spaced repetition algorithms to conduct interactive +drill sessions to aid in memorization. In these sessions you are shown flash +cards created in Org mode.") + (license license:gpl3+))) + +(define-public emacs-org-superstar + (package + (name "emacs-org-superstar") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/integral-dw/org-superstar-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14w06v76xi4f6hpq6xzicrjjv0b802g5zc9as4mpimfy5gx2xpm0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-org" ,emacs-org))) + (home-page "https://github.com/integral-dw/org-superstar-mode") + (synopsis "Prettify headings and plain lists in Org mode") + (description "This package prettifies headings and plain lists in +Org mode. It is a direct descendant of @code{org-bullets}, with most +of the code base completely rewritten. + +Currently, this package prettifies Org heading lines by: +@itemize +@item replacing trailing bullets by UTF-8 bullets, +@item hiding leading stars, customizing their look or removing them from vision, +@item applying a custom face to the header bullet, +@item applying a custom face to the leading bullets, +@item using double-bullets for inline tasks, +@item (optional) using special bullets for TODO keywords. +@end itemize + +It also prettifies Org plain list bullets by: +@itemize +@item replacing each bullet type (*, + and -) with UTF-8 bullets, +@item applying a custom face to item bullets. +@end itemize + +Features degrade gracefully when viewed from terminal.") + (license license:gpl3+))) + +(define-public emacs-org-pomodoro + ;; Last release version was from 2016. + (let ((commit "aa07c11318f91219336197e62c47bc7a3d090479") + (revision "1")) + (package + (name "emacs-org-pomodoro") + (version (git-version "2.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/marcinkoziej/org-pomodoro") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nbprh2nhnmb7ngp9ndr6zr37ashcsvpi5slv7a37x1dl7j6w1k4")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-alert" ,emacs-alert))) + (arguments + `(#:include (cons "^resources\\/" %default-include) + #:tests? #t + #:test-command '("emacs" "--batch" + "-l" "org-pomodoro-tests.el" + "-f" "ert-run-tests-batch-and-exit") + #:phases + (modify-phases %standard-phases + (add-before 'check 'make-tests-writable + (lambda _ + (make-file-writable "org-pomodoro-tests.el") + #t)) + (add-before 'check 'add-require + (lambda _ + (emacs-batch-edit-file "org-pomodoro-tests.el" + `(progn (progn (goto-char (point-min)) + (re-search-forward + "ert-deftest") + (beginning-of-line) + (forward-line -1) + (insert "(require 'org-pomodoro)")) + (basic-save-buffer))) + #t))))) + (home-page "https://github.com/marcinkoziej/org-pomodoro") + (synopsis "Pomodoro technique for org-mode") + (description "@code{emacs-org-pomodoro} adds very basic support for +Pomodoro technique in Emacs org-mode. + +Run @code{M-x org-pomodoro} for the task at point or select one of the +last tasks that you clocked time for. Each clocked-in pomodoro starts +a timer of 25 minutes and after each pomodoro a break timer of 5 +minutes is started automatically. Every 4 breaks a long break is +started with 20 minutes. All values are customizable.") + (license license:gpl3+)))) + +(define-public emacs-org-sidebar + (package + (name "emacs-org-sidebar") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/org-sidebar") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "106h06vjfbqfj761vbxwymd6612ds8c6fk053yzgbrqzm3hn2c03")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-org-super-agenda" ,emacs-org-super-agenda) + ("emacs-org" ,emacs-org) + ("emacs-org-ql" ,emacs-org-ql) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/alphapapa/org-sidebar") + (synopsis "Helpful sidebar for Org buffers") + (description "This package provides a sidebar for Org buffers. At the +top is a chronological list of scheduled and deadlined tasks in the current +buffer (similar to the Org agenda ,but without all its features), and below +that is a list of all other non-done to-do items. If the buffer is narrowed, +the sidebar only shows items in the narrowed portion; this allows seeing an +overview of tasks in a subtree.") + (license license:gpl3+))) + +(define-public emacs-org-trello + (package + (name "emacs-org-trello") + (version "0.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/org-trello/org-trello") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02gx3kv4mkij69ln8x8wf9n28x17pbb4kv85v78d3lxph7ykqimc")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-deferred" ,emacs-deferred) + ("emacs-f" ,emacs-f) + ("emacs-helm" ,emacs-helm) + ("emacs-request" ,emacs-request) + ("emacs-s" ,emacs-s))) + (home-page "https://org-trello.github.io") + (synopsis "Emacs minor mode for interacting with Trello") + (description "This package provides an Emacs minor mode to extend +@code{org-mode} with Trello abilities. Trello is an online project +organizer.") + (license license:gpl3+))) + +(define-public emacs-org-tanglesync + (let ((commit "d99181f173b4e55b4e835d99fcd415e62beb047f") + (revision "2")) + (package + (name "emacs-org-tanglesync") + (version (git-version "0.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mtekman/org-tanglesync.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0x94gy1bgfd1f3p9w2bfrqj11bwy9ql0cpi1gw6srpj7kykx0lml")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-org" ,emacs-org))) + (home-page "https://github.com/mtekman/org-tanglesync.el") + (synopsis "Sync Org source blocks with tangled external files") + (description "This package automatically pulls changes from source code +to their corresponding tangled blocks.") + (license license:gpl3+)))) + +(define-public emacs-company-flow + (let ((commit "76ef585c70d2a3206c2eadf24ba61e59124c3a16") + (revision "1")) + (package + (name "emacs-company-flow") + (version (git-version "0.1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aaronjensen/company-flow/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0zs9cblnbkxa0dxw4lyllmybqizxcdx96gv8jlhx20nrjpi78piw")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/aaronjensen/company-flow/") + (synopsis "Flow backend for @code{company-mode}") + (description + "This package provides completion for JavaScript files utilizing Flow.") + (license license:gpl3+)))) + +(define-public emacs-atom-one-dark-theme + (let ((commit "1f1185bf667a38d3d0d180ce85fd4c131818aae2") + (revision "0")) + (package + (name "emacs-atom-one-dark-theme") + (version (git-version "0.4.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jonathanchu/atom-one-dark-theme") + (commit commit))) + (sha256 + (base32 + "1alma16hg3mfjly8a9s3mrswkjjx4lrpdnf43869hn2ibkn7zx9z")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/jonathanchu/atom-one-dark-theme") + (synopsis "Atom One Dark color theme for Emacs") + (description "An Emacs port of the Atom One Dark theme from Atom.io.") + (license license:gpl3+)))) + +(define-public emacs-zenburn-theme + (package + (name "emacs-zenburn-theme") + (version "2.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bbatsov/zenburn-emacs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1n87r5hs7h5r8dgfid66skpzcypl9hssr9m3npp916g6jfsi782f")))) + (build-system emacs-build-system) + (home-page "https://github.com/bbatsov/zenburn-emacs") + (synopsis "Low contrast color theme for Emacs") + (description + "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs. +It is built on top of the custom theme support in Emacs 24 or later.") + (license license:gpl3+))) + +(define-public emacs-moe-theme-el + (let ((commit "6e086d855d6bb446bbd1090742815589a81a915f") + (version "1.0") + (revision "1")) + (package + (name "emacs-moe-theme-el") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kuanyui/moe-theme.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xj4wfd7h4jqnr193pizm9frf6lmwjr0dsdv2l9mqh9k691z1dnc")))) + (build-system emacs-build-system) + (home-page "https://github.com/kuanyui/moe-theme.el") + (synopsis "Anime-inspired color themes") + (description + "This package provides vibrant color schemes with light and dark +variants.") + (license license:gpl3+)))) + +(define-public emacs-solarized-theme + (package + (name "emacs-solarized-theme") + (version "1.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bbatsov/solarized-emacs/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15ql8xcixgm7mbs7rsbybwszanqibq057j5b5ds89a31dw7zxf1g")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/bbatsov/solarized-emacs") + (synopsis "Port of the Solarized theme for Emacs") + (description + "Solarized for Emacs is a port of the Solarized theme for Vim. This +package provides a light and a dark variant.") + (license license:gpl3+))) + +(define-public emacs-poet-theme + (let ((commit "d84f7b259cc9b6ff8d442cf4c38bd6c7065ff8f4") + (revision "0")) + (package + (name "emacs-poet-theme") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kunalb/poet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a84jdaj619mb59a46dmkk2sfs42rylqk9ryl1drgs8d3lia79mz")))) + (build-system emacs-build-system) + (home-page "https://github.com/kunalb/poet/") + (synopsis "Emacs theme for prose") + (description + "Emacs has very good support for multiple fonts in a single file. Poet +uses this support to make it much more convenient to write prose within Emacs, +with particular attention paid to @code{org-mode} and @code{markdown-mode}. +Code blocks, tables, etc are formatted in monospace text with the appropriate +backgrounds.") + (license license:expat)))) + +(define-public emacs-ahungry-theme + (package + (name "emacs-ahungry-theme") + (version "1.10.0") + (source + (origin (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-" + version ".tar")) + (sha256 + (base32 + "14q5yw56n82qph09bk7wmj5b1snhh9w0nk5s1l7yn9ldg71xq6pm")))) + (build-system emacs-build-system) + (home-page "https://github.com/ahungry/color-theme-ahungry") + (synopsis "Ahungry color theme for Emacs") + (description "Ahungry theme for Emacs provides bright and bold colors. +If you load it from a terminal, you will be able to make use of the +transparent background. If you load it from a GUI, it will default to a +dark background.") + (license license:gpl3+))) + +(define-public emacs-gruvbox-theme + (package + (name "emacs-gruvbox-theme") + (version "1.28.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/greduan/emacs-theme-gruvbox") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00qq92gp1g55pzm97rh7k0dgxy44pxziridl8kqm4rbpi31r7k9p")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-autothemer" ,emacs-autothemer))) + (home-page "https://github.com/greduan/emacs-theme-gruvbox") + (synopsis "Gruvbox is a retro groove color scheme ported from Vim") + (description + "Gruvbox is heavily inspired by badwolf, jellybeans and solarized. + +Designed as a bright theme with pastel 'retro groove' colors and light/dark +mode switching in the way of solarized. The main focus when developing gruvbox +is to keep colors easily distinguishable, contrast enough and still pleasant +for the eyes.") + (license license:expat))) ; MIT license + +(define-public emacs-spacegray-theme + (let ((commit "9826265c2bceb2ebc1c5e16a45021da0253ace97") + (revision "0")) + (package + (name "emacs-spacegray-theme") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bruce/emacs-spacegray-theme") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0aplwmm17ypbns5blc4rf5rr6dasj0zp5ibykpfl43fh4bd8z89n")))) + (build-system emacs-build-system) + (home-page "https://github.com/bruce/emacs-spacegray-theme") + (synopsis "Port of Sublime Text's Spacegray theme for Emacs") + (description + "@code{spacegray-theme} is an Emacs port of the Spacegray theme from +Sublime Text. It features a dark blue/gray background and soft blue, green, +orange and red as accent colors.") + (license license:expat)))) ; MIT license + +(define-public emacs-2048-game + (package + (name "emacs-2048-game") + (version "20151026.1233") + (source + (origin + (method url-fetch) + (uri (string-append "https://melpa.org/packages/2048-game-" + version ".el")) + (sha256 + (base32 + "0gy2pvz79whpavp4jmz8h9krzn7brmvv3diixi1d4w51pcdvaldd")))) + (build-system emacs-build-system) + (home-page "https://hg.sr.ht/~zck/game-2048") + (synopsis "Implementation of the game 2048 in Emacs Lisp") + (description + "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+))) + +(define-public emacs-chess + (package + (name "emacs-chess") + (version "2.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "chess-" version ".tar")) + (sha256 + (base32 "1sq1bjmp513vldfh7hc2bbfc54665abqiz0kqgqq3gijckaxn5js")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-pieces + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pieces + (string-append out "/share/emacs/site-lisp/pieces"))) + (mkdir-p pieces) + (copy-recursively "pieces" pieces) + #t)))))) + (home-page "https://elpa.gnu.org/packages/chess.html") + (synopsis "Play chess in GNU Emacs") + (description + "Chess is an Emacs Lisp library and several clients on top of the +underlying library functionality for performing various activities related to +the game of chess.") + (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") + (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 + (name "emacs-base16-theme") + (version "2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/belak/base16-emacs") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01w89g413s1da6rf94y1xnhw79cjy2bqb01yfjs58cy492cm0vr6")))) + (build-system emacs-build-system) + (home-page "https://github.com/belak/base16-emacs") + (synopsis "Base16 color themes for Emacs") + (description + "Base16 provides carefully chosen syntax highlighting and a default set +of sixteen colors suitable for a wide range of applications. Base16 is not a +single theme but a set of guidelines with numerous implementations.") + (license license:expat))) + +(define-public emacs-solaire-mode + (package + (name "emacs-solaire-mode") + (version "1.0.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hlissner/emacs-solaire-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "011m4r7s6i9lgjymh7jgq5jwwrpz4vmpvp3c8d4ix96v5hi04kzg")))) + (build-system emacs-build-system) + (home-page "https://github.com/hlissner/emacs-solaire-mode") + (synopsis "Change background of file-visiting buffers in Emacs") + (description + "@code{solaire-mode} is inspired by editors which visually distinguish +code-editing windows from sidebars, popups, terminals, ecetera. It changes the +background of file-visiting buffers (and certain aspects of the UI) to make +them easier to distinguish from other, less important buffers.") + (license license:expat))) + +(define-public emacs-prescient + (package + (name "emacs-prescient") + (version "5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/prescient.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "001q4l730bhw4d508jxlpzh1z459qzpg6rbncp12jrfm5yidksix")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-company" ,emacs-company) + ("emacs-ivy" ,emacs-ivy) + ("emacs-selectrum" ,emacs-selectrum))) + (home-page "https://github.com/raxod502/prescient.el/") + (synopsis "Emacs library for sorting and filtering candidates") + (description + "Prescient is a library for sorting and filtering, as well as extensions +for Ivy and Company that make use of the library.") + (license license:expat))) + +(define-public emacs-selectrum + (package + (name "emacs-selectrum") + (version "2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/raxod502/selectrum") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08wm4ybidn8g7sy5a009lnsm0f1p7a3jfzpzxnzylvnyrmyhi3y4")))) + (build-system emacs-build-system) + (home-page "https://github.com/raxod502/selectrum/") + (synopsis "Incremental narrowing in Emacs") + (description "Selectrum is a solution for incremental narrowing in +Emacs, replacing Helm, Ivy, and IDO. Its design philosophy is based +on choosing the right abstractions and prioritizing consistency and +predictability over special-cased improvements for particular cases. +As such, Selectrum follows existing Emacs conventions where they exist +and are reasonable, and it declines to implement features which have +marginal benefit compared to the additional complexity of a new +interface.") + (license license:expat))) + +(define-public emacs-smartparens + (package + (name "emacs-smartparens") + (version "1.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fuco1/smartparens") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zij2f2rjjym98w68jkp10n1ckpfprlkk217c3fg16hz5nq4vnm6")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-markdown-mode" ,emacs-markdown-mode))) + (home-page "https://github.com/Fuco1/smartparens") + (synopsis "Paredit-like insertion, wrapping and navigation with user +defined pairs") + (description + "Smartparens is a minor mode for Emacs that deals with parens pairs +and tries to be smart about it. It started as a unification effort to +combine functionality of several existing packages in a single, +compatible and extensible way to deal with parentheses, delimiters, tags +and the like. Some of these packages include autopair, textmate, +wrap-region, electric-pair-mode, paredit and others. With the basic +features found in other packages it also brings many improvements as +well as completely new features.") + (license license:gpl3+))) + +(define-public emacs-highlight-symbol + ;; We prefer a more recent commit that provides an option to squelch + ;; echo-area alerts that can drown out useful information like eldoc + ;; messages. + (let ((commit "7a789c779648c55b16e43278e51be5898c121b3a") + (version "1.3") + (revision "1")) + (package + (name "emacs-highlight-symbol") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nschum/highlight-symbol.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "19cgyk0sh8nsmf3jbi92i8qsdx4l4yilfq5jj9zfdbj9p5gvwx96")))) + (build-system emacs-build-system) + (home-page "https://nschum.de/src/emacs/highlight-symbol/") + (synopsis "Automatic and manual symbol highlighting for Emacs") + (description + "Use @code{highlight-symbol} to toggle highlighting of the symbol at +point throughout the current buffer. Use @code{highlight-symbol-mode} to keep +the symbol at point highlighted. + +The functions @code{highlight-symbol-next}, @code{highlight-symbol-prev}, +@code{highlight-symbol-next-in-defun} and +@code{highlight-symbol-prev-in-defun} allow for cycling through the locations +of any symbol at point. Use @code{highlight-symbol-nav-mode} to enable key +bindings @code{M-p} and @code{M-p} for navigation. When +@code{highlight-symbol-on-navigation-p} is set, highlighting is triggered +regardless of @code{highlight-symbol-idle-delay}. + +@code{highlight-symbol-query-replace} can be used to replace the symbol. ") + (license license:gpl2+)))) + +(define-public emacs-symbol-overlay + (let ((commit "e40a7c407f24158c45eaa5f54ed41f5e416a51dc") + (revision "1")) + (package + (name "emacs-symbol-overlay") + (version (git-version "4.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wolray/symbol-overlay") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ibz3392d3jw1l8006h9kf8s7bg6vl7jc92bmqc031a433009ic7")))) + (build-system emacs-build-system) + (home-page "https://github.com/wolray/symbol-overlay") + (synopsis "Highlight symbols and perform various search operations on them") + (description + "This package provides functions for highlighting and navigating +between symbols.") + (license license:gpl3+)))) + +(define-public emacs-hl-todo + (package + (name "emacs-hl-todo") + (version "3.0.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tarsius/hl-todo") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07xcc04ivpl5sbgb55qz84mz6wa500h0awzw1zq1ba5mfjjq8hls")))) + (build-system emacs-build-system) + (home-page "https://github.com/tarsius/hl-todo") + (synopsis "Emacs mode to highlight TODO and similar keywords") + (description + "This package provides an Emacs mode to highlight TODO and similar +keywords in comments and strings. This package also provides commands for +moving to the next or previous keyword and to invoke @code{occur} with a +regexp that matches all known keywords.") + (license license:gpl3+))) + +(define-public emacs-perspective + (package + (name "emacs-perspective") + (version "2.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nex3/perspective-el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hmbczw3b7k2xdqcy5p3xnf2781gjw6bqqcwc5r9myg6b8p3pr7m")))) + (build-system emacs-build-system) + (home-page "https://github.com/nex3/perspective-el") + (synopsis "Switch between named \"perspectives\"") + (description + "This package provides tagged workspaces in Emacs, similar to workspaces in +windows managers such as Awesome and XMonad. @code{perspective.el} provides +multiple workspaces (or \"perspectives\") for each Emacs frame. Each +perspective is composed of a window configuration and a set of buffers. +Switching to a perspective activates its window configuration, and when in a +perspective only its buffers are available by default.") + ;; This package is released under the same license as Emacs (GPLv3+) or + ;; the Expat license. + (license license:gpl3+))) + +(define-public emacs-persp-mode + (package + (name "emacs-persp-mode") + (version "2.9.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Bad-ptr/persp-mode.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0b4y7a6j70s9lvr37riyy9k5kh3yvmx0m6nd9c0c8572ji4ij65g")))) + (build-system emacs-build-system) + (home-page "https://github.com/Bad-ptr/persp-mode.el") + (synopsis "Switch between named \"perspectives\" shared among frames") + (description + "This package extends @code{perspective.el} to enable perspectives that +can be saved to and restored from a file.") + (license license:gpl2+))) + +(define-public emacs-test-simple + (package + (name "emacs-test-simple") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/test-simple-" + version ".el")) + (sha256 + (base32 + "1yd61jc9ds95a5n09052kwc5gasy57g4lxr0jsff040brlyi9czz")))) + (build-system emacs-build-system) + (home-page "https://github.com/rocky/emacs-test-simple") + (synopsis "Simple unit test framework for Emacs Lisp") + (description + "Test Simple is a simple unit test framework for Emacs Lisp. It +alleviates the need for context macros, enclosing specifications or required +test tags. It supports both interactive and non-interactive use.") + (license license:gpl3+))) + +(define-public emacs-load-relative + (package + (name "emacs-load-relative") + (version "1.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/load-relative-" + version ".el")) + (sha256 + (base32 "1m37scr82lqqy954fchjxrmdh4lngrl4d1yzxhp3yfjhsydizhrj")))) + (build-system emacs-build-system) + (home-page "https://github.com/rocky/emacs-load-relative") + (synopsis "Emacs Lisp relative file loading related functions") + (description + "Provides functions which facilitate writing multi-file Emacs packages +and running from the source tree without having to \"install\" code or fiddle +with @{load-path}. + +The main function, @code{load-relative}, loads an Emacs Lisp file relative to +another (presumably currently running) Emacs Lisp file.") + (license license:gpl3+))) + +(define-public emacs-loc-changes + (package + (name "emacs-loc-changes") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/loc-changes-" + version ".el")) + (sha256 + (base32 + "1x8fn8vqasayf1rb8a6nma9n6nbvkx60krmiahyb05vl5rrsw6r3")))) + (build-system emacs-build-system) + (home-page "https://github.com/rocky/emacs-loc-changes") + (synopsis "Keeps track of positions even after buffer changes") + (description + "This Emacs package provides a mean to track important buffer positions +after buffer changes.") + (license license:gpl3+))) + +(define-public emacs-realgud + (package + (name "emacs-realgud") + (version "1.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/realgud/realgud/") + (commit version))) + (sha256 + (base32 + "1d3s23jk0i34wpyxfajydgyyvsxnpbqrfl0mgydsq7zw2c75ylnq")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-realgud:run-process-void-error + ;; See: https://github.com/realgud/realgud/issues/269. + (lambda _ + (substitute* '("realgud/debugger/gdb/gdb.el" + "realgud/debugger/gub/gub.el") + (("^\\(require 'load-relative\\).*" anchor) + (string-append anchor + "(require-relative-list \ +'(\"../../common/run\") \"realgud:\")\n"))) + #t)) + (add-after 'unpack 'fix-autogen-script + (lambda _ + (substitute* "autogen.sh" + (("./configure") "sh configure")) + #t)) + (add-after 'fix-autogen-script 'autogen + (lambda _ + (setenv "CONFIG_SHELL" "sh") + (invoke "sh" "autogen.sh"))) + (add-after 'fix-autogen-script 'set-home + (lambda _ + (setenv "HOME" (getenv "TMPDIR")) + #t)) + (add-before 'patch-el-files 'remove-realgud-pkg.el + (lambda _ + ;; FIXME: `patch-el-files' crashes on this file with error: + ;; unable to locate "bashdb". + (delete-file "./test/test-regexp-bashdb.el") + #t))) + #:include (cons* ".*\\.el$" %default-include))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("emacs-test-simple" ,emacs-test-simple))) + (propagated-inputs + `(("emacs-load-relative" ,emacs-load-relative) + ("emacs-loc-changes" ,emacs-loc-changes))) + (home-page "https://github.com/realgud/realgud/") + (synopsis + "Modular front-end for interacting with external debuggers") + (description + "RealGUD is a modular, extensible GNU Emacs front-end for interacting +with external debuggers. It integrates various debuggers such as gdb, pdb, +ipdb, jdb, lldb, bashdb, zshdb, etc. and allows to visually step code in the +sources. Unlike GUD, it also supports running multiple debug sessions in +parallel.") + (license license:gpl3+))) + +(define-public emacs-request + (package + (name "emacs-request") + (version "0.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tkf/emacs-request") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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") + (synopsis "Package for speaking HTTP in Emacs Lisp") + (description "This package provides a HTTP request library with multiple +backends. It supports url.el which is shipped with Emacs and the curl command +line program.") + (license license:gpl3+))) + +(define-public emacs-rudel + (package + (name "emacs-rudel") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/rudel-" + version ".tar")) + (sha256 + (base32 + "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz")))) + (build-system emacs-build-system) + (home-page "http://rudel.sourceforge.net/") + (synopsis "Collaborative editing framework") + (description + "Rudel is a collaborative editing environment for GNU Emacs. Its purpose +is to share buffers with other users in order to edit the contents of those +buffers collaboratively. Rudel supports multiple backends to enable +communication with other collaborative editors using different protocols, +though currently Obby (for use with the Gobby editor) is the only +fully-functional one.") + (license license:gpl3+))) + +(define-public emacs-hydra + (package + (name "emacs-hydra") + (version "0.15.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/hydra") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fapvhmhgc9kppf3bvkgry0cd7gyilg7sfvlscfrfjxpx4xvwsfy")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/abo-abo/hydra") + (synopsis "Make Emacs bindings that stick around") + (description + "This package can be used to tie related commands into a family of short +bindings with a common prefix---a Hydra. Once you summon the Hydra (through +the prefixed binding), all the heads can be called in succession with only a +short extension. Any binding that isn't the Hydra's head vanquishes the +Hydra. Note that the final binding, besides vanquishing the Hydra, will still +serve its original purpose, calling the command assigned to it. This makes +the Hydra very seamless; it's like a minor mode that disables itself +automatically.") + (license license:gpl3+))) + +(define-public emacs-interleave + (package + (name "emacs-interleave") + (version "1.4.0") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/rudolfochrist/interleave") + (commit (string-append "interleave-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0l5b681mrpk12lx5c16m7kc13p29z6zismwg1llsjg7cdmrmsrcb")))) + (build-system emacs-build-system) + (home-page "https://github.com/rudolfochrist/interleave") + (synopsis "Emacs minor mode to interleave notes and text books") + (description + "Interleave is a minor mode that presents a document viewer side +by side to an Org buffer with your notes relevant to the current page.") + (license license:gpl3+))) + +(define-public emacs-ivy + (package + (name "emacs-ivy") + (version "0.13.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/ivy-" version ".tar")) + (sha256 + (base32 "0n0ixhdykbdpis4krkqq6zncbby28p34742q96n0l91w0p19slcx")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-hydra" ,emacs-hydra))) + (home-page "https://github.com/abo-abo/swiper") + (synopsis "Incremental vertical completion for Emacs") + (description + "This package provides @code{ivy-read} as an alternative to +@code{completing-read} and similar functions. No attempt is made to determine +the best candidate. Instead, the user can navigate candidates with +@code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by +splitting the input text by spaces and re-building it into a regular +expression.") + (license license:gpl3+))) + +(define-public emacs-counsel + (package + (name "emacs-counsel") + (version "0.13.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "counsel-" version ".el")) + (sha256 + (base32 "1y3hr3j5bh5mbyh1cqzxx04181qpvj4xyv1gym2gxcjd30nfllli")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-swiper" ,emacs-swiper))) + (home-page "https://github.com/abo-abo/swiper") + (synopsis "Various completion functions using Ivy") + (description + "Just call one of the interactive functions in a file to complete the +corresponding thing using Ivy. + +The following completions are currently available: +@itemize +@item Symbol completion for Elisp, Common Lisp, Python, Clojure, C, C++. +@item Describe functions for Elisp: function, variable, library, command, +@item bindings, theme. +@item Navigation functions: imenu, ace-line, semantic, outline. +@item Git utilities: git-files, git-grep, git-log, git-stash, git-checkout. +@item Grep utilities: grep, ag, pt, recoll, ack, rg. +@item System utilities: process list, rhythmbox, linux-app. +@item Many more. +@end itemize") + (license license:gpl3+))) + +(define-public emacs-swiper + (package + (name "emacs-swiper") + (version "0.13.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "swiper-" version ".el")) + (sha256 + (base32 "06ild7kck0x5ry8bf0al24nh04q01q3jhj6jjl4xz8n2s6jnn70y")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/abo-abo/swiper") + (synopsis "Isearch with an overview") + (description + "This package gives an overview of the current regex search candidates. +The search regex can be split into groups with a space. Each group is +highlighted with a different face. + +It can double as a quick `regex-builder', although only single lines will be +matched.") + (license license:gpl3+))) + +(define-public emacs-ivy-xref + (let ((commit "1a35fc0f070388701b05b0a455cbe262e924d547") + (revision "1")) + (package + (name "emacs-ivy-xref") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alexmurray/ivy-xref") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0d71nm9d9ajp5i6dnl8h1hw9jqp8gd1ajgninb1h13i80rplzl9k")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/alexmurray/ivy-xref") + (synopsis "Ivy interface for @code{xref}") + (description "This package provides an Ivy interface for selecting from +@code{xref} results.") + (license license:gpl3)))) + +(define-public emacs-ivy-pass + (let ((commit "5b523de1151f2109fdd6a8114d0af12eef83d3c5") + (revision "1")) + (package + (name "emacs-ivy-pass") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ecraven/ivy-pass") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18crb4zh2pjf0cmv3b913m9vfng27girjwfqc3mk7vqd1r5a49yk")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-password-store" ,emacs-password-store) + ("password-store" ,password-store))) + (home-page "https://github.com/ecraven/ivy-pass") + (synopsis "Ivy interface for password store (pass)") + (description "This package provides an Ivy interface for working with +the password store @code{pass}.") + (license license:gpl3)))) + +(define-public emacs-ivy-yasnippet + (let ((commit "32580b4fd23ebf9ca7dde96704f7d53df6e253cd") + (revision "2")) + (package + (name "emacs-ivy-yasnippet") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mkcms/ivy-yasnippet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wfg6mmd5gl1qgvayyzpxlkh9s7jgn20y8l1vh1zbj1czvv51xp8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-yasnippet" ,emacs-yasnippet) + ("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/mkcms/ivy-yasnippet") + (synopsis "Preview @code{yasnippets} with @code{ivy}") + (description "This package allows you to select @code{yasnippet} +snippets using @code{ivy} completion. When current selection changes in the +minibuffer, the snippet contents are temporarily expanded in the buffer. To +use it, call @code{M-x ivy-yasnippet} (but make sure you have enabled +@code{yas-minor-mode} first).") + (license license:gpl3+)))) + +(define-public emacs-ivy-rich + ;; The latest release version has a small mistake that has since been fixed, + ;; so we use a more recent commit. + (let ((commit "7a667b135983a1f3ad33d6db8514638e2a3bdfb3") + (revision "2")) + (package + (name "emacs-ivy-rich") + (version (git-version "0.1.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Yevgnen/ivy-rich") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1v5j6pak2j1wjw19y7rx9rhxif0bj2h47xyl2knfcl6fi4qiqm9y")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/Yevgnen/ivy-rich") + (synopsis "More friendly interface for @code{ivy}") + (description + "This package extends @code{ivy} by showing more information in the +minibuffer for each candidate. It adds columns showing buffer modes, file +sizes, docstrings, etc. If @code{emacs-all-the-icons} is installed, it can +show icons as well.") + (license license:gpl3+)))) + +(define-public emacs-avy + (package + (name "emacs-avy") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/avy") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09qdni1s74i5pv8741szl5g4ynj8fxn0x65qmwa9rmfkbimnc0fs")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/abo-abo/avy") + (synopsis "Tree-based completion for Emacs") + (description + "This package provides a generic completion method based on building a +balanced decision tree with each candidate being a leaf. To traverse the tree +from the root to a desired leaf, typically a sequence of @code{read-key} can +be used. + +In order for @code{read-key} to make sense, the tree needs to be visualized +appropriately, with a character at each branch node. So this completion +method works only for things that you can see on your screen, all at once, +such as the positions of characters, words, line beginnings, links, or +windows.") + (license license:gpl3+))) + +(define-public emacs-ace-window + (package + (name "emacs-ace-window") + (version "0.10.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/ace-window") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-avy" ,emacs-avy))) + (home-page "https://github.com/abo-abo/ace-window") + (synopsis "Quickly switch windows in Emacs") + (description + "@code{ace-window} is meant to replace @code{other-window}. +In fact, when there are only two windows present, @code{other-window} is +called. If there are more, each window will have its first character +highlighted. Pressing that character will switch to that window.") + (license license:gpl3+))) + +(define-public emacs-iedit + ;; Last release version was in 2016. + (let ((commit "e2c100cdd67b7d82835d281ac2cd1bf4f374bc8f") + (revision "1")) + (package + (name "emacs-iedit") + (version (git-version "0.9.9.9" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/victorhge/iedit") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wr3w2id95wx2rma8n1ifjrv9rx37ly26ijc5zi58id0yrip3hnc")))) + (build-system emacs-build-system) + (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 +occurrence of some text in a buffer (possibly narrowed) or region, and +simultaneously have other occurrences edited in the same way. + +You can also use Iedit mode as a quick way to temporarily show only the buffer +lines that match the current text being edited. This gives you the effect of +a temporary @code{keep-lines} or @code{occur}.") + (license license:gpl3+)))) + +(define-public emacs-zoutline + (package + (name "emacs-zoutline") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/zoutline") + (commit version))) + (sha256 + (base32 + "1w0zh6vs7klgivq5r030a82mcfg1zwic4x3fimyiqyg5n8p67hyx")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/abo-abo/zoutline") + (synopsis "Simple outline library") + (description + "This library provides helpers for outlines. Outlines allow users to +navigate code in a tree-like fashion.") + (license license:gpl3+))) + +(define-public emacs-lispy + (package + (name "emacs-lispy") + (version "0.27.0") + (home-page "https://github.com/abo-abo/lispy") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/lispy") + (commit version))) + (sha256 + (base32 + "1cm7f4pyl73f3vhkb7ah6bbbrj2sa7n0p31g09k7dy4zgx04bgw6")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ace-window" ,emacs-ace-window) + ("emacs-hydra" ,emacs-hydra) + ("emacs-iedit" ,emacs-iedit) + ("emacs-swiper" ,emacs-swiper) + ("emacs-zoutline" ,emacs-zoutline))) + (native-inputs + `(("emacs-clojure-mode" ,emacs-clojure-mode) + ("emacs-undercover" ,emacs-undercover))) + (arguments + `(#:include (cons* "^lispy-clojure\\.clj$" + "^lispy-python\\.py$" + %default-include) + #:phases + ;; XXX: one failing test involving python evaluation + (modify-phases %standard-phases + (add-before 'check 'make-test-writable + (lambda _ + (make-file-writable "lispy-test.el") + #t)) + (add-before 'check 'remove-python-eval-test + (lambda _ + (emacs-batch-edit-file "lispy-test.el" + `(progn + (progn + (goto-char (point-min)) + (re-search-forward + "ert-deftest lispy-eval-python-str") + (beginning-of-line) + (kill-sexp)) + (basic-save-buffer))) + #t))) + #:tests? #t + #:test-command '("make" "test"))) + (synopsis "Modal S-expression editing") + (description + "Due to the structure of Lisp syntax it's very rare for the programmer +to want to insert characters right before \"(\" or right after \")\". Thus +unprefixed printable characters can be used to call commands when the point is +at one of these special locations. Lispy provides unprefixed keybindings for +S-expression editing when point is at the beginning or end of an +S-expression.") + (license license:gpl3+))) + +(define-public emacs-lispyville + (let ((commit "1bf38088c981f5ab4ef2e2684952ab6af96378db") + (revision "2")) + (package + (name "emacs-lispyville") + (version (git-version "0.1" revision commit)) + (home-page "https://github.com/noctuid/lispyville") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (sha256 + (base32 + "07z8qqvaxf963kwn7l2gk47989zb7r3d8ybqjs2cg6hzmzb77wbw")) + (file-name (git-file-name name version)))) + (propagated-inputs + `(("emacs-evil" ,emacs-evil) + ("emacs-lispy" ,emacs-lispy))) + (build-system emacs-build-system) + (synopsis "Minor mode for integrating Evil with lispy") + (description + "LispyVille's main purpose is to provide a Lisp editing environment +suited towards Evil users. It can serve as a minimal layer on top of lispy +for better integration with Evil, but it does not require the use of lispy’s +keybinding style. The provided commands allow for editing Lisp in normal +state and will work even without lispy being enabled.") + (license license:gpl3+)))) + +(define-public emacs-lpy + (let ((commit "43b401fe15f0f0d01edb189378b9498121e9f766") + (revision "3")) + (package + (name "emacs-lpy") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/lpy") + (commit commit))) + (sha256 + (base32 + "0xj1r7cn1rivaxhvawvmgx9fg3xilpfw4lkf2x2aqplr4s85ijas")) + (file-name (git-file-name name version)))) + (propagated-inputs + `(("emacs-zoutline" ,emacs-zoutline) + ("emacs-lispy" ,emacs-lispy))) + (build-system emacs-build-system) + (home-page "https://github.com/abo-abo/lpy") + (synopsis "Modal editing for Python") + (description + "This package provides a minor mode for Python that binds useful +commands to unprefixed keys, such as @code{j} or @code{e}, under certain +circumstances, and leaves the keys untouched outside of those situations, +allowing unprefixed keys to insert their respective characters as expected.") + (license license:gpl3+)))) + +(define-public emacs-clojure-mode + (package + (name "emacs-clojure-mode") + (version "5.11.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/clojure-emacs/clojure-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1x1yszp6waa778ki6sw66w1pzcz389wd01gkcldfxxnd7z89ad5d")))) + (build-system emacs-build-system) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup) + ("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s))) + (arguments + `(#:tests? #t + #:test-command '("buttercup"))) + (home-page "https://github.com/clojure-emacs/clojure-mode") + (synopsis "Major mode for Clojure code") + (description + "This Emacs package provides font-lock, indentation, navigation and basic +refactoring for the @uref{http://clojure.org, Clojure programming language}. +It is recommended to use @code{clojure-mode} with Paredit or Smartparens.") + (license license:gpl3+))) + +(define-public emacs-epl + (package + (name "emacs-epl") + (version "0.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cask/epl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0sjxd5y5hxhrbgfkpwx6m724r3841b53hgc61a0g5zwispw5pmrr")))) + (build-system emacs-build-system) + (home-page "https://github.com/cask/epl") + (synopsis "Emacs Package Library") + (description + "A package management library for Emacs, based on @code{package.el}. + +The purpose of this library is to wrap all the quirks and hassle of +@code{package.el} into a sane API.") + (license license:gpl3+))) + +(define-public emacs-counsel-notmuch + ;; Upstream provides no release. Extract version for main file. + (let ((commit "a4a1562935e4180c42524c51609d1283e9be0688") + (revision "0")) + (package + (name "emacs-counsel-notmuch") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fuxialexander/counsel-notmuch.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01k1321d961kc2i660a5595bqk0d85f16snsxngsn5si6y83kqr7")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'locate-notmuch + (lambda* (#:key inputs #:allow-other-keys) + (make-file-writable "counsel-notmuch.el") + (emacs-substitute-variables "counsel-notmuch.el" + ("counsel-notmuch-path" + (string-append (assoc-ref inputs "notmuch") + "/bin/notmuch"))) + #t))))) + (inputs + `(("emacs-counsel" ,emacs-counsel) + ("notmuch" ,notmuch) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/fuxialexander/counsel-notmuch") + (synopsis "Search emails in Notmuch asynchronously with Ivy") + (description + "This package can be used to search emails in Notmuch +asynchronously, with Counsel and Ivy. Simply call +@code{counsel-notmuch} and input your Notmuch query.") + (license license:gpl3+)))) + +(define-public emacs-counsel-projectile + (package + (name "emacs-counsel-projectile") + (version "0.3.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ericdanan/counsel-projectile") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1inc4ndl0ysfwvxk4avbgpj4qi9rc93da6476a5c81xmwpsv8wmq")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-counsel" ,emacs-counsel) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/ericdanan/counsel-projectile") + (synopsis "Enhance Projectile with Ivy") + (description + "This package uses Ivy to provide additional actions for Projectile +commands and replacements for existing functions.") + (license license:gpl3+))) + +(define-public emacs-qml-mode + (package + (name "emacs-qml-mode") + (version "0.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/coldnew/qml-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1sncsvzjfgmhp4m8w5jd4y51k24n2jfpgvrkd64wlhhzbj3wb947")))) + (build-system emacs-build-system) + (home-page "https://github.com/coldnew/qml-mode/") + (synopsis "Qt Modeling Language (QML) mode for Emacs") + (description "This package provides the @code{qml-mode} major Emacs mode +for editing source files written in the Qt Modeling Language (QML) user +interface markup language. It provides syntax highlighting and basic +navigation commands. @code{qml-mode} is derived from code{js-mode}, the Emacs +builtin JavaScript mode.") + (license license:gpl2+))) + +(define-public emacs-queue + (package + (name "emacs-queue") + (version "0.2") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/queue-" + version ".el")) + (sha256 + (base32 + "0cx2848sqnnkkr4zisvqadzxngjyhmb36mh0q3if7q19yjjhmrkb")))) + (build-system emacs-build-system) + (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html") + (synopsis "Queue data structure for Emacs") + (description + "This Emacs library provides queue data structure. These queues can be +used both as a first-in last-out (FILO) and as a first-in first-out (FIFO) +stack, i.e. elements can be added to the front or back of the queue, and can +be removed from the front. This type of data structure is sometimes called an +\"output-restricted deque\".") + (license license:gpl3+))) + +(define-public emacs-pkg-info + (package + (name "emacs-pkg-info") + (version "0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lunaryorn/pkg-info.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nk12dcppdyhav6m6yf7abpywyd7amxd4237zsfd32w4zxsx39k1")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-epl" ,emacs-epl))) + (home-page "https://github.com/lunaryorn/pkg-info.el") + (synopsis "Information about Emacs packages") + (description + "This library extracts information from the installed Emacs packages.") + (license license:gpl3+))) + +(define-public emacs-spinner + (package + (name "emacs-spinner") + (version "1.7.3") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/spinner-" + version ".el")) + (sha256 + (base32 + "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd")))) + (build-system emacs-build-system) + (home-page "https://github.com/Malabarba/spinner.el") + (synopsis "Emacs mode-line spinner for operations in progress") + (description + "This Emacs package adds spinners and progress-bars to the mode-line for +ongoing operations.") + (license license:gpl3+))) + +(define-public emacs-sparql-mode + (package + (name "emacs-sparql-mode") + (version "2.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ljos/sparql-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ywhqk6n5k0l85zjwbnrivnvxjzqipqrggv06lify6yv18qmyl6s")))) + (build-system emacs-build-system) + (home-page "https://github.com/ljos/sparql-mode") + (synopsis "SPARQL mode for Emacs") + (description "This package provides a major mode for Emacs that provides +syntax highlighting for SPARQL. It also provides a way to execute queries +against a SPARQL HTTP endpoint, such as is provided by Fuseki. It is also +possible to query other endpoints like DBPedia.") + (license license:gpl3+))) + +(define-public emacs-better-defaults + (package + (name "emacs-better-defaults") + (version "0.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/technomancy/better-defaults") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rxznx2l0cdpiz8mad8s6q17m1fngpgb1cki7ch6yh18r3qz8ysr")))) + (build-system emacs-build-system) + (home-page "https://github.com/technomancy/better-defaults") + (synopsis "Better defaults for Emacs") + (description + "Better defaults attempts to address the most obvious deficiencies of the +Emacs default configuration in uncontroversial ways that nearly everyone can +agree upon.") + (license license:gpl3+))) + +(define-public emacs-undohist-el + (let ((commit "d2239a5f736724ceb9e3b6bcaa86f4064805cda0") + (revision "1")) + (package + (name "emacs-undohist-el") + (version (git-version "0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/m2ym/undohist-el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1c0daw246ky7b1x5b8h55x79pl1pjqk1k348l487bdd8zdj4w9wx")) + (patches + (search-patches "emacs-undohist-ignored.patch")))) + (build-system emacs-build-system) + (home-page "https://github.com/m2ym/undohist-el") + (synopsis "Save undo history between sessions") + (description "This package allows persistent use of undo history for +individual file buffers.") + (license license:gpl3+)))) + +(define-public emacs-eprime + (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f")) + (package + (name "emacs-eprime") + (version (string-append "20140513-" (string-take commit 7))) + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com" + "/AndrewHynes/eprime-mode/" + commit "/eprime-mode.el")) + (file-name (string-append "eprime-" version ".el")) + (sha256 + (base32 + "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d")))) + (build-system emacs-build-system) + (home-page "https://github.com/AndrewHynes/eprime-mode") + (synopsis "E-prime checking mode for Emacs") + (description "This package provides an E-prime checking mode for Emacs +that highlights non-conforming text. The subset of the English language called +E-Prime forbids the use of the \"to be\" form to strengthen your writing.") + (license license:gpl3+)))) + +(define-public emacs-julia-mode + ;; XXX: Upstream version remained stuck at 0.3. See + ;; . + (let ((commit "115d4dc8a07445301772da8376b232fa8c7168f4") + (revision "1")) + (package + (name "emacs-julia-mode") + (version (string-append "0.3-" revision "." (string-take commit 8))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaEditorSupport/julia-emacs") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "julia-mode-tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/JuliaEditorSupport/julia-emacs") + (synopsis "Major mode for Julia") + (description "This Emacs package provides a mode for the Julia +programming language.") + (license license:expat)))) + +(define-public emacs-smex + (package + (name "emacs-smex") + (version "3.0") + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com" + "/nonsequitur/smex/" version "/smex.el")) + (file-name (string-append "smex-" version ".el")) + (sha256 + (base32 + "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp")))) + (build-system emacs-build-system) + (home-page "https://github.com/nonsequitur/smex/") + (synopsis "M-x interface with Ido-style fuzzy matching") + (description + "Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a +convenient interface to your recently and most frequently used commands. And +to all the other commands, too.") + (license license:gpl3+))) + +(define-public emacs-js2-mode + (package + (name "emacs-js2-mode") + (version "20190219") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mooz/js2-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0766bbr4piia9vfr4ivd2gwi8dxah654adv6h28ylz4q8xmfzm1b")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/mooz/js2-mode/") + (synopsis "Improved JavaScript editing mode for Emacs") + (description + "Js2-mode provides a JavaScript major mode for Emacs that is more +advanced than the built-in javascript-mode. Features include accurate syntax +highlighting using a recursive-descent parser, on-the-fly reporting of syntax +errors and strict-mode warnings, smart line-wrapping within comments and +strings, and code folding.") + (license license:gpl3+))) + +(define-public emacs-nodejs-repl + (package + (name "emacs-nodejs-repl") + (version "0.2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abicky/nodejs-repl.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1kkj888k9x5n0i7xkia177gzsa84my3g8n0n7v65281cc4f1yhk5")))) + (build-system emacs-build-system) + (inputs + `(("node" ,node))) + (native-inputs + `(("emacs-ert-expectations" ,emacs-ert-expectations))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-shell + ;; Setting the SHELL environment variable is required for the tests + ;; to find sh. + (lambda _ + (setenv "SHELL" (which "sh")) + #t)) + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((node (assoc-ref inputs "node"))) + ;; Specify the absolute file names of the various + ;; programs so that everything works out-of-the-box. + (make-file-writable "nodejs-repl.el") + (emacs-substitute-variables + "nodejs-repl.el" + ("nodejs-repl-command" + (string-append node "/bin/node"))))))) + #:tests? #t + #:test-command '("emacs" "-Q" "--batch" + "-L" "." + "-l" "test/test.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/abicky/nodejs-repl.el") + (synopsis "Node.js REPL inside Emacs") + (description + "This program is derived from comint-mode and provides the following +features: + +@itemize +@item TAB completion same as Node.js REPL +@item file name completion in string +@item incremental history search +@end itemize") + (license license:gpl3+))) + +(define-public emacs-typescript-mode + (package + (name "emacs-typescript-mode") + (version "0.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ananthakumaran/typescript.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "002f1xfhq43fjaqliwrgxspryfahpa82va5dw3p8kwil2xwvc6mh")))) + (build-system emacs-build-system) + (home-page "https://github.com/ananthakumaran/typescript.el") + (synopsis "Emacs major mode for editing Typescript code") + (description + "This is based on Karl Landstrom's barebones @code{typescript-mode}. +This is much more robust and works with @code{cc-mode}'s comment +filling (mostly). The modifications to the original @code{javascript.el} mode +mainly consisted in replacing \"javascript\" with \"typescript\" + +The main features of this Typescript mode are syntactic highlighting (enabled +with @code{font-lock-mode} or @code{global-font-lock-mode}), automatic +indentation and filling of comments and C preprocessor fontification.") + (license license:gpl3+))) + +(define-public emacs-tide + (package + (name "emacs-tide") + (version "3.2.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ananthakumaran/tide") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19kjq4kr2j853p5qp1s79zxmrfprli82lsnphbrlp9vbnib28xyd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-typescript-mode" ,emacs-typescript-mode))) + (home-page "https://github.com/ananthakumaran/tide") + (synopsis "Typescript IDE for Emacs") + (description + "Tide is an Interactive Development Environment (IDE) for Emacs which +provides the following features: + +@itemize +@item ElDoc +@item Auto complete +@item Flycheck +@item Jump to definition, Jump to type definition +@item Find occurrences +@item Rename symbol +@item Imenu +@item Compile On Save +@item Highlight Identifiers +@item Code Fixes +@item Code Refactor +@item Organize Imports +@end itemize") + (license license:gpl3+))) + +(define-public emacs-markdown-mode + (package + (name "emacs-markdown-mode") + (version "2.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jrblevin/markdown-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0g0ja4h651yfabm3k6gbw4y8w7wibc9283fyfzb33kjj38ivl5d7")))) + (build-system emacs-build-system) + (home-page "https://jblevins.org/projects/markdown-mode/") + (synopsis "Emacs Major mode for Markdown files") + (description + "Markdown-mode is a major mode for editing Markdown-formatted text files +in Emacs.") + (license license:gpl3+))) + +(define-public emacs-evil-markdown + (let ((commit "685d7fbb81bc02fa32779d2a127b99a0c8c7436b") + (revision "2")) + (package + (name "emacs-evil-markdown") + (version (git-version "0.0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Somelauw/evil-markdown") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1z1sjn6dcqv8mmkh6nfcwhnql2z6xr9yx3hs77bfxj79pf3c466p")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil) + ("emacs-markdown-mode" ,emacs-markdown-mode))) + (home-page "https://github.com/Somelauw/evil-markdown/") + (synopsis "Evil keybindings for @code{markdown-mode}") + (description + "This package provides custom text objects and bindings for +@code{markdown-mode}.") + (license license:gpl3+)))) + +(define-public emacs-edit-indirect + (package + (name "emacs-edit-indirect") + (version "0.1.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fanael/edit-indirect") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0by1x53pji39fjrj5bd446kz831nv0vdgw2jqasbym4pc1p2947r")))) + (build-system emacs-build-system) + (home-page "https://github.com/Fanael/edit-indirect") + (synopsis "Edit regions in separate buffers") + (description "This package allows you to edit regions in separate buffers, +like @code{org-edit-src-code} but for arbitrary regions.") + (license license:gpl3+))) + +(define-public emacs-projectile + (package + (name "emacs-projectile") + (version "2.2.0") + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/bbatsov" + "/projectile/v" version "/projectile.el")) + (file-name (string-append "projectile-" version ".el")) + (sha256 + (base32 + "1d983siysg98bjbb2r99qbrpvpf6dn85si8gyak4z05m67s8sn6v")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-pkg-info" ,emacs-pkg-info))) + (home-page "https://github.com/bbatsov/projectile") + (synopsis "Manage and navigate projects in Emacs easily") + (description + "This library provides easy project management and navigation. The +concept of a project is pretty basic - just a folder containing special file. +Currently git, mercurial and bazaar repos are considered projects by default. +If you want to mark a folder manually as a project just create an empty +.projectile file in it.") + (license license:gpl3+))) + +(define-public emacs-skeletor + (let ((commit "47c5b761aee8452716c97a69949ac2f675affe13") + (revision "1")) + (package + (name "emacs-skeletor") + (version (git-version "1.6.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/chrisbarrett/skeletor.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "12bdgykfh4mwsqdazxjdvha62h3q3v33159ypy91f6x59y01fi0n")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s) + ("emacs-f" ,emacs-f) + ("emacs-dash" ,emacs-dash) + ("emacs-let-alist" ,emacs-let-alist))) + (native-inputs + `(("emacs-ert-runner" ,emacs-ert-runner))) + (arguments + `(#:include (cons "^project-skeletons\\/" %default-include) + ;; XXX: one failing test involving initializing a git repo + #:phases + (modify-phases %standard-phases + (add-before 'check 'make-test-writable + (lambda _ + (make-file-writable "test/skeletor-test.el") + #t)) + (add-before 'check 'remove-git-test + (lambda _ + (emacs-batch-edit-file "test/skeletor-test.el" + `(progn + (progn + (goto-char (point-min)) + (re-search-forward + "ert-deftest initialises-git-repo") + (beginning-of-line) + (kill-sexp)) + (basic-save-buffer))) + #t))) + #:tests? #t + #:test-command '("ert-runner"))) + (home-page "https://github.com/chrisbarrett/skeletor.el") + (synopsis "Project skeletons for Emacs") + (description "This package provides project templates and automates the +mundane parts of setting up a new project, such as version control, licenses, +and tooling.") + (license license:gpl3+)))) + +(define-public emacs-elfeed + (package + (name "emacs-elfeed") + (version "3.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/elfeed") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j8a94val4ml7g1vcjgzk1w89h55sxfdrwnncmz6qbh1y2xsz8c5")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/skeeto/elfeed") + (synopsis "Atom/RSS feed reader for Emacs") + (description + "Elfeed is an extensible web feed reader for Emacs, supporting both Atom +and RSS, with a user interface inspired by notmuch.") + (license license:gpl3+))) + +(define-public emacs-elfeed-org + (let ((commit "77b6bbf222487809813de260447d31c4c59902c9")) + (package + (name "emacs-elfeed-org") + (version (git-version "0.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/remyhonig/elfeed-org") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0a2ibka82xq1dhy2z7rd2y9zhcj8rna8357881yz49wf55ccgm53")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-elfeed" ,emacs-elfeed) + ("emacs-org" ,emacs-org) + ("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner) + ("emacs-xtest" ,emacs-xtest))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner" "-L" "org-mode/lisp") + #:phases + (modify-phases %standard-phases + (add-before 'check 'chmod + (lambda _ + (chmod "test/fixture-mark-feed-ignore.org" #o644) + #t))))) + (home-page "https://github.com/remyhonig/elfeed-org") + (synopsis "Configure Elfeed with an Org-mode file") + (description + "@code{elfeed-org} lets you manage your Elfeed subscriptions +in Org-mode. Maintaining tags for all RSS feeds is cumbersome using +the regular flat list, where there is no hierarchy and tag names are +duplicated a lot. Org-mode makes the book keeping of tags and feeds +much easier.") + (license license:gpl3+)))) + +(define-public emacs-el-x + (package + (name "emacs-el-x") + (version "0.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sigma/el-x") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1i6j44ssxm1xdg0mf91nh1lnprwsaxsx8vsrf720nan7mfr283h5")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Move the source files to the top level, which is included in + ;; the EMACSLOADPATH. + (add-after 'unpack 'move-source-files + (lambda _ + (let ((el-files (find-files "./lisp" ".*\\.el$"))) + (for-each (lambda (f) + (rename-file f (basename f))) + el-files)) + #t))))) + (home-page "https://github.com/sigma/el-x") + (synopsis "Emacs Lisp extensions") + (description "command@{emacs-el-x} defines the @code{dflet} macro to +provide the historic behavior of @code{flet}, as well as +@code{declare-function} stub for older Emacs.") + (license license:gpl2+))) + +(define-public emacs-mocker + (package + (name "emacs-mocker") + (version "0.3.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sigma/mocker.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lav7am41v63xgavq8pr88y828jmd1cxd4prjq7jlbxm6nvrwxh2")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("ert-runner"))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (propagated-inputs + `(("emacs-el-x" ,emacs-el-x))) + (home-page "https://github.com/sigma/mocker.el") + (synopsis "Mocking framework for Emacs Lisp") + (description "Mocker.el is a framework for writing tests in Emacs Lisp. +It uses regular Lisp rather than a domain specific language (DSL), which +maximizes flexibility (at the expense of conciseness).") + (license license:gpl2+))) + +(define-public emacs-find-file-in-project + (package + (name "emacs-find-file-in-project") + (version "5.7.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/technomancy/find-file-in-project") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1skjbh7m0cck2rwmgzrrds51gipqf1jqghyfx15drc1n6kwivx3h")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("ert-runner" "tests"))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (home-page "https://github.com/technomancy/find-file-in-project") + (synopsis "File/directory finder for Emacs") + (description "@code{find-file-in-project} finds files or +directories quickly in the current project. The project root is detected +automatically when Git, Subversion or Mercurial are used. It also provides +functions to assist in reviewing changes on files.") + (license license:gpl3+))) + +(define-public emacs-pyvenv + (package + (name "emacs-pyvenv") + (version "1.21") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jorgenschaefer/pyvenv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "055sgk8zf4wb5nqsf3qasf5gg861zlb1831733f1qcrd2ij5gzxx")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; This phase incorrectly attempts to substitute "activate" and fails + ;; doing so. + (delete 'patch-el-files)) + #:tests? #t + #:test-command '("ert-runner"))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner) + ("emacs-mocker" ,emacs-mocker))) + (home-page "https://github.com/jorgenschaefer/pyvenv") + (synopsis "Python virtual environment interface for Emacs") + (description "pyvenv.el is a minor mode to support using Python virtual +environments (virtualenv) inside Emacs.") + (license license:gpl3+))) + +(define-public emacs-highlight-indent-guides + (let ((version "0.8.5") ; from package metadata + (revision "0") + (commit "c2c9de4d01edfb89609c91d4d7f1d81312015a2c")) + (package + (name "emacs-highlight-indent-guides") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DarthFennec/highlight-indent-guides") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10chvqnmdmkx6i9sigqframr85ziyafiz44glwhvhjajfkv42ad2")))) + (build-system emacs-build-system) + (home-page + "https://github.com/DarthFennec/highlight-indent-guides") + (synopsis "Minor mode to highlight indentation") + (description + "This package provides a minor mode to highlight indentation levels via +font-lock. Indent widths are dynamically discovered, which means this +correctly highlights in any mode, regardless of indent width, even in +languages with non-uniform indentation such as Haskell. This mode works +properly around hard tabs and mixed indentation and behaves well in large +buffers.") + (license license:expat)))) + +(define-public emacs-highlight-indentation + ;; Last release version is from 2015. + (let ((commit "d03803f2c06749c430443a3d24e039cbafc9c58f") + (revision "1")) + (package + (name "emacs-highlight-indentation") + (version (git-version "0.7.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/antonj/Highlight-Indentation-for-Emacs") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jq0gf4kcx9hvrw40rnw5c2qynjpjw1vsjbi2i4lqjbsnfnxn4wz")))) + (build-system emacs-build-system) + (home-page "https://github.com/antonj/Highlight-Indentation-for-Emacs/") + (synopsis "Highlighting indentation for Emacs") + (description "This package provides two minor modes to highlight +indentation guides in Emacs: + +@enumerate +@item @code{highlight-indentation-mode}, which displays guidelines + indentation (space indentation only). +@item @code{highlight-indentation-current-column-mode}, which displays + guidelines for the current-point indentation (space indentation only). +@end enumerate") + (license license:gpl2+)))) + +(define-public emacs-elpy + (package + (name "emacs-elpy") + (version "1.34.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jorgenschaefer/elpy") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1x1z298axbh4xalssnq9nkf2z1sdgmx839vb01xz18kr9lfavx1x")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons* "^elpy/[^/]+\\.py$" "^snippets\\/" %default-include) + #:phases + (modify-phases %standard-phases + ;; The following tests fail when building with Emacs 27 (see: + ;; https://github.com/jorgenschaefer/elpy/issues/1812). + (add-after 'unpack 'disable-problematic-tests + (lambda _ + (substitute* "test/elpy-company-backend-test.el" + (("elpy-company-backend-should-add-shell-candidates.*" all) + (string-append all " (skip-unless nil)\n"))) + (substitute* "test/elpy-folding-fold-comments-test.el" + (("elpy-fold-at-point-should-fold-and-unfold-comments.*" all) + (string-append all " (skip-unless nil)\n"))) + #t)) + ;; The default environment of the RPC uses Virtualenv to install + ;; Python dependencies from PyPI. We don't want/need this in Guix. + (add-before 'check 'do-not-use-virtualenv + (lambda _ + (setenv "ELPY_TEST_DONT_USE_VIRTUALENV" "1") + (substitute* "elpy-rpc.el" + (("defcustom elpy-rpc-virtualenv-path 'default") + "defcustom elpy-rpc-virtualenv-path 'system")) + #t)) + (add-before 'check 'build-doc + (lambda _ + (with-directory-excursion "docs" + (invoke "make" "info" "man")) + ;; Move .info file at the root so that it can installed by the + ;; 'move-doc phase. + (rename-file "docs/_build/texinfo/Elpy.info" "Elpy.info") + #t)) + (add-after 'build-doc 'install-manpage + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (man1 (string-append out "/share/man/man1"))) + (mkdir-p man1) + (copy-file "docs/_build/man/elpy.1" + (string-append man1 "/elpy.1"))) + #t))) + #:tests? #t + #:test-command '("ert-runner"))) + (propagated-inputs + `(("emacs-company" ,emacs-company) + ("emacs-find-file-in-project" ,emacs-find-file-in-project) + ("emacs-highlight-indentation" ,emacs-highlight-indentation) + ("emacs-yasnippet" ,emacs-yasnippet) + ("pyvenv" ,emacs-pyvenv) + ("s" ,emacs-s) + ;; The following are recommended Python dependencies that make Elpy + ;; much more useful. Installing these avoids Elpy prompting to install them + ;; from PyPI using pip. + ("python-autopep8" ,python-autopep8) + ("python-black" ,python-black) + ("python-flake8" ,python-flake8) + ("python-jedi" ,python-jedi) + ("python-rope" ,python-rope) + ("python-yapf" ,python-yapf))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner) + ("emacs-f" ,emacs-f) + ("python" ,python-wrapper) + ;; For documentation. + ("python-sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) + (home-page "https://github.com/jorgenschaefer/elpy") + (synopsis "Python development environment for Emacs") + (description "Elpy brings powerful Python editing to Emacs. It combines +and configures a number of other packages written in Emacs Lisp as well as +Python, together offering features such as navigation, documentation, +completion, interactive development and more.") + (license license:gpl3+))) + +(define-public emacs-rainbow-delimiters + (package + (name "emacs-rainbow-delimiters") + (version "2.1.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fanael/rainbow-delimiters") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zr2669savnmkc68hiqsq9wccm6bs1j6jbmlac1xqh6nq7xgq36g")))) + (build-system emacs-build-system) + (home-page "https://github.com/Fanael/rainbow-delimiters") + (arguments + `(#:tests? #t + #:test-command '("emacs" "-Q" "-batch" + "-l" "rainbow-delimiters-test.el" + "-f" "ert-run-tests-batch-and-exit"))) + (synopsis "Highlight brackets according to their depth") + (description + "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which +highlights parentheses, brackets, and braces according to their depth. Each +successive level is highlighted in a different color, making it easy to spot +matching delimiters, orient yourself in the code, and tell which statements +are at a given level.") + (license license:gpl3+))) + +(define-public emacs-rainbow-identifiers + (package + (name "emacs-rainbow-identifiers") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com/Fanael" + "/rainbow-identifiers/" version + "/rainbow-identifiers.el")) + (file-name (string-append "rainbow-identifiers-" version ".el")) + (sha256 + (base32 + "0325abxj47k0g1i8nqrq70w2wr6060ckhhf92krv1s072b3jzm31")))) + (build-system emacs-build-system) + (home-page "https://github.com/Fanael/rainbow-identifiers") + (synopsis "Highlight identifiers in source code") + (description + "Rainbow identifiers mode is an Emacs minor mode providing highlighting of +identifiers based on their names. Each identifier gets a color based on a hash +of its name.") + (license license:bsd-2))) + +(define-public emacs-rainbow-mode + (package + (name "emacs-rainbow-mode") + (version "1.0.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "rainbow-mode-" version ".el")) + (sha256 + (base32 "159fps843k5pap9k04a7ll1k3gw6d9c6w08lq4bbc3lqg78aa2l9")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/rainbow-mode.html") + (synopsis "Colorize color names in buffers") + (description + "This minor mode sets background color to strings that match color +names, e.g., @samp{#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") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cyvp3bi6yhckbdnq98xvghmhdzghya5y9wd7hxjawibs75rza95")))) + (build-system emacs-build-system) + (home-page "https://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") + (version "1.11") + (source (origin + (method url-fetch) + (uri (string-append "https://codeload.github.com/joostkremers/" + "visual-fill-column/tar.gz/" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "13jnviakp607zcms7f8ams56mr8wffnq1pghlc6fvqs39663pgwh")))) + (build-system emacs-build-system) + (home-page "https://github.com/joostkremers/visual-fill-column") + (synopsis "Fill-column for visual-line-mode") + (description + "@code{visual-fill-column-mode} is a small Emacs minor mode that mimics +the effect of @code{fill-column} in @code{visual-line-mode}. Instead of +wrapping lines at the window edge, which is the standard behaviour of +@code{visual-line-mode}, it wraps lines at @code{fill-column}. If +@code{fill-column} is too large for the window, the text is wrapped at the +window edge.") + (license license:gpl3+))) + +(define-public emacs-writeroom + (package + (name "emacs-writeroom") + (version "3.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joostkremers/writeroom-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0la4q2dm123l4rdfh0ry03b99ihvh324y7iw12az909198bcx335")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-visual-fill-column" ,emacs-visual-fill-column))) + (home-page "https://github.com/joostkremers/writeroom-mode") + (synopsis "Distraction-free writing for Emacs") + (description + "This package defines a minor mode for distraction-free writing. Some of +the default effects include entering fullscreen, deleting other windows of the +current frame, disabling the mode line, and adding margins to the buffer that +restrict the text width to 80 characters.") + (license license:bsd-3))) + +(define-public emacs-ido-completing-read+ + (package + (name "emacs-ido-completing-read+") + (version "3.12") + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com" + "/DarwinAwardWinner/ido-ubiquitous/v" + version "/ido-completing-read+.el")) + (file-name (string-append "ido-completing-read+-" version ".el")) + (sha256 + (base32 + "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf")))) + (build-system emacs-build-system) + (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous") + (synopsis "Replacement for completing-read using ido") + (description + "The ido-completing-read+ function is a wrapper for ido-completing-read. +Importantly, it detects edge cases that ordinary ido cannot handle and either +adjusts them so ido can handle them, or else simply falls back to the standard +Emacs completion function instead.") + (license license:gpl3+))) + +(define-public emacs-ido-ubiquitous + (package + (name "emacs-ido-ubiquitous") + (version "3.12") + (source (origin + (method url-fetch) + (uri (string-append "https://raw.githubusercontent.com" + "/DarwinAwardWinner/ido-ubiquitous/v" + version "/ido-ubiquitous.el")) + (file-name (string-append "ido-ubiquitous-" version ".el")) + (sha256 + (base32 + "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+))) + (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous") + (synopsis "Use ido (nearly) everywhere") + (description + "Ido-ubiquitous enables ido-style completion for almost every function +that uses the standard completion function completing-read.") + (license license:gpl3+))) + +(define-public emacs-yaml-mode + (package + (name "emacs-yaml-mode") + (version "0.0.14") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yoshiki/yaml-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r")))) + (build-system emacs-build-system) + (home-page "https://github.com/yoshiki/yaml-mode") + (synopsis "Major mode for editing YAML files") + (description + "Yaml-mode is an Emacs major mode for editing files in the YAML data +serialization format. It was initially developed by Yoshiki Kurihara and many +features were added by Marshall Vandegrift. As YAML and Python share the fact +that indentation determines structure, this mode provides indentation and +indentation command behavior very similar to that of python-mode.") + (license license:gpl3+))) + +(define-public emacs-gitlab-ci-mode + (package + (name "emacs-gitlab-ci-mode") + (version "20190425.11.10") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/joewreschnig/gitlab-ci-mode.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jkp9mnbiccqnha9zs646znqyqvy5jjb81kah7ghbkzdqqk2avm0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-yaml-mode" ,emacs-yaml-mode))) + (home-page "https://gitlab.com/joewreschnig/gitlab-ci-mode/") + (synopsis "Emacs mode for editing GitLab CI files") + (description + "@code{gitlab-ci-mode} is an Emacs major mode for editing GitLab CI +files. It provides syntax highlighting and completion for keywords and +special variables. An interface to GitLab’s CI file linter is also provided +via @code{gitlab-ci-lint}.") + (license license:gpl3+))) + +(define-public emacs-gitlab-snip-helm + (package + (name "emacs-gitlab-snip-helm") + (version "0.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/sasanidas/gitlab-snip-helm.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "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") + (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 +aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by +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.") + (home-page "http://web-mode.org/") + (license license:gpl3+))) + +(define-public emacs-wgrep + (package + (name "emacs-wgrep") + (version "2.3.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mhayashi1120/Emacs-wgrep") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00cwqzb94jlq4mwgv8z7r3mn0a6mhq95z6j189kacq9g4473zh8d")))) + (build-system emacs-build-system) + (home-page "https://github.com/mhayashi1120/Emacs-wgrep") + (synopsis "Edit a grep buffer and apply those changes to the files") + (description + "Emacs wgrep allows you to edit a grep buffer and apply those changes +to the file buffer. Several backends are supported beside the classic grep: +ack, ag, helm and pt.") + (license license:gpl3+))) + +(define-public emacs-helm + (package + (name "emacs-helm") + (version "3.6.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-helm/helm") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cl5awhq5py872qx9s30sfgfpfwjivwbsi18mgar8lj6lvs4s8zz")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-async" ,emacs-async) + ("emacs-popup" ,emacs-popup))) + (home-page "https://emacs-helm.github.io/helm/") + (synopsis "Incremental completion and selection narrowing +framework for Emacs") + (description "Helm is incremental completion and selection narrowing +framework for Emacs. It will help steer you in the right direction when +you're looking for stuff in Emacs (like buffers, files, etc). Helm is a fork +of @code{anything.el} originally written by Tamas Patrovic and can be +considered to be its successor. Helm sets out to clean up the legacy code in +@code{anything.el} and provide a cleaner, leaner and more modular tool, that's +not tied in the trap of backward compatibility.") + (license license:gpl3+))) + +(define-public emacs-helm-org + (let ((commit "8457e1e46227bf87726e05c42cec5a4b51c2ef7b") + (revision "3")) + (package + (name "emacs-helm-org") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-helm/helm-org") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kcjhwwi492n9m2w894hvdavfvhj45zygy7bwvx103wvpay5h6h6")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (home-page "https://github.com/emacs-helm/helm-org") + (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+)))) + +(define-public emacs-helm-swoop + (package + (name "emacs-helm-swoop") + (version "2.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsorphanage/helm-swoop") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k0ns92g45x8dbymqpl6ylk5mj3wiw2h03f48q5cy1z8in0c4rjd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (home-page "https://github.com/emacsorphanage/helm-swoop") + (synopsis "Filter and jump to lines in an Emacs buffer using Helm") + (description + "This package builds on the Helm interface to provide several commands +for search-based navigation of buffers.") + (license license:gpl2+))) + +(define-public emacs-helm-ag + (package + (name "emacs-helm-ag") + (version "0.62") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-helm-ag") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xgbpp8xqdiyvfs64x0q909g77ml28z3irw2lnasvpsg0dfdm2zy")))) + (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+))) + +(define-public emacs-helm-projectile + (package + (name "emacs-helm-projectile") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bbatsov/helm-projectile") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05gpg90gg03yalmv9fw1y9k21i2l617iipvs0p9n80aln8nrzs8g")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/bbatsov/helm-projectile") + (synopsis "Helm integration for Projectile") + (description + "This Emacs library provides a Helm interface for Projectile.") + (license license:gpl3+))) + +(define-public emacs-taskrunner + (let ((commit "3afd4a546d42339543d3d4e51b175fc3e82b3358") + (revision "1")) + (package + (name "emacs-taskrunner") + (version (git-version "0.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-taskrunner/emacs-taskrunner") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lkdvmjn3alhqxq2i64sdr977sbw3g0b2670d9bwyzi67qh0jxrv")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-async" ,emacs-async) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/emacs-taskrunner/emacs-taskrunner") + (synopsis "Retrieve tasks from various build systems and task-runners") + (description "This package parses Makefiles and build-system files for +multiple project types.") + (license license:gpl3+)))) + +(define-public emacs-ivy-taskrunner + (let ((commit "75d8d67cfe3c29663fe0f5508a887adf40ed5162") + (revision "1")) + (package + (name "emacs-ivy-taskrunner") + (version (git-version "0.9" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-taskrunner/ivy-taskrunner") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wf4s4k0ap21f7g5w6128an8nsvbja7f5n889vcml5b6gjz058db")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy) + ("emacs-taskrunner" ,emacs-taskrunner) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/emacs-taskrunner/ivy-taskrunner") + (synopsis "Retrieve build-system tasks using Ivy") + (description "This package provides an Ivy interface for selecting +Makefile targets.") + (license license:gpl3+)))) + +(define-public emacs-helm-taskrunner + (let ((commit "1910dac19cbc7bd4fd08b0faf9affd455339fbea") + (revision "1")) + (package + (name "emacs-helm-taskrunner") + (version (git-version "0.9" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-taskrunner/helm-taskrunner") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "182lmr858fx6rdhp1fy7kv8dvrhzcnxzwfck1q22s6xs8x85d5q7")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm) + ("emacs-taskrunner" ,emacs-taskrunner) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/emacs-taskrunner/helm-taskrunner") + (synopsis "Retrieve build-system tasks using Helm") + (description "This package provides a Helm interface for selecting +Makefile targets.") + (license license:gpl3+)))) + +(define-public emacs-helm-make + (let ((commit "feae8df22bc4b20705ea08ac9adfc2b43bb348d0") + (revision "1")) + (package + (name "emacs-helm-make") + (version (string-append "0.1.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/helm-make") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm) + ("emacs-projectile" ,emacs-projectile))) + (home-page "https://github.com/abo-abo/helm-make") + (synopsis "Select a Makefile target with helm") + (description "@code{helm-make} or @code{helm-make-projectile} will give +you a @code{helm} selection of directory Makefile's targets. Selecting a +target will call @code{compile} on it.") + (license license:gpl3+)))) + +(define-public emacs-cider + (package + (name "emacs-cider") + (version "0.25.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/clojure-emacs/cider") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sdd7vzw948q01kc8im1asiq1j06q0mnn2s8kj83f8sbdnfy0qbk")))) + (build-system emacs-build-system) + (arguments + '(#:exclude ;don't exclude 'cider-test.el' + '("^\\.dir-locals\\.el$" "^test/"))) + (propagated-inputs + `(("emacs-clojure-mode" ,emacs-clojure-mode) + ("emacs-parseedn" ,emacs-parseedn) + ("emacs-pkg-info" ,emacs-pkg-info) + ("emacs-queue" ,emacs-queue) + ("emacs-sesman" ,emacs-sesman) + ("emacs-spinner" ,emacs-spinner))) + (home-page "https://cider.mx/") + (synopsis "Clojure development environment for Emacs") + (description + "CIDER (Clojure Interactive Development Environment that Rocks) aims to +provide an interactive development experience similar to the one you'd get +when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with +Geiser) and Smalltalk. + +CIDER is the successor to the now deprecated combination of using SLIME + +swank-clojure for Clojure development. + +There are plenty of differences between CIDER and SLIME, but the core ideas +are pretty much the same (and SLIME served as the principle inspiration for +CIDER).") + (license license:gpl3+))) + +;; There hasn't been a tag or release since 2016, so we take the latest +;; commit. +(define-public emacs-sly + (let ((commit "6a2f543cb21f14104c2253af5a1427b884a987ae") + ;; Update together with sbcl-slynk-boot0. + (revision "5")) + (package + (name "emacs-sly") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joaotavora/sly") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wbpg9p9yg2hd62l15pvy50fk3hndq5zzyqlyyf04g368s895144")))) + (build-system emacs-build-system) + (native-inputs + `(("texinfo" ,texinfo))) + (arguments + `(#:include (cons* "^contrib\\/" "^lib\\/" "^slynk\\/" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads) + (add-before 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info-dir (string-append out "/share/info")) + (doc-dir (string-append out "/share/doc/" + ,name "-" ,version)) + (doc-files '(;; "doc/sly-refcard.pdf" ; See sly-refcard.pdf below. + "README.md" "NEWS.md" "PROBLEMS.md" + "CONTRIBUTING.md"))) + (with-directory-excursion "doc" + (substitute* "Makefile" + (("infodir=/usr/local/info") + (string-append "infodir=" info-dir)) + ;; Don't rebuild contributors.texi since we are not in + ;; the git repo. + (("contributors.texi: Makefile texinfo-tabulate.awk") + "contributors.texi:")) + (invoke "make" "html/index.html") + (invoke "make" "sly.info") + ;; TODO: We need minimal texlive with "preprint" package + ;; (for fullpage.sty). (invoke "make" "sly-refcard.pdf") + (install-file "sly.info" info-dir) + (copy-recursively "html" (string-append doc-dir "/html"))) + (for-each (lambda (f) + (install-file f doc-dir) + (delete-file f)) + doc-files) + (delete-file-recursively "doc") + #t)))))) + (home-page "https://github.com/joaotavora/sly") + (synopsis "Sylvester the Cat's Common Lisp IDE") + (description + "SLY is Sylvester the Cat's Common Lisp IDE. SLY is a fork of SLIME, and +contains the following improvements over it: + +@enumerate +@item Completely redesigned REPL based on Emacs's own full-featured + @code{comint.el}. +@item Live code annotations via a new @code{sly-stickers} contrib. +@item Consistent interactive button interface. Everything can be copied to + the REPL. +@item Multiple inspectors with independent history. +@item Regexp-capable @code{M-x sly-apropos}. +@item Contribs are first class SLY citizens and enabled by default. +@item Use ASDF to loads contribs on demand. +@end enumerate + +SLY tracks SLIME's bugfixes and all its familiar features (debugger, inspector, +xref, etc...) are still available, but with better integration.") + (license license:gpl3+)))) + +(define-public emacs-sly-quicklisp + (let ((commit "01ebe3976a244309f2e277c09206831135a0b66c") + (revision "1")) + (package + (name "emacs-sly-quicklisp") + (version (git-version "0.0.0" revision commit)) + (home-page "https://github.com/joaotavora/sly-quicklisp") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1vfqmvayf35g6y3ljsm3rlzv5jm50qikhh4lv2zkkswj6gkkb1cv")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly))) + (arguments + `(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads) + (delete 'enable-autoloads-compilation)))) + (synopsis "Quicklisp support for SLY") + (description + "@command{sly-quicklisp} is an external contrib for SLY that provides a +sly-quickload command that prompts the user for a package to install. ") + (license license:gpl3+)))) + +(define-public emacs-sly-asdf + (let ((commit "32ce14994e8faee9321605cec36d156b02996c46") + (revision "4")) + (package + (name "emacs-sly-asdf") + (version (git-version "0.1.0" revision commit)) + (home-page "https://github.com/mmgeorge/sly-asdf") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "09x8l37wwqw74xc2frwzbfdb1if8rb3szg5akdk3v2qhik4sm3dd")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly) + ("emacs-popup" ,emacs-popup))) + (arguments + '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include))) + (synopsis "ASDF contrib for SLY") + (description + "@command{sly-asdf} is an external contrib for SLY that provides +additional support for working with ASDF projects.") + (license license:gpl3+)))) + +(define-public emacs-sly-named-readtables + (let ((commit "a5a42674ccffa97ccd5e4e9742beaf3ea719931f") + (revision "1")) + (package + (name "emacs-sly-named-readtables") + (version (git-version "0.1" revision commit)) + (home-page "https://github.com/joaotavora/sly-named-readtables") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16asd119rzqrlclps2q6yrkis8jy5an5xgzzqvb7jdyq39zxg54q")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly))) + (arguments + '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases (modify-phases %standard-phases + ;; Byte compilation of the autoload file fails. + (delete 'enable-autoloads-compilation)))) + (synopsis "Named-readtables support for SLY") + (description + "@command{sly-named-readtables} is an external contrib for SLY that +enables different readtables to be active in different parts of the same +file.") + (license license:gpl3+)))) + +(define-public emacs-sly-macrostep + (let ((commit "be2d24545092d164be1a91031d8881afd29c9ec0") + (revision "1")) + (package + (name "emacs-sly-macrostep") + (version (git-version "0.1" revision commit)) + (home-page "https://github.com/joaotavora/sly-macrostep") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0v8m3zkccpqd2l8m9340y672l2mm3mrry8422nva5kfvpcwdayqb")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly) + ("emacs-macrostep" ,emacs-macrostep))) + (arguments + '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads) + (delete 'enable-autoloads-compilation)))) + (synopsis "Expand Common Lisp macros inside source files with SLY") + (description + "@command{sly-macrostep} is a SLY contrib for expanding CL macros right +inside the source file.") + (license license:gpl3+)))) + +(define-public emacs-sly-package-inferred + (let ((commit "800e71e2be631422277e2ec77e6d6f6ea20e95ef") + (revision "1")) + (package + (name "emacs-sly-package-inferred") + (version (git-version "0.1" revision commit)) + (home-page "https://github.com/40ants/sly-package-inferred") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1216idyp034nkqddhw4p53jkhhdxa6xnjjmsvijpf4rxqnfqvapg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-sly" ,emacs-sly))) + (arguments + '(#:include (cons* "\\.lisp$" "\\.asd$" %default-include) + #:phases + ;; The package provides autoloads. + (modify-phases %standard-phases + (delete 'make-autoloads)))) + (synopsis "Improved package inferred systems support for SLY") + (description + "@command{sly-package-inferred} is an external contrib for SLY that +replaces its completion with a function which is better suited for systems +using package inferred style.") + (license license:gpl3+)))) + +(define-public emacs-lua-mode + (let ((commit "35b6e4c20b8b4eaf783ccc8e613d0dd06dbd165c") + (revision "0")) + (package + (name "emacs-lua-mode") + (version (git-version "20200508" revision commit)) + (home-page "https://github.com/immerrr/lua-mode/") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1hai6rqjm5py0bp57nhggmj9qigwdj3a46ngacpnjc1qmy9kkgfk")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("buttercup" "-l" "lua-mode.el"))) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup) + ("lua" ,lua))) + (synopsis "Major mode for lua") + (description + "This Emacs package provides a mode for @uref{https://www.lua.org/, +Lua programming language}.") + (license license:gpl2+)))) + +(define-public emacs-ebuild-mode + (package + (name "emacs-ebuild-mode") + (version "1.51") + (source + (origin + (method url-fetch) + (uri (string-append + "https://dev.gentoo.org/~ulm/emacs/" + "ebuild-mode-" version ".tar.xz")) + (file-name (string-append name "-" version ".tar.xz")) + (sha256 + (base32 "0sfmd6ns2qdmybcynlvc4fqzkbkzmm54rn87wyirdcqnpy0x03i2")))) + (build-system emacs-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "ebuild-mode.info") + (install-file "ebuild-mode.info" + (string-append (assoc-ref outputs "out") + "/share/info")) + #t))))) + (native-inputs + `(("texinfo" ,texinfo))) + (home-page "https://devmanual.gentoo.org") + (synopsis "Major modes for Gentoo package files") + (description + "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42 +news items, openrc and runscripts.") + (license license:gpl2+))) + +(define-public emacs-evil + (package + (name "emacs-evil") + (version "1.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/evil") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17xrn3s6a4afmls8fw8nnxa1jq9dmj2qqrxa2vngh50hxpz8840p")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-test-helpers + (lambda _ + (substitute* "evil-test-helpers.el" + (("\\(undo-tree-mode 1\\)") "")) + #t))))) + (build-system emacs-build-system) + (home-page "https://github.com/emacs-evil/evil") + (synopsis "Extensible Vi layer for Emacs") + (description + "Evil is an extensible vi layer for Emacs. It emulates the +main features of Vim, and provides facilities for writing custom +extensions.") + (license license:gpl3+))) + +(define-public emacs-evil-collection + (let ((commit "c68aed6a9694836602ada224160bc5b4c0a37919") + (revision "15")) + (package + (name "emacs-evil-collection") + (version (git-version "0.0.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/evil-collection") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1xhrzl0vy540a572f9fnh5a039bpqsrkv0kh6bqw0rki70w7x0xx")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil) + ("emacs-annalist" ,emacs-annalist))) + (arguments + `(#:include (cons* "^modes\\/" %default-include))) + (home-page "https://github.com/emacs-evil/evil-collection") + (synopsis "Collection of Evil bindings for many major and minor modes") + (description "This is a collection of Evil bindings for the parts of +Emacs that Evil does not cover properly by default, such as @code{help-mode}, +@code{M-x calendar}, Eshell and more.") + (license license:gpl3+)))) + +(define-public emacs-goto-chg + (let ((commit "1829a13026c597e358f716d2c7793202458120b5") + (version "1.7.3") + (revision "1")) + (package + (name "emacs-goto-chg") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/goto-chg") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y603maw9xwdj3qiarmf1bp13461f9f5ackzicsbynl0i9la3qki")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-undo-tree" ,emacs-undo-tree))) + (home-page "https://github.com/emacs-evil/goto-chg") + (synopsis "Go to the last change in the Emacs buffer") + (description + "This package provides @code{M-x goto-last-change} command that goes to +the point of the most recent edit in the current Emacs buffer. When repeated, +go to the second most recent edit, etc. Negative argument, @kbd{C-u -}, is +used for reverse direction.") + (license license:gpl2+)))) + +(define-public emacs-janpath-evil-numbers + (let ((commit "d988041c1fe6e941dc8d591390750b237f71f524") + (version "0.5") + (revision "1")) + (package + (name "emacs-janpath-evil-numbers") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/janpath/evil-numbers") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16zixhxxcb83m82f2cfiardfn99j3w41v6vh1qk6j9pplrlfw70v")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/janpath/evil-numbers") + (synopsis "Increment and decrement numeric literals") + (description + "This package provides functionality to search for a number up to the +end of a line and increment or decrement it.") + (license license:gpl3+)))) + +(define-public emacs-evil-owl + (let ((commit "24c5f43df375194386344e69bc720ea3986c9510") + (revision "3")) + (package + (name "emacs-evil-owl") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mamapanda/evil-owl") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bqzch14whlmrcasakah3psrzswvkzd7mmi8hx5s64kfp29wbdhi")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/mamapanda/evil-owl") + (synopsis "Preview candidates when using Evil registers and marks") + (description + "This package supplements Evil's register- and mark-based commands with +a popup window for previewing candidates.") + (license license:gpl3+)))) + +(define-public emacs-evil-args + (let ((commit "758ad5ae54ad34202064fec192c88151c08cb387") + (revision "1")) + (package + (name "emacs-evil-args") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wcsmith/evil-args") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0k35glgsirc3cph8v5hhjrqfh4ndwh8a28qbr03y3jl8s453xcj7")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/wcsmith/evil-args") + (synopsis "Motions and text objects for delimited arguments in Evil") + (description + "This package provides motions and text objects for delimited +arguments, such as arguments separated by commas and semicolons.") + (license license:expat)))) + +(define-public emacs-evil-escape + (package + (name "emacs-evil-escape") + (version "3.14") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/syl20bnr/evil-escape") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0s8lmmm25qabicwaj9jybpbd8mkc62yl7jnhk1lpablydjkv3w2i")))) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (build-system emacs-build-system) + (home-page "https://github.com/syl20bnr/evil-escape") + (synopsis "Escape from insert state and everything else in Emacs") + (description + "Evil escape provides a customizable key sequence to escape from insert +state and everything else in Emacs.") + (license license:gpl3+))) + +(define-public emacs-evil-exchange + (let ((commit "47691537815150715e64e6f6ec79be7746c96120") + (version "0.41") + (revision "1")) + (package + (name "emacs-evil-exchange") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Dewdrops/evil-exchange") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bjpn4yqig17ddym6wqq5fm1b294q74hzcbj9a6gs97fqiwf88xa")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (native-inputs `(("emacs-ert-runner" ,emacs-ert-runner))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("cask exec ") "")) + #t))) + #:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/Dewdrops/evil-exchange") + (synopsis "Exchange text easily within Evil") + (description + "This package, a port of @code{vim-exchange}, provides an Evil operator +for exchanging text.") + (license license:gpl3+)))) + +(define-public emacs-evil-replace-with-register + (let ((commit "91cc7bf21a94703c441cc9212214075b226b7f67") + (version "0.1") + (revision "1")) + (package + (name "emacs-evil-replace-with-register") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Dewdrops/evil-ReplaceWithRegister") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "14rpn76qrf287s3y2agmddcxi27r226i53ixjvd694ss039g0r11")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/Dewdrops/evil-ReplaceWithRegister") + (synopsis "Quickly replace text with the contents of a register") + (description + "This package provides an Evil operator for replacing text with the +contents of a register.") + (license license:gpl3+)))) + +(define-public emacs-evil-indent-plus + (let ((commit "0c7501e6efed661242c3a20e0a6c79a6455c2c40") + (version "1.0.0") + (revision "1")) + (package + (name "emacs-evil-indent-plus") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/TheBB/evil-indent-plus") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1g6r1ydscwjvmhh1zg4q3nap4avk8lb9msdqrh7dff6pla0r2qs6")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/TheBB/evil-indent-plus") + (synopsis "Text objects based on indentation") + (description + "This package adds new text objects for @code{evil-mode} based on +blocks having the same or higher indentation, including or excluding +surrounding lines.") + (license license:gpl2+)))) + +(define-public emacs-evil-text-object-python + (let ((commit "9a064fe6475429145cbcc3b270fcc963b67adb15") + (version "1.0.1") + (revision "1")) + (package + (name "emacs-evil-text-object-python") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wbolster/evil-text-object-python") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "074zpm6mmr1wfl6d5xdf8jk1fs4ccpbzf4ahhkwga9g71xiplszv")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/wbolster/evil-text-object-python") + (synopsis "Text objects for Python") + (description + "This package provides @code{evil-mode} text objects for Python.") + (license license:gpl3+)))) + +(define-public emacs-evil-lion + (let ((commit "6b03593f5dd6e7c9ca02207f9a73615cf94c93ab") + (revision "1")) + (package + (name "emacs-evil-lion") + (version (git-version "0.0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edkolev/evil-lion") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a162hynp0jcsn50c1w5a02mrw9w3q05c7lkqzqd25px3d0p772q")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/edkolev/evil-lion") + (synopsis "Align operator for @code{evil-mode}") + (description + "This package, a port of @code{vim-lion}, provides an operator for +aligning text objects based on separators.") + (license license:gpl3+)))) + +(define-public emacs-evil-expat + (let ((commit "f4fcd0aa3edc359adb5c986b5dd9188d220d84e2") + (revision "1")) + (package + (name "emacs-evil-expat") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edkolev/evil-expat") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0872ix682hkdz0k8pn6sb54rqkx00rz5fxpd5j2snx406yagpaxz")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/edkolev/evil-expat") + (synopsis "Extra @code{ex} commands for @code{evil-mode}") + (description + "This package provides additional commands for the @code{ex} command +line, including functions for version control with Git and for copying and +pasting into and from @code{tmux} paste buffers.") + (license license:gpl3+)))) + +(define-public emacs-evil-nerd-commenter + (package + (name "emacs-evil-nerd-commenter") + (version "3.3.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/redguardtoo/evil-nerd-commenter") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qd5a89mzvdyhd8lm13iwp220vzpd6dajwx54frlc5bzsxdmg6vc")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/redguardtoo/evil-nerd-commenter") + (synopsis "Comment and uncomment lines efficiently") + (description + "This package provides text objects and operators for comments within +@code{evil-mode}.") + (license license:gpl3+))) + +(define-public emacs-evil-visual-replace + (package + (name "emacs-evil-visual-replace") + (version "0.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/troyp/evil-visual-replace") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gfyrq7xfzmzh3x8k5f08n027dlbwi0pkkxf9c39fkxp4jngibsz")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/troyp/evil-visual-replace") + (synopsis "Replacement commands for @code{evil-mode} visual blocks") + (description + "This package provides versions of @code{query-replace} and +@code{replace-regexp} that work for @code{evil-mode} visual blocks.") + (license license:gpl2+))) + +(define-public emacs-evil-visualstar + (let ((commit "06c053d8f7381f91c53311b1234872ca96ced752") + (version "0.0.2") + (revision "1")) + (package + (name "emacs-evil-visualstar") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bling/evil-visualstar") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mkbzw12fav945icibc2293m5haxqr3hzkyli2cf4ssk6yvn0x4c")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/bling/evil-visualstar") + (synopsis "Instantly search using the visual selection") + (description + "This package provides @code{evil-mode} functions for using selected text +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") + (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") + (version "0.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sanel/monroe") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "101lfrykdbv37spkbw7zihhx26bc1lhjyxbanrcp9880bxj04jiy")))) + (build-system emacs-build-system) + (home-page "https://github.com/sanel/monroe") + (synopsis "Clojure nREPL client for Emacs") + (description + "Monroe is a nREPL client for Emacs, focused on simplicity and easy +distribution, primarily targeting Clojure users") + (license license:gpl3+))) + +(define-public emacs-orgalist + (package + (name "emacs-orgalist") + (version "1.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "orgalist-" version ".el")) + (sha256 + (base32 "1hwm7j0hbv2pg9w885ky1c9qga3grcfq8v216jv2ivkw8xzavysd")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/orgalist.html") + (synopsis "Manage Org-like lists in non-Org buffers") + (description "Orgalist writes and manages Org mode's plain lists in +non-Org buffers. More specifically, it supports the syntax of Org mode for +numbered, unnumbered, description items, checkboxes, and counter cookies. + +The library also implements radio lists, i.e., lists written in Org syntax +later translated into the host format, e.g., LaTeX or HTML.") + (license license:gpl3+))) + +(define-public emacs-writegood-mode + (package + (name "emacs-writegood-mode") + (version "2.0.2") + (home-page "https://github.com/bnbeckwith/writegood-mode") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (sha256 + (base32 + "1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b")) + (file-name (string-append name "-checkout")))) + (build-system emacs-build-system) + (synopsis "Polish up poor writing on the fly") + (description + "This minor mode tries to find and highlight problems with your writing +in English as you type. It primarily detects \"weasel words\" and abuse of +passive voice.") + (license license:gpl3+))) + +(define-public emacs-neotree + (package + (name "emacs-neotree") + (version "0.5.2") + (home-page "https://github.com/jaypei/emacs-neotree") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (sha256 + (base32 + "0hx72fq10772bbyqrj7mhhp02k26cccjxdadiqm1ykainhfmn1x0")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (synopsis "Folder tree view for Emacs") + (description "This Emacs package provides a folder tree view.") + (license license:gpl3+))) + +(define-public emacs-org + (package + (name "emacs-org") + ;; emacs-org-contrib inherits from this package. Please update it as + ;; well. + (version "9.3.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/org-" version ".tar")) + (sha256 + (base32 "0jwpgfzjvf1hd3mx582pw86hysdryaqzp69hk6azi9kmq4bzk87d")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((share (string-append (assoc-ref outputs "out") "/share")) + (info-dir (string-append share "/info")) + (doc-dir (string-append share "/doc/" ,name "-" ,version))) + (install-file "org" info-dir) + (install-file "orgcard.pdf" doc-dir)) + #t))))) + (home-page "https://orgmode.org/") + (synopsis "Outline-based notes management and organizer") + (description "Org is an Emacs mode for keeping notes, maintaining TODO +lists, and project planning with a fast and effective lightweight markup +language. It also is an authoring system with unique support for literate +programming and reproducible research.") + (license license:gpl3+))) + +(define-public emacs-org-contrib + (package + (inherit emacs-org) + (name "emacs-org-contrib") + (version "20200213") + (source + (origin + (method url-fetch) + (uri (string-append "https://orgmode.org/elpa/" + "org-plus-contrib-" version ".tar")) + (sha256 + (base32 "0g6rrrwplrifz4ip0jg638m4kvpvdg03hwnyghd813w0lm935mh5")))) + (arguments + `(#:modules ((guix build emacs-build-system) + (guix build utils) + (guix build emacs-utils) + (ice-9 ftw) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'delete-org-files + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (org (assoc-ref inputs "org")) + (contrib-files + (map basename (find-files out))) + (org+contrib-files + (map basename (find-files org))) + (duplicates (lset-intersection string=? + contrib-files + org+contrib-files))) + (with-directory-excursion + (string-append out "/share/emacs/site-lisp") + (for-each delete-file duplicates)) + #t)))))) + (propagated-inputs + `(("arduino-mode" ,emacs-arduino-mode) + ("cider" ,emacs-cider) + ("org" ,emacs-org) + ("scel" ,emacs-scel))) + (synopsis "Contributed packages to Org mode") + (description "Org is an Emacs mode for keeping notes, maintaining TODO +lists, and project planning with a fast and effective plain-text system. + +This package is equivalent to org-plus-contrib, but only includes additional +files that you would find in @file{contrib/} from the git repository."))) + +(define-public emacs-flx + (package + (name "emacs-flx") + (version "0.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lewang/flx") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0sjybrcnb2sl33swy3q664vqrparajcl0m455gciiih2j87hwadc")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/lewang/flx") + (synopsis "Fuzzy matching for Emacs") + (description + "Flx provides fuzzy matching for emacs a la sublime text. +The sorting algorithm is a balance between word beginnings (abbreviation) +and contiguous matches (substring). The longer the substring match, +the higher it scores. This maps well to how we think about matching. +Flx has support for ido (interactively do things) through flx-ido.") + (license license:gpl3+))) + +(define-public emacs-cyberpunk-theme + (package + (name "emacs-cyberpunk-theme") + (version "1.22") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/n3mo/cyberpunk-theme.el/") + (commit version))) + (sha256 + (base32 + "06nff38pcy5rgz13svkajsg0jjk73qy4a8m7p9f76yxcywxlgxlc")) + (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") + (description + "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+))) + +(define-public emacs-danneskjold-theme + (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57") + (revision "1")) + (package + (name "emacs-danneskjold-theme") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (home-page "https://github.com/rails-to-cosmos/danneskjold-theme") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-screenshots + (lambda _ + (delete-file-recursively "screenshots") #t))))) + (synopsis "High-contrast Emacs theme") + (description + "@code{danneskjold-theme} is a high-contrast theme for Emacs.") + (license license:gpl3+)))) + +(define-public emacs-dream-theme + (let* ((commit "107a11d74365046f28a1802a2bdb5e69e4a7488b") + (revision "1")) + (package + (name "emacs-dream-theme") + (version (string-append "0.0.0-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/djcb/dream-theme") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk")))) + (build-system emacs-build-system) + (home-page "https://github.com/djcb/dream-theme") + (synopsis "High-contrast Emacs theme") + (description + "@code{dream-theme} is a dark, clean theme for Emacs. It is inspired +by zenburn, sinburn and similar themes, but slowly diverging from them.") + (license license:gpl3+)))) + +(define-public emacs-dracula-theme + (package + (name "emacs-dracula-theme") + (version "1.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dracula/emacs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15y2djc5jljlvls1x9kp50m1kp0dcksmyixafsyimj66xpq9ngh0")))) + (build-system emacs-build-system) + (home-page "https://draculatheme.com/") + (synopsis "Dark theme for Emacs") + (description + "Dracula is a dark color theme for many editors, shells and more. This +package provides the Emacs theme.") + (license license:expat))) + +(define-public emacs-auto-complete + (package + (name "emacs-auto-complete") + (version "1.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/auto-complete/auto-complete") + (commit (string-append "v" version)))) + (sha256 + (base32 + "04i9b11iksg6acn885wl3qgi5xpsm3yszlqmd2x21yhprndlz7gb")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-popup" ,emacs-popup))) + (home-page "https://github.com/auto-complete/auto-complete") + (synopsis "Intelligent auto-completion extension for Emacs") + (description + "Auto-Complete is an intelligent auto-completion extension for Emacs. +It extends the standard Emacs completion interface and provides an environment +that allows users to concentrate more on their own work. Its features are: +a visual interface, reduce overhead of completion by using statistic method, +extensibility.") + (license license:gpl3+))) + +(define-public emacs-nginx-mode + (package + (name "emacs-nginx-mode") + (version "1.1.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ajc/nginx-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17dh5pr3gh6adrbqx588gimxbb2fr7iv2qrxv6r48w2727l344xs")))) + (build-system emacs-build-system) + (home-page "https://github.com/ajc/nginx-mode") + (synopsis "Emacs major mode for editing nginx config files") + (description "This package provides an Emacs major mode for +editing nginx config files.") + (license license:gpl2+))) + +(define-public emacs-stream + (package + (name "emacs-stream") + (version "2.2.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "stream-" version ".tar")) + (file-name (git-file-name name version)) + (sha256 + (base32 "00c3n4gyxzv7vczqms0d62kl8zsmjfyxa92mwxn2snyx857a9jfw")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/stream.html") + (synopsis "Implementation of streams for Emacs") + (description "This library provides an implementation of streams for Emacs. +Streams are implemented as delayed evaluation of cons cells.") + (license license:gpl3+))) + +(define-public emacs-cl-print + (let ((commit "1a70c553dfb04352afb5b8696fe0cef8acc8f991") + (revision "1")) + (package + (name "emacs-cl-print") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsmirror/cl-print") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "164zbnsi5mssvcpy0158fm7fw5cmd1r5nkpn29fmd2b2scy3gm79")))) + (build-system emacs-build-system) + (home-page "https://github.com/emacsmirror/cl-print") + (synopsis "CL-style generic printing") + (description "This package provides a generic function, +@code{cl-print-object}, to which the programmer can add any method they +please.") + (license license:gpl3+)))) + +(define-public emacs-el-search + (let ((commit "07bed84dd8ae9e4c6c648834224b1d33fdbd51e0") + (revision "2")) + (package + (name "emacs-el-search") + (version (git-version "1.12.6.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacsmirror/el-search") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10w1ldgijdhfsrazp0y3bm76jv5wvdn94k1yp0pmc2m1896b58ak")))) + (build-system emacs-build-system) + (inputs + `(("emacs-stream" ,emacs-stream) + ("emacs-cl-print" ,emacs-cl-print))) + (home-page "https://github.com/emacsmirror/el-search") + (synopsis "Expression based interactive search for emacs-lisp-mode") + (description "This package provides expression based interactive search +procedures for emacs-lisp-mode.") + (license license:gpl3+)))) + +(define-public emacs-ht + (package + (name "emacs-ht") + (version "2.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Wilfred/ht.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1p3qa7g0wa0wbviv2f8bda39cjys3naayk5xjm3nxxmqsyy8papx")))) + (build-system emacs-build-system) + (propagated-inputs `(("emacs-dash" ,emacs-dash))) + (native-inputs + `(("emacs-ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner"))) + (home-page "https://github.com/Wilfred/ht.el") + (synopsis "Hash table library for Emacs") + (description + "This package simplifies the use of hash tables in elisp. It also +provides functions to convert hash tables from and to alists and plists.") + (license license:gpl3+))) + +(define-public emacs-log4e + (package + (name "emacs-log4e") + (version "0.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aki2o/log4e") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1l28n7a0v2zkknc70i1wn6qb5i21dkhfizzk8wcj28v44cgzk022")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-tests + ;; Guile builder complains about null characters in some + ;; strings of test files. Remove "test" directory (it is not + ;; needed anyway). + (lambda _ + (delete-file-recursively "test")))))) + (home-page "https://github.com/aki2o/log4e") + (synopsis "Logging framework for elisp") + (description + "This package provides a logging framework for elisp. It allows +you to deal with multiple log levels.") + (license license:gpl3+))) + +(define-public emacs-gntp + (package + (name "emacs-gntp") + (version "0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tekai/gntp.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nvyjjjydrimpxy4cpg90si7sr8lmldbhlcm2mx8npklp9pn5y3a")))) + (build-system emacs-build-system) + (home-page "https://github.com/tekai/gntp.el") + (synopsis "Growl Notification Protocol for Emacs") + (description + "This package implements the Growl Notification Protocol GNTP +described at @uref{http://www.growlforwindows.com/gfw/help/gntp.aspx}. +It is incomplete as it only lets you send but not receive +notifications.") + (license license:bsd-3))) + +(define-public emacs-alert + (package + (name "emacs-alert") + (version "1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jwiegley/alert") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0lc0p5cl4hfrzw1z2ghb11k1lvljn5m08jw5fmgwgxv667kwh49r")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-gntp" ,emacs-gntp) + ("emacs-log4e" ,emacs-log4e))) + (home-page "https://github.com/jwiegley/alert") + (synopsis "Growl-style notification system for Emacs") + (description + "Alert is a Growl-workalike for Emacs which uses a common notification +interface and multiple, selectable \"styles\", whose use is fully +customizable by the user.") + (license license:gpl2+))) + +(define-public emacs-zones + (package + (name "emacs-zones") + (version "2019.7.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "zones-" version ".el")) + (sha256 + (base32 "0qp1ba2pkqx9d35g7z8hf8qs2k455krf2a92l4rka3ipsbnmq5k1")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/Zones") + (synopsis "Define and act on multiple zones of buffer text") + (description + "Library @file{zones.el} lets you easily define and subsequently act on +multiple zones of buffer text. You can think of this as enlarging the notion +of region. In effect, it can remove the requirement of target text being +a contiguous sequence of characters. A set of buffer zones is, in effect, +a (typically) noncontiguous set of text.") + (license license:gpl3+))) + +(define-public emacs-mu4e-alert + (package + (name "emacs-mu4e-alert") + (version "1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iqbalansari/mu4e-alert") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nvsfbfsma59ilf7c3vjngnmx3aapwvvvaafdy5szm5r6lkicqvg")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-alert" ,emacs-alert) + ("emacs-s" ,emacs-s) + ("emacs-ht" ,emacs-ht) + ("mu" ,mu))) + (home-page "https://github.com/iqbalansari/mu4e-alert") + (synopsis "Desktop notification for mu4e") + (description + "This package provides desktop notifications for mu4e. +Additionally it can display the number of unread emails in the +mode-line.") + (license license:gpl3+))) + +(define-public emacs-mu4e-jump-to-list + (let ((commit "358bba003543b49ffa266e503e54aebd0ebe614b") + (revision "1")) + (package + (name "emacs-mu4e-jump-to-list") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/wavexx/mu4e-jump-to-list.el.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00y9nap61q1z2cdql4k9g7fgi2gdgd9iy5s5lzrd9a4agbx6r7sv")))) + (build-system emacs-build-system) + (propagated-inputs + `(("mu" ,mu))) + (home-page "https://gitlab.com/wavexx/mu4e-jump-to-list.el") + (synopsis "Select and view mailing lists in mu4e") + (description + "@code{mu4e-jump-to-list} allows you to select and view mailing lists +automatically using existing List-ID headers in your mu database. Just press +\"l\" in the headers view and any mailing list you've subscribed to will be +automatically discovered and presented in recency order.") + (license license:gpl3+)))) + +(define-public emacs-mu4e-patch + (let ((commit "522da46c1653b1cacc79cde91d6534da7ae9517d") + (revision "1")) + (package + (name "emacs-mu4e-patch") + (version (git-version "0.1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/seanfarley/mu4e-patch") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10lzf3b70pk6rzdrgx0ww0gc94v0ydh9zj1gbsa20xw27ds7hmfn")))) + (build-system emacs-build-system) + (propagated-inputs + `(("mu" ,mu))) + (home-page "https://github.com/seanfarley/mu4e-patch") + (synopsis "Colorize patch-like emails in mu4e") + (description + "Extension for mu4e to colorize patch-like emails with diff-mode. +This is based on Frank Terbeck's @code{gnus-article-treat-patch.el} but has +been adapted to work with mu4e.") + (license license:gpl3+)))) + +(define-public emacs-pretty-mode + (package + (name "emacs-pretty-mode") + (version "2.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/akatov/pretty-mode/") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "013fig9i4fyx16krp2vfv953p3rwdzr38zs6i50af4pqz4vrcfvh")))) + (build-system emacs-build-system) + (home-page "https://github.com/akatov/pretty-mode") + (synopsis "Redisplay parts of the buffer as Unicode symbols") + (description + "Emacs minor mode for redisplaying parts of the buffer as pretty symbols.") + (license license:gpl3+))) + +(define-public emacs-yasnippet + (package + (name "emacs-yasnippet") + (version "0.14.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joaotavora/yasnippet") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0via9dzw8m5lzymg1h78xkwjssh39zr3g6ccyamlf1rjzjsyxknv")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "yasnippet-tests.el" + "-f" "ert-run-tests-batch-and-exit") + #:phases + (modify-phases %standard-phases + ;; Set HOME, otherwise test-rebindings fails. + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" (getcwd)) + #t))))) + (home-page "https://github.com/joaotavora/yasnippet") + (synopsis "Yet another snippet extension for Emacs") + (description "YASnippet is a template system for Emacs. It allows you to +type an abbreviation and automatically expand it into function templates.") + (license license:gpl3+))) + +(define-public emacs-yasnippet-snippets + (package + (name "emacs-yasnippet-snippets") + (version "0.23") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/AndreaCrotti/yasnippet-snippets") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18pcnjnqvcky6i49p38vy3ms5xiisn27vy47pc3vsgr3r2n87mqb")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((source (assoc-ref %build-inputs "source")) + (out (assoc-ref %outputs "out")) + (snippet-dir + (string-append out "/share/emacs/yasnippet-snippets/"))) + (with-directory-excursion source + (mkdir-p snippet-dir) + (copy-recursively "snippets" snippet-dir))) + #t))) + (home-page "https://github.com/AndreaCrotti/yasnippet-snippets") + (synopsis "Collection of YASnippet snippets for many languages") + (description + "Provides Andrea Crotti's collection of YASnippet snippets. After installation, +the snippets will be in \"~/.guix-profile/share/emacs/yasnippet-snippets/\". +To make YASnippet aware of these snippets, add the above directory to +@code{yas-snippet-dirs}.") + (license license:gpl3+))) + +(define-public emacs-helm-c-yasnippet + (let ((commit "65ca732b510bfc31636708aebcfe4d2d845b59b0") + (revision "1")) + (package + (name "emacs-helm-c-yasnippet") + (version (string-append "0.6.7" "-" revision "." + (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-jp/helm-c-yasnippet") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm) + ("emacs-yasnippet" ,emacs-yasnippet))) + (home-page "https://github.com/emacs-jp/helm-c-yasnippet") + (synopsis "Helm integration for Yasnippet") + (description "This Emacs library provides Helm interface for +Yasnippet.") + (license license:gpl2+)))) + +(define-public emacs-helm-system-packages + ;; There won't be a new release after 1.10.1 until + ;; https://github.com/emacs-helm/helm-system-packages/issues/25 is fixed, + ;; and latest commits fix import issues with Guix. + (let ((commit "6572340f41611ef1991e9612d34d59130957ee4a")) + (package + (name "emacs-helm-system-packages") + (version (git-version "1.10.1" "1" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-helm/helm-system-packages") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mcz6vkpk12vsyd37xv1rbg4v442sxc3lj8yxskqg294xbdaclz4")))) + (build-system emacs-build-system) + (inputs + `(("recutils" ,recutils))) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((recutils (assoc-ref inputs "recutils"))) + ;; Specify the absolute file names of the various + ;; programs so that everything works out-of-the-box. + (substitute* "helm-system-packages-guix.el" + (("recsel") (string-append recutils "/bin/recsel"))))))))) + (home-page "https://github.com/emacs-helm/helm-system-packages") + (synopsis "Helm System Packages is an interface to your package manager") + (description "List all available packages in Helm (with installed +packages displayed in their own respective face). Fuzzy-search, mark and +execute the desired action over any selections of packages: Install, +uninstall, display packages details (in Org Mode) or insert details at point, +find files owned by packages... And much more, including performing all the +above over the network.") + (license license:gpl3+)))) + +(define-public emacs-helm-org-rifle + (package + (name "emacs-helm-org-rifle") + (version "1.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alphapapa/helm-org-rifle") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "058zvh7cdall7dl3xay9ibcjvs13fbqp8fli3lz980pinmsds3r2")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-helm" ,emacs-helm) + ("emacs-org" ,emacs-org) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/alphapapa/helm-org-rifle") + (synopsis "Rifle through Org files") + (description "This package searches both headings and contents of entries +in Org buffers and displays matching entries.") + (license license:gpl3+))) + +(define-public emacs-dired-git-info + ;; Upstream has no proper release. The base version is extracted from the + ;; "Version" keyword in the main file. + (let ((commit "91d57e3a4c5104c66a3abc18e281ee55e8979176") + (revision "0")) + (package + (name "emacs-dired-git-info") + (version (git-version "0.3.1" revision commit)) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/clemera/dired-git-info") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1dr4iv95s4barxxj56znqkl9z0lg5jw731jmjr01s6vn8ar69gik")))) + (build-system emacs-build-system) + (home-page "https://github.com/clemera/dired-git-info/") + (synopsis "Show git info in Emacs Dired") + (description "This Emacs package provides a minor mode which shows git +information inside the Dired buffer.") + (license license:gpl3+)))) + +(define-public emacs-dired-toggle-sudo + (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)))) + +(define-public emacs-diredfl + (package + (name "emacs-diredfl") + (version "0.4") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/purcell/diredfl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1zb2lz7rp58zqvpniqcsmqabi7nqg2d8bfd0hgmq68bn2hd25b5z")))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/diredfl/") + (synopsis "Extra Emacs font lock rules for a more colourful Dired") + (description "This library enables additional font locking in Dired mode. +This is adapted from the extra font lock rules provided by Drew Adams' Dired+ +package.") + (license license:gpl3+))) + +(define-public emacs-memoize + (package + (name "emacs-memoize") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/skeeto/emacs-memoize") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04qgnlg4x6va7x364dhj1wbjmz8p5iq2vk36mn9198k2vxmijwzk")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "memoize-test.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/skeeto/emacs-memoize") + (synopsis "Emacs lisp memoization library") + (description "@code{emacs-memoize} is an Emacs library for +memoizing functions.") + (license license:unlicense))) + +(define-public emacs-linum-relative + (package + (name "emacs-linum-relative") + (version "0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/coldnew/linum-relative") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0b3n1gk2w1p72x0zfdz9l70winq2fnjpjrgq0awxx730xk7ypp5n")))) + (build-system emacs-build-system) + (home-page "https://github.com/coldnew/linum-relative") + (synopsis "Relative line numbering for Emacs") + (description "@code{emacs-linum-relative} displays the relative line +number on the left margin in Emacs.") + (license license:gpl2+))) + +(define-public emacs-idle-highlight + (package + (name "emacs-idle-highlight") + (version "1.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nonsequitur/idle-highlight-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0x4w1ksrw7dicl84zpf4d4scg672dyan9g95jkn6zvri0lr8xciv")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/IdleHighlight") + (synopsis "Highlights all occurrences of the word the point is on") + (description + "This Emacs package provides @code{idle-highlight-mode} that sets + an idle timer to highlight all occurrences in the buffer of the word under + the point.") + (license license:gpl3+))) + +(define-public emacs-ox-twbs + (package + (name "emacs-ox-twbs") + (version "1.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/marsmining/ox-twbs") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kd45p8y7ykadmai4jn1x1pgpafyqggwb1ccbjzalxw4k9wmd45f")))) + (build-system emacs-build-system) + (home-page "https://github.com/marsmining/ox-twbs") + (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap") + (description + "This Emacs package outputs your org-mode docs with a simple, clean and +modern look. It implements a new HTML back-end for exporting org-mode docs as +HTML compatible with Twitter Bootstrap. By default, HTML is exported with +jQuery and Bootstrap resources included via osscdn.") + (license license:gpl3+))) + +(define-public emacs-highlight-sexp + (package + (name "emacs-highlight-sexp") + (version "1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/daimrod/highlight-sexp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "12cyk2q5g6p4ac2hykw1cag7dp1prjjnck5f7nalwwaklmy62y79")))) + (build-system emacs-build-system) + (home-page "https://github.com/daimrod/highlight-sexp") + (synopsis "Minor mode that highlights the s-exp at the current position") + (description + "This Emacs package highlights the s-exp at the current position.") + (license license:gpl3+))) + +(define-public emacs-highlight-stages + (let ((commit "29cbc5b78261916da042ddb107420083da49b271") + (revision "1")) + (package + (name "emacs-highlight-stages") + (version (string-append "1.1.0" "-" revision "." (string-take commit 7))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zk-phi/highlight-stages") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0")) + (patches + (search-patches "emacs-highlight-stages-add-gexp.patch")))) + (build-system emacs-build-system) + (home-page "https://github.com/wigust/highlight-stages") + (synopsis "Minor mode that highlights (quasi-quoted) expressions") + (description "@code{highlight-stages} provides an Emacs minor mode that +highlights quasi-quoted expressions.") + (license license:gpl3+)))) + +(define-public emacspeak + (package + (name "emacspeak") + (version "52.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/tvraman/emacspeak/releases/download/" + version "/emacspeak-" version ".tar.bz2")) + (sha256 + (base32 "0x5b0s38r5ih2lk7f5hasi9arrgxlmmq5jaddadbxi8in2gw2jzl")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags (list (string-append "prefix=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-broken-symlink + (lambda _ + (delete-file "lisp/sudoku.el") + #t)) + (replace 'configure + (lambda _ + (setenv "SHELL" (which "sh")) + ;; Configure Emacspeak according to etc/install.org. + (invoke "make" "config"))) + (add-after 'build 'build-espeak + (lambda _ + (invoke "make" "espeak"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lisp (string-append out "/share/emacs/site-lisp/emacspeak")) + (info (string-append out "/share/info")) + (emacs (string-append (assoc-ref inputs "emacs") + "/bin/emacs"))) + ;; According to etc/install.org, the Emacspeak directory should + ;; be copied to its installation destination. + (for-each + (lambda (file) + (copy-recursively file (string-append lisp "/" file))) + '("etc" "info" "js" "lisp" "media" "servers" "sounds" + "stumpwm" "xsl")) + ;; Make sure emacspeak is loaded from the correct directory. + (substitute* "run" + (("\\./lisp/emacspeak-setup.el") + (string-append lisp "/lisp/emacspeak-setup.el"))) + ;; Install the convenient startup script. + (mkdir-p bin) + (copy-file "run" (string-append bin "/emacspeak"))) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (emacspeak (string-append out "/bin/emacspeak")) + (espeak (string-append (assoc-ref inputs "espeak") + "/bin/espeak"))) + ;; The environment variable DTK_PROGRAM tells emacspeak what + ;; program to use for speech. + (wrap-program emacspeak + `("DTK_PROGRAM" ":" prefix (,espeak))) + #t)))) + #:tests? #f)) ; no check target + (inputs + `(("emacs" ,emacs) + ("espeak" ,espeak-ng) + ("perl" ,perl) + ("tcl" ,tcl) + ("tclx" ,tclx))) + (home-page "http://emacspeak.sourceforge.net") + (synopsis "Audio desktop interface for Emacs") + (description + "Emacspeak is a speech interface that allows visually impaired users to +interact independently and efficiently with the computer. Audio +formatting---a technique pioneered by AsTeR---and full support for W3C's Aural +CSS (ACSS) allows Emacspeak to produce rich aural presentations of electronic +information. By seamlessly blending all aspects of the Internet such as +Web-surfing and messaging, Emacspeak speech-enables local and remote +information via a consistent and well-integrated user interface.") + (license license:gpl2+))) + +(define-public emacs-adaptive-wrap + (package + (name "emacs-adaptive-wrap") + (version "0.7") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "adaptive-wrap-" version ".el")) + (sha256 + (base32 "10fb8gzvkbnrgzv28n1rczs03dvapr7rvi0kd73j6yf1zg2iz6qp")))) + (build-system emacs-build-system) + (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} +minor mode which sets the wrap-prefix property on the fly so that +single-long-line paragraphs get word-wrapped in a way similar to what +you'd get with @kbd{M-q} using @code{adaptive-fill-mode}, but without +actually changing the buffer's text.") + (license license:gpl3+))) + +(define-public emacs-diff-hl + (package + (name "emacs-diff-hl") + (version "1.8.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dgutov/diff-hl") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0i7x6qgr3nydcwhw72sbc8z9x9dfhgkf0dqj9nakvx36vn1bblbq")))) + (build-system emacs-build-system) + (home-page "https://github.com/dgutov/diff-hl") + (synopsis + "Highlight uncommitted changes using VC") + (description + "@code{diff-hl-mode} highlights uncommitted changes on the side of the +window (using the fringe, by default), allows you to jump between +the hunks and revert them selectively.") + (license license:gpl3+))) + +(define-public emacs-diminish + (package + (name "emacs-diminish") + (version "0.45") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/myrjola/diminish.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qpgfgp8hrzz4vdifxq8h25n0a0jlzgf7aa1fpy6r0080v5rqbb6")))) + (build-system emacs-build-system) + (home-page "https://github.com/myrjola/diminish.el") + (synopsis "Diminish minor modes with no modeline display") + (description "@code{emacs-diminish} implements hiding or +abbreviation of the mode line displays (lighters) of minor modes.") + (license license:gpl2+))) + +(define-public emacs-use-package + (package + (name "emacs-use-package") + (version "2.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jwiegley/use-package") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1b7mjjh0d6fmkkd9vyj64vca27xqhga0nvyrrcqxpqjn62zq046y")))) + (build-system emacs-build-system) + (native-inputs + `(("texinfo" ,texinfo))) + (propagated-inputs + `(("emacs-diminish" ,emacs-diminish))) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "use-package-tests.el" + "-f" "ert-run-tests-batch-and-exit") + #:phases + (modify-phases %standard-phases + (add-before 'install 'install-manual + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (info-dir (string-append out "/share/info"))) + (mkdir-p info-dir) + (install-file "use-package.info" info-dir) + #t))) + (add-before 'install-manual 'build-manual + (lambda _ + (invoke "makeinfo" "use-package.texi") + #t))))) + (home-page "https://github.com/jwiegley/use-package") + (synopsis "Declaration for simplifying your .emacs") + (description "The use-package macro allows you to isolate package +configuration in your @file{.emacs} file in a way that is both +performance-oriented and tidy.") + (license license:gpl2+))) + +(define-public emacs-leaf + (package + (name "emacs-leaf") + (version "4.2.5") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "leaf-" version ".tar")) + (sha256 + (base32 "0y78mp4c2gcwp7dc87wlx3r4hfmap14vvx8gkjc9nkf99qavpnkw")))) + (build-system emacs-build-system) + (home-page "https://github.com/conao3/leaf.el") + (synopsis "Simplify your init.el configuration, extended use-package") + (description + "This package provides macros that allows you to declaratively configure +settings typical of an Elisp package with various keywords. The syntax is +similar, but not identical to use-package -- overall, leaf aims at a cleaner +and more predictable implementation.") + (license license:agpl3+))) + +(define-public emacs-strace-mode + (let* ((commit "6a69b4b06db6797af56f33eda5cb28af94e59f11") + (revision "1")) + (package + (name "emacs-strace-mode") + (version (string-append "0.0.2-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pkmoore/strace-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f")))) + (build-system emacs-build-system) + (home-page "https://github.com/pkmoore/strace-mode") + (synopsis "Emacs major mode to highlight strace outputs") + (description "@code{emacs-strace-mode} provides an Emacs major mode + highlighting strace outputs.") + (license license:gpl3+)))) + +(define-public emacs-default-encrypt + (package + (name "emacs-default-encrypt") + (version "4.4") + (source + (origin + (method url-fetch) + (uri (string-append + "https://informationelle-selbstbestimmung-im-internet.de" + "/emacs/jl-encrypt" version "/jl-encrypt.el")) + (file-name (string-append "jl-encrypt-" version ".el")) + (sha256 + (base32 + "0w9ggz075j1zwg7d0rv9k8238g600p7czfnnsnawswi7yps2xk78")))) + (build-system emacs-build-system) + (home-page + "https://informationelle-selbstbestimmung-im-internet.de/Emacs.html") + (synopsis "Automatically encrypt or sign Gnus messages in Emacs") + (description + "DefaultEncrypt is designed to be used with Gnus in Emacs. It +automatically encrypts messages that you send (e.g., email) when public keys +for all recipients are available, and it protects you from accidentally +sending un-encrypted messages. It can also be configured to automatically +sign messages that you send. For details and instructions on how to use +DefaultEncrypt, please refer to the home page or read the comments in the +source file, @file{jl-encrypt.el}.") + (license license:gpl3+))) + +(define-public emacs-extend-smime + (package + (name "emacs-extend-smime") + (version "3.3") + (source + (origin + (method url-fetch) + (uri (string-append + "https://informationelle-selbstbestimmung-im-internet.de" + "/emacs/jl-smime" version "/jl-smime.el")) + (file-name (string-append "jl-smime-" version ".el")) + (sha256 + (base32 + "1iv8s2wjmv3v5qfwlcy9hvvrmxxvp3f8m1krlr789q7bbh35jynh")))) + (build-system emacs-build-system) + (home-page + "https://informationelle-selbstbestimmung-im-internet.de/Emacs.html") + (synopsis "Improved S/MIME support for Gnus in Emacs") + (propagated-inputs + `(("emacs-default-encrypt" ,emacs-default-encrypt))) + (description + ;; TRANSLATORS: ExtendSMIME, DefaultEncrypt, and emacs-default-encrypt + ;; should not be translated. The name "emacs-default-encrypt" refers to + ;; the Guix package that provides DefaultEncrypt. + "ExtendSMIME is designed to be used with Gnus in Emacs. It enhances +DefaultEncrypt (emacs-default-encrypt) to support S/MIME (Secure/Multipurpose +Internet Mail Extensions) via LDAP (Lightweight Directory Access Protocol). +Before a message (e.g., email) is sent, ExtendSMIME searches for missing +certificates via LDAP and imports them into @code{gpgsm}. When certificates +for all recipients are available, DefaultEncrypt automatically encrypts the +message. For details and instructions on how to use ExtendSMIME, please refer +to the home page or read the comments in the source file, +@file{jl-smime.el}.") + (license license:gpl3+))) + +(define-public emacs-htmlize + (package + (name "emacs-htmlize") + (version "1.55") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hniksic/emacs-htmlize") + (commit (string-append "release/" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gi3xshscpa53qrj8yplfsqahcilc2ybcc2p7gnh5nbnf2n1n97x")))) + (build-system emacs-build-system) + (home-page "https://github.com/hniksic/emacs-htmlize") + (synopsis "Convert buffer text and decorations to HTML") + (description "@code{emacs-htmlize} converts the buffer text and +the associated decorations to HTML. Output to CSS, inline CSS and +fonts is supported.") + (license license:gpl2+))) + +(define-public emacs-xmlgen + (package + (name "emacs-xmlgen") + (version "0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/philjackson/xmlgen") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "096i29v0badx0a6339h9ckdz78zj59gbjdp7vj7vhkq9d830392s")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "xmlgen-test.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/philjackson/xmlgen") + (synopsis "S-expression to XML domain specific language (DSL) in +Emacs Lisp") + (description "@code{emacs-xmlgen} provides S-expression to XML +conversion for Emacs Lisp.") + (license license:gpl2+))) + +(define-public emacs-cdlatex + (package + (name "emacs-cdlatex") + (version "4.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cdominik/cdlatex") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jj9vmhc4s3ych08bjm1c2xwi81z1p20rj7bvxrgvb5aga2ghi9d")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-auctex" ,emacs-auctex))) + (home-page "https://github.com/cdominik/cdlatex") + (synopsis "Fast Emacs input methods for LaTeX environments and +math") + (description "CDLaTeX is an Emacs minor mode supporting fast +insertion of environment templates and math in LaTeX. Similar +commands are also offered as part of the AUCTeX package, but it is not +the same - CDLaTeX focuses on speediness for inserting LaTeX +constructs.") + (license license:gpl3+))) + +(define-public emacs-cnfonts + (package + (name "emacs-cnfonts") + (version "0.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/cnfonts") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11d44lf0m0kbzq1mvyqkl4aprys0xqaarp08nij57xnynin1rynx")))) + (build-system emacs-build-system) + (home-page "https://github.com/tumashu/cnfonts") + (synopsis "Emacs Chinese fonts setup tool") + (description "cnfonts is a Chinese fonts setup tool, allowing for easy +configuration of Chinese fonts.") + (license license:gpl2+))) + +(define-public emacs-php-mode + (package + (name "emacs-php-mode") + (version "1.23.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ejmr/php-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wnkcxg6djy4jvxhshiy1iw6b5cf79pjwjhfd1a060cavhfm4v5c")))) + (build-system emacs-build-system) + (home-page "https://github.com/ejmr/php-mode") + (synopsis "Major mode for editing PHP code") + (description + "PHP mode is a major mode for editing PHP source code. It's an extension +of C mode; thus it inherits all C mode's navigation functionality. But it +colors according to the PHP grammar and indents according to the PEAR coding +guidelines. It also includes a couple handy IDE-type features such as +documentation search and a source and class browser.") + (license license:gpl3+))) + +(define-public emacs-pos-tip + (package + (name "emacs-pos-tip") + (version "0.4.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pitkali/pos-tip") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0w8bnspnk871qndp18hs0wk4x9x31xr9rwbvf5dc8mcbnj29ch33")))) + (build-system emacs-build-system) + ;; The following functions and variables needed by emacs-pos-tip are + ;; not included in emacs-minimal: + ;; x-display-pixel-width, x-display-pixel-height, x-show-tip + (arguments `(#:emacs ,emacs)) + (home-page "https://github.com/pitkali/pos-tip") + (synopsis "Show tooltip at point") + (description "The standard library tooltip.el provides a function for +displaying a tooltip at the mouse position. However, locating a tooltip at an +arbitrary buffer position in a window is not easy. Pos-tip provides such a +function to be used by other frontend programs.") + (license license:gpl2+))) + +(define-public emacs-pyim-basedict + (package + (name "emacs-pyim-basedict") + (version "0.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/pyim-basedict") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0576r8ap9gp91ycjf1d47pn13kxp0f9fysn09zlq44hr0s1y2y5d")))) + (build-system emacs-build-system) + (home-page "https://github.com/tumashu/pyim-basedict") + (synopsis "Input method dictionary of pyim") + (description "Pyim-basedict is the default pinyin input method dictionary, +containing words from the rime project.") + (license license:gpl2+))) + +(define-public emacs-pyim + (package + (name "emacs-pyim") + (version "1.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/pyim") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "16rma4cv7xgky0g3x4an27v30jdi6i1sqw43cl99zhkqvp43l3f9")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-async" ,emacs-async) + ("emacs-pyim-basedict" ,emacs-pyim-basedict) + ("emacs-popup" ,emacs-popup) + ("emacs-posframe" ,emacs-posframe))) + (home-page "https://github.com/tumashu/pyim") + (synopsis "Chinese input method") + (description "Chinese input method which supports quanpin, shuangpin, wubi +and cangjie.") + (license license:gpl2+))) + +(define-public emacs-posframe + (package + (name "emacs-posframe") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "posframe-" version ".el")) + (sha256 + (base32 "1kwl83jb5k1hnx0s2qw972v0gjqbbvk4sdcdb1qbdxsyw36sylc9")))) + (build-system emacs-build-system) + ;; emacs-minimal does not include the function font-info. + (arguments + `(#:emacs ,emacs)) + (home-page "https://github.com/tumashu/posframe") + (synopsis "Pop a posframe (a child frame) at point") + (description "@code{emacs-posframe} can pop a posframe at point. A +posframe is a child frame displayed within its root window's buffer. +@code{emacs-posframe} is fast and works well with CJK languages.") + (license license:gpl3+))) + +(define-public emacs-el2org + (package + (name "emacs-el2org") + (version "0.6.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/el2org") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mzddqny6wpg1fv99xrvlv7rxmaifvmy5bvj4in4pldhm4cx4q1b")))) + (build-system emacs-build-system) + (home-page "https://github.com/tumashu/el2org") + (synopsis "Convert Emacs-lisp file to org file") + (description "El2org is a simple tool, which can convert Emacs-lisp file +to org file, you can use this tool to write orgify commentary.") + (license license:gpl2+))) + +(define-public emacs-mustache + (package + (name "emacs-mustache") + (version "0.23") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Wilfred/mustache.el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1n2ymd92qpvsby6ms0l3kjhdzzc47rri2aiscc6bs07hm4mjpr9q")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-ht" ,emacs-ht) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/Wilfred/mustache.el") + (synopsis "Mustache templating library for Emacs") + (description "Mustache templating library for Emacs, mustache is +a simple web template system, which is described as a logic-less system +because it lacks any explicit control flow statements, both looping and +conditional evaluation can be achieved using section tags processing lists +and lambdas.") + (license license:gpl3+))) + +(define-public emacs-org2web + (package + (name "emacs-org2web") + (version "0.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/org2web") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wsvfn409a2ivbich8b8zqza78sprirg4bl7igx536ydqclmi0n7")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-el2org" ,emacs-el2org) + ("emacs-ht" ,emacs-ht) + ("emacs-mustache" ,emacs-mustache) + ("emacs-simple-httpd" ,emacs-simple-httpd))) + (home-page "https://github.com/tumashu/org2web") + (synopsis "Static site generator based on org-mode ") + (description "Org2web is a static site generator based on org-mode, +which code derived from Kelvin H's org-page.") + (license license:gpl2+))) + +(define-public emacs-xelb + (package + (name "emacs-xelb") + (version "0.18") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/xelb-" + version ".tar")) + (sha256 + (base32 + "1fp5mzl63sh0h3ws4l5p4qgvi7ny8a3fj6k4dhqa98xgw2bx03v7")))) + (build-system emacs-build-system) + ;; The following functions and variables needed by emacs-xelb are + ;; not included in emacs-minimal: + ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym + ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region + ;; x-display-pixel-width, x-display-pixel-height + (arguments + `(#:emacs ,emacs + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'regenerate-el-files + (lambda* (#:key inputs #:allow-other-keys) + (invoke "make" + (string-append "PROTO_PATH=" + (assoc-ref inputs "xcb-proto") + "/share/xcb") + (string-append "EMACS_BIN=" + (assoc-ref inputs "emacs") + "/bin/emacs -Q"))))))) + (native-inputs `(("xcb-proto" ,xcb-proto))) + (home-page "https://github.com/ch11ng/xelb") + (synopsis "X protocol Emacs Lisp binding") + (description "@code{emacs-xelb} is a pure Emacs Lisp implementation of the +X11 protocol based on the XML description files from the XCB project. It +features an object-oriented API and permits a certain degree of concurrency. +It should enable you to implement low-level X11 applications.") + (license license:gpl3+))) + +(define-public emacs-exwm + (package + (name "emacs-exwm") + (version "0.24") + (synopsis "Emacs X window manager") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "exwm-" version ".tar")) + (sha256 + (base32 "0lj1a3cmbpf4h6x8k6x8cdm1qb51ca6filydnvi5zcda8zpl060s")) + (patches + ;; Patch fixing fullscreen view. Applied upstream as + ;; edb930005b0ba83051ca8a59b493e9a3c8ef580a. It can be removed in + ;; next release. + (search-patches "emacs-exwm-fix-fullscreen-states.patch")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-xelb" ,emacs-xelb))) + (inputs + `(("xhost" ,xhost) + ("dbus" ,dbus))) + ;; The following functions and variables needed by emacs-exwm are + ;; not included in emacs-minimal: + ;; scroll-bar-mode, fringe-mode + ;; x-display-pixel-width, x-display-pixel-height + (arguments + `(#:emacs ,emacs + #:phases + (modify-phases %standard-phases + (add-after 'build 'install-xsession + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (xsessions (string-append out "/share/xsessions")) + (bin (string-append out "/bin")) + (exwm-executable (string-append bin "/exwm"))) + ;; Add a .desktop file to xsessions + (mkdir-p xsessions) + (mkdir-p bin) + (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 _ + (format #t "#!~a ~@ + ~a +SI:localuser:$USER ~@ + exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%" + (string-append (assoc-ref inputs "bash") "/bin/sh") + (string-append (assoc-ref inputs "xhost") "/bin/xhost") + (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch") + (string-append (assoc-ref inputs "emacs") "/bin/emacs") + '(cond + ((file-exists-p "~/.exwm") + (load-file "~/.exwm")) + ((not (featurep 'exwm)) + (require 'exwm) + (require 'exwm-config) + (exwm-config-default) + (message (concat "exwm configuration not found. " + "Falling back to default configuration..."))))))) + (chmod exwm-executable #o555) + #t)))))) + (home-page "https://github.com/ch11ng/exwm") + (description + "EXWM is a full-featured tiling X window manager for Emacs built on top +of XELB.") + (license license:gpl3+))) + +(define-public emacs-switch-window + (package + (name "emacs-switch-window") + (version "1.6.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dimitri/switch-window") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rci96asgamr6qp6nkyr5vwrnslswjxcjd96yccy4aivh0g66yfg")))) + (build-system emacs-build-system) + (home-page "https://github.com/dimitri/switch-window") + (synopsis "Emacs window switch tool") + (description "Switch-window is an emacs window switch tool, which +offer a visual way to choose a window to switch to, delete, split or +other operations.") + (license license:wtfpl2))) + +(define-public emacs-exwm-x + (package + (name "emacs-exwm-x") + (version "1.9.0") + (synopsis "Derivative window manager based on EXWM") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/exwm-x") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03l3dl7s1qys1kkh40rm1sfx7axy1b8sf5f6nyksj9ps6d30p5i4")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-counsel" ,emacs-counsel) + ("emacs-exwm" ,emacs-exwm) + ("emacs-switch-window" ,emacs-switch-window) + ("emacs-use-package" ,emacs-use-package))) + (inputs + `(("xhost" ,xhost) + ("dbus" ,dbus))) + ;; Need emacs instead of emacs-minimal, + ;; for emacs's bin path will be inserted into bin/exwm-x file. + (arguments + `(#:emacs ,emacs + #:phases + (modify-phases %standard-phases + (add-after 'build 'install-xsession + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (xsessions (string-append out "/share/xsessions")) + (bin (string-append out "/bin")) + (exwm-executable (string-append bin "/exwm-x"))) + ;; Add a .desktop file to xsessions + (mkdir-p xsessions) + (mkdir-p bin) + (with-output-to-file + (string-append xsessions "/exwm-x.desktop") + (lambda _ + (format #t "[Desktop Entry]~@ + Name=~a~@ + Comment=~a~@ + Exec=~a~@ + TryExec=~@*~a~@ + Type=Application~%" ,name ,synopsis exwm-executable))) + ;; Add a shell wrapper to bin + (with-output-to-file exwm-executable + (lambda _ + (format #t "#!~a ~@ + ~a +SI:localuser:$USER ~@ + exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%" + (string-append (assoc-ref inputs "bash") "/bin/sh") + (string-append (assoc-ref inputs "xhost") "/bin/xhost") + (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch") + (string-append (assoc-ref inputs "emacs") "/bin/emacs") + '(require 'exwmx-loader)))) + (chmod exwm-executable #o555) + #t)))))) + (home-page "https://github.com/tumashu/exwm-x") + (description "EXWM-X is a derivative window manager based on EXWM, with focus +on mouse-control.") + (license license:gpl3+))) + +(define-public emacs-gnugo + (package + (name "emacs-gnugo") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/gnugo-" + version ".tar")) + (sha256 + (base32 + "0xpjvs250gg71qwapdsb1hlc61gs0gpkjds01srf784fvyxx2gf1")))) + (build-system emacs-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'configure-default-gnugo-xpms-variable + (lambda _ + (substitute* "gnugo.el" + (("defvar gnugo-xpms nil") + "defvar gnugo-xpms #'gnugo-imgen-create-xpms")) + #t))))) + (propagated-inputs + `(("emacs-ascii-art-to-unicode" ,emacs-ascii-art-to-unicode) + ("emacs-xpm" ,emacs-xpm))) + (home-page "https://elpa.gnu.org/packages/gnugo.html") + (synopsis "Emacs major mode for playing GNU Go") + (description "This package provides an Emacs based interface for GNU Go. +It has a graphical mode where the board and stones are drawn using XPM images +and supports the use of a mouse.") + (license license:gpl3+))) + +(define-public emacs-gnuplot + (package + (name "emacs-gnuplot") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bruceravel/gnuplot-mode") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0bwri3cvm2vr27kyqkrddm28fs08axnd4nm9amfgp54xp20bn4yn")))) + (build-system gnu-build-system) + (native-inputs `(("emacs" ,emacs-minimal))) + (arguments + (let ((elisp-dir "/share/emacs/site-lisp")) + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (guix build emacs-utils)) + #:imported-modules (,@%gnu-build-system-modules + (guix build emacs-utils)) + #:configure-flags + (list (string-append "EMACS=" (assoc-ref %build-inputs "emacs") + "/bin/emacs") + (string-append "--with-lispdir=" %output ,elisp-dir)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'generate-autoloads + (lambda* (#:key outputs #:allow-other-keys) + (emacs-generate-autoloads + "gnuplot" + (string-append (assoc-ref outputs "out") ,elisp-dir)) + #t)))))) + (home-page "https://github.com/bruceravel/gnuplot-mode") + (synopsis "Emacs major mode for interacting with gnuplot") + (description "@code{emacs-gnuplot} is an emacs major mode for interacting +with gnuplot.") + (license license:gpl2+))) + +(define-public emacs-transpose-frame + (package + (name "emacs-transpose-frame") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri "https://www.emacswiki.org/emacs/download/transpose-frame.el") + (file-name (string-append "transpose-frame-" version ".el")) + (sha256 + (base32 + "1f67yksgw9s6j0033hmqzaxx2a93jm11sd5ys7cc3li5gfh680m4")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/TransposeFrame") + (synopsis "Transpose window arrangement in current frame") + (description "@code{emacs-transpose-frame} provides some interactive +functions which allows users to transpose windows arrangement in currently +selected frame.") + (license license:bsd-2))) + +(define-public emacs-key-chord + (package + (name "emacs-key-chord") + (version "0.6") + (source + (origin + (method url-fetch) + (uri "https://www.emacswiki.org/emacs/download/key-chord.el") + (file-name (string-append "key-chord-" version ".el")) + (sha256 + (base32 + "03m44pqggfrd53nh9dvpdjgm0rvca34qxmd30hr33hzprzjambxg")))) + (build-system emacs-build-system) + (home-page "https://www.emacswiki.org/emacs/key-chord.el") + (synopsis "Map pairs of simultaneously pressed keys to Emacs commands") + (description "@code{emacs-key-chord} provides @code{key-chord-mode}, a +mode for binding key chords to commands. A key chord is defined as two keys +pressed simultaneously or a single key quickly pressed twice.") + (license license:gpl2+))) + +(define-public emacs-evil-surround + (package + (name "emacs-evil-surround") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/evil-surround") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15v2spg5rhddr97pxjfvxj36sh7knp753a9qpw8v5zjnp65kf2kn")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/emacs-evil/evil-surround") + (synopsis "Easily modify surrounding parentheses and quotes") + (description "@code{emacs-evil-surround} allows easy deletion, change and +addition of surrounding pairs, such as parentheses and quotes, in evil mode.") + (license license:gpl3+))) + +(define-public emacs-evil-commentary + (package + (name "emacs-evil-commentary") + (version "2.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/linktohack/evil-commentary") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zjs9zyqfygnpxapvf0ymmiid40i06cxbhjzd81zw33nafgkf6r4")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/linktohack/evil-commentary") + (synopsis "Comment out code in evil mode") + (description "@code{emacs-evil-commentary} adds keybindings to easily +comment out lines of code in evil mode. It provides @code{gcc} to comment out +lines, and @code{gc} to comment out the target of a motion.") + (license license:gpl3+))) + +;; Tests for emacs-ansi have a circular dependency with ert-runner, and +;; therefore cannot be run +(define-public emacs-ansi + (let ((commit "a41d5cc719297515d85bb5256980cd1204a71b88") + (revision "1")) + (package + (name "emacs-ansi") + (version (git-version "0.4.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rejeep/ansi.el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "051v8dmji90chwbsyqsqry7h35mksal2j6rgw1kpmjsni86d79y1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/rejeep/ansi.el") + (synopsis "Convert strings to ANSI") + (description "@code{emacs-ansi} defines functions that turns simple +strings to ANSI strings. Turning a string into an ANSI string can be to add +color to a text, add color in the background of a text or adding a style, such +as bold, underscore or italic.") + (license license:gpl3+)))) + +;; Tests for emacs-commander have a circular dependency with ert-runner, and +;; therefore cannot be run +(define-public emacs-commander + (package + (name "emacs-commander") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rejeep/commander.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1j6hhyzww7wfwk6bllbb5mk4hw4qs8hsgfbfdifsam9c6i4spm45")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/rejeep/commander.el") + (synopsis "Emacs command line parser") + (description "@code{emacs-commander} provides command line parsing for +Emacs.") + (license license:gpl3+))) + +(define-public emacs-eglot + (package + (name "emacs-eglot") + (version "1.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "eglot-" version ".tar")) + (sha256 + (base32 "15hd6sx7qrpvlvhwwkcgdiki8pswwf4mm7hkm0xvznskfcp44spx")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-jsonrpc" ,emacs-jsonrpc))) + (home-page "https://github.com/joaotavora/eglot") + (synopsis "Client for Language Server Protocol (LSP) servers") + (description + "Emacs Polyglot, or Eglot, is an Emacs @acronym{Language Server Protocol, +LSP} client that stays out of the way. It guesses the LSP program to start +for the current file, using the major mode as a hint. It prompts you to enter +one if it fails.") + (license license:gpl3+))) + +;; Tests for ert-runner have a circular dependency with ecukes, and therefore +;; cannot be run +(define-public emacs-ert-runner + (package + (name "emacs-ert-runner") + (version "0.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rejeep/ert-runner.el") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98")))) + (build-system emacs-build-system) + (inputs + `(("emacs-ansi" ,emacs-ansi) + ("emacs-commander" ,emacs-commander) + ("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s) + ("emacs-shut-up" ,emacs-shut-up))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (source-directory (string-append + (getenv "TMPDIR") "/source"))) + (substitute* "bin/ert-runner" + (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)") + (string-append "ERT_RUNNER=\"" out + "/share/emacs/site-lisp"))) + (install-file "bin/ert-runner" (string-append out "/bin")) + (wrap-program (string-append out "/bin/ert-runner") + (list "EMACSLOADPATH" ":" 'prefix + ;; Do not capture the transient source directory in + ;; the wrapper. + (delete source-directory + (string-split (getenv "EMACSLOADPATH") #\:)))) + #t)))) + #:include (cons* "^reporters/.*\\.el$" %default-include))) + (home-page "https://github.com/rejeep/ert-runner.el") + (synopsis "Opinionated Ert testing workflow") + (description "@code{ert-runner} is a tool for Emacs projects tested +using ERT. It assumes a certain test structure setup and can therefore make +running tests easier.") + (license license:gpl3+))) + +(define-public emacs-xtest + (package + (name "emacs-xtest") + (version "1.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/promethial/xtest") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wqx6hlqcmqiljydih5fx89dw06g8w728pyn4iqsap8jwgjngb09")))) + (arguments + `(#:exclude '())) + (build-system emacs-build-system) + (home-page "https://github.com/promethial/xtest/") + (synopsis "Simple testing with Emacs") + (description "This package provides a simple testing library for Emacs.") + (license license:gpl3+))) + +(define-public emacs-disable-mouse + (package + (name "emacs-disable-mouse") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/disable-mouse") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1v1y5hf6k6ng7xsvgb27nh740d14m6l4krr0paccda8zgm4mw357")))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/disable-mouse") + (synopsis "Disable mouse commands globally") + (description + "Provides @code{disable-mouse-mode} and @code{global-disable-mouse-mode}, +pair of minor modes which suppress all mouse events by intercepting them and +running a customisable handler command (@code{ignore} by default). ") + (license license:gpl3+))) + +(define-public emacs-json-reformat + (package + (name "emacs-json-reformat") + (version "0.0.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gongo/json-reformat") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0qp4n2k6s69jj4gwwimkpadjv245y54wk3bxb1x96f034gkp81vs")) + (patches (search-patches "emacs-json-reformat-fix-tests.patch")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-undercover" ,emacs-undercover))) + (native-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-shut-up" ,emacs-shut-up) + ("ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner") + #:phases + (modify-phases %standard-phases + (add-before 'check 'make-tests-writable + (lambda _ + (for-each make-file-writable (find-files "test")) + #t)) + (add-before 'check 'delete-json-objects-order-test + (lambda _ + (emacs-batch-edit-file "test/json-reformat-test.el" + `(progn (progn (goto-char (point-min)) + (re-search-forward + "ert-deftest json-reformat-test:json-reformat-region") + (beginning-of-line) + (kill-sexp)) + (basic-save-buffer))) + #t))))) + (home-page "https://github.com/gongo/json-reformat") + (synopsis "Reformatting tool for JSON") + (description "@code{json-reformat} provides a reformatting tool for +@url{http://json.org/, JSON}.") + (license license:gpl3+))) + +(define-public emacs-json-snatcher + (package + (name "emacs-json-snatcher") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Sterlingg/json-snatcher") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05zsgnk7grgw9jzwl80h5sxfpifxlr37b4mkbvx7mjq4z14xc2jw")))) + (build-system emacs-build-system) + (home-page "https://github.com/sterlingg/json-snatcher") + (synopsis "Grabs the path to JSON values in a JSON file") + (description "@code{emacs-json-snatcher} grabs the path to JSON values in +a @url{http://json.org/, JSON} file.") + (license license:gpl3+))) + +(define-public emacs-json-mode + (package + (name "emacs-json-mode") + (version "1.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joshwnj/json-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0i79lqzdg59vkqwjd3q092xxn9vhxspb1vn4pkis0vfvn46g01jy")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-json-reformat" ,emacs-json-reformat) + ("emacs-json-snatcher" ,emacs-json-snatcher))) + (home-page "https://github.com/joshwnj/json-mode") + (synopsis "Major mode for editing JSON files") + (description "@code{json-mode} extends the builtin js-mode syntax +highlighting.") + (license license:gpl3+))) + +(define-public emacs-jsonrpc + (package + (name "emacs-jsonrpc") + (version "1.0.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "jsonrpc-" version ".el")) + (sha256 + (base32 "0cqp05awikbrn88ifld3vwnv6cxgmr83wlnsvxw8bqb96djz70ad")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/jsonrpc.html") + (synopsis "JSON-RPC library") + (description + "This library implements the JSONRPC 2.0 specification as +described in @url{http://www.jsonrpc.org/}. As the name suggests, +JSONRPC is a generic Remote Procedure Call protocol designed around +JSON objects.") + (license license:gpl3+))) + +(define-public emacs-restclient + (let ((commit "422ee8d8b077dffe65706a0f027ed700b84746bc") + (version "0") + (revision "2")) ;Guix package revision, + ;upstream doesn't have official releases + (package + (name "emacs-restclient") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pashky/restclient.el") + (commit commit))) + (sha256 + (base32 + "067nin7vxkdpffxa0q61ybv7szihhvpdinivmci9qkbb86rs9kkz")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-helm" ,emacs-helm))) + (home-page "https://github.com/pashky/restclient.el") + (synopsis "Explore and test HTTP REST webservices") + (description + "This tool allows for testing and exploration of HTTP REST Web services +from within Emacs. Restclient runs queries from a plan-text query sheet, +displays results pretty-printed in XML or JSON with @code{restclient-mode}") + (license license:public-domain)))) + +(define-public emacs-whitespace-cleanup-mode + (let ((commit "72427144b054b0238a86e1348c45d986b8830d9d") + (revision "1")) + (package + (name "emacs-whitespace-cleanup-mode") + (version (git-version "0.10" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/purcell/whitespace-cleanup-mode") + (commit commit))) + (sha256 + (base32 + "1zlk534jbwrsabcg3kqlzk4h4hwya60lh6q2n1v4yn4rpf5ghsag")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/purcell/whitespace-cleanup-mode") + (synopsis "Intelligently call @code{whitespace-cleanup} on save") + (description + "This package provides a minor mode that calls +@code{whitespace-cleanup} before saving the current buffer only if the +whitespace in the buffer was initially clean.") + (license license:gpl3+)))) + +(define-public emacs-eimp + (let ((version "1.4.0") + (commit "2e7536fe6d8f7faf1bad7a8ae37faba0162c3b4f") + (revision "1")) + (package + (name "emacs-eimp") + (version (git-version version revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nicferrier/eimp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "154d57yafxbcf39r89n5j43c86rp2fki3lw3gwy7ww2g6qkclcra")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (let ((imagemagick (assoc-ref inputs "imagemagick"))) + ;; eimp.el is read-only in git. + (chmod "eimp.el" #o644) + (emacs-substitute-variables "eimp.el" + ("eimp-mogrify-program" + (string-append imagemagick "/bin/mogrify")))) + #t))))) + (inputs + `(("imagemagick" ,imagemagick))) + (home-page "https://github.com/nicferrier/eimp") + (synopsis "Interactive image manipulation utility for Emacs") + (description "@code{emacs-eimp} allows interactive image manipulation +from within Emacs. It uses the code@{mogrify} utility from ImageMagick to do +the actual transformations.") + (license license:gpl2+)))) + +(define-public emacs-dired-hacks + (let ((commit "886befe113fae397407c804f72c45613d1d43535") + (revision "2")) + (package + (name "emacs-dired-hacks") + (version (git-version "0.0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Fuco1/dired-hacks") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cvibg90ggyrivpjmcfprpi2fx7dpa68f8kzg08s88gw5ib75djl")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-eimp" ,emacs-eimp) + ("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/Fuco1/dired-hacks") + (synopsis + "Collection of useful dired additions") + (description + "This package provides the following collection of Emacs dired mode +additions: + +@itemize +@item dired-avfs +@item dired-columns +@item dired-filter +@item dired-hacks-utils +@item dired-images +@item dired-list +@item dired-narrow +@item dired-open +@item dired-rainbow +@item dired-ranger +@item dired-subtree +@item dired-tagsistant +@end itemize\n") + (license license:gpl3+)))) + +(define-public emacs-dired-sidebar + (let ((commit "21ccb6723bea69f2e2ca25998268d8a039f904cc") + (revision "1")) + (package + (name "emacs-dired-sidebar") + (home-page "https://github.com/jojojames/dired-sidebar") + (version (git-version "0.1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mck4qk6srbbf8xnn2sg11j822z4ybxvgavvy402d5sli515i8ca")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dired-subtree" ,emacs-dired-hacks))) + (synopsis "Sidebar for Emacs using Dired") + (description + "This package provides a sidebar for Emacs similar to @code{NeoTree} +or @code{treemacs}, but leveraging @code{Dired} to do the job of display.") + (license license:gpl3+)))) + +(define-public emacs-which-key + (package + (name "emacs-which-key") + (version "3.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/justbur/emacs-which-key") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ahgb7dqdc75farkl0fg0a6hvx2067gdvjq99cd3z2dz56km0p05")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "which-key-tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/justbur/emacs-which-key") + (synopsis "Display available key bindings in popup") + (description + "@code{emacs-which-key} is a minor mode for Emacs that displays the key +bindings following your currently entered incomplete command (a prefix) in a +popup. For example, after enabling the minor mode if you enter C-x and wait +for the default of 1 second, the minibuffer will expand with all of the +available key bindings that follow C-x (or as many as space allows given your +settings).") + (license license:gpl3+))) + +(define-public emacs-hercules + (package + (name "emacs-hercules") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jjzmajic/hercules.el.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19939pf5d6p2facmfhpyghx0vipb5k6ry3bmkmjfkj1zp132zfqf")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-which-key" ,emacs-which-key))) + (home-page "https://gitlab.com/jjzmajic/hercules.el") + (synopsis "Call a chain of related commands without repeated prefix keys") + (description + "This package provides sticky-key-like functionality to obviate the +need for repeated prefix-key sequences, and can reuse existing keymaps. The +list of commands is displayed in a handy popup.") + (license license:gpl3+))) + +(define-public emacs-ws-butler + (package + (name "emacs-ws-butler") + (version "0.6") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/lewang/ws-butler") + (commit "323b651dd70ee40a25accc940b8f80c3a3185205"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb")))) + (build-system emacs-build-system) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner" "tests"))) + (home-page "https://github.com/lewang/ws-butler") + (synopsis "Trim spaces from end of lines") + (description + "This Emacs package automatically and unobtrusively trims whitespace +characters from end of lines.") + (license license:gpl3+))) + +(define-public emacs-openwith + (let ((changeset "aeb78782ec87680ea9f082a3f20a3675b3770cf9") + (revision "0")) + (package + (name "emacs-openwith") + (home-page "https://bitbucket.org/jpkotta/openwith") + (version (git-version "0.0.1" revision changeset)) + (source (origin + (method hg-fetch) + (uri (hg-reference (url home-page) (changeset changeset))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wl6gnxsyhaad4cl9bxjc0qbc5jzvlwbwjbajs0n1s6qr07d6r01")))) + (build-system emacs-build-system) + (synopsis "Open external applications for files with Emacs") + (description + "This package enables you to associate file name patterns with external +applications that are automatically invoked when you use commands like +@code{find-file}. For example, you can have it open @code{png} files with +@code{feh} and @code{mp4} files with @code{mpv}. This is especially useful +when browsing files with Dired.") + (license license:gpl2+)))) + +(define-public emacs-org-edit-latex + (package + (name "emacs-org-edit-latex") + (version "0.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/et2010/org-edit-latex") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zcllyhx9n9vcr5w87h0hfz25v52lvh5fi717cb7mf3jh89zh842")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-auctex" ,emacs-auctex) + ;; The version of org in Emacs 25.2 is not sufficient, because the + ;; `org-latex-make-preamble' function is required. + ("emacs-org" ,emacs-org))) + (home-page "https://github.com/et2010/org-edit-latex") + (synopsis "Edit a latex fragment just like editing a src block") + (description "@code{emacs-org-edit-latex} is an extension for org-mode. +It lets you edit a latex fragment in a dedicated buffer just like editing a +src block.") + (license license:gpl3+))) + +(define-public emacs-emamux + (package + (name "emacs-emamux") + (version "0.14") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-emamux") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "19y69qw79miim9cz5ji54gwspjkcp9g2c1xr5s7jj2fiabnxax6b")))) + (build-system emacs-build-system) + (home-page "https://github.com/syohex/emacs-emamux") + (synopsis "Manipulate Tmux from Emacs") + (description + "@code{emacs-emamux} lets Emacs interact with the @code{tmux} terminal +multiplexer.") + (license license:gpl3+))) + +(define-public emacs-rpm-spec-mode + (package + (name "emacs-rpm-spec-mode") + (version "0.16") + (source + (origin + (method url-fetch) + ;; URI has the Fedora release number instead of the version + ;; number. This will have to updated manually every new release. + (uri (string-append + "https://src.fedoraproject.org/cgit/rpms" + "/emacs-rpm-spec-mode.git/snapshot" + "/emacs-rpm-spec-mode-f26.tar.gz")) + (sha256 + (base32 + "17dz80lhjrc89fj17pysl8slahzrqdkxgcjdk55zls6jizkr6kz3")))) + (build-system emacs-build-system) + (home-page "http://pkgs.fedoraproject.org/cgit/rpms/emacs-rpm-spec-mode.git") + (synopsis "Emacs major mode for editing RPM spec files") + (description "@code{emacs-rpm-spec-mode} provides an Emacs major mode for +editing RPM spec files.") + (license license:gpl2+))) + +(define-public emacs-lcr + (package + (name "emacs-lcr") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/lcr") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mc55icihxqpf8b05990q1lc2nj2792wcgyr73xsiqx0963sjaj8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash))) + (home-page "https://github.com/jyp/lcr") + (synopsis "Lightweight coroutines in Emacs Lisp") + (description "This package provides macros that can translate code into +equivalent continuation-passing code, as well as miscellaneous utility +functions written in continuation-passing style.") + (license license:gpl3+))) + +(define-public emacs-attrap + (let ((commit "18cd1f7832870a36c404e872fa83a271fe8e688d") + (revision "2")) + (package + (name "emacs-attrap") + (version (git-version "1.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jyp/attrap") + (commit commit))) + (sha256 + (base32 + "078391949h0fgmshin8f79a1a595m06ig577rkgjqgngcp0d61l9")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-f" ,emacs-f) + ("emacs-flycheck" ,emacs-flycheck) + ("emacs-s" ,emacs-s))) + (home-page "https://github.com/jyp/attrap") + (synopsis "Fix coding error at point") + (description "This package provides a command to fix the Flycheck error +at point.") + (license license:gpl3+)))) + +(define-public emacs-git-messenger + (package + (name "emacs-git-messenger") + (version "0.18") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/syohex/emacs-git-messenger") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04fnby2nblk8l70gv09asxkmnn53fh1pdfs77ix44npp99fyw8ix")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-popup" ,emacs-popup))) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" "-l" "test/test.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/syohex/emacs-git-messenger") + (synopsis "Popup commit message at current line") + (description "@code{emacs-git-messenger} provides +@code{git-messenger:popup-message}, a function that when called, will popup +the last git commit message for the current line. This uses git-blame +internally.") + (license license:gpl3+))) + +(define-public emacs-gitpatch + (package + (name "emacs-gitpatch") + (version "0.5.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/gitpatch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1drf4fvmak7brf16axkh4nfz8pg44i7pjhfjz3dbkycbpp8y5vig")))) + (build-system emacs-build-system) + (home-page "https://github.com/tumashu/gitpatch") + (synopsis "Mail git patch from Emacs") + (description "@code{emacs-gitpatch} lets users easily send git patches, +created by @code{git format-patch}, from @code{magit}, @code{dired} and +@code{ibuffer} buffers.") + (license license:gpl3+))) + +(define-public emacs-erc-hl-nicks + (package + (name "emacs-erc-hl-nicks") + (version "1.3.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leathekd/erc-hl-nicks") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0k57scxa8rm859fqsm8srhps7rlq06jzazhjbwnadzrh8i5fyvra")))) + (build-system emacs-build-system) + (synopsis "Nickname highlighting for Emacs ERC") + (description "@code{erc-hl-nicks} highlights nicknames in ERC, an IRC +client for Emacs. The main features are: +@itemize +@item Auto-colorizes nicknames without having to specify colors +@item Ignores certain characters that IRC clients add to nicknames to avoid +duplicates (nickname, nickname’, nickname\", etc.) +@item Attempts to produce colors with a sufficient amount of contrast between +the nick color and the background color +@end itemize\n") + (home-page "https://github.com/leathekd/erc-hl-nicks") + (license license:gpl3+))) + +(define-public emacs-engine-mode + (package + (name "emacs-engine-mode") + (version "2.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/hrs/engine-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1xka8i4cdvp5r2v2mkli1zz17x1sdsnmszbhqav2rf94v656d91i")))) + (build-system emacs-build-system) + (synopsis "Minor mode for defining and querying search engines") + (description "@code{engine-mode} is a global minor mode for Emacs. It +enables you to easily define search engines, bind them to keybindings, and +query them from the comfort of your editor.") + (home-page "https://github.com/hrs/engine-mode") + (license license:gpl3+))) + +(define-public emacs-prop-menu + (package + (name "emacs-prop-menu") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/david-christiansen/prop-menu-el") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "18ap2liz5r5a8ja2zz9182fnfm47jnsbyblpq859zks356k37iwc")))) + (build-system emacs-build-system) + (home-page + "https://github.com/david-christiansen/prop-menu-el") + (synopsis + "Create and display a context menu based on text and overlay properties") + (description + "This is a library for computing context menus based on text +properties and overlays. The intended use is to have tools that +annotate source code and others that use these annotations, without +requiring a direct coupling between them, but maintaining +discoverability. + +Major modes that wish to use this library should first define an +appropriate value for @code{prop-menu-item-functions}. Then, they should +bind @code{prop-menu-by-completing-read} to an appropriate +key. Optionally, a mouse pop-up can be added by binding +@code{prop-menu-show-menu} to a mouse event.") + (license license:gpl3+))) + +(define-public emacs-idris-mode + (let ((commit "b77eadd8ac2048d5c882b4464bd9673e45dd6a59") + (revision "0")) + (package + (name "emacs-idris-mode") + (version (git-version "1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/idris-hackers/idris-mode") + (commit commit))) + (file-name (git-file-name name commit)) + (sha256 + (base32 + "1v8av6jza1j00ln75zjwaca0vmmv0fhhhi94p84rlfzgzykyb9g1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-prop-menu" ,emacs-prop-menu))) + (home-page + "https://github.com/idris-hackers/idris-mode") + (synopsis "Major mode for editing Idris code") + (description + "This is an Emacs mode for editing Idris code. It is compatible with +the latest versions of Idris 1.") + (license license:gpl3+)))) + +(define-public emacs-browse-at-remote + (package + (name "emacs-browse-at-remote") + (version "0.10.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rmuslimov/browse-at-remote") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vhia7xmszcb3lxrb8wh93a3knjfzj48h8nhj4fh8zj1pjz6args")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-f" ,emacs-f) + ("emacs-s" ,emacs-s))) + (native-inputs + `(("ert-runner" ,emacs-ert-runner))) + (arguments + `(#:tests? #t + #:test-command '("ert-runner"))) + (home-page "https://github.com/rmuslimov/browse-at-remote") + (synopsis "Open github/gitlab/bitbucket/stash page from Emacs") + (description + "This Emacs package allows you to open a target page on +github/gitlab (or bitbucket) by calling @code{browse-at-remote} command. +It supports dired buffers and opens them in tree mode at destination.") + (license license:gpl3+))) + +(define-public emacs-tiny + (let ((commit "fd8a6b0b0c564d8242259e20e557ee6041f40908") + (revision "1")) + (package + (name "emacs-tiny") + (version (git-version "0.2.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/tiny") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1498j392ap2mk4zmsm2id16pfgvj78r428da9vw7hdrzzibai2cx")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("make" "test"))) + (home-page "https://github.com/abo-abo/tiny") + (synopsis "Quickly generate linear ranges in Emacs") + (description + "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}. +It is meant to quickly generate linear ranges, e.g. 5, 6, 7, 8. Some elisp +proficiency is an advantage, since you can transform your numeric range with +an elisp expression.") + (license license:gpl3+)))) + +(define-public emacs-emojify + (package + (name "emacs-emojify") + (version "1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/iqbalansari/emacs-emojify") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1fqnj5x7ivjkm5y927dqqnm85q5hzczlb0hrfpjalrhasa6ijsrm")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons "^data/" %default-include))) + (propagated-inputs + `(("emacs-ht" ,emacs-ht))) + (home-page "https://github.com/iqbalansari/emacs-emojify") + (synopsis "Display emojis in Emacs") + (description "This package displays emojis in Emacs similar to how Github, +Slack, and other websites do. It can display plain ASCII like @code{:)} as +well as Github-style emojis like @code{:smile:}. It provides a minor mode +@code{emojify-mode} to enable the display of emojis in a buffer.") + (license license:gpl3+))) + +(define-public emacs-make-it-so + (let ((commit "b73dfb640588123c9eece230ad72b37604f5c126") + (revision "2")) + (package + (name "emacs-make-it-so") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/abo-abo/make-it-so") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0p6xhyinzzkrwzbpxqfm8hlii0ikvmmylya240bwsa77w0g1k6xq")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons "^recipes/" %default-include))) + (propagated-inputs + `(("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/abo-abo/make-it-so") + (synopsis "Transform files with Makefile recipes") + (description "This package provides an interface for selecting from +different conversion recipes, often including tools like @code{ffmpeg} or +@code{convert}. The conversion command need only be written once, and +subsequent invocations can be readily customized. Several recipes are +included by default, and more can be readily added.") + (license license:gpl3+)))) + +(define-public emacs-unidecode + (let ((commit "5502ada9287b4012eabb879f12f5b0a9df52c5b7") + (revision "1")) + (package + (name "emacs-unidecode") + (version (git-version "0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sindikat/unidecode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "03x3nakbhmakwm977mwrf8jifvjnfwzpjv6wrwpizbqjnkgfchmn")))) + (build-system emacs-build-system) + (arguments + `(#:include (cons* "^tools/" "^data/" %default-include) + #:tests? #t + #:test-command '("emacs" "--batch" + "-l" "unidecode-test.el" + "-f" "ert-run-tests-batch-and-exit") + #:phases + (modify-phases %standard-phases + (add-before 'check 'make-tests-writable + (lambda _ + (make-file-writable "unidecode-test.el") + #t)) + (add-before 'check 'add-require + (lambda _ + (emacs-batch-edit-file "unidecode-test.el" + `(progn (progn (goto-char (point-min)) + (re-search-forward + "ert-deftest") + (forward-line -1) + (insert "(require 'unidecode)")) + (basic-save-buffer))) + #t))))) + (home-page "https://github.com/sindikat/unidecode") + (synopsis "Transliterate Unicode text to ASCII") + (description "This package provides functions for converting Unicode to ASCII.") + (license license:gpl2+)))) + +(define-public emacs-pubmed + (package + (name "emacs-pubmed") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/fvdbeek/emacs-pubmed.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "15bwjxc7g43m5pi8z17anaqqkvi209r7kk1chmf175477gvrv7c0")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-deferred" ,emacs-deferred) + ("emacs-esxml" ,emacs-esxml) + ("emacs-s" ,emacs-s) + ("emacs-unidecode" ,emacs-unidecode))) + (home-page "https://gitlab.com/fvdbeek/emacs-pubmed") + (synopsis "Interface to PubMed") + (description "This package provides an Emacs interface to the PubMed +database of references on life sciences.") + (license license:gpl3+))) + +(define-public emacs-websocket + (package + (name "emacs-websocket") + (version "1.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "websocket-" version ".tar")) + (sha256 + (base32 "0ap4z80c6pzpb69wrx0hsvwzignxmd2b9xy974by9gf5xm2wpa8w")))) + (build-system emacs-build-system) + (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 WebSocket +clients. This library is designed to be used by other library writers, to +write applications that use WebSockets, and is not useful by itself.") + (license license:gpl3+))) + +(define-public emacs-oauth2 + (package + (name "emacs-oauth2") + (version "0.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "oauth2-" version ".el")) + (sha256 + (base32 "0y5nbdwxz2hfr09xgsqgyv60vgx0rsaisibcpkz00klvgg26w33r")))) + (build-system emacs-build-system) + (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. +The main entry point is @code{oauth2-auth-and-store} which will return a token +structure. This token structure can be then used with +@code{oauth2-url-retrieve-synchronously} or @code{oauth2-url-retrieve} to +retrieve any data that need OAuth authentication to be accessed. If the token +needs to be refreshed, the code handles it automatically and stores the new +value of the access token.") + (license license:gpl3+))) + +(define-public emacs-circe + (package + (name "emacs-circe") + (version "2.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jorgenschaefer/circe") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cr9flk310yn2jgvj4hbqw9nj5wlfi0fazdkqafzidgz6iq150wd")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("buttercup" "-L" ".") + #:phases + (modify-phases %standard-phases + ;; The HOME environment variable should be set to an existing + ;; directory for the tests to succeed. + (add-before 'check 'set-home + (lambda _ + (setenv "HOME" "/tmp") + #t))))) + (native-inputs + `(("emacs-buttercup" ,emacs-buttercup))) + ;; In order to securely connect to an IRC server using TLS, Circe requires + ;; the GnuTLS binary. + (propagated-inputs + `(("gnutls" ,gnutls))) + (home-page "https://github.com/jorgenschaefer/circe") + (synopsis "Client for IRC in Emacs") + (description "Circe is a Client for IRC in Emacs. It integrates well with +the rest of the editor, using standard Emacs key bindings and indicating +activity in channels in the status bar so it stays out of your way unless you +want to use it.") + (license license:gpl3+))) + +(define-public emacs-tracking + (package + (inherit emacs-circe) + (name "emacs-tracking") + (arguments + ;; "tracking.el" is a library extracted from Circe package. It requires + ;; "shorten.el". + `(#:include '("^shorten.el$" "^tracking.el$") + ,@(package-arguments emacs-circe))) + (home-page "https://github.com/jorgenschaefer/circe/wiki/Tracking") + (synopsis "Buffer tracking library") + (description "@code{tracking.el} provides a way for different modes to +notify the user that a buffer needs attention. The user then can cycle +through them using @key{C-c C-SPC}.") + (license license:gpl3+))) + +(define-public emacs-slack + (let ((commit "a6d9f49bc6161f12c594d25254e77eedf4a67666") + (revision "8")) + (package + (name "emacs-slack") + (version (git-version "0.0.2" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/yuya373/emacs-slack") + (commit commit))) + (file-name (git-file-name name commit)) + (sha256 + (base32 + "0crjjankqi4bqjk5pdz4r2ixf56n1nnq8ab1gz3sbl3v6as6262w")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; HOME needs to exist for source compilation. + (add-before 'build 'set-HOME + (lambda _ (setenv "HOME" "/tmp") #t))))) + (propagated-inputs + `(("emacs-alert" ,emacs-alert) + ("emacs-emojify" ,emacs-emojify) + ("emacs-helm" ,emacs-helm) + ("emacs-request" ,emacs-request) + ("emacs-websocket" ,emacs-websocket) + ("emacs-oauth2" ,emacs-oauth2) + ("emacs-circe" ,emacs-circe))) + (home-page "https://github.com/yuya373/emacs-slack") + (synopsis "Slack client for Emacs") + (description "This package provides an Emacs client for the Slack +messaging service.") + (license license:gpl3+)))) + +(define-public emacs-bash-completion + (package + (name "emacs-bash-completion") + (version "2.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/szermatt/emacs-bash-completion") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1a1wxcqzh0javjmxwi3lng5i99xiylm8lm04kv4q1lh9bli6vmv0")))) + (inputs `(("bash" ,bash))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (λ _ + (for-each make-file-writable (find-files ".")) + #t)) + (add-before 'install 'configure + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (emacs-substitute-variables "bash-completion.el" + ("bash-completion-prog" (string-append bash "/bin/bash")))) + #t))))) + (home-page "https://github.com/szermatt/emacs-bash-completion") + (synopsis "Bash completion for the shell buffer") + (description + "@code{bash-completion} defines dynamic completion hooks for shell-mode +and shell-command prompts that are based on Bash completion.") + (license license:gpl2+))) + +(define-public emacs-easy-kill + (package + (name "emacs-easy-kill") + (version "0.9.3") + (source (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/easy-kill-" + version ".tar")) + (sha256 + (base32 + "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb")))) + (build-system emacs-build-system) + (home-page "https://github.com/leoliu/easy-kill") + (synopsis "Kill and mark things easily in Emacs") + (description + "This package provides commands @code{easy-kill} and @code{easy-mark} to +let users kill or mark things easily.") + (license license:gpl3+))) + +(define-public emacs-csv-mode + (package + (name "emacs-csv-mode") + (version "1.12") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "csv-mode-" version ".tar")) + (sha256 + (base32 "0bya12smlrzwv4cbcmch4kg1fazp4k0ndrh1z17ix9p8c14d0v1j")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/csv-mode.html") + (synopsis "Major mode for editing comma/char separated values") + (description + "This Emacs package implements CSV mode, a major mode for editing records +in a generalized CSV (character-separated values) format.") + (license license:gpl3+))) + +(define-public emacs-transmission + (package + (name "emacs-transmission") + (version "0.12.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/holomorph/transmission") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0kvg2gawsgy440x1fsl2c4pkxwp3zirq9rzixanklk0ryijhd3ry")))) + (build-system emacs-build-system) + (home-page "https://github.com/holomorph/transmission") + (synopsis "Emacs interface to a Transmission session") + (description "This package provides an Emacs interface to interact with a +running session of the Transmission Bittorrent client. + +Features: + +@itemize +@item List, add, start/stop, verify, remove torrents. +@item Set speed limits, ratio limits, bandwidth priorities, trackers. +@item Navigate to the corresponding file list, torrent info, peer info +contexts. +@item Toggle downloading and set priorities for individual files. +@end itemize\n") + (license license:gpl3+))) + +(define-public emacs-polymode + (package + (name "emacs-polymode") + (version "0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/polymode/polymode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04v0gnzfsjb50bgly6kvpryx8cyzwjaq2llw4qv9ijw1l6ixmq3b")))) + (build-system emacs-build-system) + (home-page "https://github.com/polymode/polymode") + (synopsis "Framework for multiple Emacs modes based on indirect buffers") + (description + "Polymode is an Emacs package that offers generic support for multiple +major modes inside a single Emacs buffer. It is lightweight, object oriented +and highly extensible. Creating a new polymode typically takes only a few +lines of code. Polymode also provides extensible facilities for external +literate programming tools for exporting, weaving and tangling.") + (license license:gpl3+))) + +(define-public emacs-polymode-ansible + (let ((commit "b26094d029e25dc797b94254f797e7807a57e4c8")) + (package + (name "emacs-polymode-ansible") + ;; No upstream version release yet. + (version (git-version "0.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/mavit/poly-ansible") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "055shddqibib3hx2ykwdz910nrqws40cd407mq946l2bf6v87gj6")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-ansible-doc" ,emacs-ansible-doc) + ("emacs-jinja2-mode" ,emacs-jinja2-mode) + ("emacs-polymode" ,emacs-polymode) + ("emacs-yaml-mode" ,emacs-yaml-mode))) + (properties '((upstream-name . "poly-ansible"))) + (home-page "https://gitlab.com/mavit/poly-ansible/") + (synopsis "Polymode for Ansible - Jinja2 in YAML") + (description + "Edit YAML files for Ansible containing embedded Jinja2 templating.") + (license license:gpl3+)))) + +(define-public emacs-polymode-org + (package + (name "emacs-polymode-org") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/polymode/poly-org") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04x6apjad4kg30456z1j4ipp64yjgkcaim6hqr6bb0rmrianqhck")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-polymode" ,emacs-polymode))) + (properties '((upstream-name . "poly-org"))) + (home-page "https://github.com/polymode/poly-org") + (synopsis "Polymode definitions for Org mode buffers") + (description + "Provides definitions for @code{emacs-polymode} to support +@code{emacs-org} buffers. Edit source blocks in an Org mode buffer using the +native modes of the blocks' languages while remaining inside the primary Org +buffer.") + (license license:gpl3+))) + +(define-public eless + (package + (name "eless") + (version "0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kaushalmodi/eless") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jr7vhh4vw69llhi0fh9ljscljkszkj0acdxl04da5hvqv6pnqbb")))) + (build-system trivial-build-system) + (inputs + `(("bash" ,bash))) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (copy-recursively (assoc-ref %build-inputs "source") "source") + (chdir "source") + (substitute* "eless" (("/usr/bin/env bash") + (string-append (assoc-ref %build-inputs "bash") + "/bin/bash"))) + (install-file "eless" (string-append %output "/bin")) + (install-file "doc/eless.info" (string-append %output "/share/info")) + #t))) + (home-page "https://github.com/kaushalmodi/eless") + (synopsis "Use Emacs as a paginator") + (description "@code{eless} provides a combination of Bash script +and a minimal Emacs view-mode. + +Feautures: + +@itemize +@item Independent of a user’s Emacs config. +@item Customizable via the @code{(locate-user-emacs-file \"elesscfg\")} config. +@item Not require an Emacs server to be already running. +@item Syntax highlighting. +@item Org-mode file rendering. +@item @code{man} page viewer. +@item Info viewer. +@item Dired, wdired, (batch edit symbolic links). +@item Colored diffs, git diff, git log, ls with auto ANSI detection. +@item Filter log files lines matching a regexp. +@item Auto-revert log files similar to @code{tail -f}. +@item Quickly change frame and font sizes. +@end itemize\n") + (license license:expat))) + +(define-public emacs-evil-matchit + (package + (name "emacs-evil-matchit") + (version "2.3.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/redguardtoo/evil-matchit") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nflkmx08n3ya5vaipy1xg19hnqcp6f7ddsx9xjh5gl6ix2iz0az")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (home-page "https://github.com/redguardtoo/evil-matchit") + (synopsis "Vim matchit ported into Emacs") + (description + "@code{evil-matchit} is a minor mode for jumping between matching tags in +evil mode using @kbd{%}. It is a port of @code{matchit} for Vim.") + (license license:gpl3+))) + +(define-public emacs-evil-smartparens + (package + (name "emacs-evil-smartparens") + (version "0.4.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/expez/evil-smartparens") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1di4qz5fbrlwbg16c2j0m7y8zqfxw027qd7zqmc3rwk9znbhg7wl")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil) + ("emacs-smartparens" ,emacs-smartparens))) + (home-page "https://github.com/expez/evil-smartparens") + (synopsis "Emacs Evil integration for Smartparens") + (description "@code{emacs-evil-smartparens} is an Emacs minor mode which +makes Evil play nice with Smartparens. Evil is an Emacs minor mode that +emulates Vim features and provides Vim-like key bindings.") + (license license:gpl3+))) + +(define-public emacs-evil-quickscope + (package + (name "emacs-evil-quickscope") + (version "0.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/blorbx/evil-quickscope") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ja9ggj70wf0nmma4xnc1zdzg2crq9h1cv3cj7cgwjmllflgkfq7")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-evil" ,emacs-evil))) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" + "-l" "evil-quickscope-tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/blorbx/evil-quickscope") + (synopsis "Target highlighting for emacs evil-mode f,F,t and T commands") + (description "@code{emacs-evil-quickscope} highlights targets for Evil +mode’s f,F,t,T keys, allowing for quick navigation within a line. It is a +port of quick-scope for Vim. Evil is an Emacs minor mode that emulates Vim +features and provides Vim-like key bindings.") + (license license:gpl3+))) + +(define-public emacs-bongo + (package + (name "emacs-bongo") + (version "1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dbrock/bongo") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nszph9mn98flyhn1jq3y6mdh6jymjkvj5ng36ql016dj92apvhv")))) + (build-system emacs-build-system) + (home-page "https://github.com/dbrock/bongo") + (synopsis "Media player for Emacs") + (description + "This package provides a flexible media player for Emacs. @code{Bongo} +supports multiple backends such as @code{vlc}, @code{mpg123}, +@code{ogg123}, @code{speexdec}, @code{timidity}, @code{mikmod} and +@code{afplay}.") + (license license:gpl2+))) + +(define-public emacs-groovy-modes + (package + (name "emacs-groovy-modes") + (version "2.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0c1d4cbnlny8gpcd20zr1wxx6ggf28jgh7sgd5r1skpsvjpbfqx2")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-s" ,emacs-s))) + (home-page "https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes") + (synopsis "Groovy related modes for Emacs") + (description + "This package provides @code{groovy-mode} for syntax highlighting in +Groovy source files, REPL integration with run-groovy and Grails project +navigation with the grails mode.") + (license license:gpl3+))) + +(define-public emacs-jenkinsfile-mode + (let ((commit "00d259ff9b870d234540e00e1d7c83cccdb063b8") + (revision "1")) + (package + (name "emacs-jenkinsfile-mode") + (version (git-version "0.0.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/john2x/jenkinsfile-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0srf6xdjnrd4v4ks9pal7i48wmkcl4q5ry7d0yzfx1c9pz2qg9zx")))) + (propagated-inputs + `(("emacs-groovy-modes" ,emacs-groovy-modes))) + (build-system emacs-build-system) + (home-page "https://github.com/john2x/jenkinsfile-mode/") + (synopsis "Emacs major-mode for editing Jenkinsfile") + (description "This package provides a @code{jenkinsfile-mode} derived +from @code{groovy-mode} for editing Jenkins declarative pipeline files.") + (license license:gpl3+)))) + +(define-public emacs-org-tree-slide + (let ((commit "036a36eec1cf712d3db155572aed325daa372eb5") + (revision "2")) + (package + (name "emacs-org-tree-slide") + (version (git-version "2.8.4" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/takaxp/org-tree-slide") + (commit commit))) + (sha256 + (base32 + "1r8ncx25xmxicgciyv5przp68y8qgy40fm10ba55awvql4xcm0yk")) + (file-name (git-file-name name version)))) + (build-system emacs-build-system) + (home-page "https://github.com/takaxp/org-tree-slide") + (synopsis "Presentation tool for org-mode") + (description + "Org-tree-slide provides a slideshow mode to view org-mode files. Use +@code{org-tree-slide-mode} to enter the slideshow mode, and then @kbd{C->} and +@kbd{C-<} to jump to the next and previous slide.") + (license license:gpl3+)))) + +(define-public emacs-scratch-el + (let ((commit "2cdf2b841ce7a0987093f65b0cc431947549f897") + (revision "1")) + (package + (name "emacs-scratch-el") + (version (git-version "1.2" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ieure/scratch-el") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wscsndynjmnliajqaz28r1ww81j8wh84zwaaswx51abhwgl0idf")))) + (build-system emacs-build-system) + (native-inputs + `(("texinfo" ,texinfo))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-doc + (lambda* (#:key outputs #:allow-other-keys) + (unless (invoke "makeinfo" "scratch.texi") + (error "makeinfo failed")) + (install-file "scratch.info" + (string-append (assoc-ref outputs "out") + "/share/info")) + #t))))) + (home-page "https://github.com/ieure/scratch-el/") + (synopsis "Create scratch buffers with the same mode as current buffer") + (description "Scratch is an extension to Emacs that enables one to create +scratch buffers that are in the same mode as the current buffer. This is +notably useful when working on code in some language; you may grab code into a +scratch buffer, and, by virtue of this extension, do so using the Emacs +formatting rules for that language.") + (license license:bsd-2)))) + +(define-public emacs-kv + (package + (name "emacs-kv") + (version "0.0.19") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nicferrier/emacs-kv") + (commit "721148475bce38a70e0b678ba8aa923652e8900e"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m")))) + (build-system emacs-build-system) + (arguments + `(#:tests? #t + #:test-command '("emacs" "--batch" "-l" "kv-tests.el" + "-f" "ert-run-tests-batch-and-exit"))) + (home-page "https://github.com/nicferrier/emacs-kv") + (synopsis "Key/Value data structures library for Emacs Lisp") + (description "@code{emacs-kv} is a collection of tools for dealing with +key/value data structures such as plists, alists and hash-tables in Emacs +Lisp.") + (license license:gpl3+))) + +(define-public emacs-esxml + (package + (name "emacs-esxml") + (version "0.3.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tali713/esxml") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00vv8a75wdklygdyr4km9mc2ismxak69c45jmcny41xl44rp9x8m")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-sources + (lambda _ + ;; See: https://github.com/tali713/esxml/pull/28. + (substitute* "css-lite.el" + ((";;; main interface") + (string-append ";;; main interface\n" + "(require 'cl-lib)")) + (("mapcan") + "cl-mapcan") + (("',\\(cl-mapcan #'process-css-rule rules\\)") + "(cl-mapcan #'process-css-rule ',rules)")) + (substitute* "esxml-form.el" + ((",esxml-form-field-defn") + "#'esxml-form-field-defn")) + ;; See: https://github.com/tali713/esxml/issues/25 + (delete-file "esxpath.el") + #t))))) + (propagated-inputs + `(("emacs-kv" ,emacs-kv))) + (home-page "https://github.com/tali713/esxml/") + (synopsis "SXML for EmacsLisp") + (description "This is XML/XHTML done with S-Expressions in EmacsLisp. +Simply, this is the easiest way to write HTML or XML in Lisp. This library +uses the native form of XML representation as used by many libraries already +included within Emacs. See @code{esxml-to-xml} for a concise description of +the format.") + (license license:gpl3+))) + +(define-public emacs-nov-el + (package + (name "emacs-nov-el") + (version "0.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://depp.brause.cc/nov.el.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "13r7lvyyyv62m57m4s4xjs4qz2ckhqk6ib514px7qzc7mdzcz9i9")))) + (build-system emacs-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'embed-path-to-unzip + (lambda _ + (substitute* "nov.el" + (("\\(executable-find \"unzip\"\\)") + (string-append "\"" (which "unzip") "\""))) + #t))))) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-esxml" ,emacs-esxml))) + (inputs + `(("unzip" ,unzip))) + (home-page "https://depp.brause.cc/nov.el/") + (synopsis "Major mode for reading EPUBs in Emacs") + (description "@code{nov.el} provides a major mode for reading EPUB +documents. + +Features: + +@itemize +@item Basic navigation (jump to TOC, previous/next chapter) +@item Remembering and restoring the last read position +@item Jump to next chapter when scrolling beyond end +@item Renders EPUB2 (@code{.ncx}) and EPUB3 (@code{