gnu: Add emacs-helm-flycheck.
[guix.git] / gnu / packages / emacs.scm
blobb7288161dc4509773832a1795d443801f734576b
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
3 ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Alex Kost <alezost@gmail.com>
6 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
7 ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
8 ;;; Copyright © 2016, 2017, 2018 Chris Marusich <cmmarusich@gmail.com>
9 ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
10 ;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com>
11 ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
12 ;;; Copyright © 2016 David Thompson <davet@gnu.org>
13 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
14 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
15 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
16 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
17 ;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
18 ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
19 ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
20 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
21 ;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
22 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
23 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
24 ;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com>
25 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
26 ;;; Copyright © 2017 George Clemmer <myglc2@gmail.com>
27 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
28 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
29 ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
30 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
31 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
32 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
33 ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
34 ;;; Copyright © 2017, 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
35 ;;; Copyright © 2018 Sohom Bhattacharjee <soham.bhattacharjee15@gmail.com>
36 ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
37 ;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
38 ;;;
39 ;;; This file is part of GNU Guix.
40 ;;;
41 ;;; GNU Guix is free software; you can redistribute it and/or modify it
42 ;;; under the terms of the GNU General Public License as published by
43 ;;; the Free Software Foundation; either version 3 of the License, or (at
44 ;;; your option) any later version.
45 ;;;
46 ;;; GNU Guix is distributed in the hope that it will be useful, but
47 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
48 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
49 ;;; GNU General Public License for more details.
50 ;;;
51 ;;; You should have received a copy of the GNU General Public License
52 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
54 (define-module (gnu packages emacs)
55   #:use-module ((guix licenses) #:prefix license:)
56   #:use-module (guix packages)
57   #:use-module (guix download)
58   #:use-module (guix git-download)
59   #:use-module (guix gexp)
60   #:use-module (guix monads)
61   #:use-module (guix store)
62   #:use-module (guix build-system gnu)
63   #:use-module (guix build-system emacs)
64   #:use-module (guix build-system glib-or-gtk)
65   #:use-module (guix build-system trivial)
66   #:use-module (gnu packages)
67   #:use-module (gnu packages audio)
68   #:use-module (gnu packages bash)
69   #:use-module (gnu packages cmake)
70   #:use-module (gnu packages code)
71   #:use-module (gnu packages databases)
72   #:use-module (gnu packages guile)
73   #:use-module (gnu packages gtk)
74   #:use-module (gnu packages gnome)
75   #:use-module (gnu packages ncurses)
76   #:use-module (gnu packages python)
77   #:use-module (gnu packages tex)
78   #:use-module (gnu packages texinfo)
79   #:use-module (gnu packages tcl)
80   #:use-module (gnu packages tls)
81   #:use-module (gnu packages pkg-config)
82   #:use-module (gnu packages xorg)
83   #:use-module (gnu packages lesstif)
84   #:use-module (gnu packages image)
85   #:use-module (gnu packages linux)
86   #:use-module (gnu packages version-control)
87   #:use-module (gnu packages imagemagick)
88   #:use-module (gnu packages w3m)
89   #:use-module (gnu packages wget)
90   #:use-module (gnu packages autotools)
91   #:use-module (gnu packages base)
92   #:use-module (gnu packages compression)
93   #:use-module (gnu packages xml)
94   #:use-module (gnu packages glib)
95   #:use-module (gnu packages acl)
96   #:use-module (gnu packages mail)
97   #:use-module (gnu packages package-management)
98   #:use-module (gnu packages perl)
99   #:use-module (gnu packages pdf)
100   #:use-module (gnu packages scheme)
101   #:use-module (gnu packages statistics)
102   #:use-module (gnu packages xiph)
103   #:use-module (gnu packages mp3)
104   #:use-module (gnu packages gettext)
105   #:use-module (gnu packages fribidi)
106   #:use-module (gnu packages gd)
107   #:use-module (gnu packages fontutils)
108   #:use-module (gnu packages password-utils)
109   #:use-module (gnu packages xdisorg)
110   #:use-module (gnu packages shells)
111   #:use-module (guix utils)
112   #:use-module (srfi srfi-1)
113   #:use-module (ice-9 match))
115 (define-public emacs
116   (package
117     (name "emacs")
118     (version "26.1")
119     (source (origin
120              (method url-fetch)
121              (uri (string-append "mirror://gnu/emacs/emacs-"
122                                  version ".tar.xz"))
123              (sha256
124               (base32
125                "0b6k1wq44rc8gkvxhi1bbjxbz3cwg29qbq8mklq2az6p1hjgrx0w"))
126              (patches (search-patches "emacs-exec-path.patch"
127                                       "emacs-fix-scheme-indent-function.patch"
128                                       "emacs-source-date-epoch.patch"))
129              (modules '((guix build utils)))
130              (snippet
131               ;; Delete the bundled byte-compiled elisp files and
132               ;; generated autoloads.
133               '(with-directory-excursion "lisp"
134                  (for-each delete-file
135                            (append (find-files "." "\\.elc$")
136                                    (find-files "." "loaddefs\\.el$")
137                                    ;; This is the only "autoloads" file that
138                                    ;; does not have "*loaddefs.el" name.
139                                    '("eshell/esh-groups.el")))
141                  ;; Make sure Tramp looks for binaries in the right places on
142                  ;; remote GuixSD machines, where 'getconf PATH' returns
143                  ;; something bogus.
144                  (substitute* "net/tramp-sh.el"
145                    ;; Patch the line after "(defcustom tramp-remote-path".
146                    (("\\(tramp-default-remote-path")
147                     (format #f "(tramp-default-remote-path ~s ~s ~s ~s "
148                             "~/.guix-profile/bin" "~/.guix-profile/sbin"
149                             "/run/current-system/profile/bin"
150                             "/run/current-system/profile/sbin")))
152                  ;; Make sure Man looks for C header files in the right
153                  ;; places.
154                  (substitute* "man.el"
155                    (("\"/usr/local/include\"" line)
156                     (string-join
157                      (list line
158                            "\"~/.guix-profile/include\""
159                            "\"/var/guix/profiles/system/profile/include\"")
160                      " ")))
161                  #t))))
162     (build-system glib-or-gtk-build-system)
163     (arguments
164      `(#:tests? #f  ; no check target
165        #:phases
166        (modify-phases %standard-phases
167          (add-before 'configure 'fix-/bin/pwd
168            (lambda _
169              ;; Use `pwd', not `/bin/pwd'.
170              (substitute* (find-files "." "^Makefile\\.in$")
171                (("/bin/pwd")
172                 "pwd"))
173              #t))
174          (add-after 'install 'install-site-start
175            ;; Use 'guix-emacs' in "site-start.el".  This way, Emacs packages
176            ;; provided by Guix and installed in
177            ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
178            ;; automatically found.
179            (lambda* (#:key inputs outputs #:allow-other-keys)
180              (let* ((out      (assoc-ref outputs "out"))
181                     (lisp-dir (string-append out "/share/emacs/site-lisp")))
182                (copy-file (assoc-ref inputs "guix-emacs.el")
183                           (string-append lisp-dir "/guix-emacs.el"))
184                (with-output-to-file (string-append lisp-dir "/site-start.el")
185                  (lambda ()
186                    (display
187                     (string-append "(when (require 'guix-emacs nil t)\n"
188                                    "  (guix-emacs-autoload-packages))\n"))))
189                #t))))))
190     (inputs
191      `(("gnutls" ,gnutls)
192        ("ncurses" ,ncurses)
194        ;; TODO: Add the optional dependencies.
195        ("libx11" ,libx11)
196        ("gtk+" ,gtk+)
197        ("libxft" ,libxft)
198        ("libtiff" ,libtiff)
199        ("giflib" ,giflib)
200        ("libjpeg" ,libjpeg-8)
201        ("imagemagick" ,imagemagick)
202        ("acl" ,acl)
204        ;; When looking for libpng `configure' links with `-lpng -lz', so we
205        ;; must also provide zlib as an input.
206        ("libpng" ,libpng)
207        ("zlib" ,zlib)
209        ("librsvg" ,librsvg)
210        ("libxpm" ,libxpm)
211        ("libxml2" ,libxml2)
212        ("libice" ,libice)
213        ("libsm" ,libsm)
214        ("alsa-lib" ,alsa-lib)
215        ("dbus" ,dbus)
217        ;; multilingualization support
218        ("libotf" ,libotf)
219        ("m17n-lib" ,m17n-lib)))
220     (native-inputs
221      `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
222        ("pkg-config" ,pkg-config)
223        ("texinfo" ,texinfo)))
225     (native-search-paths
226      (list (search-path-specification
227             (variable "INFOPATH")
228             (files '("share/info")))))
230     (home-page "https://www.gnu.org/software/emacs/")
231     (synopsis "The extensible, customizable, self-documenting text editor")
232     (description
233      "GNU Emacs is an extensible and highly customizable text editor.  It is
234 based on an Emacs Lisp interpreter with extensions for text editing.  Emacs
235 has been extended in essentially all areas of computing, giving rise to a
236 vast array of packages supporting, e.g., email, IRC and XMPP messaging,
237 spreadsheets, remote server editing, and much more.  Emacs includes extensive
238 documentation on all aspects of the system, from basic editing to writing
239 large Lisp programs.  It has full Unicode support for nearly all human
240 languages.")
241     (license license:gpl3+)))
243 (define-public emacs-minimal
244   ;; This is the version that you should use as an input to packages that just
245   ;; need to byte-compile .el files.
246   (package (inherit emacs)
247     (name "emacs-minimal")
248     (synopsis "The extensible text editor (used only for byte-compilation)")
249     (build-system gnu-build-system)
250     (arguments
251      `(#:configure-flags (list "--with-gnutls=no")
252        ,@(substitute-keyword-arguments (package-arguments emacs)
253            ((#:phases phases)
254             `(modify-phases ,phases
255                (delete 'install-site-start))))))
256     (inputs
257      `(("ncurses" ,ncurses)))
258     (native-inputs
259      `(("pkg-config" ,pkg-config)))))
261 (define-public emacs-no-x
262   (package (inherit emacs)
263     (name "emacs-no-x")
264     (synopsis "The extensible, customizable, self-documenting text
265 editor (console only)")
266     (build-system gnu-build-system)
267     (inputs (fold alist-delete
268                   (package-inputs emacs)
269                   '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
270                     "imagemagick" "libpng" "librsvg" "libxpm" "libice"
271                     "libsm"
273                     ;; These depend on libx11, so remove them as well.
274                     "libotf" "m17n-lib" "dbus")))))
276 (define-public emacs-no-x-toolkit
277   (package (inherit emacs)
278     (name "emacs-no-x-toolkit")
279     (synopsis "The extensible, customizable, self-documenting text
280 editor (without an X toolkit)" )
281     (build-system gnu-build-system)
282     (inputs (append `(("inotify-tools" ,inotify-tools))
283                     (alist-delete "gtk+" (package-inputs emacs))))
284     (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
285                        (package-arguments emacs)))))
287 (define-public guile-emacs
288   (package (inherit emacs)
289     (name "guile-emacs")
290     (version "20150512.41120e0")
291     (source (origin
292               (method git-fetch)
293               (uri (git-reference
294                     (url "git://git.hcoop.net/git/bpt/emacs.git")
295                     (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
296               (file-name (string-append name "-" version "-checkout"))
297               (patches (search-patches "guile-emacs-fix-configure.patch"))
298               (sha256
299                (base32
300                 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
301     (native-inputs
302      `(("autoconf" ,autoconf)
303        ("automake" ,automake)
304        ("guile" ,guile-for-guile-emacs)
305        ,@(package-native-inputs emacs)))
306     (arguments
307      (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
308                                      #:parallel-build? #f
309                                      ;; Tests aren't passing for now.
310                                      #:tests? #f
311                                      ,@(package-arguments emacs))
312        ((#:phases phases)
313         `(modify-phases ,phases
314            (add-after 'unpack 'autogen
315                       (lambda _
316                         (zero? (system* "sh" "autogen.sh"))))
317            ;; Build sometimes fails: deps/dispnew.d: No such file or directory
318            (add-before 'build 'make-deps-dir
319              (lambda _
320                (zero? (system* "mkdir" "-p" "src/deps"))))))))))
324 ;;; Emacs hacking.
327 (define-public geiser
328   (package
329     (name "geiser")
330     (version "0.10")
331     (source (origin
332              (method url-fetch)
333              (uri (string-append "mirror://savannah/geiser/" version
334                                  "/geiser-" version ".tar.gz"))
335              (sha256
336               (base32
337                "0pj3l7p8d60c9b4vfprnv6g5l61d74pls4b5dvd84cn4ky9mzwjv"))))
338     (build-system gnu-build-system)
339     (arguments
340      '(#:phases
341        (modify-phases %standard-phases
342          (add-after 'install 'post-install
343            (lambda* (#:key outputs #:allow-other-keys)
344              (symlink "geiser-install.el"
345                       (string-append (assoc-ref outputs "out")
346                                      "/share/emacs/site-lisp/"
347                                      "geiser-autoloads.el"))
348              #t)))))
349     (inputs `(("guile" ,guile-2.2)))
350     (native-inputs `(("emacs" ,emacs-minimal)))
351     (home-page "https://nongnu.org/geiser/")
352     (synopsis "Collection of Emacs modes for Guile and Racket hacking")
353     (description
354      "Geiser is a collection of Emacs major and minor modes that conspire with
355 one or more Scheme implementations to keep the Lisp Machine Spirit alive.  The
356 continuously running Scheme interpreter takes the center of the stage in
357 Geiser.  A bundle of Elisp shims orchestrates the dialog between the Scheme
358 implementation, Emacs and, ultimately, the schemer, giving them access to live
359 metadata.")
360     (license license:bsd-3)))
362 (define-public paredit
363   (package
364     (name "emacs-paredit")
365     (version "24")
366     (source (origin
367               (method url-fetch)
368               (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
369                                   version ".el"))
370               (sha256
371                (base32
372                 "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
373     (build-system emacs-build-system)
374     (home-page "http://mumble.net/~campbell/emacs/paredit/")
375     (synopsis "Emacs minor mode for editing parentheses")
376     (description
377      "ParEdit (paredit.el) is a minor mode for performing structured editing
378 of S-expression data.  The typical example of this would be Lisp or Scheme
379 source code.
381 ParEdit helps **keep parentheses balanced** and adds many keys for moving
382 S-expressions and moving around in S-expressions.  Its behavior can be jarring
383 for those who may want transient periods of unbalanced parentheses, such as
384 when typing parentheses directly or commenting out code line by line.")
385     (license license:gpl3+)))
387 (define-public git-modes
388   (package
389     (name "emacs-git-modes")
390     (version "1.2.7")
391     (source (origin
392               (method url-fetch)
393               (uri (string-append
394                     "https://github.com/magit/git-modes/archive/"
395                     version ".tar.gz"))
396               (file-name (string-append name "-" version ".tar.gz"))
397               (sha256
398                (base32
399                 "1mzl70s0xyysnjq1j10mc5vn9i022n5vd82kxsgp4xxqq7gc4qnx"))))
400     (build-system emacs-build-system)
401     (home-page "https://github.com/magit/git-modes")
402     (synopsis "Emacs major modes for Git configuration files")
403     (description
404      "This package provides Emacs major modes for editing various Git
405 configuration files, such as .gitattributes, .gitignore, and .git/config.")
406     (license license:gpl3+)))
408 (define-public git-modes/old-name
409   (deprecated-package "git-modes" git-modes))
411 (define-public emacs-with-editor
412   (package
413     (name "emacs-with-editor")
414     (version "2.7.2")
415     (source (origin
416               (method url-fetch)
417               (uri (string-append
418                     "https://github.com/magit/with-editor/archive/v"
419                     version ".tar.gz"))
420               (file-name (string-append name "-" version ".tar.gz"))
421               (sha256
422                (base32
423                 "1jqi3axcs0cb1pcv1jxxc2a09v6psrm33wwl6hmyshzl8kbxs2mv"))))
424     (build-system emacs-build-system)
425     (propagated-inputs
426      `(("emacs-dash" ,emacs-dash)))
427     (home-page "https://github.com/magit/with-editor")
428     (synopsis "Emacs library for using Emacsclient as EDITOR")
429     (description
430      "This package provides an Emacs library to use the Emacsclient as
431 @code{$EDITOR} of child processes, making sure they know how to call home.
432 For remote processes a substitute is provided, which communicates with Emacs
433 on stdout instead of using a socket as the Emacsclient does.")
434     (license license:gpl3+)))
436 (define-public magit
437   (package
438     (name "magit")
439     (version "2.12.1")
440     (source (origin
441              (method url-fetch)
442              (uri (string-append
443                    "https://github.com/magit/magit/releases/download/"
444                    version "/" name "-" version ".tar.gz"))
445              (sha256
446               (base32
447                "1czzknmhzbggcv3bxl5amvfpp0zrkdwl1x05qarsq6qakvc85xy3"))))
448     (build-system gnu-build-system)
449     (native-inputs `(("texinfo" ,texinfo)
450                      ("emacs" ,emacs-minimal)))
451     (inputs
452      `(("git" ,git)
453        ("perl" ,perl)))
454     (propagated-inputs
455      `(("dash" ,emacs-dash)
456        ("ghub" ,emacs-ghub)
457        ("magit-popup" ,emacs-magit-popup)
458        ("with-editor" ,emacs-with-editor)))
459     (arguments
460      `(#:test-target "test"
461        #:tests? #f               ; tests are not included in the release
463        #:make-flags
464        (list (string-append "PREFIX=" %output)
465              ;; Don't put .el files in a sub-directory.
466              (string-append "lispdir=" %output "/share/emacs/site-lisp")
467              (string-append "DASH_DIR="
468                             (assoc-ref %build-inputs "dash")
469                             "/share/emacs/site-lisp/guix.d/dash-"
470                             ,(package-version emacs-dash))
471              (string-append "GHUB_DIR="
472                             (assoc-ref %build-inputs "ghub")
473                             "/share/emacs/site-lisp/guix.d/ghub-"
474                             ,(package-version emacs-ghub))
475              (string-append "MAGIT_POPUP_DIR="
476                             (assoc-ref %build-inputs "magit-popup")
477                             "/share/emacs/site-lisp/guix.d/magit-popup-"
478                             ,(package-version emacs-magit-popup))
479              (string-append "WITH_EDITOR_DIR="
480                             (assoc-ref %build-inputs "with-editor")
481                             "/share/emacs/site-lisp/guix.d/with-editor-"
482                             ,(package-version emacs-with-editor)))
484        #:phases
485        (modify-phases %standard-phases
486          (delete 'configure)
487          (add-before
488           'build 'patch-exec-paths
489           (lambda* (#:key inputs #:allow-other-keys)
490             (let ((perl (assoc-ref inputs "perl")))
491               (substitute* "lisp/magit-sequence.el"
492                 (("perl") (string-append perl "/bin/perl")))
493               #t))))))
494     (home-page "https://magit.vc/")
495     (synopsis "Emacs interface for the Git version control system")
496     (description
497      "With Magit, you can inspect and modify your Git repositories with Emacs.
498 You can review and commit the changes you have made to the tracked files, for
499 example, and you can browse the history of past changes.  There is support for
500 cherry picking, reverting, merging, rebasing, and other common Git
501 operations.")
502     (license license:gpl3+)))
504 (define-public magit-svn
505   (package
506     (name "magit-svn")
507     (version "2.2.0")
508     (source (origin
509               (method url-fetch)
510               (uri (string-append
511                     "https://github.com/magit/magit-svn/archive/"
512                     version ".tar.gz"))
513               (file-name (string-append name "-" version ".tar.gz"))
514               (sha256
515                (base32
516                 "1c3n377v436zaxamlsz04y1ahdhp96x1vd43zaryv4y10m02ba47"))))
517     (build-system trivial-build-system)
518     (native-inputs `(("emacs" ,emacs-minimal)
519                      ("tar" ,tar)
520                      ("gzip" ,gzip)))
521     (propagated-inputs `(("dash" ,emacs-dash)
522                          ("with-editor" ,emacs-with-editor)
523                          ("magit" ,magit)))
524     (arguments
525      `(#:modules ((guix build utils)
526                   (guix build emacs-utils))
528        #:builder
529        (begin
530          (use-modules (guix build utils)
531                       (guix build emacs-utils))
533          (let* ((tar      (string-append (assoc-ref %build-inputs "tar")
534                                          "/bin/tar"))
535                 (PATH     (string-append (assoc-ref %build-inputs "gzip")
536                                          "/bin"))
537                 (emacs    (string-append (assoc-ref %build-inputs "emacs")
538                                          "/bin/emacs"))
539                 (magit    (string-append (assoc-ref %build-inputs "magit")
540                                          "/share/emacs/site-lisp"))
541                 (dash     (string-append (assoc-ref %build-inputs "dash")
542                                          "/share/emacs/site-lisp/guix.d/dash-"
543                                          ,(package-version emacs-dash)))
544                 (with-editor (string-append (assoc-ref %build-inputs "with-editor")
545                                             "/share/emacs/site-lisp/guix.d/with-editor-"
546                                             ,(package-version emacs-with-editor)))
547                 (source   (assoc-ref %build-inputs "source"))
548                 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
549            (setenv "PATH" PATH)
550            (invoke tar "xvf" source)
552            (install-file (string-append ,name "-" ,version "/magit-svn.el")
553                          lisp-dir)
555            (with-directory-excursion lisp-dir
556              (parameterize ((%emacs emacs))
557                (emacs-generate-autoloads ,name lisp-dir)
558                (setenv "EMACSLOADPATH"
559                        (string-append ":" magit ":" dash ":" with-editor))
560                (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))
561            #t))))
562     (home-page "https://github.com/magit/magit-svn")
563     (synopsis "Git-SVN extension to Magit")
564     (description
565      "This package is an extension to Magit, the Git Emacs mode, providing
566 support for Git-SVN.")
567     (license license:gpl3+)))
569 (define-public emacs-magit-popup
570   (package
571     (name "emacs-magit-popup")
572     (version "2.12.3")
573     (source (origin
574               (method url-fetch)
575               (uri (string-append
576                     "https://github.com/magit/magit-popup/archive/v"
577                     version ".tar.gz"))
578               (file-name (string-append name "-" version ".tar.gz"))
579               (sha256
580                (base32
581                 "1kz6vj67awkwf9y2wj6m3l2him3znm08z6bkdvnmfr6rwd96dr39"))))
582     (build-system emacs-build-system)
583     (arguments
584      `(#:phases
585        (modify-phases %standard-phases
586          (add-before 'install 'make-info
587            (lambda _
588              (zero? (system* "make" "info")))))))
589     (native-inputs
590      `(("texinfo" ,texinfo)))
591     (propagated-inputs
592      `(("emacs-dash" ,emacs-dash)))
593     (home-page "https://github.com/magit/magit-popup")
594     (synopsis "Define prefix-infix-suffix command combos")
595     (description
596      "This library implements a generic interface for toggling switches and
597 setting options and then invoking an Emacs command which does something with
598 these arguments.  The prototypical use is for the command to call an external
599 process, passing on the arguments as command line arguments.")
600     (license license:gpl3+)))
602 (define-public emacs-ghub
603   (package
604     (name "emacs-ghub")
605     (version "2.0.0")
606     (source (origin
607               (method url-fetch)
608               (uri (string-append
609                     "https://github.com/magit/ghub/archive/v"
610                     version ".tar.gz"))
611               (file-name (string-append name "-" version ".tar.gz"))
612               (sha256
613                (base32
614                 "1zrb3xk04a228g2ahx0r02d0d3xskj60q73qavvmm2i56r66cxvc"))))
615     (build-system emacs-build-system)
616     (arguments
617      `(#:phases
618        (modify-phases %standard-phases
619          (add-before 'install 'make-info
620            (lambda _
621              (zero? (system* "make" "info")))))))
622     (native-inputs
623      `(("texinfo" ,texinfo)))
624     (home-page "https://github.com/magit/ghub")
625     (synopsis "Emacs client library for Github API and Gitlab API")
626     (description
627      "This package provides 2 files: @file{ghub.el} and @file{glab.el},
628 which are the libraries that provide basic support for using the Github and
629 Gitlab APIs from Emacs packages.  It abstracts access to API resources using
630 only a handful of functions that are not resource-specific.")
631     (license license:gpl3+)))
633 (define-public haskell-mode
634   (package
635     (name "haskell-mode")
636     (version "16.1")
637     (source (origin
638               (method url-fetch)
639               (file-name (string-append name "-" version ".tar.gz"))
640               (uri (string-append
641                     "https://github.com/haskell/haskell-mode/archive/v"
642                     version ".tar.gz"))
643               (sha256
644                (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h"))))
645     (inputs
646      `(("emacs-el-search" ,emacs-el-search) ; for tests
647        ("emacs-stream" ,emacs-stream)))     ; for tests
648     (propagated-inputs
649      `(("emacs-dash" ,emacs-dash)))
650     (native-inputs
651      `(("emacs" ,emacs-minimal)
652        ("texinfo" ,texinfo)))
653     (build-system gnu-build-system)
654     (arguments
655      `(#:make-flags (list (string-append "EMACS="
656                                          (assoc-ref %build-inputs "emacs")
657                                          "/bin/emacs"))
658        #:modules ((ice-9 match)
659                   (srfi srfi-26)
660                   ,@%gnu-build-system-modules)
661        #:phases
662        (modify-phases %standard-phases
663          (delete 'configure)
664          (add-before
665           'build 'pre-build
666           (lambda* (#:key inputs #:allow-other-keys)
667             (define (el-dir store-dir)
668               (match (find-files store-dir "\\.el$")
669                 ((f1 f2 ...) (dirname f1))
670                 (_ "")))
672             (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
673               (define emacs-prefix? (cut string-prefix? "emacs-" <>))
675               (setenv "SHELL" "sh")
676               (setenv "EMACSLOADPATH"
677                       (string-concatenate
678                        (map (match-lambda
679                               (((? emacs-prefix? name) . dir)
680                                (string-append (el-dir dir) ":"))
681                               (_ ""))
682                             inputs)))
683               (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
684               (substitute* "tests/haskell-code-conventions.el"
685                 ;; Function name recently changed in "emacs-el-search".
686                 (("el-search--search-pattern") "el-search-forward")
687                 ;; Don't contact home.
688                 (("\\(when \\(>= emacs-major-version 25\\)")
689                  "(require 'el-search) (when nil"))
690               #t)))
691          (replace
692           'install
693           (lambda* (#:key outputs #:allow-other-keys)
694             (let* ((out (assoc-ref outputs "out"))
695                    (el-dir (string-append out "/share/emacs/site-lisp"))
696                    (doc (string-append
697                          out "/share/doc/haskell-mode-" ,version))
698                    (info (string-append out "/share/info")))
699               (define (copy-to-dir dir files)
700                 (for-each (lambda (f)
701                             (install-file f dir))
702                           files))
704               (with-directory-excursion "doc"
705                 (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
706                   (error "makeinfo failed"))
707                 (install-file "haskell-mode.info" info))
708                (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
709                (copy-to-dir el-dir (find-files "." "\\.elc?"))
710                ;; These are part of other packages.
711                (with-directory-excursion el-dir
712                  (for-each delete-file '("dash.el" "ert.el")))
713                #t))))))
714     (home-page "https://github.com/haskell/haskell-mode")
715     (synopsis "Haskell mode for Emacs")
716     (description
717      "This is an Emacs mode for editing, debugging and developing Haskell
718 programs.")
719     (license license:gpl3+)))
721 (define-public flycheck
722   (package
723     (name "emacs-flycheck")
724     (version "31")
725     (source (origin
726               (method url-fetch)
727               (uri (string-append
728                     "https://github.com/flycheck/flycheck/releases/download/"
729                     version "/flycheck-" version ".tar"))
730               (sha256
731                (base32
732                 "01rnwan16m7cyyrfca3c5c60mbj2r3knkpzbhji2fczsf0wns240"))))
733     (build-system emacs-build-system)
734     (propagated-inputs
735      `(("emacs-dash" ,emacs-dash)))
736     (home-page "https://www.flycheck.org")
737     (synopsis "On-the-fly syntax checking")
738     (description
739      "This package provides on-the-fly syntax checking for GNU Emacs.  It is a
740 replacement for the older Flymake extension which is part of GNU Emacs, with
741 many improvements and additional features.
743 Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
744 checking for over 30 programming and markup languages with more than 70
745 different tools.  It highlights errors and warnings inline in the buffer, and
746 provides an optional IDE-like error list.")
747     (license license:gpl3+)))                     ;+GFDLv1.3+ for the manual
751 ;;; Web browsing.
754 (define-public emacs-w3m
755   ;; Emacs-w3m follows a "rolling release" model from its CVS repo.  We could
756   ;; use CVS, sure, but instead we choose to use this Git mirror described on
757   ;; the home page as an "unofficial" mirror.
758   (let ((commit "0dd5691f46d314a84da63f3a7277d721815811a2"))
759     (package
760       (name "emacs-w3m")
761       (version (git-version "1.5" "0" commit))
762       (source (origin
763                 (method git-fetch)
764                 (uri (git-reference
765                       (url "https://github.com/ecbrown/emacs-w3m")
766                       (commit commit)))
767                 (sha256
768                  (base32
769                   "02xalyxbrkgl4n8nj7xxkmsbm6lshhwdc8bzs2l4wz3hkpgkj7x4"))))
770       (build-system gnu-build-system)
771       (native-inputs `(("autoconf" ,autoconf)
772                        ("texinfo" ,texinfo)
773                        ("emacs" ,emacs-minimal)))
774       (inputs `(("w3m" ,w3m)
775                 ("imagemagick" ,imagemagick)))
776       (arguments
777        `(#:modules ((guix build gnu-build-system)
778                     (guix build utils)
779                     (guix build emacs-utils))
780          #:imported-modules (,@%gnu-build-system-modules
781                              (guix build emacs-utils))
782          #:configure-flags
783          (let ((out (assoc-ref %outputs "out")))
784            (list (string-append "--with-lispdir="
785                                 out "/share/emacs/site-lisp")
786                  (string-append "--with-icondir="
787                                 out "/share/images/emacs-w3m")
788                  ;; Leave .el files uncompressed, otherwise GC can't
789                  ;; identify run-time dependencies.  See
790                  ;; <http://lists.gnu.org/archive/html/guix-devel/2015-12/msg00208.html>
791                  "--without-compress-install"))
792          #:tests? #f                              ; no check target
793          #:phases
794          (modify-phases %standard-phases
795            (add-after 'unpack 'autoconf
796              (lambda _
797                (zero? (system* "autoconf"))))
798            (add-before 'configure 'support-emacs!
799              (lambda _
800                ;; For some reason 'AC_PATH_EMACS' thinks that 'Emacs 26' is
801                ;; unsupported.
802                (substitute* "configure"
803                  (("EMACS_FLAVOR=unsupported")
804                   "EMACS_FLAVOR=emacs"))
805                #t))
806            (add-before 'build 'patch-exec-paths
807              (lambda* (#:key inputs outputs #:allow-other-keys)
808                (let ((out (assoc-ref outputs "out"))
809                      (w3m (assoc-ref inputs "w3m"))
810                      (imagemagick (assoc-ref inputs "imagemagick"))
811                      (coreutils (assoc-ref inputs "coreutils")))
812                  (make-file-writable "w3m.el")
813                  (emacs-substitute-variables "w3m.el"
814                    ("w3m-command" (string-append w3m "/bin/w3m"))
815                    ("w3m-touch-command"
816                     (string-append coreutils "/bin/touch"))
817                    ("w3m-icon-directory"
818                     (string-append out "/share/images/emacs-w3m")))
819                  (make-file-writable "w3m-image.el")
820                  (emacs-substitute-variables "w3m-image.el"
821                    ("w3m-imagick-convert-program"
822                     (string-append imagemagick "/bin/convert"))
823                    ("w3m-imagick-identify-program"
824                     (string-append imagemagick "/bin/identify")))
825                  #t)))
826            (replace 'install
827              (lambda* (#:key outputs #:allow-other-keys)
828                (and (zero? (system* "make" "install" "install-icons"))
829                     (with-directory-excursion
830                         (string-append (assoc-ref outputs "out")
831                                        "/share/emacs/site-lisp")
832                       (for-each delete-file '("ChangeLog" "ChangeLog.1"))
833                       (symlink "w3m-load.el" "w3m-autoloads.el")
834                       #t)))))))
835       (home-page "http://emacs-w3m.namazu.org/")
836       (synopsis "Simple Web browser for Emacs based on w3m")
837       (description
838        "Emacs-w3m is an emacs interface for the w3m web browser.")
839       (license license:gpl2+))))
841 (define-public emacs-wget
842   (package
843     (name "emacs-wget")
844     (version "0.5.0")
845     (source (origin
846              (method url-fetch)
847              (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
848                                  version ".orig.tar.gz"))
849              (sha256
850               (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
851     (build-system gnu-build-system)
852     (inputs `(("wget" ,wget)))
853     (native-inputs `(("emacs" ,emacs-minimal)))
854     (arguments
855      `(#:modules ((guix build gnu-build-system)
856                   (guix build utils)
857                   (guix build emacs-utils))
858        #:imported-modules (,@%gnu-build-system-modules
859                            (guix build emacs-utils))
860        #:tests? #f  ; no check target
861        #:phases
862        (modify-phases %standard-phases
863          (replace 'configure
864            (lambda* (#:key outputs #:allow-other-keys)
865              (substitute* "Makefile"
866                (("/usr/local") (assoc-ref outputs "out"))
867                (("/site-lisp/emacs-wget") "/site-lisp"))
868              #t))
869          (add-before 'build 'patch-exec-paths
870            (lambda* (#:key inputs outputs #:allow-other-keys)
871              (let ((wget (assoc-ref inputs "wget")))
872                (emacs-substitute-variables "wget.el"
873                  ("wget-command" (string-append wget "/bin/wget"))))
874              #t))
875          (add-after 'install 'post-install
876            (lambda* (#:key outputs #:allow-other-keys)
877              (emacs-generate-autoloads
878               "wget" (string-append (assoc-ref outputs "out")
879                                     "/share/emacs/site-lisp/"))
880              #t)))))
881     (home-page "http://www.emacswiki.org/emacs/EmacsWget")
882     (synopsis "Simple file downloader for Emacs based on wget")
883     (description
884      "Emacs-wget is an emacs interface for the wget file downloader.")
885     (license license:gpl2+)))
889 ;;; Multimedia.
892 (define-public emms
893   (package
894     (name "emacs-emms")
895     (version "5.0")
896     (source (origin
897               (method url-fetch)
898               (uri (string-append "mirror://gnu/emms/emms-"
899                                   version ".tar.gz"))
900               (sha256
901                (base32
902                 "08f9lj77jlk96grqgjsv63s2i8ywvp4wvnmgmhnslwyx2lsdxza3"))
903               (modules '((guix build utils)))
904               (snippet
905                '(begin
906                   (substitute* "Makefile"
907                     (("/usr/bin/install-info")
908                      ;; No need to use 'install-info' since it would create a
909                      ;; useless 'dir' file.
910                      "true")
911                     (("^INFODIR=.*")
912                      ;; Install Info files to $out/share/info, not $out/info.
913                      "INFODIR := $(PREFIX)/share/info\n")
914                     (("/site-lisp/emms")
915                      ;; Install directly in share/emacs/site-lisp, not in a
916                      ;; sub-directory.
917                      "/site-lisp")
918                     (("^all: (.*)\n" _ rest)
919                      ;; Build 'emms-print-metadata'.
920                      (string-append "all: " rest " emms-print-metadata\n")))
921                   #t))))
922     (build-system gnu-build-system)
923     (arguments
924      `(#:modules ((guix build gnu-build-system)
925                   (guix build utils)
926                   (guix build emacs-utils)
927                   (ice-9 ftw))
928        #:imported-modules (,@%gnu-build-system-modules
929                            (guix build emacs-utils))
931        #:phases
932        (modify-phases %standard-phases
933          (replace 'configure
934            (lambda* (#:key inputs outputs #:allow-other-keys)
935              (let ((out     (assoc-ref outputs "out"))
936                    (flac    (assoc-ref inputs "flac"))
937                    (vorbis  (assoc-ref inputs "vorbis-tools"))
938                    (alsa    (assoc-ref inputs "alsa-utils"))
939                    (mpg321  (assoc-ref inputs "mpg321"))
940                    (mp3info (assoc-ref inputs "mp3info")))
941                ;; Specify the installation directory.
942                (substitute* "Makefile"
943                  (("PREFIX=.*$")
944                   (string-append "PREFIX := " out "\n")))
946                (setenv "SHELL" (which "sh"))
947                (setenv "CC" "gcc")
949                ;; Specify the absolute file names of the various
950                ;; programs so that everything works out-of-the-box.
951                (with-directory-excursion "lisp"
952                  (emacs-substitute-variables
953                      "emms-player-mpg321-remote.el"
954                    ("emms-player-mpg321-remote-command"
955                     (string-append mpg321 "/bin/mpg321")))
956                  (substitute* "emms-player-simple.el"
957                    (("\"ogg123\"")
958                     (string-append "\"" vorbis "/bin/ogg123\"")))
959                  (substitute* "emms-player-simple.el"
960                    (("\"mpg321\"")
961                     (string-append "\"" mpg321 "/bin/mpg321\"")))
962                  (emacs-substitute-variables "emms-info-ogginfo.el"
963                    ("emms-info-ogginfo-program-name"
964                     (string-append vorbis "/bin/ogginfo")))
965                  (emacs-substitute-variables "emms-info-libtag.el"
966                    ("emms-info-libtag-program-name"
967                     (string-append out "/bin/emms-print-metadata")))
968                  (emacs-substitute-variables "emms-info-mp3info.el"
969                    ("emms-info-mp3info-program-name"
970                     (string-append mp3info "/bin/mp3info")))
971                  (emacs-substitute-variables "emms-info-metaflac.el"
972                    ("emms-info-metaflac-program-name"
973                     (string-append flac "/bin/metaflac")))
974                  (emacs-substitute-variables "emms-source-file.el"
975                    ("emms-source-file-gnu-find" (which "find")))
976                  (substitute* "emms-volume-amixer.el"
977                    (("\"amixer\"")
978                     (string-append "\"" alsa "/bin/amixer\"")))
979                  (substitute* "emms-tag-editor.el"
980                    (("\"mp3info\"")
981                     (string-append "\"" mp3info "/bin/mp3info\"")))))))
982          (add-before 'install 'pre-install
983            (lambda* (#:key outputs #:allow-other-keys)
984              ;; The 'install' rule expects the target directories to exist.
985              (let* ((out  (assoc-ref outputs "out"))
986                     (bin  (string-append out "/bin"))
987                     (man1 (string-append out "/share/man/man1")))
988                (mkdir-p bin)
989                (mkdir-p man1)
991                ;; Ensure that files are not rejected by gzip
992                (let ((early-1980 315619200)) ; 1980-01-02 UTC
993                  (ftw "." (lambda (file stat flag)
994                             (unless (<= early-1980 (stat:mtime stat))
995                               (utime file early-1980 early-1980))
996                             #t)))
997                #t)))
998          (add-after 'install 'post-install
999            (lambda* (#:key outputs #:allow-other-keys)
1000              (let ((out (assoc-ref outputs "out")))
1001                (symlink "emms-auto.el"
1002                         (string-append out "/share/emacs/site-lisp/"
1003                                        "emms-autoloads.el")))
1004              #t)))
1005        #:tests? #f))
1006     (native-inputs `(("emacs" ,emacs-minimal)    ;for (guix build emacs-utils)
1007                      ("texinfo" ,texinfo)))
1008     (inputs `(("alsa-utils" ,alsa-utils)
1009               ("flac" ,flac)            ;for metaflac
1010               ("vorbis-tools" ,vorbis-tools)
1011               ("mpg321" ,mpg321)
1012               ("taglib" ,taglib)
1013               ("mp3info" ,mp3info)))
1014     (properties '((upstream-name . "emms")))
1015     (synopsis "Emacs Multimedia System")
1016     (description
1017      "EMMS is the Emacs Multimedia System.  It is a small front-end which
1018 can control one of the supported external players.  Thus, it supports
1019 whatever formats are supported by your music player.  It also
1020 supports tagging and playlist management, all behind a clean and
1021 light user interface.")
1022     (home-page "https://www.gnu.org/software/emms/")
1023     (license license:gpl3+)))
1025 (define-public emacs-emms-player-mpv
1026   (package
1027     (name "emacs-emms-player-mpv")
1028     (version "0.1.0")
1029     (source
1030      (origin
1031        (method url-fetch)
1032        (uri (string-append "https://github.com/dochang/emms-player-mpv/archive/"
1033                            version ".tar.gz"))
1034        (file-name (string-append name "-" version ".tar.gz"))
1035        (sha256
1036         (base32
1037          "05qwbagc4i7yn7i94r1hdgj6wc5xijy1pxqv08pwsmli9rqj51n9"))))
1038     (build-system emacs-build-system)
1039     (propagated-inputs
1040      `(("emms" ,emms)))
1041     (home-page "https://github.com/dochang/emms-player-mpv/")
1042     (synopsis "Mpv support for EMMS")
1043     (description
1044      "This package provides an EMMS player that uses mpv.  It supports pause
1045 and seeking.")
1046     (license license:gpl3+)))
1048 (define-public emacs-emms-mode-line-cycle
1049   (package
1050     (name "emacs-emms-mode-line-cycle")
1051     (version "0.2.5")
1052     (source
1053      (origin
1054        (method url-fetch)
1055        (uri (string-append "https://github.com/momomo5717/emms-mode-line-cycle"
1056                            "/archive/" version ".tar.gz"))
1057        (file-name (string-append name "-" version ".tar.gz"))
1058        (sha256
1059         (base32
1060          "0ifszi930pnaxk1x8pcydmvnp06868gc7nfx14q17zbajbx735k6"))))
1061     (build-system emacs-build-system)
1062     (propagated-inputs
1063      `(("emms" ,emms)))
1064     (home-page "https://github.com/momomo5717/emms-mode-line-cycle")
1065     (synopsis "Display the EMMS mode line as a ticker")
1066     (description
1067      "This is a minor mode for updating the EMMS mode-line string cyclically
1068 within a specified width.  It is useful for displaying long track titles.")
1069     (license license:gpl3+)))
1073 ;;; Miscellaneous.
1076 (define-public bbdb
1077   (package
1078     (name "bbdb")
1079     (version "3.1.2")
1080     (source (origin
1081               (method url-fetch)
1082               (uri (string-append "mirror://savannah/bbdb/bbdb-"
1083                                   version ".tar.gz"))
1084               (sha256
1085                (base32
1086                 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
1087               (modules '((guix build utils)))
1088               (snippet
1089                ;; We don't want to build and install the PDF.
1090                '(begin
1091                   (substitute* "doc/Makefile.in"
1092                     (("^doc_DATA = .*$")
1093                      "doc_DATA =\n"))
1094                   #t))))
1095     (build-system gnu-build-system)
1096     (arguments
1097      '(#:phases
1098        (modify-phases %standard-phases
1099          (add-after 'install 'post-install
1100            (lambda* (#:key outputs #:allow-other-keys)
1101              ;; Add an autoloads file with the right name for guix.el.
1102              (let* ((out  (assoc-ref outputs "out"))
1103                     (site (string-append out "/share/emacs/site-lisp")))
1104                (with-directory-excursion site
1105                  (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
1106              #t)))))
1107     (native-inputs `(("emacs" ,emacs-minimal)))
1108     (home-page "https://savannah.nongnu.org/projects/bbdb/")
1109     (synopsis "Contact management utility for Emacs")
1110     (description
1111      "BBDB is the Insidious Big Brother Database for GNU Emacs.  It provides
1112 an address book for email and snail mail addresses, phone numbers and the
1113 like.  It can be linked with various Emacs mail clients (Message and Mail
1114 mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
1115     (license license:gpl3+)))
1117 (define-public emacs-aggressive-indent
1118   (package
1119     (name "emacs-aggressive-indent")
1120     (version "1.8.3")
1121     (source (origin
1122               (method url-fetch)
1123               (uri (string-append "https://elpa.gnu.org/packages/"
1124                                   "aggressive-indent-" version ".el"))
1125               (sha256
1126                (base32
1127                 "0jnzccl50x0wapprgwxinp99pwwa6j43q6msn4gv437j7swy8wnj"))))
1128     (build-system emacs-build-system)
1129     (home-page "https://elpa.gnu.org/packages/aggressive-indent.html")
1130     (synopsis "Minor mode to aggressively keep your code always indented")
1131     (description
1132      "@code{aggressive-indent-mode} is a minor mode that keeps your code
1133 always indented.  It reindents after every change, making it more reliable
1134 than @code{electric-indent-mode}.")
1135     (license license:gpl2+)))
1137 (define-public emacs-ag
1138   (package
1139     (name "emacs-ag")
1140     (version "0.47")
1141     (source (origin
1142               (method url-fetch)
1143               (uri (string-append
1144                     "https://github.com/Wilfred/ag.el/archive/"
1145                     version ".tar.gz"))
1146               (file-name (string-append name "-" version ".tar.gz"))
1147               (sha256
1148                (base32
1149                 "1rlmp6wnyhqfg86dbz17r914msp58favn4kd4yrdwyia265a4lar"))))
1150     (build-system emacs-build-system)
1151     (arguments
1152      `(#:phases
1153        (modify-phases %standard-phases
1154          (add-before 'install 'make-info
1155            (lambda _
1156              (with-directory-excursion "docs"
1157                (zero? (system* "make" "info")))))
1158          (add-after 'install 'install-info
1159            (lambda* (#:key outputs #:allow-other-keys)
1160              (let* ((out  (assoc-ref outputs "out"))
1161                     (info (string-append out "/share/info")))
1162                (install-file "docs/_build/texinfo/agel.info" info)
1163                #t))))))
1164     (native-inputs
1165      `(("python-sphinx" ,python-sphinx)
1166        ("texinfo" ,texinfo)))
1167     (propagated-inputs
1168      `(("dash" ,emacs-dash)
1169        ("s" ,emacs-s)
1170        ;; We need to use 'ag' as the executable on remote systems.
1171        ("the-silver-searcher" ,the-silver-searcher)))
1172     (home-page "https://github.com/Wilfred/ag.el")
1173     (synopsis "Front-end for ag (the-silver-searcher) for Emacs")
1174     (description "This package provides the ability to use the silver
1175 searcher, a code searching tool, sometimes abbreviated to @code{ag}.  Features
1176 include version control system awareness, use of Perl compatible regular
1177 expressions, editing the search results directly and searching file names
1178 rather than the contents of files.")
1179     (license license:gpl3+)))
1181 (define-public emacs-async
1182   (package
1183     (name "emacs-async")
1184     (version "1.9.2")
1185     (source (origin
1186               (method url-fetch)
1187               (uri (string-append "https://elpa.gnu.org/packages/async-"
1188                                   version ".tar"))
1189               (sha256
1190                (base32
1191                 "17fnvrj7jww29sav6a6jpizclg4w2962m6h37akpii71gf0vrffw"))))
1192     (build-system emacs-build-system)
1193     (home-page "https://elpa.gnu.org/packages/async.html")
1194     (synopsis "Asynchronous processing in Emacs")
1195     (description
1196      "This package provides the ability to call asynchronous functions and
1197 processes.  For example, it can be used to run dired commands (for copying,
1198 moving, etc.) asynchronously using @code{dired-async-mode}.  Also it is used
1199 as a library for other Emacs packages.")
1200     (license license:gpl3+)))
1202 (define-public emacs-auctex
1203   (package
1204     (name "emacs-auctex")
1205     (version "12.1.0")
1206     (source
1207      (origin
1208        (method url-fetch)
1209        (uri (string-append
1210              "https://elpa.gnu.org/packages/auctex-"
1211              version
1212              ".tar"))
1213        (sha256
1214         (base32
1215          "0iy5x61xqkxaph2hq64sg50l1c6yp6qhzppwadayxkdz00b46sas"))))
1216     (build-system emacs-build-system)
1217     ;; We use 'emacs' because AUCTeX requires dbus at compile time
1218     ;; ('emacs-minimal' does not provide dbus).
1219     (arguments
1220      `(#:emacs ,emacs
1221        #:include '("\\.el$" "^images/" "^latex/" "\\.info$")
1222        #:exclude '("^tests/" "^latex/README")))
1223     (native-inputs
1224      `(("perl" ,perl)))
1225     (home-page "https://www.gnu.org/software/auctex/")
1226     (synopsis "Integrated environment for TeX")
1227     (description
1228      "AUCTeX is a comprehensive customizable integrated environment for
1229 writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs
1230 or XEmacs.")
1231     (license license:gpl3+)))
1233 (define-public emacs-autothemer
1234   (package
1235     (name "emacs-autothemer")
1236     (version "0.2.2")
1237     (source
1238      (origin
1239        (method url-fetch)
1240        (uri (string-append "https://github.com/sebastiansturm/autothemer/archive/"
1241                            version ".tar.gz"))
1242        (file-name (string-append name "-" version ".tar.gz"))
1243        (sha256
1244         (base32
1245          "0rd28r9wfrbll212am4ih9hrvypx785aff76va2cbfxdwm9kixsa"))))
1246     (build-system emacs-build-system)
1247     (propagated-inputs
1248      `(("emacs-dash" ,emacs-dash)))
1249     (home-page "https://github.com/sebastiansturm/autothemer")
1250     (synopsis "Conveniently create Emacs themes")
1251     (description
1252      "Autothemer provides a thin layer on top of @code{deftheme} and
1253 @code{custom-theme-set-faces} that creates a new custom color theme, based on
1254 a set of simplified face specifications and a user-supplied color palette")
1255     (license license:gpl3+)))
1257 (define-public emacs-howm
1258   (package
1259     (name "emacs-howm")
1260     (version "1.4.4")
1261     (source
1262      (origin
1263        (method url-fetch)
1264        (uri (string-append "http://howm.sourceforge.jp/a/howm-"
1265                            version ".tar.gz"))
1266        (sha256
1267         (base32
1268          "0ddm91l6z58j7x59fa966j6q1rg4cinyza4r8ibg80hprn5h31qk"))))
1269     (build-system gnu-build-system)
1270     (native-inputs
1271      `(("emacs" ,emacs-minimal)))
1272     (arguments
1273      `(#:configure-flags
1274        (list (string-append "--with-howmdir=" %output
1275                             "/share/emacs/site-lisp/guix.d/howm-" ,version))
1276        #:modules ((guix build gnu-build-system)
1277                   ((guix build emacs-build-system) #:prefix emacs:)
1278                   (guix build utils))
1279        #:imported-modules (,@%gnu-build-system-modules
1280                            (guix build emacs-build-system)
1281                            (guix build emacs-utils))
1282        #:phases
1283        (modify-phases %standard-phases
1284          (add-after 'rename-lispdir 'make-autoloads
1285            (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1286     (home-page "http://howm.osdn.jp/")
1287     (synopsis "Note-taking tool for Emacs")
1288     (description "Howm is a note-taking tool for Emacs.  Like
1289 code@{emacs-wiki.el}, it facilitates using hyperlinks and doing full-text
1290 searches.  Unlike code@{emacs-wiki.el}, it can be combined with any format.")
1291     (license license:gpl1+)))
1293 (define-public emacs-calfw
1294   (package
1295     (name "emacs-calfw")
1296     (version "1.5")
1297     (source
1298      (origin
1299        (method url-fetch)
1300        (uri (string-append
1301              "https://github.com/kiwanami/emacs-calfw/archive/v"
1302              version ".tar.gz"))
1303        (file-name (string-append name "-" version ".tar.gz"))
1304        (sha256
1305         (base32
1306          "17ssg8gx66yp63nhygjq2r6kgl4h45cacmrxsxs9f0lrfcx37k0l"))))
1307     (build-system emacs-build-system)
1308     (propagated-inputs
1309      `(("emacs-howm" ,emacs-howm)))
1310     (home-page "https://github.com/kiwanami/emacs-calfw/")
1311     (synopsis "Calendar framework for Emacs")
1312     (description
1313      "This package displays a calendar view with various schedule data in the
1314 Emacs buffer.")
1315     (license license:gpl3+)))
1317 (define-public emacs-direnv
1318   (package
1319     (name "emacs-direnv")
1320     (version "1.2.0")
1321     (source
1322      (origin
1323        (method url-fetch)
1324        (uri (string-append
1325              "https://github.com/wbolster/emacs-direnv/archive/"
1326              version ".tar.gz"))
1327        (file-name (string-append name "-" version ".tar.gz"))
1328        (sha256
1329         (base32
1330          "0m9nxawklhiiysyibzzhh2zkxgq1fskqvaqb06f7r8dnhabfy9fr"))))
1331     (build-system emacs-build-system)
1332     (propagated-inputs
1333      `(("dash" ,emacs-dash)
1334        ("with-editor" ,emacs-with-editor)))
1335     (home-page "https://github.com/wbolster/emacs-direnv")
1336     (synopsis "Direnv integration for Emacs")
1337     (description
1338      "This package provides support for invoking direnv to get the environment
1339 for the current file and updating the environment within Emacs to match.
1341 Direnv can be invoked manually, and a global minor mode is included that will
1342 update the environment when the active buffer changes.
1344 Using emacs-direnv means that programs started from Emacs will use the
1345 environment set through Direnv.")
1346     (license license:gpl3+)))
1348 (define-public emacs-ggtags
1349   (package
1350     (name "emacs-ggtags")
1351     (version "0.8.12")
1352     (source
1353      (origin
1354        (method url-fetch)
1355        (uri (string-append "http://elpa.gnu.org/packages/ggtags-"
1356                            version ".el"))
1357        (sha256
1358         (base32
1359          "0ny3llk021g6r0s75xdm4hzpbxv393ddm2r6f2xdk8kqnq4gnirp"))))
1360     (build-system emacs-build-system)
1361     (home-page "https://github.com/leoliu/ggtags")
1362     (synopsis "Frontend to the GNU Global source code tagging system")
1363     (description "@code{ggtags} provides a frontend to the GNU Global source
1364 code tagging system.
1366 Features:
1368 @itemize
1369 @item Build on @code{compile.el} for asynchronicity and its large feature-set.
1370 @item Automatically update Global's tag files when needed with tuning for
1371 large source trees.
1372 @item Intuitive navigation among multiple matches with mode-line display of
1373 current match, total matches and exit status.
1374 @item Read tag with completion.
1375 @item Show definition at point.
1376 @item Jump to #include files.
1377 @item Support search history and saving a search to register/bookmark.
1378 @item Query replace.
1379 @item Manage Global's environment variables on a per-project basis.
1380 @item Highlight (definition) tag at point.
1381 @item Abbreviated display of file names.
1382 @item Support all Global search backends: @code{grep}, @code{idutils}, etc.
1383 @item Support exuberant ctags @url{http://ctags.sourceforge.net/} and
1384 @code{pygments} backend.
1385 @item Support all Global's output formats: @code{grep}, @code{ctags-x},
1386 @code{cscope} etc.
1387 @item Support projects on remote hosts (e.g. via @code{tramp}).
1388 @item Support eldoc.
1389 @item Search @code{GTAGSLIBPATH} for references and symbols.
1390 @end itemize\n")
1391     (license license:gpl3+)))
1393 (define-public emacs-go-mode
1394   (package
1395     (name "emacs-go-mode")
1396     (version "1.5.0")
1397     (source (origin
1398               (method url-fetch)
1399               (uri (string-append "https://github.com/dominikh/go-mode.el/"
1400                                   "archive/v" version ".tar.gz"))
1401               (file-name (string-append name "-" version ".tar.gz"))
1402               (sha256
1403                (base32
1404                 "1adngbjyb8qnwg7n6r2y31djw9j6qf3b9fi63zd85035q7x4ljnm"))))
1405     (build-system emacs-build-system)
1406     (home-page "https://github.com/dominikh/go-mode.el")
1407     (synopsis "Go mode for Emacs")
1408     (description
1409      "This package provides go-mode, an Emacs mode for working with software
1410 written in the Go programming language.")
1411     (license license:bsd-3)))
1413 (define-public emacs-google-maps
1414   (package
1415     (name "emacs-google-maps")
1416     (version "1.0.0")
1417     (source (origin
1418               (method url-fetch)
1419               (uri (string-append "https://github.com/jd/google-maps.el/"
1420                                   "archive/" version ".tar.gz"))
1421               (file-name (string-append name "-" version ".tar.gz"))
1422               (sha256
1423                (base32
1424                 "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs"))))
1425     (build-system emacs-build-system)
1426     (home-page "https://github.com/jd/google-maps.el")
1427     (synopsis "Access Google Maps from Emacs")
1428     (description "The @code{google-maps} package allows to display Google
1429 Maps directly inside Emacs.")
1430     (license license:gpl3+)))
1432 (define-public emacs-graphviz-dot-mode
1433   (let ((commit "fdaabbcc95d9156e3dadc84f81a4750c5b692580")
1434         (revision "1"))
1435     (package
1436       (name "emacs-graphviz-dot-mode")
1437       (version (string-append "0.3.10-" revision "."
1438                               (string-take commit 7)))
1439       (source (origin
1440                 (method git-fetch)
1441                 (uri (git-reference
1442                       (url "https://github.com/ppareit/graphviz-dot-mode.git")
1443                       (commit commit)))
1444                 (file-name (string-append name "-" version "-checkout"))
1445                 (sha256
1446                  (base32
1447                   "1s1qh5r0xp6hs0rl5yz5mkmjhpg04bh449c7vgjbb1pjsl1dl714"))))
1448       (build-system emacs-build-system)
1449       (arguments
1450        `(#:phases
1451          (modify-phases %standard-phases
1452            (add-before 'install 'make-info
1453              (lambda* (#:key inputs #:allow-other-keys)
1454                (with-directory-excursion "texinfo"
1455                  (substitute* "Makefile"
1456                    (("\\/usr\\/bin\\/gzip")
1457                     (string-append (assoc-ref inputs "gzip") "/bin/gzip")))
1458                  (zero?
1459                   (system* "make"
1460                            "clean"
1461                            "info"
1462                            (string-append "TEXINFODIR="
1463                                           (assoc-ref inputs "texinfo")
1464                                           "/bin"))))))
1465            (add-after 'install 'install-info
1466              (lambda* (#:key outputs #:allow-other-keys)
1467                (let* ((out  (assoc-ref outputs "out"))
1468                       (info (string-append out "/share/info")))
1469                  (install-file "texinfo/graphviz-dot-mode.info.gz" info)
1470                  #t))))))
1471       (native-inputs
1472        `(("texinfo" ,texinfo)
1473          ("gzip" ,gzip)))
1474       (home-page "http://ppareit.github.com/graphviz-dot-mode")
1475       (synopsis "Major mode for editing Graphviz Dot files")
1476       (description
1477        "This Emacs packages helps you to create @file{.dot} or @file{.gv}
1478 files using the dot syntax, and use Graphviz to convert these files to
1479 diagrams.")
1480       (license license:gpl2+))))
1482 (define-public emacs-mmm-mode
1483   (package
1484     (name "emacs-mmm-mode")
1485     (version "0.5.5")
1486     (source
1487      (origin
1488        (method url-fetch)
1489        (uri (string-append
1490              "https://github.com/purcell/mmm-mode/archive/"
1491              version ".tar.gz"))
1492        (file-name (string-append name "-" version ".tar.gz"))
1493        (sha256
1494         (base32
1495          "0c5ing3hcr74k78hqhrfwiv6m3n8hqfrw89j2x34vf60f4iyqzqc"))))
1496     (build-system gnu-build-system)
1497     (arguments
1498      '(#:phases
1499        (modify-phases %standard-phases
1500          (add-after 'unpack 'autogen
1501            (lambda _
1502              (zero? (system* "sh" "autogen.sh")))))))
1503     (native-inputs
1504      `(("autoconf" ,autoconf)
1505        ("automake" ,automake)
1506        ("emacs" ,emacs-minimal)
1507        ("texinfo" ,texinfo)))
1508     (home-page "https://github.com/purcell/mmm-mode")
1509     (synopsis "Allow multiple major modes in an Emacs buffer")
1510     (description
1511      "MMM Mode is a minor mode that allows multiple major modes to coexist in a
1512 single buffer.")
1513     (license license:gpl3+)))
1515 (define-public emacs-tablist
1516   (package
1517     (name "emacs-tablist")
1518     (version "0.70")
1519     (source (origin
1520               (method url-fetch)
1521               (uri (string-append
1522                     "https://github.com/politza/tablist/archive/v"
1523                     version ".tar.gz"))
1524               (file-name (string-append name "-" version ".tar.gz"))
1525               (sha256
1526                (base32
1527                 "177d6s7ym1mwz1nhnl09r14z3n093g9a2szm97xsaig0c204xz9c"))))
1528     (build-system emacs-build-system)
1529     (home-page "https://github.com/politza/tablist")
1530     (synopsis "Extension for @code{tabulated-list-mode}")
1531     (description "Tablist is the Emacs package that provides several
1532 additional features to @code{tabulated-list-mode}: it adds marks,
1533 filters, new key bindings and faces.  It can be enabled by
1534 @code{tablist-mode} or @code{tablist-minor-mode} commands.")
1535     (license license:gpl3+)))
1537 (define-public emacs-pdf-tools
1538   (package
1539     (name "emacs-pdf-tools")
1540     (version "0.80")
1541     (source (origin
1542               (method url-fetch)
1543               (uri (string-append
1544                     "https://github.com/politza/pdf-tools/archive/v"
1545                     version ".tar.gz"))
1546               (file-name (string-append name "-" version ".tar.gz"))
1547               (sha256
1548                (base32
1549                 "06imydn3a92vr57azpn1zhqc14kxyyslmyi9ldsyphan9b724gb6"))))
1550     (build-system gnu-build-system)
1551     (arguments
1552      `(#:tests? #f ; there are no tests
1553        #:modules ((guix build gnu-build-system)
1554                   ((guix build emacs-build-system) #:prefix emacs:)
1555                   (guix build utils)
1556                   (guix build emacs-utils))
1557        #:imported-modules (,@%gnu-build-system-modules
1558                            (guix build emacs-build-system)
1559                            (guix build emacs-utils))
1560        #:phases
1561        (modify-phases %standard-phases
1562          ;; Build server side using 'gnu-build-system'.
1563          (add-after 'unpack 'enter-server-dir
1564            (lambda _ (chdir "server") #t))
1565          (add-after 'enter-server-dir 'autogen
1566            (lambda _
1567              (zero? (system* "bash" "autogen.sh"))))
1569          ;; Build emacs side using 'emacs-build-system'.
1570          (add-after 'compress-documentation 'enter-lisp-dir
1571            (lambda _ (chdir "../lisp") #t))
1572          (add-after 'enter-lisp-dir 'emacs-patch-variables
1573            (lambda* (#:key outputs #:allow-other-keys)
1574              ;; Set path to epdfinfo program.
1575              (emacs-substitute-variables "pdf-info.el"
1576                ("pdf-info-epdfinfo-program"
1577                 (string-append (assoc-ref outputs "out")
1578                                "/bin/epdfinfo")))
1579              ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
1580              ;; upgrading" that pdf-tools tries to perform.
1581              (emacs-substitute-variables "pdf-tools.el"
1582                ("pdf-tools-handle-upgrades" '()))))
1583          (add-after 'emacs-patch-variables 'emacs-set-emacs-load-path
1584            (assoc-ref emacs:%standard-phases 'set-emacs-load-path))
1585          (add-after 'emacs-set-emacs-load-path 'emacs-install
1586            (assoc-ref emacs:%standard-phases 'install))
1587          (add-after 'emacs-install 'emacs-build
1588            (assoc-ref emacs:%standard-phases 'build))
1589          (add-after 'emacs-install 'emacs-make-autoloads
1590            (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1591     (native-inputs `(("autoconf" ,autoconf)
1592                      ("automake" ,automake)
1593                      ("pkg-config" ,pkg-config)
1594                      ("emacs" ,emacs-minimal)))
1595     (inputs `(("poppler" ,poppler)
1596               ("cairo" ,cairo)
1597               ("glib" ,glib)
1598               ("libpng" ,libpng)
1599               ("zlib" ,zlib)))
1600     (propagated-inputs `(("tablist" ,emacs-tablist)))
1601     (synopsis "Emacs support library for PDF files")
1602     (description
1603      "PDF Tools is, among other things, a replacement of DocView for PDF
1604 files.  The key difference is that pages are not pre-rendered by
1605 e.g. ghostscript and stored in the file-system, but rather created on-demand
1606 and stored in memory.")
1607     (home-page "https://github.com/politza/pdf-tools")
1608     (license license:gpl3+)))
1610 (define-public emacs-dash
1611   (package
1612     (name "emacs-dash")
1613     (version "2.14.1")
1614     (source (origin
1615               (method git-fetch)
1616               (uri (git-reference
1617                     (url "https://github.com/magnars/dash.el.git")
1618                     (commit version)))
1619               (file-name (git-file-name name version))
1620               (sha256
1621                (base32
1622                 "1kzijmjxjxgr7p8clphzvmm47vczckbs8mza9an77c25bn627ywl"))))
1623     (build-system emacs-build-system)
1624     (arguments
1625      `(#:tests? #t
1626        #:test-command '("./run-tests.sh")))
1627     (home-page "https://github.com/magnars/dash.el")
1628     (synopsis "Modern list library for Emacs")
1629     (description "This package provides a modern list API library for Emacs.")
1630     (license license:gpl3+)))
1632 (define-public emacs-bui
1633   (package
1634     (name "emacs-bui")
1635     (version "1.1.0")
1636     (source (origin
1637               (method url-fetch)
1638               (uri (string-append
1639                     "https://github.com/alezost/bui.el/archive/v"
1640                     version ".tar.gz"))
1641               (file-name (string-append name "-" version ".tar.gz"))
1642               (sha256
1643                (base32
1644                 "112k0mq6xpy0r47vk66miw7rxbkv3d06pv3pd0vcmrhcnhnnk486"))))
1645     (build-system emacs-build-system)
1646     (propagated-inputs
1647      `(("dash" ,emacs-dash)))
1648     (home-page "https://github.com/alezost/bui.el")
1649     (synopsis "Buffer interface library for Emacs")
1650     (description
1651      "BUI (Buffer User Interface) is a library for making @code{list} and
1652 @code{info} interfaces to display an arbitrary data of the same
1653 type, for example: packages, buffers, files, etc.")
1654     (license license:gpl3+)))
1656 (define-public emacs-guix
1657   (package
1658     (name "emacs-guix")
1659     (version "0.4")
1660     (source (origin
1661               (method url-fetch)
1662               (uri (string-append "https://github.com/alezost/guix.el"
1663                                   "/releases/download/v" version
1664                                   "/emacs-guix-" version ".tar.gz"))
1665               (sha256
1666                (base32
1667                 "1nn4b0gd895g0k4fynzrip7z8yb1r3qmvznq9v8a6q7sm84irmqq"))))
1668     (build-system gnu-build-system)
1669     (arguments
1670      `(#:configure-flags
1671        (let ((guix        (assoc-ref %build-inputs "guix"))
1672              (geiser      (assoc-ref %build-inputs "geiser"))
1673              (dash        (assoc-ref %build-inputs "dash"))
1674              (bui         (assoc-ref %build-inputs "bui"))
1675              (magit-popup (assoc-ref %build-inputs "magit-popup"))
1676              (edit-indirect (assoc-ref %build-inputs "edit-indirect"))
1677              (site-lisp   "/share/emacs/site-lisp"))
1678          (list (string-append "--with-guix-site-dir="
1679                               (car (find-files (string-append guix
1680                                                            "/share/guile/site")
1681                                                (lambda (file stat)
1682                                                  (string-prefix?
1683                                                   "2."
1684                                                   (basename file)))
1685                                                #:directories? #t)))
1686                (string-append "--with-guix-site-ccache-dir="
1687                               (car (find-files (string-append guix "/lib/guile")
1688                                                (lambda (file stat)
1689                                                  (string-prefix?
1690                                                   "2." (basename file)))
1691                                                #:directories? #t))
1692                               "/site-ccache")
1693                (string-append "--with-geiser-lispdir=" geiser site-lisp)
1694                (string-append "--with-dash-lispdir="
1695                               dash site-lisp "/guix.d/dash-"
1696                               ,(package-version emacs-dash))
1697                (string-append "--with-bui-lispdir="
1698                               bui site-lisp "/guix.d/bui-"
1699                               ,(package-version emacs-bui))
1700                (string-append "--with-editindirect-lispdir="
1701                               edit-indirect site-lisp "/guix.d/edit-indirect-"
1702                               ,(package-version emacs-edit-indirect))
1703                (string-append "--with-popup-lispdir="
1704                               magit-popup site-lisp "/guix.d/magit-popup-"
1705                               ,(package-version emacs-magit-popup))))))
1706     (native-inputs
1707      `(("pkg-config" ,pkg-config)
1708        ("emacs" ,emacs-minimal)))
1709     (inputs
1710      `(("guile" ,guile-2.2)
1711        ("guix" ,guix)))
1712     (propagated-inputs
1713      `(("geiser" ,geiser)
1714        ("dash" ,emacs-dash)
1715        ("bui" ,emacs-bui)
1716        ("edit-indirect" ,emacs-edit-indirect)
1717        ("magit-popup" ,emacs-magit-popup)))
1718     (home-page "https://alezost.github.io/guix.el/")
1719     (synopsis "Emacs interface for GNU Guix")
1720     (description
1721      "Emacs-Guix provides a visual interface, tools and features for the GNU
1722 Guix package manager.  Particularly, it allows you to do various package
1723 management tasks from Emacs.  To begin with, run @code{M-x guix-about} or
1724 @code{M-x guix-help} command.")
1725     (license license:gpl3+)))
1727 (define-public emacs-d-mode
1728   (package
1729     (name "emacs-d-mode")
1730     (version "2.0.8")
1731     (source (origin
1732               (method url-fetch)
1733               (uri (string-append
1734                     "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
1735                     "archive/" version ".tar.gz"))
1736               (file-name (string-append name "-" version ".tar.gz"))
1737               (sha256
1738                (base32
1739                 "0knpgi55jm09282aqf8pv55zillpnpzf9f4sgm6gwsmvxf17xaw0"))))
1740     (build-system emacs-build-system)
1741     (propagated-inputs
1742      `(("emacs-undercover" ,emacs-undercover)))
1743     (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
1744     (synopsis "Emacs major mode for editing D code")
1745     (description "This package provides an Emacs major mode for highlighting
1746 code written in the D programming language.  This mode is currently known to
1747 work with Emacs 24 and 25.")
1748     (license license:gpl2+)))
1750 (define-public emacs-keyfreq
1751   (package
1752     (name "emacs-keyfreq")
1753     (version "20160516.716")
1754     (source
1755       (origin
1756         (method url-fetch)
1757         (uri (string-append "http://melpa.org/packages/keyfreq-"
1758                version ".el"))
1759         (sha256
1760           (base32
1761             "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8"))))
1762     (build-system emacs-build-system)
1763     (home-page "https://github.com/dacap/keyfreq")
1764     (synopsis "Track Emacs command frequencies")
1765     (description "@code{emacs-keyfeq} tracks and shows how many times you used
1766 a command.")
1767     (license license:gpl3+)))
1769 (define-public emacs-olivetti
1770   (package
1771     (name "emacs-olivetti")
1772     (version "1.5.7")
1773     (source (origin
1774               (method url-fetch)
1775               (uri (string-append
1776                     "https://stable.melpa.org/packages/olivetti-"
1777                     version ".el"))
1778               (sha256
1779                (base32
1780                 "1yj2ylg46q0pw1xzlv2b0fv9x8p56x25284s9v2smwjr4vf0nwcj"))))
1781     (build-system emacs-build-system)
1782     (home-page "https://github.com/rnkn/olivetti")
1783     (synopsis "Emacs minor mode for a nice writing environment")
1784     (description "This package provides an Emacs minor mode that puts writing
1785 in the center.")
1786     (license license:gpl3+)))
1788 (define-public emacs-undo-tree
1789   (package
1790     (name "emacs-undo-tree")
1791     (version "0.6.6")
1792     (source (origin
1793               (method git-fetch)
1794               (uri (git-reference
1795                     (url "http://dr-qubit.org/git/undo-tree.git")
1796                     (commit (string-append "release/" version))))
1797               (file-name (string-append name "-" version "-checkout"))
1798               (sha256
1799                (base32
1800                 "1hnh2mnmw179gr094r561w6cw1haid0lpvpqvkc24wpj82vphzpa"))))
1801     (build-system emacs-build-system)
1802     (home-page "http://www.dr-qubit.org/emacs.php")
1803     (synopsis "Treat undo history as a tree")
1804     (description "Tree-like interface to Emacs undo system, providing
1805 graphical tree presentation of all previous states of buffer that
1806 allows easily move between them.")
1807     (license license:gpl3+)))
1809 (define-public emacs-s
1810   (package
1811     (name "emacs-s")
1812     (version "1.12.0")
1813     (source (origin
1814               (method url-fetch)
1815               (uri (string-append
1816                     "https://github.com/magnars/s.el/archive/"
1817                     version ".tar.gz"))
1818               (file-name (string-append name "-" version ".tar.gz"))
1819               (sha256
1820                (base32
1821                 "0xbl75863pcm806zg0x1lw7qznzjq2c8320k8js7apyag8q4srvh"))))
1822     (build-system emacs-build-system)
1823     (arguments
1824      `(#:tests? #t
1825        #:emacs ,emacs ; FIXME: tests fail with emacs-minimal
1826        #:test-command '("./run-tests.sh")))
1827     (home-page "https://github.com/magnars/s.el")
1828     (synopsis "Emacs string manipulation library")
1829     (description "This package provides an Emacs library for manipulating
1830 strings.")
1831     (license license:gpl3+)))
1833 (define-public emacs-symon
1834   (package
1835     (name "emacs-symon")
1836     (version "20160630")
1837     (source
1838      (origin
1839        (method url-fetch)
1840        (uri (string-append "https://github.com/zk-phi/symon/archive/"
1841                            version ".tar.gz"))
1842        (file-name (string-append name "-" version ".tar.gz"))
1843        (sha256
1844         (base32
1845          "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz"))))
1846     (build-system emacs-build-system)
1847     (home-page "https://github.com/zk-phi/symon")
1848     (synopsis "Tiny graphical system monitor")
1849     (description
1850      "Tiny graphical system monitor for the Emacs minibuffer when idle.")
1851     (license license:gpl2+)))
1853 (define-public emacs-sx
1854   (let ((version "20180212")
1855         (revision "1")
1856         (commit "833435fbf90d1c9e927d165b155f3b1ef39271de"))
1857     (package
1858       (name "emacs-sx")
1859       (version (git-version version revision commit))
1860       (source
1861        (origin
1862          (method git-fetch)
1863          (uri (git-reference
1864                (url "https://github.com/vermiculus/sx.el")
1865                (commit commit)))
1866          (file-name (git-file-name name version))
1867          (sha256
1868           (base32
1869            "1369xaxq1vy3d9yh862ddnhddikdpg2d0wv1ly00pnvdp9v4cqgd"))))
1870       (build-system emacs-build-system)
1871       (propagated-inputs
1872        `(("emacs-markdown-mode" ,emacs-markdown-mode)))
1873       (home-page "https://github.com/vermiculus/sx.el")
1874       (synopsis "Emacs StackExchange client")
1875       (description
1876        "Emacs StackExchange client.  Ask and answer questions on
1877 Stack Overflow, Super User, and other StackExchange sites.")
1878       (license license:gpl3+))))
1880 (define-public emacs-f
1881   (package
1882     (name "emacs-f")
1883     (version "0.19.0")
1884     (source (origin
1885               (method url-fetch)
1886               (uri (string-append
1887                     "https://github.com/rejeep/f.el/archive/v"
1888                     version ".tar.gz"))
1889               (file-name (string-append name "-" version ".tar.gz"))
1890               (sha256
1891                (base32
1892                 "05195n80ywa68qykxn7dza6qd59rhakvlzhaa9l6mcpmjf9l9grs"))))
1893     (build-system emacs-build-system)
1894     (propagated-inputs
1895      `(("emacs-s" ,emacs-s)
1896        ("emacs-dash" ,emacs-dash)))
1897     (home-page "https://github.com/rejeep/f.el")
1898     (synopsis "Emacs API for working with files and directories")
1899     (description "This package provides an Emacs library for working with
1900 files and directories.")
1901     (license license:gpl3+)))
1903 (define-public emacs-git-gutter
1904   (package
1905     (name "emacs-git-gutter")
1906     (version "0.90")
1907     (source (origin
1908              (method url-fetch)
1909              (uri (string-append
1910                    "https://github.com/syohex/" name "/archive/"
1911                    version ".tar.gz"))
1912              (file-name (string-append name "-" version ".tar.gz"))
1913              (sha256
1914               (base32
1915                "1nmhvhpq1l56mj2yq3ag23rw3x4xgnsy8szp30s26l0yjnkhc4qg"))))
1916     (build-system emacs-build-system)
1917     (home-page "https://github.com/syohex/emacs-git-gutter")
1918     (synopsis "See and manage hunks of text in a version control system")
1919     (description
1920      "This package is an Emacs minor mode for displaying and interacting with
1921 hunks of text managed in a version control system.  Added modified and deleted
1922 areas can be indicated with symbols on the edge of the buffer, and commands
1923 can be used to move between and perform actions on these hunks.
1925 Git, Mercurial, Subversion and Bazaar are supported, and many parts of the
1926 display and behaviour is easily customisable.")
1927     (license license:gpl3+)))
1929 (define-public emacs-git-timemachine
1930   (package
1931     (name "emacs-git-timemachine")
1932     (version "3.0")
1933     (source
1934      (origin
1935        (method url-fetch)
1936        (uri (string-append "https://github.com/pidu/git-timemachine/"
1937                            "archive/" version ".tar.gz"))
1938        (file-name (string-append name "-" version ".tar.gz"))
1939        (sha256
1940         (base32
1941          "1l4g0r69wfrnjsywv03v4bpdd53byg6zdx6mzabfxyymss3kvisa"))))
1942     (build-system emacs-build-system)
1943     (home-page "https://github.com/pidu/git-timemachine")
1944     (synopsis "Step through historic versions of Git-controlled files")
1945     (description "This package enables you to step through historic versions
1946 of files under Git version control from within Emacs.")
1947     (license license:gpl3+)))
1949 (define-public emacs-minitest
1950   (let ((commit "1aadb7865c1dc69c201cecee275751ecec33a182")
1951         (revision "1"))
1952     (package
1953       (name "emacs-minitest")
1954       (version (git-version "0.8.0" revision commit))
1955       (source (origin
1956                 (method git-fetch)
1957                 (uri (git-reference
1958                       (url "https://github.com/arthurnn/minitest-emacs")
1959                       (commit commit)))
1960                 (file-name (git-file-name name commit))
1961                 (sha256
1962                  (base32
1963                   "1l18zqpdzbnqj2qawq8hj7z7pl8hr8z9d8ihy8jaiqma915hmhj1"))))
1964       (build-system emacs-build-system)
1965       (arguments
1966        '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include)
1967          #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude)))
1968       (propagated-inputs
1969        `(("emacs-dash" ,emacs-dash)
1970          ("emacs-f" ,emacs-f)))
1971       (home-page "https://github.com/arthurnn/minitest-emacs")
1972       (synopsis "Emacs minitest mode")
1973       (description
1974        "The minitest mode provides commands to run the tests for the current
1975 file or line, as well as rerunning the previous tests, or all the tests for a
1976 project.
1978 This package also includes relevant snippets for yasnippet.")
1979       (license license:expat))))
1981 (define-public emacs-el-mock
1982   (package
1983     (name "emacs-el-mock")
1984     (version "1.25.1")
1985     (source
1986      (origin
1987        (method url-fetch)
1988        (uri (string-append "https://github.com/rejeep/el-mock.el/"
1989                            "archive/v" version ".tar.gz"))
1990        (file-name (string-append name "-" version ".tar.gz"))
1991        (sha256
1992         (base32
1993          "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
1994     (build-system emacs-build-system)
1995     (home-page "https://github.com/rejeep/el-mock.el")
1996     (synopsis "Tiny mock and stub framework in Emacs Lisp")
1997     (description
1998      "Emacs Lisp Mock is a library for mocking and stubbing using readable
1999 syntax.  Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp
2000 Expectations, but it can be used in other contexts.")
2001     (license license:gpl3+)))
2003 (define-public emacs-espuds
2004   (package
2005     (name "emacs-espuds")
2006     (version "0.3.3")
2007     (source
2008      (origin
2009        (method url-fetch)
2010        (uri (string-append "https://github.com/ecukes/espuds/"
2011                            "archive/v" version ".tar.gz"))
2012        (file-name (string-append name "-" version ".tar.gz"))
2013        (sha256
2014         (base32
2015          "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
2016     (build-system emacs-build-system)
2017     (propagated-inputs
2018      `(("emacs-s" ,emacs-s)
2019        ("emacs-dash" ,emacs-dash)
2020        ("emacs-f" ,emacs-f)))
2021     (home-page "https://github.com/ecukes/espuds")
2022     (synopsis "Common step definitions for Ecukes")
2023     (description "Espuds is a collection of the most commonly used step
2024 definitions for testing with the Ecukes framework.")
2025     (license license:gpl3+)))
2027 (define-public emacs-spark
2028   (let ((version "20160503")  ; no proper tag, use date of commit
2029         (commit "0bf148c3ede3b31d56fd75f347cdd0b0eae60025")
2030         (revision "1"))
2031     (package
2032       (name "emacs-spark")
2033       (version (git-version version revision commit))
2034       (source
2035        (origin
2036          (method git-fetch)
2037          (uri (git-reference
2038                (url "https://github.com/alvinfrancis/spark.git")
2039                (commit commit)))
2040          (file-name (git-file-name name version))
2041          (sha256
2042           (base32
2043            "1ykqr86j17mi95s08d9fp02d7ych1331b04dcqxzxnmpkhwngyj1"))))
2044       (build-system emacs-build-system)
2045       (home-page "https://github.com/alvinfrancis/spark")
2046       (synopsis "Sparkline generation library for Emacs Lisp")
2047       (description "@code{emacs-spark} is a sparkline generation library for
2048 Emacs Lisp.  It generates a sparkline string given a list of numbers.  It is a
2049 port of @code{cl-spark} to Emacs Lisp.")
2050       (license license:expat))))
2052 (define-public emacs-es-mode
2053   (package
2054     (name "emacs-es-mode")
2055     (version "4.3.0")
2056     (source (origin
2057               (method url-fetch)
2058               (uri (string-append
2059                     "https://github.com/dakrone/es-mode/archive/"
2060                     version ".tar.gz"))
2061               (file-name (string-append name "-" version ".tar.gz"))
2062               (sha256
2063                (base32
2064                 "0y86qdcb3g7fkcb4pzsjh3syzql6w3314hg1wqxq4a8bbk3y0cgr"))))
2065     (build-system emacs-build-system)
2066     (propagated-inputs
2067      ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
2068      ;; to be rendered incorrectly
2069      `(("emacs-dash" ,emacs-dash)
2070        ("emacs-org" ,emacs-org)
2071        ("emacs-spark" ,emacs-spark)))
2072     (home-page "https://github.com/dakrone/es-mode")
2073     (synopsis "Major mode for editing Elasticsearch queries")
2074     (description "@code{es-mode} includes highlighting, completion and
2075 indentation support for Elasticsearch queries.  Also supported are
2076 @code{es-mode} blocks in @code{org-mode}, for which the results of queries can
2077 be processed through @code{jq}, or in the case of aggregations, can be
2078 rendered in to a table.  In addition, there is an @code{es-command-center}
2079 mode, which displays information about Elasticsearch clusters.")
2080     (license license:gpl3+)))
2082 (define-public emacs-expand-region
2083   (package
2084     (name "emacs-expand-region")
2085     (version "0.11.0")
2086     (source
2087      (origin
2088        (method url-fetch)
2089        (uri (string-append "https://github.com/magnars/expand-region.el"
2090                            "/archive/" version ".tar.gz"))
2091        (file-name (string-append name "-" version ".tar.gz"))
2092        (sha256
2093         (base32
2094          "08dy1f411sh9wwww53rjw80idcf3vpki6ba2arl4hl5jcw9651g0"))))
2095     (build-system emacs-build-system)
2096     (home-page "https://github.com/magnars/expand-region.el")
2097     (synopsis "Increase selected region by semantic units")
2098     (description
2099      "Expand region increases the selected region by semantic units.  Just
2100 keep pressing the key until it selects what you want.  There's also
2101 @code{er/contract-region} if you expand too far.")
2102     (license license:gpl3+)))
2104 (define-public emacs-fill-column-indicator
2105   (package
2106     (name "emacs-fill-column-indicator")
2107     (version "1.81")
2108     (source
2109      (origin
2110        (method url-fetch)
2111        (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
2112                            "/archive/v" version ".tar.gz"))
2113        (file-name (string-append name "-" version ".tar.gz"))
2114        (sha256
2115         (base32
2116          "1xwyqbjbbicmvhlb85vg4j5snwy1vd7rfk89ws4viws5ljkhhyg8"))))
2117     (build-system emacs-build-system)
2118     (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
2119     (synopsis "Graphically indicate the fill column")
2120     (description
2121      "Fill-column-indicator graphically indicates the location of the fill
2122 column by drawing a thin line down the length of the editing window.")
2123     (license license:gpl3+)))
2125 (define-public emacs-grep-a-lot
2126   (package
2127     (name "emacs-grep-a-lot")
2128     (version "1.0.7")
2129     (source (origin
2130               (method git-fetch)
2131               (uri (git-reference
2132                     (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
2133                     (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
2134               (file-name (string-append name "-" version "-checkout"))
2135               (sha256
2136                (base32
2137                 "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
2138     (build-system emacs-build-system)
2139     (home-page "https://github.com/ZungBang/emacs-grep-a-lot")
2140     (synopsis "Enables multiple grep buffers in Emacs")
2141     (description
2142      "This Emacs package allows managing multiple grep buffers.")
2143     (license license:gpl3+)))
2145 (define-public emacs-inf-ruby
2146   (package
2147     (name "emacs-inf-ruby")
2148     (version "2.5.1")
2149     (source
2150      (origin
2151        (method url-fetch)
2152        (uri (string-append "https://github.com/nonsequitur/inf-ruby/"
2153                            "archive/" version ".tar.gz"))
2154        (file-name (string-append name "-" version ".tar.gz"))
2155        (sha256
2156         (base32
2157          "0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
2158     (build-system emacs-build-system)
2159     (home-page "https://github.com/nonsequitur/inf-ruby")
2160     (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
2161     (description
2162      "@code{inf-ruby} provides a Read Eval Print Loop (REPL) buffer, allowing
2163 for easy interaction with a ruby subprocess.  Features include support for
2164 detecting specific uses of Ruby, e.g. when using rails, and using a
2165 appropriate console.")
2166     (license license:gpl3+)))
2168 (define-public emacs-znc
2169   (package
2170     (name "emacs-znc")
2171     (version "0.0.2")
2172     (source
2173      (origin
2174        (method url-fetch)
2175        (uri (string-append "https://marmalade-repo.org/packages/znc-"
2176                            version ".el"))
2177        (sha256
2178         (base32
2179          "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh"))))
2180     (build-system emacs-build-system)
2181     (home-page "https://github.com/sshirokov/ZNC.el")
2182     (synopsis "Make ERC and ZNC get along better")
2183     (description
2184      "This is a thin wrapper around @code{erc} that enables one to use the ZNC
2185 IRC bouncer with ERC.")
2186     (license license:expat)))
2188 (define-public emacs-shut-up
2189   (package
2190     (name "emacs-shut-up")
2191     (version "0.3.2")
2192     (source
2193      (origin
2194        (method url-fetch)
2195        (uri (string-append "https://github.com/cask/shut-up/"
2196                            "archive/v" version ".tar.gz"))
2197        (file-name (string-append name "-" version ".tar.gz"))
2198        (sha256
2199         (base32
2200          "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
2201     (build-system emacs-build-system)
2202     (home-page "https://github.com/cask/shut-up")
2203     (synopsis "Silence Emacs")
2204     (description "This package silences most output of Emacs when running an
2205 Emacs shell script.")
2206     (license license:expat)))
2208 (define-public emacs-undercover
2209   (package
2210     (name "emacs-undercover")
2211     (version "0.6.0")
2212     (source
2213      (origin
2214        (method url-fetch)
2215        (uri (string-append "https://github.com/sviridov/undercover.el/"
2216                            "archive/v" version ".tar.gz"))
2217        (file-name (string-append name "-" version ".tar.gz"))
2218        (sha256
2219         (base32
2220          "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
2221     (build-system emacs-build-system)
2222     (propagated-inputs
2223      `(("emacs-dash" ,emacs-dash)
2224        ("emacs-shut-up" ,emacs-shut-up)))
2225     (home-page "https://github.com/sviridov/undercover.el")
2226     (synopsis "Test coverage library for Emacs Lisp")
2227     (description
2228      "Undercover is a test coverage library for software written in Emacs
2229 Lisp.")
2230     (license license:expat)))
2232 (define-public emacs-paren-face
2233   (package
2234     (name "emacs-paren-face")
2235     (version "1.0.0")
2236     (source
2237      (origin
2238        (method url-fetch)
2239        (uri (string-append "https://github.com/tarsius/paren-face/archive/"
2240                            version ".tar.gz"))
2241        (file-name (string-append name "-" version ".tar.gz"))
2242        (sha256
2243         (base32
2244          "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
2245     (build-system emacs-build-system)
2246     (home-page "https://github.com/tarsius/paren-face")
2247     (synopsis "Face for parentheses in lisp modes")
2248     (description
2249      "This library defines a face named @code{parenthesis} used just for
2250 parentheses.  The intended purpose of this face is to make parentheses less
2251 visible in Lisp code by dimming them.  Lispers probably don't need to be
2252 constantly made aware of the existence of the parentheses.  Dimming them might
2253 be even more useful for people new to lisp who have not yet learned to
2254 subconsciously blend out the parentheses.")
2255     (license license:gpl3+)))
2257 (define-public emacs-page-break-lines
2258   (package
2259     (name "emacs-page-break-lines")
2260     (version "0.11")
2261     (source
2262      (origin
2263        (method url-fetch)
2264        (uri (string-append "https://github.com/purcell/page-break-lines/"
2265                            "archive/" version ".tar.gz"))
2266        (file-name (string-append name "-" version ".tar.gz"))
2267        (sha256
2268         (base32
2269          "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
2270     (build-system emacs-build-system)
2271     (home-page "https://github.com/purcell/page-break-lines")
2272     (synopsis "Display page breaks as tidy horizontal lines")
2273     (description
2274      "This library provides a global mode which displays form feed characters
2275 as horizontal rules.")
2276     (license license:gpl3+)))
2278 (define-public emacs-simple-httpd
2279   (package
2280     (name "emacs-simple-httpd")
2281     (version "1.4.6")
2282     (source
2283      (origin
2284        (method url-fetch)
2285        (uri (string-append "https://github.com/skeeto/emacs-web-server/"
2286                            "archive/" version ".tar.gz"))
2287        (file-name (string-append name "-" version ".tar.gz"))
2288        (sha256
2289         (base32
2290          "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
2291     (build-system emacs-build-system)
2292     (home-page "https://github.com/skeeto/emacs-http-server")
2293     (synopsis "HTTP server in pure Emacs Lisp")
2294     (description
2295      "This package provides a simple HTTP server written in Emacs Lisp to
2296 serve files and directory listings.")
2297     (license license:unlicense)))
2299 (define-public emacs-skewer-mode
2300   (package
2301     (name "emacs-skewer-mode")
2302     (version "1.6.2")
2303     (source
2304      (origin
2305        (method url-fetch)
2306        (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
2307                            version ".tar.gz"))
2308        (file-name (string-append name "-" version ".tar.gz"))
2309        (sha256
2310         (base32
2311          "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
2312     (build-system emacs-build-system)
2313     (propagated-inputs
2314      `(("emacs-simple-httpd" ,emacs-simple-httpd)
2315        ("emacs-js2-mode" ,emacs-js2-mode)))
2316     (arguments '(#:include '("\\.el$" "\\.js$" "\\.html$")))
2317     (home-page "https://github.com/skeeto/skewer-mode")
2318     (synopsis "Live web development in Emacs")
2319     (description
2320      "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in
2321 a web browser.  Expressions are sent on-the-fly from an editing buffer to be
2322 evaluated in the browser, just like Emacs does with an inferior Lisp process
2323 in Lisp modes.")
2324     (license license:unlicense)))
2326 (define-public emacs-string-inflection
2327   (package
2328     (name "emacs-string-inflection")
2329     (version "1.0.6")
2330     (source (origin
2331               (method git-fetch)
2332               (uri (git-reference
2333                     (url "https://github.com/akicho8/string-inflection")
2334                     (commit "a150e7bdda60b7824d3a936750ce23f73b0e4edd")))
2335               (file-name (string-append name "-" version "-checkout"))
2336               (sha256
2337                (base32
2338                 "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k"))))
2339     (build-system emacs-build-system)
2340     (native-inputs
2341      `(("ert-runner" ,ert-runner)))
2342     (arguments
2343      `(#:tests? #t
2344        #:test-command '("ert-runner")))
2345     (home-page "https://github.com/akicho8/string-inflection")
2346     (synopsis "Convert symbol names between different naming conventions")
2347     (description
2348      "This Emacs package provides convenient methods for manipulating the
2349 naming style of a symbol.  It supports different naming conventions such as:
2351 @enumerate
2352 @item camel case
2353 @item Pascal case
2354 @item all upper case
2355 @item lower case separated by underscore
2356 @item etc...
2357 @end enumerate\n")
2358     (license license:gpl2+)))
2360 (define-public emacs-stripe-buffer
2361   (package
2362     (name "emacs-stripe-buffer")
2363     (version "0.2.5")
2364     (source
2365      (origin
2366        (method url-fetch)
2367        (uri (string-append "https://github.com/sabof/stripe-buffer/"
2368                            "archive/" version ".tar.gz"))
2369        (file-name (string-append name "-" version ".tar.gz"))
2370        (sha256
2371         (base32
2372          "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik"))))
2373     (build-system emacs-build-system)
2374     (home-page "https://github.com/sabof/stripe-buffer/")
2375     (synopsis "Add stripes to list buffers")
2376     (description
2377      "This Emacs package adds faces to add stripes to list buffers and org
2378 tables.")
2379     (license license:gpl2+)))
2381 (define-public emacs-rich-minority
2382   (package
2383     (name "emacs-rich-minority")
2384     (version "1.0.1")
2385     (source
2386      (origin
2387        (method url-fetch)
2388        (uri (string-append "https://github.com/Malabarba/rich-minority/"
2389                            "archive/" version ".tar.gz"))
2390        (file-name (string-append name "-" version ".tar.gz"))
2391        (sha256
2392         (base32
2393          "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
2394     (build-system emacs-build-system)
2395     (home-page "https://github.com/Malabarba/rich-minority")
2396     (synopsis "Clean-up and beautify the list of minor modes")
2397     (description
2398      "This Emacs package hides and/or highlights minor modes in the
2399 mode-line.")
2400     (license license:gpl2+)))
2402 (define-public emacs-robe
2403   (package
2404     (name "emacs-robe")
2405     (version "0.8.1")
2406     (source
2407      (origin
2408        (method url-fetch)
2409        (uri (string-append "https://github.com/dgutov/robe/"
2410                            "archive/" version ".tar.gz"))
2411        (file-name (string-append name "-" version ".tar.gz"))
2412        (sha256
2413         (base32
2414          "1vp45y99fwj88z04ah4yppz4z568qcib646az6m9az5ar0f203br"))))
2415     (build-system emacs-build-system)
2416     (arguments
2417      '(#:include (cons "^lib\\/" %default-include)))
2418     (propagated-inputs
2419      `(("emacs-inf-ruby" ,emacs-inf-ruby)))
2420     (home-page "https://github.com/dgutov/robe")
2421     (synopsis "Ruby code assistance tool for Emacs")
2422     (description
2423      "Robe can provide information on loaded classes and modules in Ruby code,
2424 as well as where methods are defined.  This allows the user to jump to method
2425 definitions, modules and classes, display method documentation and provide
2426 method and constant name completion.")
2427     (license license:gpl3+)))
2429 (define-public emacs-rspec
2430   (package
2431     (name "emacs-rspec")
2432     (version "1.11")
2433     (source
2434      (origin
2435        (method url-fetch)
2436        (uri (string-append "https://github.com/pezra/rspec-mode/"
2437                            "archive/v" version ".tar.gz"))
2438        (file-name (string-append name "-" version ".tar.gz"))
2439        (sha256
2440         (base32
2441          "1j0a7ms5516nlg60qfyn730pfxys6acm0rgyxh5xfkpi6jafgpvw"))))
2442     (build-system emacs-build-system)
2443     (home-page "https://github.com/pezra/rspec-mode")
2444     (synopsis "Provides a rspec mode for working with RSpec")
2445     (description
2446      "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to
2447 verify the spec associated with the current buffer, or entire project, as well
2448 as moving between the spec files, and coresponding code files.
2450 Also included are keybindings for spec files and Dired buffers, as well as
2451 snippets for yasnippet.")
2452     (license license:gpl3+)))
2454 (define-public emacs-smart-mode-line
2455   (package
2456     (name "emacs-smart-mode-line")
2457     (version "2.10.1")
2458     (source
2459      (origin
2460        (method url-fetch)
2461        (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
2462                            "archive/" version ".tar.gz"))
2463        (file-name (string-append name "-" version ".tar.gz"))
2464        (sha256
2465         (base32
2466          "0i9wajabrrsjzwd842q0m2611kf0q31p9hg1pdj81177gynkw8l8"))))
2467     (build-system emacs-build-system)
2468     (propagated-inputs
2469      `(("emacs-rich-minority" ,emacs-rich-minority)))
2470     (home-page "https://github.com/Malabarba/smart-mode-line")
2471     (synopsis "Color-coded smart mode-line")
2472     (description
2473      "Smart Mode Line is a mode-line theme for Emacs.  It aims to be easy to
2474 read from small to large monitors by using colors, a prefix feature, and smart
2475 truncation.")
2476     (license license:gpl2+)))
2478 (define-public emacs-sr-speedbar
2479   (let ((commit "77a83fb50f763a465c021eca7343243f465b4a47")
2480         (revision "0"))
2481     (package
2482       (name "emacs-sr-speedbar")
2483       (version (git-version "20161025" revision commit))
2484       (source
2485        (origin
2486          (method git-fetch)
2487          (uri (git-reference
2488                (url "https://github.com/emacsorphanage/sr-speedbar.git")
2489                (commit commit)))
2490          (file-name (git-file-name name version))
2491          (sha256
2492           (base32
2493            "0sd12555hk7z721y00kv3crdybvcn1i08wmd148z5imayzibj153"))))
2494       (build-system emacs-build-system)
2495       (home-page "https://www.emacswiki.org/emacs/SrSpeedbar")
2496       (synopsis "Same frame Emacs @code{speedbar}")
2497       (description
2498        "This Emacs package allows you to show @code{M-x speedbar} in the
2499 same frame (in an extra window).  You can customize the initial width of
2500 the speedbar window.")
2501       (license license:gpl3+))))
2503 (define-public emacs-shell-switcher
2504   (package
2505     (name "emacs-shell-switcher")
2506     (version "1.0.1")
2507     (source
2508      (origin
2509        (method url-fetch)
2510        (uri (string-append "https://github.com/DamienCassou/shell-switcher"
2511                            "/archive/v" version ".tar.gz"))
2512        (file-name (string-append name "-" version ".tar.gz"))
2513        (sha256
2514         (base32
2515          "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
2516     (build-system emacs-build-system)
2517     (home-page "https://github.com/DamienCassou/shell-switcher")
2518     (synopsis "Provide fast switching between shell buffers")
2519     (description
2520      "This package provides commands to quickly switch between shell buffers.")
2521     (license license:gpl3+)))
2523 (define-public emacs-ob-ipython
2524   (package
2525     (name "emacs-ob-ipython")
2526     (version "20150704.8807064693")
2527     (source (origin
2528               (method git-fetch)
2529               (uri (git-reference
2530                     (commit "880706469338ab59b5bb7dbe8460016f89755364")
2531                     (url "https://github.com/gregsexton/ob-ipython.git")))
2532               (file-name (string-append name "-" version "-checkout"))
2533               (sha256
2534                (base32
2535                 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
2536     (build-system emacs-build-system)
2537     (propagated-inputs
2538      `(("emacs-f" ,emacs-f)))
2539     (home-page "http://www.gregsexton.org")
2540     (synopsis "Org-Babel functions for IPython evaluation")
2541     (description "This package adds support to Org-Babel for evaluating Python
2542 source code using IPython.")
2543     (license license:gpl3+)))
2545 (define-public emacs-debbugs
2546   (package
2547     (name "emacs-debbugs")
2548     (version "0.15")
2549     (source (origin
2550               (method url-fetch)
2551               (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
2552                                   version ".tar"))
2553               (sha256
2554                (base32
2555                 "1x7jw2ldgkknyxg7x9fhnqkary691icnysmi3xw0g2fjrvllzhqw"))))
2556     (build-system emacs-build-system)
2557     (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
2558     (propagated-inputs
2559      `(("emacs-async" ,emacs-async)))
2560     (home-page "https://elpa.gnu.org/packages/debbugs.html")
2561     (synopsis "Access the Debbugs bug tracker in Emacs")
2562     (description
2563      "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
2564 Tracker} from within Emacs.
2566 For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
2567 and the command @code{M-x debbugs-gnu-search} for bug searching.  If you
2568 prefer the listing of bugs as TODO items of @code{org-mode}, you could use
2569 @code{M-x debbugs-org} and related commands.
2571 A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
2572 Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
2573     (license license:gpl3+)))
2575 (define-public emacs-ert-expectations
2576   (package
2577     (name "emacs-ert-expectations")
2578     (version "0.2")
2579     (source
2580      (origin
2581        (method url-fetch)
2582        (uri "https://www.emacswiki.org/emacs/download/ert-expectations.el")
2583        (sha256
2584         (base32
2585          "0cwy3ilsid90abzzjb7ha2blq9kmv3gfp3icwwfcz6qczgirq6g7"))))
2586     (build-system emacs-build-system)
2587     (home-page "https://www.emacswiki.org/emacs/ert-expectations.el")
2588     (synopsis "Simple unit test framework for Emacs Lisp")
2589     (description "@code{emacs-ert-expectations} is a simple unit test
2590 framework for Emacs Lisp to be used with @code{ert}.")
2591     (license license:gpl3+)))
2593 (define-public emacs-deferred
2594   (package
2595     (name "emacs-deferred")
2596     (version "0.5.1")
2597     (home-page "https://github.com/kiwanami/emacs-deferred")
2598     (source (origin
2599               (method git-fetch)
2600               (uri (git-reference
2601                     (url home-page)
2602                     (commit (string-append "v" version))))
2603               (sha256
2604                (base32
2605                 "0xy9zb6wwkgwhcxdnslqk52bq3z24chgk6prqi4ks0qcf2bwyh5h"))
2606               (file-name (string-append name "-" version))))
2607     (build-system emacs-build-system)
2608     (arguments
2609      `(#:phases
2610        (modify-phases %standard-phases
2611          (add-after 'unpack 'set-shell
2612            ;; Setting the SHELL environment variable is required for the tests
2613            ;; to find sh.
2614            (lambda _
2615              (setenv "SHELL" (which "sh"))
2616              #t))
2617          (add-before 'check 'fix-makefile
2618            (lambda _
2619              (substitute* "Makefile"
2620                (("\\$\\(CASK\\) exec ") ""))
2621              #t)))
2622        #:tests? #t
2623        #:test-command '("make" "test")))
2624     (native-inputs
2625      `(("emacs-ert-expectations" ,emacs-ert-expectations)
2626        ("emacs-undercover" ,emacs-undercover)
2627        ("ert-runner" ,ert-runner)))
2628     (synopsis "Simple asynchronous functions for Emacs Lisp")
2629     (description
2630      "The @code{deferred.el} library provides support for asynchronous tasks.
2631 The API is almost the same as that of
2632 @uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
2633 for asynchronous tasks.")
2634     (license license:gpl3+)))
2636 (define-public butler
2637   (package
2638     (name "emacs-butler")
2639     (version "0.2.4")
2640     (home-page "https://github.com/AshtonKem/Butler")
2641     (source (origin
2642               (method git-fetch)
2643               (uri (git-reference
2644                     (url home-page)
2645                     (commit version)))
2646               (sha256
2647                (base32
2648                 "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
2649               (file-name (string-append name "-" version))))
2650     (build-system emacs-build-system)
2651     (propagated-inputs
2652      `(("emacs-deferred" ,emacs-deferred)))
2653     (synopsis "Emacs client for Jenkins")
2654     (description
2655      "Butler provides an interface to connect to Jenkins continuous
2656 integration servers.  Users can specify a list of server in the
2657 @code{butler-server-list} variable and then use @code{M-x butler-status} to
2658 view the build status of those servers' build jobs, and possibly to trigger
2659 build jobs.")
2660     (license license:gpl3+)))
2662 (define-public emacs-company
2663   (package
2664     (name "emacs-company")
2665     (version "0.9.3")
2666     (source
2667      (origin
2668        (method url-fetch)
2669        (uri (string-append "https://github.com/company-mode/company-mode/archive/"
2670                            version ".tar.gz"))
2671        (file-name (string-append name "-" version ".tar.gz"))
2672        (sha256
2673         (base32
2674          "1fyrpchpdmvszssy1qmsw41aqpv6q5rybvs1bw00nv9xdhiaq4vh"))))
2675     (build-system emacs-build-system)
2676     (arguments
2677      `(#:phases
2678        (modify-phases %standard-phases
2679          (add-before 'check 'fix-bin-dir
2680            (lambda _
2681              ;; The company-files-candidates-normal-root test looks
2682              ;; for the /bin directory, but the build environment has
2683              ;; no /bin directory. Modify the test to look for the
2684              ;; /tmp directory.
2685              (substitute* "test/files-tests.el"
2686                (("/bin/") "/tmp/"))
2687              #t)))
2688        #:tests? #t
2689        #:test-command '("make" "test-batch")))
2690     (home-page "http://company-mode.github.io/")
2691     (synopsis "Modular text completion framework")
2692     (description
2693      "Company is a modular completion mechanism.  Modules for retrieving
2694 completion candidates are called back-ends, modules for displaying them are
2695 front-ends.  Company comes with many back-ends, e.g. @code{company-elisp}.
2696 These are distributed in separate files and can be used individually.")
2697     (license license:gpl3+)))
2699 (define-public emacs-company-quickhelp
2700   (package
2701     (name "emacs-company-quickhelp")
2702     (version "2.3.0")
2703     (source
2704      (origin
2705        (method url-fetch)
2706        (uri (string-append
2707              "https://github.com/expez/company-quickhelp/archive/"
2708              version ".tar.gz"))
2709        (file-name (string-append name "-" version ".tar.gz"))
2710        (sha256
2711         (base32
2712          "0xrn2z1dgk5gmkmp2jkn9g83ckk39lqp5pyyv8rl7f6gqvib3qh0"))))
2713     (build-system emacs-build-system)
2714     (propagated-inputs
2715      `(("emacs-pos-tip" ,emacs-pos-tip)
2716        ("emacs-company" ,emacs-company)))
2717     (home-page "https://github.com/expez/company-quickhelp")
2718     (synopsis "Popup documentation for completion candidates")
2719     (description "@code{company-quickhelp} shows documentation for the
2720 completion candidate when using the Company text completion framework.")
2721     (license license:gpl3+)))
2723 (define-public emacs-multiple-cursors
2724   (package
2725     (name "emacs-multiple-cursors")
2726     (version "1.4.0")
2727     (source
2728      (origin
2729        (method url-fetch)
2730        (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
2731                            "archive/" version ".tar.gz"))
2732        (file-name (string-append name "-" version ".tar.gz"))
2733        (sha256
2734         (base32
2735          "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
2736     (build-system emacs-build-system)
2737     (home-page "https://github.com/magnars/multiple-cursors.el")
2738     (synopsis "Multiple cursors for Emacs")
2739     (description
2740      "This package adds support to Emacs for editing text with multiple
2741 simultaneous cursors.")
2742     (license license:gpl3+)))
2744 (define-public typo
2745   (package
2746     (name "emacs-typo")
2747     (version "1.1")
2748     (home-page "https://github.com/jorgenschaefer/typoel")
2749     (source (origin
2750               (method git-fetch)
2751               (uri (git-reference
2752                     (url home-page)
2753                     (commit (string-append "v" version))))
2754               (sha256
2755                (base32
2756                 "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
2757               (file-name (string-append name "-" version))))
2758     (build-system emacs-build-system)
2759     (synopsis "Minor mode for typographic editing")
2760     (description
2761      "This package provides two Emacs modes, @code{typo-mode} and
2762 @code{typo-global-mode}.  These modes automatically insert Unicode characters
2763 for quotation marks, dashes, and ellipses.  For example, typing @kbd{\"}
2764 automatically inserts a Unicode opening or closing quotation mark, depending
2765 on context.")
2766     (license license:gpl3+)))
2768 (define-public emacs-scheme-complete
2769   (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
2770     (package
2771       (name "emacs-scheme-complete")
2772       (version (string-append "20151223." (string-take commit 8)))
2773       (source
2774        (origin
2775          (file-name (string-append name "-" version))
2776          (method git-fetch)
2777          (uri (git-reference
2778                (url "https://github.com/ashinn/scheme-complete.git")
2779                (commit commit)))
2780          (sha256
2781           (base32
2782            "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
2783          (patches
2784           (search-patches "emacs-scheme-complete-scheme-r5rs-info.patch"))))
2785       (build-system emacs-build-system)
2786       (home-page "https://github.com/ashinn/scheme-complete")
2787       (synopsis "Smart tab completion for Scheme in Emacs")
2788       (description
2789        "This file provides a single function, @code{scheme-smart-complete},
2790 which you can use for intelligent, context-sensitive completion for any Scheme
2791 implementation in Emacs.  To use it just load this file and bind that function
2792 to a key in your preferred mode.")
2793       (license license:public-domain))))
2795 (define-public emacs-scel
2796   (let ((version "20170629")
2797         (revision "1")
2798         (commit "aeea3ad4be9306d14c3a734a4ff54fee10ac135b"))
2799     (package
2800       (name "emacs-scel")
2801       (version (git-version version revision commit))
2802       (source
2803        (origin
2804          (method git-fetch)
2805          (uri (git-reference
2806                (url "https://github.com/supercollider/scel.git")
2807                (commit commit)))
2808          (file-name (string-append name "-" version "-checkout"))
2809          (sha256
2810           (base32
2811            "0jvmzs1lsjyndqshhii2y4mnr3wghai26i3p75453zrpxpg0zvvw"))))
2812       (build-system emacs-build-system)
2813       (arguments
2814        `(#:modules ((guix build emacs-build-system)
2815                     ((guix build cmake-build-system) #:prefix cmake:)
2816                     (guix build utils))
2817          #:imported-modules (,@%emacs-build-system-modules
2818                              (guix build cmake-build-system))
2819          #:phases
2820          (modify-phases %standard-phases
2821            (add-after 'unpack 'configure
2822              (lambda* (#:key outputs #:allow-other-keys)
2823                (substitute* "el/CMakeLists.txt"
2824                  (("share/emacs/site-lisp/SuperCollider")
2825                   (string-append
2826                    "share/emacs/site-lisp/guix.d/scel-" ,version)))
2827                ((assoc-ref cmake:%standard-phases 'configure)
2828                 #:outputs outputs
2829                 #:configure-flags '("-DSC_EL_BYTECOMPILE=OFF"))))
2830            (add-after 'set-emacs-load-path 'add-el-dir-to-emacs-load-path
2831              (lambda _
2832                (setenv "EMACSLOADPATH"
2833                        (string-append (getcwd) "/el:" (getenv "EMACSLOADPATH")))
2834                #t))
2835            (replace 'install (assoc-ref cmake:%standard-phases 'install)))))
2836       (inputs
2837        `(("supercollider" ,supercollider)))
2838       (native-inputs
2839        `(("cmake" ,cmake)))
2840       (home-page "https://github.com/supercollider/scel")
2841       (synopsis "SuperCollider Emacs interface")
2842       (description "@code{emacs-scel} is an Emacs interface to SuperCollider.
2843 SuperCollider is a platform for audio synthesis and algorithmic composition.")
2844       (license license:gpl2+))))
2846 (define-public emacs-mit-scheme-doc
2847   (package
2848     (name "emacs-mit-scheme-doc")
2849     (version "20140203")
2850     (source
2851      (origin
2852        (modules '((guix build utils)))
2853        (snippet
2854         ;; keep only file of interest
2855         '(begin
2856            (for-each delete-file '("dot-emacs.el" "Makefile"))
2857            (install-file "6.945-config/mit-scheme-doc.el" ".")
2858            (delete-file-recursively "6.945-config")
2859            #t))
2860        (file-name (string-append name "-" version ".tar.bz2"))
2861        (method url-fetch)
2862        (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
2863                            "6.945/dont-panic/emacs-basic-config.tar.bz2"))
2864        (sha256
2865         (base32
2866          "0dqidg2bd66pawqfarvwca93w5gqf9mikn1k2a2rmd9ymfjpziq1"))))
2867     (build-system emacs-build-system)
2868     (inputs `(("mit-scheme" ,mit-scheme)))
2869     (arguments
2870      `(#:phases
2871        (modify-phases %standard-phases
2872          (add-after 'unpack 'configure-doc
2873            (lambda* (#:key inputs #:allow-other-keys)
2874              (let* ((mit-scheme-dir (assoc-ref inputs "mit-scheme"))
2875                     (doc-dir (string-append mit-scheme-dir "/share/doc/"
2876                                             "mit-scheme-"
2877                                             ,(package-version mit-scheme))))
2878                (substitute* "mit-scheme-doc.el"
2879                  (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/")
2880                   (string-append "file:" doc-dir "/mit-scheme-ref/")))))))))
2881     (home-page "http://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
2882     (synopsis "MIT-Scheme documentation lookup for Emacs")
2883     (description
2884      "This package provides a set of Emacs functions to search definitions of
2885 identifiers in the MIT-Scheme documentation.")
2886     (license license:gpl2+)))
2888 (define-public emacs-constants
2889   (package
2890     (name "emacs-constants")
2891     (version "2.6")
2892     (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
2893     (source
2894      (origin
2895        (file-name (string-append name "-" version ".tar.gz"))
2896        (method url-fetch)
2897        (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
2898                            "/archive/v" version ".tar.gz"))
2899        (sha256
2900         (base32
2901          "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
2902     (build-system emacs-build-system)
2903     (synopsis "Enter definition of constants into an Emacs buffer")
2904     (description
2905      "This package provides functions for inserting the definition of natural
2906 constants and units into an Emacs buffer.")
2907     (license license:gpl2+)))
2909 (define-public emacs-tagedit
2910   (package
2911     (name "emacs-tagedit")
2912     (version "1.4.0")
2913     (source
2914      (origin
2915        (method url-fetch)
2916        (uri (string-append "https://github.com/magnars/tagedit/"
2917                            "archive/" version ".tar.gz"))
2918        (file-name (string-append name "-" version ".tar.gz"))
2919        (sha256
2920         (base32
2921          "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
2922     (build-system emacs-build-system)
2923     (propagated-inputs
2924      `(("emacs-s" ,emacs-s)
2925        ("emacs-dash" ,emacs-dash)))
2926     (home-page "https://github.com/magnars/tagedit")
2927     (synopsis "Some paredit-like features for html-mode")
2928     (description
2929      "This package provides a collection of paredit-like functions for editing
2930 in @code{html-mode}.")
2931     (license license:gpl3+)))
2933 (define-public emacs-slime
2934   (package
2935     (name "emacs-slime")
2936     (version "2.20")
2937     (source
2938      (origin
2939        (file-name (string-append name "-" version ".tar.gz"))
2940        (method url-fetch)
2941        (uri (string-append
2942              "https://github.com/slime/slime/archive/v"
2943              version ".tar.gz"))
2944        (sha256
2945         (base32
2946          "086lq5y4pvj9wihy0si02xxvyzpzz8mcg3hz1cvy9zxlyjwzr1gk"))))
2947     (build-system emacs-build-system)
2948     (native-inputs
2949      `(("texinfo" ,texinfo)))
2950     (arguments
2951      `(#:include '("\\.el$" "\\.lisp$" "\\.asd$" "contrib")
2952        #:exclude '("^slime-tests.el" "^contrib/test/"
2953                    "^contrib/Makefile$" "^contrib/README.md$")
2954        #:phases
2955        (modify-phases %standard-phases
2956          (add-before 'install 'configure
2957            (lambda* _
2958              (emacs-substitute-variables "slime.el"
2959                ("inferior-lisp-program" "sbcl"))
2960              #t))
2961          (add-before 'install 'install-doc
2962            (lambda* (#:key outputs #:allow-other-keys)
2963              (let* ((out (assoc-ref outputs "out"))
2964                     (info-dir (string-append out "/share/info"))
2965                     (doc-dir (string-append out "/share/doc/"
2966                                             ,name "-" ,version))
2967                     (doc-files '("doc/slime-refcard.pdf"
2968                                  "README.md" "NEWS" "PROBLEMS"
2969                                  "CONTRIBUTING.md")))
2970                (with-directory-excursion "doc"
2971                  (substitute* "Makefile"
2972                    (("infodir=/usr/local/info")
2973                     (string-append "infodir=" info-dir)))
2974                  (system* "make" "html/index.html")
2975                  (system* "make" "slime.info")
2976                  (install-file "slime.info" info-dir)
2977                  (copy-recursively "html" (string-append doc-dir "/html")))
2978                (for-each (lambda (f)
2979                            (install-file f doc-dir)
2980                            (delete-file f))
2981                          doc-files)
2982                (delete-file-recursively "doc")
2983                #t))))))
2984     (home-page "https://github.com/slime/slime")
2985     (synopsis "Superior Lisp Interaction Mode for Emacs")
2986     (description
2987      "SLIME extends Emacs with support for interactive programming in
2988 Common Lisp.  The features are centered around @command{slime-mode},
2989 an Emacs minor mode that complements the standard @command{lisp-mode}.
2990 While lisp-mode supports editing Lisp source files, @command{slime-mode}
2991 adds support for interacting with a running Common Lisp process
2992 for compilation, debugging, documentation lookup, and so on.")
2993     (license license:gpl2+)))
2995 (define-public emacs-popup
2996   (package
2997     (name "emacs-popup")
2998     (version "0.5.3")
2999     (source (origin
3000               (method url-fetch)
3001               (uri (string-append
3002                     "https://github.com/auto-complete/popup-el/archive/v"
3003                     version ".tar.gz"))
3004               (file-name (string-append name "-" version ".tar.gz"))
3005               (sha256
3006                (base32
3007                 "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
3008     (build-system emacs-build-system)
3009     (home-page "https://github.com/auto-complete/popup-el")
3010     (synopsis "Visual Popup User Interface for Emacs")
3011     (description
3012      "Popup.el is a visual popup user interface library for Emacs.
3013 This provides a basic API and common UI widgets such as popup tooltips
3014 and popup menus.")
3015     (license license:gpl3+)))
3017 (define-public emacs-god-mode
3018   (let ((commit "6cf0807b6555eb6fcf8387a4e3b667071ef38964")
3019         (revision "1"))
3020     (package
3021       (name "emacs-god-mode")
3022       (version (string-append "20151005.925."
3023                               revision "-" (string-take commit 9)))
3024       (source
3025        (origin
3026          (method git-fetch)
3027          (uri (git-reference
3028                (url "https://github.com/chrisdone/god-mode.git")
3029                (commit commit)))
3030          (file-name (string-append name "-" version "-checkout"))
3031          (sha256
3032           (base32
3033            "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
3034       (build-system emacs-build-system)
3035       (home-page "https://github.com/chrisdone/god-mode")
3036       (synopsis "Minor mode for entering commands without modifier keys")
3037       (description
3038        "This package provides a global minor mode for entering Emacs commands
3039 without modifier keys.  It's similar to Vim's separation of commands and
3040 insertion mode.  When enabled all keys are implicitly prefixed with
3041 @samp{C-} (among other helpful shortcuts).")
3042       (license license:gpl3+))))
3044 (define-public emacs-jinja2-mode
3045   (package
3046     (name "emacs-jinja2-mode")
3047     (version "0.2")
3048     (source
3049      (origin
3050        (method url-fetch)
3051        (uri (string-append "https://github.com/paradoxxxzero/jinja2-mode/"
3052                            "archive/v" version ".tar.gz"))
3053        (file-name (string-append name "-" version ".tar.gz"))
3054        (sha256
3055         (base32
3056          "0cgxjab1kla2zc2fj7bzib6i7snp08zshandmp9kqcm85l262xpn"))))
3057     (build-system emacs-build-system)
3058     (home-page "https://github.com/paradoxxxzero/jinja2-mode")
3059     (synopsis "Major mode for jinja2")
3060     (description
3061      "Emacs major mode for jinja2 with: syntax highlighting,
3062 sgml/html integration, and indentation (working with sgml).")
3063     (license license:gpl3+)))
3065 (define-public emacs-rfcview
3066   (package
3067     (name "emacs-rfcview")
3068     (version "0.13")
3069     (home-page "http://www.loveshack.ukfsn.org/emacs")
3070     (source (origin
3071               (method url-fetch)
3072               (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
3073               (sha256
3074                (base32
3075                 "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
3076     (build-system emacs-build-system)
3077     (synopsis "Prettify Request for Comments (RFC) documents")
3078     (description "The Internet Engineering Task Force (IETF) and the Internet
3079 Society (ISOC) publish various Internet-related protocols and specifications
3080 as \"Request for Comments\" (RFC) documents and Internet Standard (STD)
3081 documents.  RFCs and STDs are published in a simple text form.  This package
3082 provides an Emacs major mode, rfcview-mode, which makes it more pleasant to
3083 read these documents in Emacs.  It prettifies the text and adds
3084 hyperlinks/menus for easier navigation.  It also provides functions for
3085 browsing the index of RFC documents and fetching them from remote servers or
3086 local directories.")
3087     (license license:gpl3+)))
3089 (define-public emacs-ffap-rfc-space
3090   (package
3091     (name "emacs-ffap-rfc-space")
3092     (version "12")
3093     (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
3094     (source (origin
3095               (method url-fetch)
3096               (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
3097               (sha256
3098                (base32
3099                 "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
3100     (build-system emacs-build-system)
3101     (synopsis "Make ffap recognize an RFC with a space before its number")
3102     (description "The Internet Engineering Task Force (IETF) and the
3103 Internet Society (ISOC) publish various Internet-related protocols and
3104 specifications as \"Request for Comments\" (RFC) documents.  The
3105 built-in Emacs module \"ffap\" (Find File at Point) has the ability to
3106 recognize names at point which look like \"RFC1234\" and \"RFC-1234\"
3107 and load the appropriate RFC from a remote server.  However, it fails
3108 to recognize a name like \"RFC 1234\".  This package enhances ffap so
3109 that it correctly finds RFCs even when a space appears before the
3110 number.")
3111     (license license:gpl3+)))
3113 (define-public emacs-org-bullets
3114   (package
3115     (name "emacs-org-bullets")
3116     (version "0.2.4")
3117     (source
3118      (origin
3119        (method url-fetch)
3120        (uri (string-append "https://github.com/sabof/org-bullets/archive/"
3121                            version ".tar.gz"))
3122        (file-name (string-append name "-" version ".tar.gz"))
3123        (sha256
3124         (base32
3125          "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
3126     (build-system emacs-build-system)
3127     (home-page "https://github.com/sabof/org-bullets")
3128     (synopsis "Show bullets in org-mode as UTF-8 characters")
3129     (description
3130      "This package provides an Emacs minor mode causing bullets in
3131 @code{org-mode} to be rendered as UTF-8 characters.")
3132     (license license:gpl3+)))
3134 (define-public emacs-org-pomodoro
3135   (package
3136     (name "emacs-org-pomodoro")
3137     (version "2.1.0")
3138     (source
3139      (origin
3140        (method url-fetch)
3141        (uri (string-append
3142              "https://github.com/lolownia/org-pomodoro/archive/"
3143              version ".tar.gz"))
3144        (file-name (string-append name "-" version ".tar.gz"))
3145        (sha256
3146         (base32
3147          "1jalsggw3q5kvj353f84x4nl04a5vmq07h75ggppy1627lb31zm4"))))
3148     (build-system emacs-build-system)
3149     (propagated-inputs
3150      `(("emacs-alert" ,emacs-alert)))
3151     (home-page "https://github.com/lolownia/org-pomodoro")
3152     (synopsis "Pomodoro technique for org-mode")
3153     (description "@code{emacs-org-pomodoro} adds very basic support for
3154 Pomodoro technique in Emacs org-mode.
3156 Run @code{M-x org-pomodoro} for the task at point or select one of the
3157 last tasks that you clocked time for.  Each clocked-in pomodoro starts
3158 a timer of 25 minutes and after each pomodoro a break timer of 5
3159 minutes is started automatically.  Every 4 breaks a long break is
3160 started with 20 minutes.  All values are customizable.")
3161     (license license:gpl3+)))
3163 (define-public emacs-org-trello
3164   (package
3165     (name "emacs-org-trello")
3166     (version "0.8.0")
3167     (source (origin
3168               (method url-fetch)
3169               (uri (string-append
3170                     "https://github.com/org-trello/org-trello/archive/"
3171                     version ".tar.gz"))
3172               (file-name (string-append name "-" version ".tar.gz"))
3173               (sha256
3174                (base32
3175                 "0549mnf5cgwn8b8jbl38fljbaxmh1605sv9j8f3lsa95jhs1zpa0"))))
3176     (build-system emacs-build-system)
3177     (propagated-inputs
3178      `(("emacs-dash" ,emacs-dash)
3179        ("emacs-deferred" ,emacs-deferred)
3180        ("emacs-f" ,emacs-f)
3181        ("emacs-helm" ,emacs-helm)
3182        ("emacs-request" ,emacs-request)
3183        ("emacs-s" ,emacs-s)))
3184     (home-page "https://org-trello.github.io")
3185     (synopsis "Emacs minor mode for interacting with Trello")
3186     (description "This package provides an Emacs minor mode to extend
3187 @code{org-mode} with Trello abilities.  Trello is an online project
3188 organizer.")
3189     (license license:gpl3+)))
3191 (define-public emacs-zenburn-theme
3192   (package
3193     (name "emacs-zenburn-theme")
3194     (version "2.5")
3195     (source (origin
3196               (method url-fetch)
3197               (uri (string-append
3198                     "https://github.com/bbatsov/zenburn-emacs/archive/v"
3199                     version ".tar.gz"))
3200               (file-name (string-append name "-" version ".tar.gz"))
3201               (sha256
3202                (base32
3203                 "03kfhzgbbbl8ivpzzky6qxw4j9mmp452m1sk7wikxmcalfnix0gn"))))
3204     (build-system emacs-build-system)
3205     (home-page "https://github.com/bbatsov/zenburn-emacs")
3206     (synopsis "Low contrast color theme for Emacs")
3207     (description
3208      "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs.
3209 It is built on top of the custom theme support in Emacs 24 or later.")
3210     (license license:gpl3+)))
3212 (define-public emacs-solarized-theme
3213   (package
3214     (name "emacs-solarized-theme")
3215     (version "1.2.2")
3216     (source (origin
3217               (method url-fetch)
3218               (uri (string-append "https://github.com/bbatsov/solarized-emacs/"
3219                                   "archive/v"  version ".tar.gz"))
3220               (file-name (string-append name "-" version ".tar.gz"))
3221               (sha256
3222                (base32
3223                 "1ha3slc6d9wi9ilkhmwrzkvf308n6ph7b0k69pk369s9304awxzx"))))
3224     (build-system emacs-build-system)
3225     (propagated-inputs
3226      `(("emacs-dash" ,emacs-dash)))
3227     (home-page "https://github.com/bbatsov/solarized-emacs")
3228     (synopsis "Port of the Solarized theme for Emacs")
3229     (description
3230      "Solarized for Emacs is a port of the Solarized theme for Vim.  This
3231 package provides a light and a dark variant.")
3232     (license license:gpl3+)))
3234 (define-public emacs-ahungry-theme
3235   (package
3236     (name "emacs-ahungry-theme")
3237     (version "1.10.0")
3238     (source
3239      (origin (method url-fetch)
3240              (uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-"
3241                                  version ".tar"))
3242              (sha256
3243               (base32
3244                "14q5yw56n82qph09bk7wmj5b1snhh9w0nk5s1l7yn9ldg71xq6pm"))))
3245     (build-system emacs-build-system)
3246     (home-page "https://github.com/ahungry/color-theme-ahungry")
3247     (synopsis "Ahungry color theme for Emacs")
3248     (description "Ahungry theme for Emacs provides bright and bold colors.
3249 If you load it from a terminal, you will be able to make use of the
3250 transparent background.  If you load it from a GUI, it will default to a
3251 dark background.")
3252     (license license:gpl3+)))
3254 (define-public emacs-2048-game
3255   (package
3256     (name "emacs-2048-game")
3257     (version "20151026.1233")
3258     (source
3259      (origin
3260        (method url-fetch)
3261        (uri (string-append "https://melpa.org/packages/2048-game-"
3262                            version ".el"))
3263        (sha256
3264         (base32
3265          "0gy2pvz79whpavp4jmz8h9krzn7brmvv3diixi1d4w51pcdvaldd"))))
3266     (build-system emacs-build-system)
3267     (home-page "https://bitbucket.org/zck/2048.el")
3268     (synopsis "Implementation of the game 2048 in Emacs Lisp")
3269     (description
3270      "This program is an implementation of 2048 for Emacs.
3271 The goal of this game is to create a tile with value 2048.  The size of the
3272 board and goal value can be customized.")
3273   (license license:gpl3+)))
3275 (define-public emacs-base16-theme
3276   (package
3277     (name "emacs-base16-theme")
3278     (version "2.1")
3279     (source
3280      (origin
3281        (method url-fetch)
3282        (uri (string-append "https://stable.melpa.org/packages/base16-theme-"
3283                            version ".tar"))
3284        (sha256
3285         (base32
3286          "0z6hrwz2jlz6jbr381rcqcqvx6hss5cad352klx07rark7zccacj"))))
3287     (build-system emacs-build-system)
3288     (home-page "https://github.com/belak/base16-emacs")
3289     (synopsis "Base16 color themes for Emacs")
3290     (description
3291      "Base16 provides carefully chosen syntax highlighting and a default set
3292 of sixteen colors suitable for a wide range of applications.  Base16 is not a
3293 single theme but a set of guidelines with numerous implementations.")
3294     (license license:expat)))
3296 (define-public emacs-smartparens
3297   (package
3298     (name "emacs-smartparens")
3299     (version "1.11.0")
3300     (source (origin
3301               (method url-fetch)
3302               (uri (string-append
3303                     "https://github.com/Fuco1/smartparens/archive/"
3304                     version ".tar.gz"))
3305               (file-name (string-append name "-" version ".tar.gz"))
3306               (sha256
3307                (base32
3308                 "0q5as813xs8y29i3v2rm97phd6m7xsmmw6hwbvx57gwmi8i1c409"))))
3309     (build-system emacs-build-system)
3310     (propagated-inputs
3311      `(("emacs-dash" ,emacs-dash)
3312        ("emacs-markdown-mode" ,emacs-markdown-mode)))
3313     (home-page "https://github.com/Fuco1/smartparens")
3314     (synopsis "Paredit-like insertion, wrapping and navigation with user
3315 defined pairs")
3316     (description
3317      "Smartparens is a minor mode for Emacs that deals with parens pairs
3318 and tries to be smart about it.  It started as a unification effort to
3319 combine functionality of several existing packages in a single,
3320 compatible and extensible way to deal with parentheses, delimiters, tags
3321 and the like.  Some of these packages include autopair, textmate,
3322 wrap-region, electric-pair-mode, paredit and others.  With the basic
3323 features found in other packages it also brings many improvements as
3324 well as completely new features.")
3325     (license license:gpl3+)))
3327 (define-public emacs-highlight-symbol
3328   (package
3329     (name "emacs-highlight-symbol")
3330     (version "1.3")
3331     (source (origin
3332               (method url-fetch)
3333               (uri (string-append
3334                     "https://github.com/nschum/highlight-symbol.el/archive/"
3335                     version ".tar.gz"))
3336               (file-name (string-append name "-" version ".tar.gz"))
3337               (sha256
3338                (base32
3339                 "1n7k1qns0fn0jsyc0hrjac5nzk21xw48yc30vyrhwvc51h0b9g90"))))
3340     (build-system emacs-build-system)
3341     (home-page "https://nschum.de/src/emacs/highlight-symbol")
3342     (synopsis "Automatic and manual symbol highlighting for Emacs")
3343     (description
3344      "Use @code{highlight-symbol} to toggle highlighting of the symbol at
3345 point throughout the current buffer.  Use @code{highlight-symbol-mode} to keep
3346 the symbol at point highlighted.
3348 The functions @code{highlight-symbol-next}, @code{highlight-symbol-prev},
3349 @code{highlight-symbol-next-in-defun} and
3350 @code{highlight-symbol-prev-in-defun} allow for cycling through the locations
3351 of any symbol at point.  Use @code{highlight-symbol-nav-mode} to enable key
3352 bindings @code{M-p} and @code{M-p} for navigation.  When
3353 @code{highlight-symbol-on-navigation-p} is set, highlighting is triggered
3354 regardless of @code{highlight-symbol-idle-delay}.
3356 @code{highlight-symbol-query-replace} can be used to replace the symbol. ")
3357     (license license:gpl2+)))
3359 (define-public emacs-hl-todo
3360   (package
3361     (name "emacs-hl-todo")
3362     (version "1.8.0")
3363     (source (origin
3364               (method url-fetch)
3365               (uri (string-append
3366                     "https://raw.githubusercontent.com/tarsius/hl-todo/"
3367                     version "/hl-todo.el"))
3368               (file-name (string-append "hl-todo-" version ".el"))
3369               (sha256
3370                (base32
3371                 "0g0h9v4572p7mcird8wsj1c41haf60krslm6mlpi4mdbh248kv6z"))))
3372     (build-system emacs-build-system)
3373     (home-page "https://github.com/tarsius/hl-todo")
3374     (synopsis "Emacs mode to highlight TODO and similar keywords")
3375     (description
3376      "This package provides an Emacs mode to highlight TODO and similar
3377 keywords in comments and strings.  This package also provides commands for
3378 moving to the next or previous keyword and to invoke @code{occur} with a
3379 regexp that matches all known keywords.")
3380     (license license:gpl3+)))
3382 (define-public emacs-perspective
3383   (package
3384     (name "emacs-perspective")
3385     (version "1.12")
3386     (source
3387      (origin
3388        (method url-fetch)
3389        (uri (string-append "https://github.com/nex3/perspective-el/"
3390                            "archive/" version ".tar.gz"))
3391        (file-name (string-append name "-" version ".tar.gz"))
3392        (sha256
3393         (base32
3394          "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic"))))
3395     (build-system emacs-build-system)
3396     (home-page "https://github.com/nex3/perspective-el")
3397     (synopsis "Switch between named \"perspectives\"")
3398     (description
3399      "This package provides tagged workspaces in Emacs, similar to workspaces in
3400 windows managers such as Awesome and XMonad.  @code{perspective.el} provides
3401 multiple workspaces (or \"perspectives\") for each Emacs frame.  Each
3402 perspective is composed of a window configuration and a set of buffers.
3403 Switching to a perspective activates its window configuration, and when in a
3404 perspective only its buffers are available by default.")
3405     ;; This package is released under the same license as Emacs (GPLv3+) or
3406     ;; the Expat license.
3407     (license license:gpl3+)))
3409 (define-public emacs-test-simple
3410   (package
3411     (name "emacs-test-simple")
3412     (version "1.3.0")
3413     (source
3414      (origin
3415        (method url-fetch)
3416        (uri (string-append "https://elpa.gnu.org/packages/test-simple-"
3417                            version ".el"))
3418        (sha256
3419         (base32
3420          "1yd61jc9ds95a5n09052kwc5gasy57g4lxr0jsff040brlyi9czz"))))
3421     (build-system emacs-build-system)
3422     (home-page "https://github.com/rocky/emacs-test-simple")
3423     (synopsis "Simple unit test framework for Emacs Lisp")
3424     (description
3425      "Test Simple is a simple unit test framework for Emacs Lisp.  It
3426 alleviates the need for context macros, enclosing specifications or required
3427 test tags.  It supports both interactive and non-interactive use.")
3428     (license license:gpl3+)))
3430 (define-public emacs-load-relative
3431   (package
3432     (name "emacs-load-relative")
3433     (version "1.3")
3434     (source
3435      (origin
3436        (method url-fetch)
3437        (uri (string-append "https://elpa.gnu.org/packages/load-relative-"
3438                            version ".el"))
3439        (sha256
3440         (base32
3441          "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps"))))
3442     (build-system emacs-build-system)
3443     (home-page "http://github.com/rocky/emacs-load-relative")
3444     (synopsis "Emacs Lisp relative file loading related functions")
3445     (description
3446      "Provides functions which facilitate writing multi-file Emacs packages
3447 and running from the source tree without having to \"install\" code or fiddle
3448 with @{load-path}.
3450 The main function, @code{load-relative}, loads an Emacs Lisp file relative to
3451 another (presumably currently running) Emacs Lisp file.")
3452     (license license:gpl3+)))
3454 (define-public emacs-loc-changes
3455   (package
3456     (name "emacs-loc-changes")
3457     (version "1.2")
3458     (source
3459      (origin
3460        (method url-fetch)
3461        (uri (string-append "https://elpa.gnu.org/packages/loc-changes-"
3462                            version ".el"))
3463        (sha256
3464         (base32
3465          "1x8fn8vqasayf1rb8a6nma9n6nbvkx60krmiahyb05vl5rrsw6r3"))))
3466     (build-system emacs-build-system)
3467     (home-page "https://github.com/rocky/emacs-loc-changes")
3468     (synopsis "Keeps track of positions even after buffer changes")
3469     (description
3470      "This Emacs package provides a mean to track important buffer positions
3471 after buffer changes.")
3472     (license license:gpl3+)))
3474 (define-public emacs-realgud
3475   (package
3476     (name "emacs-realgud")
3477     (version "1.4.5")
3478     (source
3479      (origin
3480        (method url-fetch)
3481        (uri (string-append "https://elpa.gnu.org/packages/realgud-"
3482                            version ".tar"))
3483        (sha256
3484         (base32
3485          "108wgxg7fb4byaiasgvbxv2hq7b00biq9f0mh9hy6vw4160y5w24"))))
3486     (build-system emacs-build-system)
3487     (arguments
3488      `(#:tests? #t
3489        #:phases
3490        (modify-phases %standard-phases
3491          (add-after 'set-emacs-load-path 'fix-autogen-script
3492            (lambda _
3493              (substitute* "autogen.sh"
3494                (("./configure") "sh configure"))))
3495          (add-after 'fix-autogen-script 'autogen
3496            (lambda _
3497              (setenv "CONFIG_SHELL" "sh")
3498              (invoke "sh" "autogen.sh")))
3499          (add-after 'fix-autogen-script 'set-home
3500            (lambda _
3501              (setenv "HOME" (getenv "TMPDIR"))))
3502          (add-before 'patch-el-files 'remove-realgud-pkg.el
3503            (lambda _
3504              ;; XXX: This file is auto-generated at some point and causes
3505              ;; substitute* to crash during the `patch-el-files' phase with:
3506              ;; ERROR: In procedure stat: No such file or directory:
3507              ;; "./realgud-pkg.el"
3508              (delete-file "./realgud-pkg.el")
3509              ;; FIXME: `patch-el-files' crashes on this file with error:
3510              ;; unable to locate "bashdb".
3511              (delete-file "./test/test-regexp-bashdb.el"))))
3512        #:include (cons* ".*\\.el$" %default-include)))
3513     (native-inputs
3514      `(("autoconf" ,autoconf)
3515        ("automake" ,automake)
3516        ("emacs-test-simple" ,emacs-test-simple)))
3517     (propagated-inputs
3518      `(("emacs-load-relative" ,emacs-load-relative)
3519        ("emacs-loc-changes" ,emacs-loc-changes)))
3520     (home-page "https://github.com/realgud/realgud/")
3521     (synopsis
3522      "Modular front-end for interacting with external debuggers")
3523     (description
3524      "RealGUD is a modular, extensible GNU Emacs front-end for interacting
3525 with external debuggers.  It integrates various debuggers such as gdb, pdb,
3526 ipdb, jdb, lldb, bashdb, zshdb, etc. and allows to visually step code in the
3527 sources.  Unlike GUD, it also supports running multiple debug sessions in
3528 parallel.")
3529     (license license:gpl3+)))
3531 (define-public emacs-request
3532   (package
3533     (name "emacs-request")
3534     (version "0.3.0")
3535     (source (origin
3536               (method git-fetch)
3537               (uri (git-reference
3538                     (url "https://github.com/tkf/emacs-request.git")
3539                     (commit (string-append "v" version))))
3540               (file-name (string-append name "-" version "-checkout"))
3541               (sha256
3542                (base32
3543                 "0wyxqbb35yqf6ci47531lk32d6fppamx9d8826kdz983vm87him7"))))
3544     (build-system emacs-build-system)
3545     (propagated-inputs
3546      `(("emacs-deferred" ,emacs-deferred)))
3547     (home-page "https://github.com/tkf/emacs-request")
3548     (synopsis "Package for speaking HTTP in Emacs Lisp")
3549     (description "This package provides a HTTP request library with multiple
3550 backends.  It supports url.el which is shipped with Emacs and the curl command
3551 line program.")
3552     (license license:gpl3+)))
3554 (define-public emacs-rudel
3555   (package
3556     (name "emacs-rudel")
3557     (version "0.3.1")
3558     (source
3559      (origin
3560        (method url-fetch)
3561        (uri (string-append "http://elpa.gnu.org/packages/rudel-"
3562                            version ".tar"))
3563        (sha256
3564         (base32
3565          "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz"))))
3566     (build-system emacs-build-system)
3567     (home-page "http://rudel.sourceforge.net/")
3568     (synopsis "Collaborative editing framework")
3569     (description
3570      "Rudel is a collaborative editing environment for GNU Emacs.  Its purpose
3571 is to share buffers with other users in order to edit the contents of those
3572 buffers collaboratively.  Rudel supports multiple backends to enable
3573 communication with other collaborative editors using different protocols,
3574 though currently Obby (for use with the Gobby editor) is the only
3575 fully-functional one.")
3576     (license license:gpl3+)))
3578 (define-public emacs-hydra
3579   (package
3580     (name "emacs-hydra")
3581     (version "0.14.0")
3582     (source
3583      (origin
3584        (method url-fetch)
3585        (uri (string-append "https://github.com/abo-abo/hydra/archive/"
3586                            version ".tar.gz"))
3587        (file-name (string-append name "-" version ".tar.gz"))
3588        (sha256
3589         (base32
3590          "0884k3ffwzhh6krbd8l7vvm184dkagb2jf4q8xzg72plln34qrm8"))))
3591     (build-system emacs-build-system)
3592     (home-page "https://github.com/abo-abo/hydra")
3593     (synopsis "Make Emacs bindings that stick around")
3594     (description
3595      "This package can be used to tie related commands into a family of short
3596 bindings with a common prefix---a Hydra.  Once you summon the Hydra (through
3597 the prefixed binding), all the heads can be called in succession with only a
3598 short extension.  Any binding that isn't the Hydra's head vanquishes the
3599 Hydra.  Note that the final binding, besides vanquishing the Hydra, will still
3600 serve its original purpose, calling the command assigned to it.  This makes
3601 the Hydra very seamless; it's like a minor mode that disables itself
3602 automatically.")
3603     (license license:gpl3+)))
3605 (define-public emacs-ivy
3606   (package
3607     (name "emacs-ivy")
3608     (version "0.10.0")
3609     (source
3610      (origin
3611        (method git-fetch)
3612        (uri (git-reference
3613              (url "https://github.com/abo-abo/swiper.git")
3614              (commit version)))
3615        (file-name (string-append name "-" version "-checkout"))
3616        (sha256
3617         (base32
3618          "14vnigqb5c3yi4q9ysw1fiwdqyqwyklqpb9wnjf81chm7s2mshnr"))))
3619     (build-system emacs-build-system)
3620     (arguments
3621      `(#:phases
3622        (modify-phases %standard-phases
3623          (add-after 'install 'install-doc
3624            (lambda* (#:key outputs #:allow-other-keys)
3625              (let* ((out (assoc-ref outputs "out"))
3626                     (info (string-append out "/share/info")))
3627                (with-directory-excursion "doc"
3628                  (unless (zero? (system* "makeinfo" "ivy.texi"))
3629                    (error "makeinfo failed"))
3630                  (install-file "ivy.info" info))))))))
3631     (propagated-inputs
3632      `(("emacs-hydra" ,emacs-hydra)))
3633     (native-inputs
3634      `(("texinfo" ,texinfo)))
3635     (home-page "http://oremacs.com/swiper/")
3636     (synopsis "Incremental vertical completion for Emacs")
3637     (description
3638      "This package provides @code{ivy-read} as an alternative to
3639 @code{completing-read} and similar functions.  No attempt is made to determine
3640 the best candidate.  Instead, the user can navigate candidates with
3641 @code{ivy-next-line} and @code{ivy-previous-line}.  The matching is done by
3642 splitting the input text by spaces and re-building it into a regular
3643 expression.")
3644     (license license:gpl3+)))
3646 (define-public emacs-avy
3647   (package
3648     (name "emacs-avy")
3649     (version "0.4.0")
3650     (source
3651      (origin
3652        (method url-fetch)
3653        (uri (string-append "https://github.com/abo-abo/avy/archive/"
3654                            version ".tar.gz"))
3655        (file-name (string-append name "-" version ".tar.gz"))
3656        (sha256
3657         (base32
3658          "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
3659     (build-system emacs-build-system)
3660     (home-page "https://github.com/abo-abo/avy")
3661     (synopsis "Tree-based completion for Emacs")
3662     (description
3663      "This package provides a generic completion method based on building a
3664 balanced decision tree with each candidate being a leaf.  To traverse the tree
3665 from the root to a desired leaf, typically a sequence of @code{read-key} can
3666 be used.
3668 In order for @code{read-key} to make sense, the tree needs to be visualized
3669 appropriately, with a character at each branch node.  So this completion
3670 method works only for things that you can see on your screen, all at once,
3671 such as the positions of characters, words, line beginnings, links, or
3672 windows.")
3673     (license license:gpl3+)))
3675 (define-public emacs-ace-window
3676   (package
3677     (name "emacs-ace-window")
3678     (version "0.9.0")
3679     (source
3680      (origin
3681        (method url-fetch)
3682        (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
3683                            version ".tar.gz"))
3684        (file-name (string-append name "-" version ".tar.gz"))
3685        (sha256
3686         (base32
3687          "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
3688     (build-system emacs-build-system)
3689     (propagated-inputs
3690      `(("emacs-avy" ,emacs-avy)))
3691     (home-page "https://github.com/abo-abo/ace-window")
3692     (synopsis "Quickly switch windows in Emacs")
3693     (description
3694      "@code{ace-window} is meant to replace @code{other-window}.
3695 In fact, when there are only two windows present, @code{other-window} is
3696 called.  If there are more, each window will have its first character
3697 highlighted.  Pressing that character will switch to that window.")
3698     (license license:gpl3+)))
3700 (define-public emacs-iedit
3701   (package
3702     (name "emacs-iedit")
3703     (version "0.9.9.9")
3704     (source
3705      (origin
3706        (method url-fetch)
3707        (uri (string-append "https://github.com/victorhge/iedit/archive/v"
3708                            version ".tar.gz"))
3709        (file-name (string-append name "-" version ".tar.gz"))
3710        (sha256
3711         (base32
3712          "1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
3713     (build-system emacs-build-system)
3714     (home-page "http://www.emacswiki.org/emacs/Iedit")
3715     (synopsis "Edit multiple regions in the same way simultaneously")
3716     (description
3717      "This package is an Emacs minor mode and allows you to edit one
3718 occurrence of some text in a buffer (possibly narrowed) or region, and
3719 simultaneously have other occurrences edited in the same way.
3721 You can also use Iedit mode as a quick way to temporarily show only the buffer
3722 lines that match the current text being edited.  This gives you the effect of
3723 a temporary @code{keep-lines} or @code{occur}.")
3724     (license license:gpl3+)))
3726 (define-public emacs-zoutline
3727   (let ((commit "b3ee0f0e0b916838c2d2c249beba74ffdb8d5699")
3728         (revision "0"))
3729     (package
3730       (name "emacs-zoutline")
3731       (version (git-version "0.1" revision commit))
3732       (home-page "https://github.com/abo-abo/zoutline")
3733       (source (origin
3734                 (method git-fetch)
3735                 (uri (git-reference (url home-page) (commit commit)))
3736                 (sha256
3737                  (base32
3738                   "0sd0017piw0dis6dhpq5dkqd3acisxqgipl7dj8gmc1vnswhdwr8"))
3739                 (file-name (git-file-name name version))))
3740       (build-system emacs-build-system)
3741       (synopsis "Simple outline library")
3742       (description
3743        "This library provides helpers for outlines.  Outlines allow users to
3744 navigate code in a tree-like fashion.")
3745       (license license:gpl3+))))
3747 (define-public emacs-lispy
3748   ;; Release 0.26.0 was almost 3 years ago, and there have been ~772 commits
3749   ;; since.
3750   (let ((commit "c2a358a7a15fcf056a5b7461a8e690b481b03b80")
3751         (revision "0"))
3752     (package
3753       (name "emacs-lispy")
3754       (version (git-version "0.26.0" revision commit))
3755       (home-page "https://github.com/abo-abo/lispy")
3756       (source (origin
3757                 (method git-fetch)
3758                 (uri (git-reference (url home-page) (commit commit)))
3759                 (sha256
3760                  (base32
3761                   "1g6756qqx2n4cx8jac6mlwayilsiyc5rz8nrqjnywvzc75xdinjd"))
3762                 (file-name (git-file-name name version))))
3763       (build-system emacs-build-system)
3764       (propagated-inputs
3765        `(("emacs-ace-window" ,emacs-ace-window)
3766          ("emacs-iedit" ,emacs-iedit)
3767          ("emacs-ivy" ,emacs-ivy)
3768          ("emacs-hydra" ,emacs-hydra)
3769          ("emacs-zoutline" ,emacs-zoutline)))
3770       (synopsis "Modal S-expression editing")
3771       (description
3772        "Due to the structure of Lisp syntax it's very rare for the programmer
3773 to want to insert characters right before \"(\" or right after \")\".  Thus
3774 unprefixed printable characters can be used to call commands when the point is
3775 at one of these special locations.  Lispy provides unprefixed keybindings for
3776 S-expression editing when point is at the beginning or end of an
3777 S-expression.")
3778       (license license:gpl3+))))
3780 (define-public emacs-lispyville
3781   ;; Later versions need a more recent Evil, with an evil-define-key*
3782   ;; supporting nil for the state.
3783   (let ((commit "b4291857ed6a49a67c4ea77522889ce51fb171ab")
3784         (revision "0"))
3785     (package
3786       (name "emacs-lispyville")
3787       (version (git-version "0.1" revision commit))
3788       (home-page "https://github.com/noctuid/lispyville")
3789       (source (origin
3790                 (method git-fetch)
3791                 (uri (git-reference (url home-page) (commit commit)))
3792                 (sha256
3793                  (base32
3794                   "095zibzc3naknahdrnb59g9rbljy8wz9rkc7rf8avb3wxlwvxhm3"))
3795                 (file-name (git-file-name name version))))
3796       (propagated-inputs
3797        `(("emacs-evil" ,emacs-evil)
3798          ("emacs-lispy" ,emacs-lispy)))
3799       (build-system emacs-build-system)
3800       (synopsis "Minor mode for integrating Evil with lispy")
3801       (description
3802        "LispyVille's main purpose is to provide a Lisp editing environment
3803 suited towards Evil users.  It can serve as a minimal layer on top of lispy
3804 for better integration with Evil, but it does not require the use of lispy’s
3805 keybinding style.  The provided commands allow for editing Lisp in normal
3806 state and will work even without lispy being enabled.")
3807       (license license:gpl3+))))
3809 (define-public emacs-clojure-mode
3810   (package
3811     (name "emacs-clojure-mode")
3812     (version "5.6.1")
3813     (source (origin
3814               (method url-fetch)
3815               (uri (string-append
3816                     "https://github.com/clojure-emacs/clojure-mode/archive/"
3817                     version ".tar.gz"))
3818               (file-name (string-append name "-" version ".tar.gz"))
3819               (sha256
3820                (base32
3821                 "1f4k1hncy5ygh4izn7mqfp744nnisrp9ywn2njknbjxx34ai1q88"))))
3822     (build-system emacs-build-system)
3823     (native-inputs
3824      `(("emacs-dash" ,emacs-dash)
3825        ("emacs-s" ,emacs-s)
3826        ("ert-runner" ,ert-runner)))
3827     (arguments
3828      `(#:tests? #t
3829        #:test-command '("ert-runner")))
3830     (home-page "https://github.com/clojure-emacs/clojure-mode")
3831     (synopsis "Major mode for Clojure code")
3832     (description
3833      "This Emacs package provides font-lock, indentation, navigation and basic
3834 refactoring for the @uref{http://clojure.org, Clojure programming language}.
3835 It is recommended to use @code{clojure-mode} with paredit or smartparens.")
3836     (license license:gpl3+)))
3838 (define-public emacs-epl
3839   (package
3840     (name "emacs-epl")
3841     (version "0.8")
3842     (source (origin
3843               (method url-fetch)
3844               (uri (string-append
3845                     "https://github.com/cask/epl/archive/"
3846                     version ".tar.gz"))
3847               (file-name (string-append name "-" version ".tar.gz"))
3848               (sha256
3849                (base32
3850                 "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
3851     (build-system emacs-build-system)
3852     (home-page "https://github.com/cask/epl")
3853     (synopsis "Emacs Package Library")
3854     (description
3855      "A package management library for Emacs, based on @code{package.el}.
3857 The purpose of this library is to wrap all the quirks and hassle of
3858 @code{package.el} into a sane API.")
3859     (license license:gpl3+)))
3861 (define-public emacs-queue
3862   (package
3863     (name "emacs-queue")
3864     (version "0.2")
3865     (source (origin
3866               (method url-fetch)
3867               (uri (string-append "https://elpa.gnu.org/packages/queue-"
3868                                   version ".el"))
3869               (sha256
3870                (base32
3871                 "0cx2848sqnnkkr4zisvqadzxngjyhmb36mh0q3if7q19yjjhmrkb"))))
3872     (build-system emacs-build-system)
3873     (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
3874     (synopsis "Queue data structure for Emacs")
3875     (description
3876      "This Emacs library provides queue data structure.  These queues can be
3877 used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
3878 stack, i.e. elements can be added to the front or back of the queue, and can
3879 be removed from the front.  This type of data structure is sometimes called an
3880 \"output-restricted deque\".")
3881     (license license:gpl3+)))
3883 (define-public emacs-pkg-info
3884   (package
3885     (name "emacs-pkg-info")
3886     (version "0.6")
3887     (source (origin
3888               (method url-fetch)
3889               (uri (string-append
3890                     "https://github.com/lunaryorn/pkg-info.el/archive/"
3891                     version ".tar.gz"))
3892               (file-name (string-append name "-" version ".tar.gz"))
3893               (sha256
3894                (base32
3895                 "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
3896     (build-system emacs-build-system)
3897     (propagated-inputs `(("emacs-epl" ,emacs-epl)))
3898     (home-page "https://github.com/lunaryorn/pkg-info.el")
3899     (synopsis "Information about Emacs packages")
3900     (description
3901      "This library extracts information from the installed Emacs packages.")
3902     (license license:gpl3+)))
3904 (define-public emacs-spinner
3905   (package
3906     (name "emacs-spinner")
3907     (version "1.7.3")
3908     (source (origin
3909               (method url-fetch)
3910               (uri (string-append "https://elpa.gnu.org/packages/spinner-"
3911                                   version ".el"))
3912               (sha256
3913                (base32
3914                 "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd"))))
3915     (build-system emacs-build-system)
3916     (home-page "https://github.com/Malabarba/spinner.el")
3917     (synopsis "Emacs mode-line spinner for operations in progress")
3918     (description
3919      "This Emacs package adds spinners and progress-bars to the mode-line for
3920 ongoing operations.")
3921     (license license:gpl3+)))
3923 (define-public emacs-sparql-mode
3924   (package
3925     (name "emacs-sparql-mode")
3926     (version "2.0.1")
3927     (source (origin
3928               (method url-fetch)
3929               (uri (string-append "https://github.com/ljos/sparql-mode/archive/"
3930                                   "v" version ".tar.gz"))
3931               (file-name (string-append name "-" version ".tar.gz"))
3932               (sha256
3933                (base32
3934                 "1s93mkllxnhy7fw616cnnc2danacdlarys0g3cn89drh0llh53cv"))))
3935     (build-system emacs-build-system)
3936     (home-page "https://github.com/ljos/sparql-mode")
3937     (synopsis "SPARQL mode for Emacs")
3938     (description "This package provides a major mode for Emacs that provides
3939 syntax highlighting for SPARQL.  It also provides a way to execute queries
3940 against a SPARQL HTTP endpoint, such as is provided by Fuseki.  It is also
3941 possible to query other endpoints like DBPedia.")
3942     (license license:gpl3+)))
3944 (define-public emacs-better-defaults
3945   (package
3946     (name "emacs-better-defaults")
3947     (version "0.1.3")
3948     (source
3949      (origin
3950        (method url-fetch)
3951        (uri (string-append "https://github.com/technomancy/better-defaults"
3952                            "/archive/" version ".tar.gz"))
3953        (file-name (string-append name "-" version ".tar.gz"))
3954        (sha256
3955         (base32
3956          "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
3957     (build-system emacs-build-system)
3958     (home-page "https://github.com/technomancy/better-defaults")
3959     (synopsis "Better defaults for Emacs")
3960     (description
3961      "Better defaults attempts to address the most obvious deficiencies of the
3962 Emacs default configuration in uncontroversial ways that nearly everyone can
3963 agree upon.")
3964     (license license:gpl3+)))
3966 (define-public emacs-eprime
3967   (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f"))
3968     (package
3969       (name "emacs-eprime")
3970       (version (string-append "20140513-" (string-take commit 7)))
3971       (source (origin
3972                 (method url-fetch)
3973                 (uri (string-append "https://raw.githubusercontent.com"
3974                                     "/AndrewHynes/eprime-mode/"
3975                                     commit "/eprime-mode.el"))
3976                 (file-name (string-append "eprime-" version ".el"))
3977                 (sha256
3978                  (base32
3979                   "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d"))))
3980       (build-system emacs-build-system)
3981       (home-page "https://github.com/AndrewHynes/eprime-mode")
3982       (synopsis "E-prime checking mode for Emacs")
3983       (description "This package provides an E-prime checking mode for Emacs
3984 that highlights non-conforming text.  The subset of the English language called
3985 E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
3986       (license license:gpl3+))))
3988 (define-public emacs-julia-mode
3989   ;; XXX: Upstream version remained stuck at 0.3.  See
3990   ;; <https://github.com/JuliaEditorSupport/julia-emacs/issues/46>.
3991   (let ((commit "115d4dc8a07445301772da8376b232fa8c7168f4")
3992         (revision "1"))
3993     (package
3994       (name "emacs-julia-mode")
3995       (version (string-append "0.3-" revision "." (string-take commit 8)))
3996       (source
3997        (origin
3998          (method git-fetch)
3999          (uri (git-reference
4000                (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
4001                (commit commit)))
4002          (file-name (string-append name "-" version "-checkout"))
4003          (sha256
4004           (base32
4005            "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
4006       (build-system emacs-build-system)
4007       (arguments
4008        `(#:tests? #t
4009          #:test-command '("emacs" "--batch"
4010                           "-l" "julia-mode-tests.el"
4011                           "-f" "ert-run-tests-batch-and-exit")))
4012       (home-page "https://github.com/JuliaEditorSupport/julia-emacs")
4013       (synopsis "Major mode for Julia")
4014       (description "This Emacs package provides a mode for the Julia
4015 programming language.")
4016       (license license:expat))))
4018 (define-public emacs-ess
4019   (package
4020     (name "emacs-ess")
4021     (version "16.10")
4022     (source (origin
4023               (method url-fetch)
4024               (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
4025                                   version ".tgz"))
4026               (sha256
4027                (base32
4028                 "04m8lwp3ylh2vl7k2bjjs7mxbm64j4sdckqpvnm9k0qhaqf02pjk"))
4029               (modules '((guix build utils)))
4030               (snippet
4031                '(begin
4032                   ;; Stop ESS from trying to bundle an external julia-mode.el.
4033                   (substitute* "lisp/Makefile"
4034                     (("^\tjulia-mode.elc\\\\\n") "")
4035                     (("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
4036                      "all: $(ELC) ess-custom.el"))
4037                   #t))))
4038     (build-system gnu-build-system)
4039     (arguments
4040      (let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
4041        `(#:make-flags (list (string-append "PREFIX=" %output)
4042                             (string-append "ETCDIR=" %output "/"
4043                                            ,base-directory "/etc")
4044                             (string-append "LISPDIR=" %output "/"
4045                                            ,base-directory))
4046          #:phases
4047          (modify-phases %standard-phases
4048            (delete 'configure)
4049            (add-before 'build 'more-shebang-patching
4050              (lambda* (#:key inputs #:allow-other-keys)
4051                (substitute* "Makeconf"
4052                  (("SHELL = /bin/sh")
4053                   (string-append "SHELL = " (which "sh"))))))
4054            ;; FIXME: the texlive-union insists on regenerating fonts.  It stores
4055            ;; them in HOME, so it needs to be writeable.
4056            (add-before 'build 'set-HOME
4057              (lambda _ (setenv "HOME" "/tmp") #t))
4058            (replace 'check
4059              (lambda _
4060                (zero? (system* "make" "test"))))))))
4061     (inputs
4062      `(("emacs" ,emacs-minimal)
4063        ("r-minimal" ,r-minimal)))
4064     (native-inputs
4065      `(("perl" ,perl)
4066        ("texinfo" ,texinfo)
4067        ("texlive" ,(texlive-union (list texlive-latex-natbib
4068                                         texlive-latex-seminar
4069                                         texlive-latex-hyperref
4070                                         texlive-tex-texinfo)))))
4071     (home-page "https://ess.r-project.org/")
4072     (synopsis "Emacs mode for statistical analysis programs")
4073     (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
4074 Emacs.  It is designed to support editing of scripts and interaction with
4075 various statistical analysis programs such as R and OpenBUGS.")
4076     (license license:gpl2+)))
4078 (define-public emacs-smex
4079   (package
4080     (name "emacs-smex")
4081     (version "3.0")
4082     (source (origin
4083               (method url-fetch)
4084               (uri (string-append "https://raw.githubusercontent.com"
4085                                   "/nonsequitur/smex/" version "/smex.el"))
4086               (file-name (string-append "smex-" version ".el"))
4087               (sha256
4088                (base32
4089                 "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
4090     (build-system emacs-build-system)
4091     (home-page "https://github.com/nonsequitur/smex/")
4092     (synopsis "M-x interface with Ido-style fuzzy matching")
4093     (description
4094      "Smex is a M-x enhancement for Emacs.  Built on top of Ido, it provides a
4095 convenient interface to your recently and most frequently used commands.  And
4096 to all the other commands, too.")
4097     (license license:gpl3+)))
4099 (define-public emacs-js2-mode
4100   (package
4101     (name "emacs-js2-mode")
4102     (version "20150909")
4103     (source (origin
4104               (method url-fetch)
4105               (uri (string-append "https://github.com/mooz/js2-mode/archive/"
4106                                   version ".tar.gz"))
4107               (file-name (string-append name "-" version ".tar.gz"))
4108               (sha256
4109                (base32
4110                 "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
4111     (build-system emacs-build-system)
4112     (home-page "https://github.com/mooz/js2-mode/")
4113     (synopsis "Improved JavaScript editing mode for Emacs")
4114     (description
4115      "Js2-mode provides a JavaScript major mode for Emacs that is more
4116 advanced than the built-in javascript-mode.  Features include accurate syntax
4117 highlighting using a recursive-descent parser, on-the-fly reporting of syntax
4118 errors and strict-mode warnings, smart line-wrapping within comments and
4119 strings, and code folding.")
4120     (license license:gpl3+)))
4122 (define-public emacs-markdown-mode
4123   (package
4124     (name "emacs-markdown-mode")
4125     (version "2.3")
4126     (source (origin
4127               (method url-fetch)
4128               (uri (string-append "https://raw.githubusercontent.com/jrblevin"
4129                                   "/markdown-mode/v" version
4130                                   "/markdown-mode.el"))
4131               (file-name (string-append "markdown-mode-" version ".el"))
4132               (sha256
4133                (base32
4134                 "152whyrq3dqlqy5wv4mdd94kmal19hs5kwaxjcp2gp2r97lsmdmi"))))
4135     (build-system emacs-build-system)
4136     (home-page "http://jblevins.org/projects/markdown-mode/")
4137     (synopsis "Emacs Major mode for Markdown files")
4138     (description
4139      "Markdown-mode is a major mode for editing Markdown-formatted text files
4140 in Emacs.")
4141     (license license:gpl3+)))
4143 (define-public emacs-edit-indirect
4144   (package
4145     (name "emacs-edit-indirect")
4146     (version "0.1.4")
4147     (source
4148      (origin
4149        (method url-fetch)
4150        (uri (string-append "https://github.com/Fanael/edit-indirect/archive/"
4151                            version ".tar.gz"))
4152        (file-name (string-append name "-" version ".tar.gz"))
4153        (sha256
4154         (base32
4155          "07kr58rd1p5j764wminsssazr73hy51yw8iqcsv5z2dwgj7msv71"))))
4156     (build-system emacs-build-system)
4157     (home-page "https://github.com/Fanael/edit-indirect")
4158     (synopsis "Edit regions in separate buffers")
4159     (description "This package allows you to edit regions in separate buffers,
4160 like @code{org-edit-src-code} but for arbitrary regions.")
4161     (license license:gpl3+)))
4163 (define-public emacs-projectile
4164   (package
4165     (name "emacs-projectile")
4166     (version "0.14.0")
4167     (source (origin
4168               (method url-fetch)
4169               (uri (string-append "https://raw.githubusercontent.com/bbatsov"
4170                                   "/projectile/v" version "/projectile.el"))
4171               (file-name (string-append "projectile-" version ".el"))
4172               (sha256
4173                (base32
4174                 "1ql1wnzhblbwnv66hf2y0wq45g71hh6s9inc090lmhm1vgylbd1f"))))
4175     (build-system emacs-build-system)
4176     (propagated-inputs
4177      `(("emacs-dash" ,emacs-dash)
4178        ("emacs-pkg-info" ,emacs-pkg-info)))
4179     (home-page "https://github.com/bbatsov/projectile")
4180     (synopsis "Manage and navigate projects in Emacs easily")
4181     (description
4182      "This library provides easy project management and navigation.  The
4183 concept of a project is pretty basic - just a folder containing special file.
4184 Currently git, mercurial and bazaar repos are considered projects by default.
4185 If you want to mark a folder manually as a project just create an empty
4186 .projectile file in it.")
4187     (license license:gpl3+)))
4189 (define-public emacs-elfeed
4190   (package
4191     (name "emacs-elfeed")
4192     (version "3.0.0")
4193     (source (origin
4194               (method url-fetch)
4195               (uri (string-append "https://github.com/skeeto/elfeed/archive/"
4196                                   version ".tar.gz"))
4197               (file-name (string-append name "-" version ".tar.gz"))
4198               (sha256
4199                (base32
4200                 "1wkdrxr6zzqb48czqqv34l87bx8aqjk1739ddqg933aqh241kfvn"))))
4201     (build-system emacs-build-system)
4202     (arguments
4203      `(#:tests? #t
4204        #:test-command '("make" "test")))
4205     (home-page "https://github.com/skeeto/elfeed")
4206     (synopsis "Atom/RSS feed reader for Emacs")
4207     (description
4208      "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
4209 and RSS, with a user interface inspired by notmuch.")
4210     (license license:gpl3+)))
4212 (define-public emacs-rainbow-delimiters
4213   (package
4214     (name "emacs-rainbow-delimiters")
4215     (version "2.1.3")
4216     (source (origin
4217               (method url-fetch)
4218               (uri (string-append "https://raw.githubusercontent.com/Fanael"
4219                                   "/rainbow-delimiters/" version
4220                                   "/rainbow-delimiters.el"))
4221               (file-name (string-append "rainbow-delimiters-" version ".el"))
4222               (sha256
4223                (base32
4224                 "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
4225     (build-system emacs-build-system)
4226     (home-page "https://github.com/Fanael/rainbow-delimiters")
4227     (synopsis "Highlight brackets according to their depth")
4228     (description
4229      "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
4230 highlights parentheses, brackets, and braces according to their depth.  Each
4231 successive level is highlighted in a different color, making it easy to spot
4232 matching delimiters, orient yourself in the code, and tell which statements
4233 are at a given level.")
4234     (license license:gpl3+)))
4236 (define-public emacs-rainbow-identifiers
4237   (package
4238     (name "emacs-rainbow-identifiers")
4239     (version "0.2.2")
4240     (source (origin
4241               (method url-fetch)
4242               (uri (string-append "https://raw.githubusercontent.com/Fanael"
4243                                   "/rainbow-identifiers/" version
4244                                   "/rainbow-identifiers.el"))
4245               (file-name (string-append "rainbow-identifiers-" version ".el"))
4246               (sha256
4247                (base32
4248                 "0325abxj47k0g1i8nqrq70w2wr6060ckhhf92krv1s072b3jzm31"))))
4249     (build-system emacs-build-system)
4250     (home-page "https://github.com/Fanael/rainbow-identifiers")
4251     (synopsis "Highlight identifiers in source code")
4252     (description
4253      "Rainbow identifiers mode is an Emacs minor mode providing highlighting of
4254 identifiers based on their names.  Each identifier gets a color based on a hash
4255 of its name.")
4256     (license license:bsd-2)))
4258 (define-public emacs-rainbow-mode
4259   (package
4260     (name "emacs-rainbow-mode")
4261     (version "0.13")
4262     (source (origin
4263               (method url-fetch)
4264               (uri (string-append
4265                     "http://elpa.gnu.org/packages/rainbow-mode-" version ".el"))
4266               (sha256
4267                (base32
4268                 "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl"))))
4269     (build-system emacs-build-system)
4270     (home-page "http://elpa.gnu.org/packages/rainbow-mode.html")
4271     (synopsis "Colorize color names in buffers")
4272     (description
4273      "This minor mode sets background color to strings that match color
4274 names, e.g. #0000ff is displayed in white with a blue background.")
4275     (license license:gpl3+)))
4277 (define-public emacs-visual-fill-column
4278   (package
4279     (name "emacs-visual-fill-column")
4280     (version "1.11")
4281     (source (origin
4282               (method url-fetch)
4283               (uri (string-append "https://codeload.github.com/joostkremers/"
4284                                   "visual-fill-column/tar.gz/" version))
4285               (file-name (string-append name "-" version ".tar.gz"))
4286               (sha256
4287                (base32
4288                 "13jnviakp607zcms7f8ams56mr8wffnq1pghlc6fvqs39663pgwh"))))
4289     (build-system emacs-build-system)
4290     (home-page "https://github.com/joostkremers/visual-fill-column")
4291     (synopsis "Fill-column for visual-line-mode")
4292     (description
4293      "@code{visual-fill-column-mode} is a small Emacs minor mode that mimics
4294 the effect of @code{fill-column} in @code{visual-line-mode}.  Instead of
4295 wrapping lines at the window edge, which is the standard behaviour of
4296 @code{visual-line-mode}, it wraps lines at @code{fill-column}.  If
4297 @code{fill-column} is too large for the window, the text is wrapped at the
4298 window edge.")
4299     (license license:gpl3+)))
4301 (define-public emacs-writeroom
4302   (package
4303     (name "emacs-writeroom")
4304     (version "3.7")
4305     (source (origin
4306               (method url-fetch)
4307               (uri (string-append
4308                     "https://github.com/joostkremers/writeroom-mode/archive/"
4309                     version ".tar.gz"))
4310               (file-name (string-append name "-" version ".tar.gz"))
4311               (sha256
4312                (base32
4313                 "0yqgp5h3kvvpgva4azakb2wnjl7gsyh45glf75crspv3xyq57f2r"))))
4314     (build-system emacs-build-system)
4315     (propagated-inputs
4316      `(("emacs-visual-fill-column" ,emacs-visual-fill-column)))
4317     (home-page "https://github.com/joostkremers/writeroom-mode")
4318     (synopsis "Distraction-free writing for Emacs")
4319     (description
4320      "This package defines a minor mode for distraction-free writing.  Some of
4321 the default effects include entering fullscreen, deleting other windows of the
4322 current frame, disabling the mode line, and adding margins to the buffer that
4323 restrict the text width to 80 characters.")
4324     (license license:bsd-3)))
4326 (define-public emacs-ido-completing-read+
4327   (package
4328     (name "emacs-ido-completing-read+")
4329     (version "3.12")
4330     (source (origin
4331               (method url-fetch)
4332               (uri (string-append "https://raw.githubusercontent.com"
4333                                   "/DarwinAwardWinner/ido-ubiquitous/v"
4334                                   version "/ido-completing-read+.el"))
4335               (file-name (string-append "ido-completing-read+-" version ".el"))
4336               (sha256
4337                (base32
4338                 "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
4339     (build-system emacs-build-system)
4340     (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
4341     (synopsis "Replacement for completing-read using ido")
4342     (description
4343      "The ido-completing-read+ function is a wrapper for ido-completing-read.
4344 Importantly, it detects edge cases that ordinary ido cannot handle and either
4345 adjusts them so ido can handle them, or else simply falls back to the standard
4346 Emacs completion function instead.")
4347     (license license:gpl3+)))
4349 (define-public emacs-ido-ubiquitous
4350   (package
4351     (name "emacs-ido-ubiquitous")
4352     (version "3.12")
4353     (source (origin
4354               (method url-fetch)
4355               (uri (string-append "https://raw.githubusercontent.com"
4356                                   "/DarwinAwardWinner/ido-ubiquitous/v"
4357                                   version "/ido-ubiquitous.el"))
4358               (file-name (string-append "ido-ubiquitous-" version ".el"))
4359               (sha256
4360                (base32
4361                 "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
4362     (build-system emacs-build-system)
4363     (propagated-inputs
4364      `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
4365     (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
4366     (synopsis "Use ido (nearly) everywhere")
4367     (description
4368      "Ido-ubiquitous enables ido-style completion for almost every function
4369 that uses the standard completion function completing-read.")
4370   (license license:gpl3+)))
4372 (define-public emacs-yaml-mode
4373   (package
4374     (name "emacs-yaml-mode")
4375     (version "0.0.13")
4376     (source (origin
4377               (method url-fetch)
4378               (uri (string-append "https://raw.githubusercontent.com/yoshiki"
4379                                   "/yaml-mode/v" version "/yaml-mode.el"))
4380               (file-name (string-append "yaml-mode-" version ".el"))
4381               (sha256
4382                (base32
4383                 "0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
4384     (build-system emacs-build-system)
4385     (home-page "https://github.com/yoshiki/yaml-mode")
4386     (synopsis "Major mode for editing YAML files")
4387     (description
4388      "Yaml-mode is an Emacs major mode for editing files in the YAML data
4389 serialization format.  It was initially developed by Yoshiki Kurihara and many
4390 features were added by Marshall Vandegrift.  As YAML and Python share the fact
4391 that indentation determines structure, this mode provides indentation and
4392 indentation command behavior very similar to that of python-mode.")
4393     (license license:gpl3+)))
4395 (define-public emacs-web-mode
4396   (package
4397     (name "emacs-web-mode")
4398     (version "14")
4399     (source (origin
4400               (method url-fetch)
4401               (uri (string-append "https://raw.githubusercontent.com/fxbois"
4402                                   "/web-mode/v" version "/web-mode.el"))
4403               (file-name (string-append "web-mode-" version ".el"))
4404               (sha256
4405                (base32
4406                 "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
4407     (build-system emacs-build-system)
4408     (synopsis "Major mode for editing web templates")
4409     (description "Web-mode is an Emacs major mode for editing web templates
4410 aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
4411 client/server side engines).  Web-mode is compatible with many template
4412 engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
4413 Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
4414 Dust.js, React/JSX, Angularjs, ejs, etc.")
4415     (home-page "http://web-mode.org/")
4416     (license license:gpl3+)))
4418 (define-public emacs-wgrep
4419   (package
4420     (name "emacs-wgrep")
4421     (version "2.1.10")
4422     (source (origin
4423               (method url-fetch)
4424               (uri (string-append
4425                     "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
4426                     version ".tar.gz"))
4427               (file-name (string-append name "-" version ".tar.gz"))
4428               (sha256
4429                (base32
4430                 "1r2bpypar70xg6dsx12x1k74f39ww930rday7rgqpyknzsx1k4l1"))))
4431     (build-system emacs-build-system)
4432     (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
4433     (synopsis "Edit a grep buffer and apply those changes to the files")
4434     (description
4435      "Emacs wgrep allows you to edit a grep buffer and apply those changes to
4436 the file buffer.")
4437     (license license:gpl3+)))
4439 (define-public emacs-helm
4440   (package
4441     (name "emacs-helm")
4442     (version "2.9.0")
4443     (source (origin
4444               (method url-fetch)
4445               (uri (string-append
4446                     "https://github.com/" name "/helm/archive/v"
4447                     version ".tar.gz"))
4448               (file-name (string-append name "-" version ".tar.gz"))
4449               (sha256
4450                (base32
4451                 "1798gn0za11cxdbi436javfczv4abniccxcl0jppl463r8lzb8is"))))
4452     (build-system emacs-build-system)
4453     (propagated-inputs
4454      `(("emacs-async" ,emacs-async)
4455        ("emacs-popup" ,emacs-popup)))
4456     (home-page "https://emacs-helm.github.io/helm/")
4457     (synopsis "Incremental completion and selection narrowing
4458 framework for Emacs")
4459     (description "Helm is incremental completion and selection narrowing
4460 framework for Emacs.  It will help steer you in the right direction when
4461 you're looking for stuff in Emacs (like buffers, files, etc).  Helm is a fork
4462 of @code{anything.el} originally written by Tamas Patrovic and can be
4463 considered to be its successor.  Helm sets out to clean up the legacy code in
4464 @code{anything.el} and provide a cleaner, leaner and more modular tool, that's
4465 not tied in the trap of backward compatibility.")
4466     (license license:gpl3+)))
4468 (define-public emacs-helm-swoop
4469   (package
4470     (name "emacs-helm-swoop")
4471     (version "1.7.4")
4472     (source (origin
4473               (method url-fetch)
4474               (uri (string-append
4475                     "https://github.com/ShingoFukuyama/helm-swoop/archive/"
4476                     version
4477                     ".tar.gz"))
4478               (file-name (string-append name "-" version ".tar.gz"))
4479               (sha256
4480                (base32
4481                 "1ssivsjzlnkg049cg993l8fp09l5nhpz6asj7w5c91zp5kpc6fh7"))))
4482     (build-system emacs-build-system)
4483     (propagated-inputs
4484      `(("emacs-helm" ,emacs-helm)))
4485     (home-page "https://github.com/ShingoFukuyama/helm-swoop")
4486     (synopsis "Filter and jump to lines in an Emacs buffer using Helm")
4487     (description
4488      "This package builds on the Helm interface to provide several commands
4489 for search-based navigation of buffers.")
4490     (license license:gpl2+)))
4492 (define-public emacs-helm-projectile
4493   (package
4494     (name "emacs-helm-projectile")
4495     (version "0.14.0")
4496     (source (origin
4497               (method url-fetch)
4498               (uri (string-append
4499                     "https://github.com/bbatsov/helm-projectile/archive/v"
4500                     version
4501                     ".tar.gz"))
4502               (file-name (string-append name "-" version ".tar.gz"))
4503               (sha256
4504                (base32
4505                 "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5"))))
4506     (build-system emacs-build-system)
4507     (propagated-inputs
4508      `(("emacs-dash" ,emacs-dash)
4509        ("emacs-helm" ,emacs-helm)
4510        ("emacs-projectile" ,emacs-projectile)))
4511     (home-page "https://github.com/bbatsov/helm-projectile")
4512     (synopsis "Helm integration for Projectile")
4513     (description
4514      "This Emacs library provides a Helm interface for Projectile.")
4515     (license license:gpl3+)))
4517 (define-public emacs-helm-make
4518   (let ((commit "feae8df22bc4b20705ea08ac9adfc2b43bb348d0")
4519         (revision "1"))
4520     (package
4521       (name "emacs-helm-make")
4522       (version (string-append "0.1.0-" revision "." (string-take commit 7)))
4523       (source
4524        (origin
4525          (method git-fetch)
4526          (uri (git-reference
4527                (url "https://github.com/abo-abo/helm-make.git")
4528                (commit commit)))
4529          (file-name (string-append name "-" version "-checkout"))
4530          (sha256
4531           (base32
4532            "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam"))))
4533       (build-system emacs-build-system)
4534       (propagated-inputs
4535        `(("emacs-helm" ,emacs-helm)
4536          ("emacs-projectile" ,emacs-projectile)))
4537       (home-page "https://github.com/abo-abo/helm-make")
4538       (synopsis "Select a Makefile target with helm")
4539       (description "@code{helm-make} or @code{helm-make-projectile} will give
4540 you a @code{helm} selection of directory Makefile's targets.  Selecting a
4541 target will call @code{compile} on it.")
4542       (license license:gpl3+))))
4544 (define-public emacs-cider
4545   (package
4546     (name "emacs-cider")
4547     (version "0.15.1")
4548     (source (origin
4549               (method url-fetch)
4550               (uri (string-append
4551                     "https://github.com/clojure-emacs/cider/archive/v"
4552                     version ".tar.gz"))
4553               (file-name (string-append name "-" version ".tar.gz"))
4554               (sha256
4555                (base32
4556                 "1j5hlmi14ypszv1f9nvq0jjlz7i742flg0ny3055l7i4x089xx6g"))))
4557     (build-system emacs-build-system)
4558     (arguments
4559      '(#:exclude                        ; Don't exclude 'cider-test.el'.
4560        '("^\\.dir-locals\\.el$" "^test/")))
4561     (propagated-inputs
4562      `(("emacs-clojure-mode" ,emacs-clojure-mode)
4563        ("emacs-spinner" ,emacs-spinner)
4564        ("emacs-pkg-info" ,emacs-pkg-info)
4565        ("emacs-queue" ,emacs-queue)))
4566     (home-page "https://cider.readthedocs.org/")
4567     (synopsis "Clojure development environment for Emacs")
4568     (description
4569      "CIDER (Clojure Interactive Development Environment that Rocks) aims to
4570 provide an interactive development experience similar to the one you'd get
4571 when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
4572 Geiser) and Smalltalk.
4574 CIDER is the successor to the now deprecated combination of using SLIME +
4575 swank-clojure for Clojure development.
4577 There are plenty of differences between CIDER and SLIME, but the core ideas
4578 are pretty much the same (and SLIME served as the principle inspiration for
4579 CIDER).")
4580     (license license:gpl3+)))
4582 ;; There hasn't been a tag or release since 2015, so we take the latest
4583 ;; commit.
4584 (define-public emacs-sly
4585   (let ((commit "486bfbe95612bcdc0960c490207970a188e0fbb9")
4586         (revision "1"))
4587     (package
4588       (name "emacs-sly")
4589       (version (string-append "1.0.0-" revision "." (string-take commit 9)))
4590       (source
4591        (origin
4592          (method git-fetch)
4593          (uri (git-reference
4594                (url "https://github.com/joaotavora/sly.git")
4595                (commit commit)))
4596          (file-name (git-file-name name version))
4597          (sha256
4598           (base32
4599            "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l"))))
4600       (build-system emacs-build-system)
4601       (arguments
4602        `(#:include (cons "^lib\\/" %default-include)
4603          #:phases
4604          ;; The package provides autoloads.
4605          (modify-phases %standard-phases
4606            (delete 'make-autoloads))))
4607       (home-page "https://github.com/joaotavora/sly")
4608       (synopsis "Sylvester the Cat's Common Lisp IDE")
4609       (description
4610        "SLY is Sylvester the Cat's Common Lisp IDE.  SLY is a fork of SLIME, and
4611 contains the following improvements over it:
4613 @enumerate
4614 @item Completely redesigned REPL based on Emacs's own full-featured
4615   @code{comint.el}
4616 @item Live code annotations via a new @code{sly-stickers} contrib
4617 @item Consistent interactive button interface.  Everything can be copied to
4618   the REPL.
4619 @item Multiple inspectors with independent history
4620 @item Regexp-capable @code{M-x sly-apropos}
4621 @item Contribs are first class SLY citizens and enabled by default
4622 @item Use ASDF to loads contribs on demand.
4623 @end enumerate
4625 SLY tracks SLIME's bugfixes and all its familar features (debugger, inspector,
4626 xref, etc...) are still available, but with better integration.")
4627       (license license:gpl3+))))
4629 (define-public emacs-lua-mode
4630   (let ((commit "652e299cb967fccca827dda381d61a9c144d97de")
4631         (revision "1"))
4632     (package
4633       (name "emacs-lua-mode")
4634       (version (string-append "20151025." revision "-" (string-take commit 9)))
4635       (home-page "https://github.com/immerrr/lua-mode/")
4636       (source (origin
4637                 (method git-fetch)
4638                 (uri (git-reference
4639                       (url home-page)
4640                       (commit commit)))
4641                 (file-name (string-append name "-" version ".checkout"))
4642                 (sha256
4643                  (base32
4644                   "053025k930wh0lak6rc1973ynfrmm8zsyzfqhhd39x7abkl41hc9"))))
4645       (build-system emacs-build-system)
4646       (synopsis "Major mode for lua")
4647       (description
4648        "This Emacs package provides a mode for @uref{https://www.lua.org/,
4649 Lua programing language}.")
4650       (license license:gpl2+))))
4652 (define-public emacs-ebuild-mode
4653   (package
4654     (name "emacs-ebuild-mode")
4655     (version "1.37")
4656     (source (origin
4657               (method url-fetch)
4658               (uri (string-append
4659                     "https://dev.gentoo.org/~ulm/emacs/ebuild-mode"
4660                     "-" version ".tar.xz"))
4661               (file-name (string-append name "-" version ".tar.xz"))
4662               (sha256
4663                (base32
4664                 "07dzrdjjczkxdfdgi60h4jjkvzi4p0k9rij2wpfp8s03ay3qldpp"))))
4665     (build-system emacs-build-system)
4666     (home-page "https://devmanual.gentoo.org")
4667     (synopsis "Major modes for Gentoo package files")
4668     (description
4669      "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42
4670 news items, openrc and runscripts.")
4671     (license license:gpl2+)))
4673 (define-public emacs-evil
4674   (package
4675     (name "emacs-evil")
4676     (version "1.2.13")
4677     (source
4678      (origin
4679        (method url-fetch)
4680        (uri (string-append "https://github.com/emacs-evil/evil/archive/"
4681                            version ".tar.gz"))
4682        (file-name (string-append name "-" version ".tar.gz"))
4683        (sha256
4684         (base32
4685          "1z63zsxmsc6mh74wv6065carwqmgs7b7lz5044s12xvgsjfbwi8h"))))
4686     (build-system emacs-build-system)
4687     (propagated-inputs
4688      `(("emacs-undo-tree" ,emacs-undo-tree)
4689        ("emacs-goto-chg" ,emacs-goto-chg)))
4690     (home-page "https://github.com/emacs-evil/evil")
4691     (synopsis "Extensible Vi layer for Emacs")
4692     (description
4693      "Evil is an extensible vi layer for Emacs.  It emulates the
4694 main features of Vim, and provides facilities for writing custom
4695 extensions.")
4696     (license license:gpl3+)))
4698 (define-public emacs-evil-collection
4699   (let ((commit "f40704a57fd33b4bfad64147a2b771fc8961fdfc")
4700         (revision "1"))
4701     (package
4702       (name "emacs-evil-collection")
4703       (version (git-version "20180425" revision commit))
4704       (source (origin
4705                 (method git-fetch)
4706                 (uri (git-reference
4707                       (url "https://github.com/emacs-evil/evil-collection")
4708                       (commit commit)))
4709                 (file-name (string-append name "-" version "-checkout"))
4710                 (sha256
4711                  (base32
4712                   "0qn19k0f3isnbi1hkmcf3qjxbyvp23m5ak5ny7623qgwb2nwz1l5"))))
4713       (build-system emacs-build-system)
4714       (propagated-inputs
4715        `(("emacs-evil" ,emacs-evil)))
4716       (home-page "https://github.com/emacs-evil/evil-collection")
4717       (synopsis "Collection of Evil bindings for many major and minor modes")
4718       (description "This is a collection of Evil bindings for the parts of
4719 Emacs that Evil does not cover properly by default, such as @code{help-mode},
4720 @code{M-x calendar}, Eshell and more.")
4721       (license license:gpl3+))))
4723 (define-public emacs-goto-chg
4724   (package
4725     (name "emacs-goto-chg")
4726     (version "1.6")
4727     (source
4728      (origin
4729        (method url-fetch)
4730        ;; There is no versioned source.
4731        (uri "https://www.emacswiki.org/emacs/download/goto-chg.el")
4732        (file-name (string-append "goto-chg-" version ".el"))
4733        (sha256
4734         (base32
4735          "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"))))
4736     (build-system emacs-build-system)
4737     ;; There is no other home page.
4738     (home-page "https://www.emacswiki.org/emacs/goto-chg.el")
4739     (synopsis "Go to the last change in the Emacs buffer")
4740     (description
4741      "This package provides @code{M-x goto-last-change} command that goes to
4742 the point of the most recent edit in the current Emacs buffer.  When repeated,
4743 go to the second most recent edit, etc.  Negative argument, @kbd{C-u -}, is
4744 used for reverse direction.")
4745     (license license:gpl2+)))
4747 (define-public emacs-monroe
4748   (package
4749     (name "emacs-monroe")
4750     (version "0.3.1")
4751     (source
4752       (origin
4753         (method url-fetch)
4754         (uri (string-append "https://github.com/sanel/monroe/archive/"
4755                             version ".tar.gz"))
4756         (file-name (string-append name "-" version ".tar.gz"))
4757         (sha256
4758           (base32
4759             "0icdx8shkd951phlnmcq1vqaxp1l667q5rjscskc5r22aylakh4w"))))
4760     (build-system emacs-build-system)
4761     (home-page "https://github.com/sanel/monroe")
4762     (synopsis "Clojure nREPL client for Emacs")
4763     (description
4764       "Monroe is a nREPL client for Emacs, focused on simplicity and easy
4765 distribution, primarily targeting Clojure users")
4766     (license license:gpl3+)))
4768 (define-public emacs-orgalist
4769   (package
4770     (name "emacs-orgalist")
4771     (version "1.7")
4772     (source
4773      (origin
4774        (method url-fetch)
4775        (uri (string-append "https://elpa.gnu.org/packages/"
4776                            "orgalist-" version ".el"))
4777        (sha256
4778         (base32
4779          "13dl0l727vlny3y88gqpngcy90ly5r719s1pbmkva5gmcryb68xr"))))
4780     (build-system emacs-build-system)
4781     (home-page "http://elpa.gnu.org/packages/orgalist.html")
4782     (synopsis "Manage Org-like lists in non-Org buffers")
4783     (description "Write Org mode's plain lists in non-Org buffers.  More
4784 specifically, Orgalist supports the syntax of Org mode for numbered,
4785 unnumbered, description items, checkboxes, and counter cookies.
4787 The library also implements radio lists, i.e., lists written in Org
4788 syntax later translated into the host format, e.g., LaTeX or HTML.")
4789     (license license:gpl3+)))
4791 (define-public emacs-writegood-mode
4792   (package
4793     (name "emacs-writegood-mode")
4794     (version "2.0.2")
4795     (home-page "https://github.com/bnbeckwith/writegood-mode")
4796     (source (origin
4797               (method git-fetch)
4798               (uri (git-reference
4799                     (url home-page)
4800                     (commit (string-append "v" version))))
4801               (sha256
4802                (base32
4803                 "1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b"))
4804               (file-name (string-append name "-checkout"))))
4805     (build-system emacs-build-system)
4806     (synopsis "Polish up poor writing on the fly")
4807     (description
4808      "This minor mode tries to find and highlight problems with your writing
4809 in English as you type.  It primarily detects \"weasel words\" and abuse of
4810 passive voice.")
4811     (license license:gpl3+)))
4813 (define-public emacs-neotree
4814   (package
4815     (name "emacs-neotree")
4816     (version "0.5.2")
4817     (home-page "https://github.com/jaypei/emacs-neotree")
4818     (source (origin
4819               (method url-fetch)
4820               (uri (string-append
4821                     "https://github.com/jaypei/" name
4822                     "/archive/" version ".tar.gz"))
4823               (sha256
4824                (base32
4825                 "1zd6dchwyijnf7kgchfcp51gs938l204dk9z6mljrfqf2zy0gp12"))
4826               (file-name (string-append name "-" version ".tar.gz"))))
4827     (build-system emacs-build-system)
4828     (synopsis "Folder tree view for Emacs")
4829     (description "This Emacs package provides a folder tree view.")
4830     (license license:gpl3+)))
4832 (define-public emacs-org
4833   (package
4834     (name "emacs-org")
4835     ;; emacs-org-contrib inherits from this package.  Please update its sha256
4836     ;; checksum as well.
4837     (version "9.1.13")
4838     (source (origin
4839               (method url-fetch)
4840               (uri (string-append "http://elpa.gnu.org/packages/org-"
4841                                   version ".tar"))
4842               (sha256
4843                (base32
4844                 "1vx0n32gvrgy2bl2b4pvxf00cywxwm57gi46f2b2zlrnmd5n85pr"))))
4845     (build-system emacs-build-system)
4846     (home-page "https://orgmode.org/")
4847     (synopsis "Outline-based notes management and organizer")
4848     (description "Org is an Emacs mode for keeping notes, maintaining TODO
4849 lists, and project planning with a fast and effective lightweight markup
4850 language.  It also is an authoring system with unique support for literate
4851 programming and reproducible research.")
4852     (license license:gpl3+)))
4854 (define-public emacs-org-contrib
4855   (package
4856     (inherit emacs-org)
4857     (name "emacs-org-contrib")
4858     (version "20180507")
4859     (source (origin
4860               (method url-fetch)
4861               (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
4862                                   version ".tar"))
4863               (sha256
4864                (base32
4865                 "190iwjpdjrhg7gl2d4bri2y0y679vlrwd841r6dvhza0yy338d2d"))))
4866     (arguments
4867      `(#:modules ((guix build emacs-build-system)
4868                   (guix build utils)
4869                   (guix build emacs-utils)
4870                   (ice-9 ftw)
4871                   (srfi srfi-1))
4872        #:phases
4873        (modify-phases %standard-phases
4874          (add-after 'install 'delete-org-files
4875            (lambda* (#:key inputs outputs #:allow-other-keys)
4876              (let* ((out (assoc-ref outputs "out"))
4877                     (org (assoc-ref inputs "emacs-org"))
4878                     (contrib-files
4879                      (map basename (find-files out)))
4880                     (org+contrib-files
4881                      (map basename (find-files org)))
4882                     (duplicates (lset-intersection
4883                                  string=? contrib-files org+contrib-files)))
4884                (with-directory-excursion
4885                    (string-append
4886                     out "/share/emacs/site-lisp/guix.d/org-contrib-" ,version)
4887                  (for-each delete-file duplicates))
4888                #t))))))
4889     (propagated-inputs
4890      `(("emacs-org" ,emacs-org)
4891        ("emacs-scel" ,emacs-scel)))
4892     (synopsis "Contributed packages to Org mode")
4893     (description "Org is an Emacs mode for keeping notes, maintaining TODO
4894 lists, and project planning with a fast and effective plain-text system.
4896 This package is equivalent to org-plus-contrib, but only includes additional
4897 files that you would find in @file{contrib/} from the git repository.")))
4899 (define-public emacs-flx
4900   (package
4901     (name "emacs-flx")
4902     (version "0.6.1")
4903     (source
4904      (origin
4905        (method url-fetch)
4906        (uri (string-append "https://github.com/lewang/"
4907                            "flx/archive/v" version ".tar.gz"))
4908        (sha256
4909         (base32
4910          "0bkcpnf1j4i2fcc2rllwbz62l00sw2mcia6rm5amgwvlkqavmkv6"))
4911        (file-name (string-append name "-" version ".tar.gz"))))
4912     (build-system emacs-build-system)
4913     (home-page "https://github.com/lewang/flx")
4914     (synopsis "Fuzzy matching for Emacs")
4915     (description
4916      "Flx provides fuzzy matching for emacs a la sublime text.
4917 The sorting algorithm is a balance between word beginnings (abbreviation)
4918 and contiguous matches (substring).  The longer the substring match,
4919 the higher it scores. This maps well to how we think about matching.
4920 Flx has support for ido (interactively do things) through flx-ido.")
4921     (license license:gpl3+)))
4923 (define-public emacs-cyberpunk-theme
4924   (package
4925     (name "emacs-cyberpunk-theme")
4926     (version "1.19")
4927     (source
4928      (origin
4929        (method url-fetch)
4930        (uri (string-append "https://github.com/n3mo/cyberpunk-theme.el/"
4931                            "archive/" version ".tar.gz"))
4932        (sha256
4933         (base32
4934          "05l5fxw1mn5py6mfhxrzyqjq0d8m5m1akfi46vrgh13r414jffvv"))
4935        (file-name (string-append name "-" version ".tar.gz"))))
4936     (build-system emacs-build-system)
4937     (home-page "https://github.com/n3mo/cyberpunk-theme.el")
4938     (synopsis "Cyberpunk theme for emacs built-in color theme support")
4939     (description
4940      "Cyberpunk color theme for the emacs 24+ built-in color theme support
4941 known loosely as deftheme.  Many mode-specific customizations are included.")
4942     (license license:gpl3+)))
4944 (define-public emacs-danneskjold-theme
4945   (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57")
4946          (revision "1"))
4947     (package
4948       (name "emacs-danneskjold-theme")
4949       (version (string-append "0.0.0-" revision "." (string-take commit 7)))
4950       (home-page "https://github.com/rails-to-cosmos/danneskjold-theme")
4951       (source
4952        (origin
4953          (method git-fetch)
4954          (uri (git-reference
4955                (url home-page)
4956                (commit commit)))
4957          (file-name (string-append name "-" version "-checkout"))
4958          (sha256
4959           (base32
4960            "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
4961       (build-system emacs-build-system)
4962       (arguments
4963        `(#:phases
4964          (modify-phases %standard-phases
4965            (add-after 'unpack 'delete-screenshots
4966              (lambda _
4967                (delete-file-recursively "screenshots") #t)))))
4968       (synopsis "High-contrast Emacs theme")
4969       (description
4970        "@code{danneskjold-theme} is a high-contrast theme for Emacs.")
4971       (license license:gpl3+))))
4973 (define-public emacs-dream-theme
4974   (let* ((commit "107a11d74365046f28a1802a2bdb5e69e4a7488b")
4975          (revision "1"))
4976     (package
4977       (name "emacs-dream-theme")
4978       (version (string-append "0.0.0-" revision "." (string-take commit 7)))
4979       (source
4980        (origin
4981          (method git-fetch)
4982          (uri (git-reference
4983                (url "https://github.com/djcb/dream-theme")
4984                (commit commit)))
4985          (file-name (string-append name "-" version "-checkout"))
4986          (sha256
4987           (base32
4988            "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk"))))
4989       (build-system emacs-build-system)
4990       (home-page "https://github.com/djcb/dream-theme")
4991       (synopsis "High-contrast Emacs theme")
4992       (description
4993        "@code{dream-theme} is a dark, clean theme for Emacs.  It is inspired
4994 by zenburn, sinburn and similar themes, but slowly diverging from them.")
4995       (license license:gpl3+))))
4997 (define-public emacs-auto-complete
4998   (package
4999     (name "emacs-auto-complete")
5000     (version "1.5.1")
5001     (source
5002      (origin
5003        (method url-fetch)
5004        (uri (string-append "https://github.com/auto-complete/"
5005                            "auto-complete/archive/v" version ".tar.gz"))
5006        (sha256
5007         (base32
5008          "1jvq4lj00hwml75lpmlciazy8f3bbg13gffsfnl835p4qd8l7yqv"))
5009        (file-name (string-append name "-" version ".tar.gz"))))
5010     (build-system emacs-build-system)
5011     (propagated-inputs
5012      `(("emacs-popup" ,emacs-popup)))
5013     (home-page "https://github.com/auto-complete/auto-complete")
5014     (synopsis "Intelligent auto-completion extension for Emacs")
5015     (description
5016      "Auto-Complete is an intelligent auto-completion extension for Emacs.
5017 It extends the standard Emacs completion interface and provides an environment
5018 that allows users to concentrate more on their own work.  Its features are:
5019 a visual interface, reduce overhead of completion by using statistic method,
5020 extensibility.")
5021     (license license:gpl3+)))
5023 (define-public m17n-db
5024   (package
5025     (name "m17n-db")
5026     (version "1.7.0")
5027     (source
5028      (origin
5029        (method url-fetch)
5030        (uri (string-append "mirror://savannah/m17n/m17n-db-"
5031                            version ".tar.gz"))
5032        (sha256
5033         (base32 "1w08hnsbknrcjlzp42c99bgwc9hzsnf5m4apdv0dacql2s09zfm2"))))
5034     (build-system gnu-build-system)
5035     (inputs
5036      `(("gettext" ,gettext-minimal)))
5037     (arguments
5038      `(#:configure-flags
5039        (list (string-append "--with-charmaps="
5040                             (assoc-ref %build-inputs "libc")
5041                             "/share/i18n/charmaps"))))
5042     ;; With `guix lint' the home-page URI returns a small page saying
5043     ;; that your browser does not handle frames. This triggers the "URI
5044     ;; returns suspiciously small file" warning.
5045     (home-page "https://www.nongnu.org/m17n/")
5046     (synopsis "Multilingual text processing library (database)")
5047     (description "The m17n library realizes multilingualization of
5048 many aspects of applications.  The m17n library represents
5049 multilingual text as an object named M-text.  M-text is a string with
5050 attributes called text properties, and designed to substitute for
5051 string in C.  Text properties carry any information required to input,
5052 display and edit the text.
5054 This package contains the library database.")
5055     (license license:lgpl2.1+)))
5057 (define-public m17n-lib
5058   (package
5059     (name "m17n-lib")
5060     (version "1.7.0")
5061     (source
5062      (origin
5063        (method url-fetch)
5064        (uri (string-append "mirror://savannah/m17n/m17n-lib-"
5065                            version ".tar.gz"))
5066        (sha256
5067         (base32 "10yv730i25g1rpzv6q49m6xn4p8fjm7jdwvik2h70sn8w3hm7f4f"))))
5068     (build-system gnu-build-system)
5069     (inputs
5070      `(("fribidi" ,fribidi)
5071        ("gd" ,gd)
5072        ("libotf" ,libotf)
5073        ("libxft" ,libxft)
5074        ("libxml2" ,libxml2)
5075        ("m17n-db" ,m17n-db)))
5076     (arguments
5077      `(#:parallel-build? #f))
5078     ;; With `guix lint' the home-page URI returns a small page saying
5079     ;; that your browser does not handle frames. This triggers the "URI
5080     ;; returns suspiciously small file" warning.
5081     (home-page "https://www.nongnu.org/m17n/")
5082     (synopsis "Multilingual text processing library (runtime)")
5083     (description "The m17n library realizes multilingualization of
5084 many aspects of applications.  The m17n library represents
5085 multilingual text as an object named M-text.  M-text is a string with
5086 attributes called text properties, and designed to substitute for
5087 string in C.  Text properties carry any information required to input,
5088 display and edit the text.
5090 This package contains the library runtime.")
5091     (license license:lgpl2.1+)))
5093 (define-public emacs-nginx-mode
5094   (package
5095     (name "emacs-nginx-mode")
5096     (version "1.1.4")
5097     (source
5098      (origin
5099        (method url-fetch)
5100        (uri (string-append
5101              "https://github.com/ajc/nginx-mode/archive/v"
5102              version ".tar.gz"))
5103        (file-name (string-append name "-" version ".tar.gz"))
5104        (sha256
5105         (base32
5106          "1lvkj07kq0jkskr2f61vqb5rlrbnaz9a76ikq40w6925i2r970rr"))))
5107     (build-system emacs-build-system)
5108     (home-page "https://github.com/ajc/nginx-mode")
5109     (synopsis "Emacs major mode for editing nginx config files")
5110     (description "This package provides an Emacs major mode for
5111 editing nginx config files.")
5112     (license license:gpl2+)))
5114 (define-public emacs-stream
5115   (package
5116     (name "emacs-stream")
5117     (version "2.2.0")
5118     (home-page "https://github.com/NicolasPetton/stream")
5119     (source
5120      (origin
5121        (method url-fetch)
5122        (file-name (string-append name "-" version ".tar.gz"))
5123        (uri (string-append home-page "/archive/"version ".tar.gz"))
5124        (sha256
5125         (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
5126     (build-system emacs-build-system)
5127     (synopsis "Implementation of streams for Emacs")
5128     (description "This library provides an implementation of streams for Emacs.
5129 Streams are implemented as delayed evaluation of cons cells.")
5130     (license license:gpl3+)))
5132 (define-public emacs-el-search
5133   (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
5134         (revision "1"))
5135     (package
5136       (name "emacs-el-search")
5137       ;; No ufficial release.
5138       (version (string-append "0.0-" revision "." (string-take commit 7)))
5139       (home-page "https://github.com/emacsmirror/el-search")
5140       (source
5141        (origin
5142          (method git-fetch)
5143          (file-name (string-append name "-" version ".tar.gz"))
5144          (uri (git-reference
5145                (commit commit)
5146                (url (string-append home-page ".git"))))
5147          (sha256
5148           (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
5149       (build-system emacs-build-system)
5150       (inputs `(("emacs-stream" ,emacs-stream)))
5151       (synopsis "Expression based interactive search for emacs-lisp-mode")
5152       (description "This package provides expression based interactive search
5153 procedures for emacs-lisp-mode.")
5154       (license license:gpl3+))))
5156 (define-public emacs-ht
5157   (package
5158     (name "emacs-ht")
5159     (version "2.1")
5160     (source
5161      (origin
5162        (method url-fetch)
5163        (uri (string-append
5164              "https://github.com/Wilfred/ht.el/archive/"
5165              version ".tar.gz"))
5166        (file-name (string-append name "-" version ".tar.gz"))
5167        (sha256
5168         (base32
5169          "1lpba36kzxcc966fvsbrfpy8ah9gnvay0yk26gbyjil0rggrbqzj"))))
5170     (build-system emacs-build-system)
5171     (propagated-inputs `(("emacs-dash" ,emacs-dash)))
5172     (home-page "https://github.com/Wilfred/ht.el")
5173     (synopsis "Hash table library for Emacs")
5174     (description
5175      "This package simplifies the use of hash tables in elisp.  It also
5176 provides functions to convert hash tables from and to alists and plists.")
5177     (license license:gpl3+)))
5179 (define-public emacs-log4e
5180   (package
5181     (name "emacs-log4e")
5182     (version "0.3.0")
5183     (source
5184      (origin
5185        (method url-fetch)
5186        (uri (string-append
5187              "https://github.com/aki2o/log4e/archive/v"
5188              version ".tar.gz"))
5189        (file-name (string-append name "-" version ".tar.gz"))
5190        (sha256
5191         (base32
5192          "0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
5193     (build-system emacs-build-system)
5194     (arguments
5195      `(#:phases
5196        (modify-phases %standard-phases
5197          (add-after 'unpack 'remove-tests
5198            ;; Guile builder complains about null characters in some
5199            ;; strings of test files.  Remove "test" directory (it is not
5200            ;; needed anyway).
5201            (lambda _
5202              (delete-file-recursively "test"))))))
5203     (home-page "https://github.com/aki2o/log4e")
5204     (synopsis "Logging framework for elisp")
5205     (description
5206      "This package provides a logging framework for elisp.  It allows
5207 you to deal with multiple log levels.")
5208     (license license:gpl3+)))
5210 (define-public emacs-gntp
5211   (package
5212     (name "emacs-gntp")
5213     (version "0.1")
5214     (source
5215      (origin
5216        (method url-fetch)
5217        (uri (string-append
5218              "https://github.com/tekai/gntp.el/archive/v"
5219              version ".tar.gz"))
5220        (file-name (string-append name "-" version ".tar.gz"))
5221        (sha256
5222         (base32
5223          "16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
5224     (build-system emacs-build-system)
5225     (home-page "https://github.com/tekai/gntp.el")
5226     (synopsis "Growl Notification Protocol for Emacs")
5227     (description
5228      "This package implements the Growl Notification Protocol GNTP
5229 described at @uref{http://www.growlforwindows.com/gfw/help/gntp.aspx}.
5230 It is incomplete as it only lets you send but not receive
5231 notifications.")
5232     (license license:bsd-3)))
5234 (define-public emacs-alert
5235   (package
5236     (name "emacs-alert")
5237     (version "1.2")
5238     (source
5239      (origin
5240        (method url-fetch)
5241        (uri (string-append
5242              "https://github.com/jwiegley/alert/archive/v"
5243              version ".tar.gz"))
5244        (file-name (string-append name "-" version ".tar.gz"))
5245        (sha256
5246         (base32
5247          "1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
5248     (build-system emacs-build-system)
5249     (propagated-inputs
5250      `(("emacs-gntp" ,emacs-gntp)
5251        ("emacs-log4e" ,emacs-log4e)))
5252     (home-page "https://github.com/jwiegley/alert")
5253     (synopsis "Growl-style notification system for Emacs")
5254     (description
5255      "Alert is a Growl-workalike for Emacs which uses a common notification
5256 interface and multiple, selectable \"styles\", whose use is fully
5257 customizable by the user.")
5258     (license license:gpl2+)))
5260 (define-public emacs-mu4e-alert
5261   (package
5262     (name "emacs-mu4e-alert")
5263     (version "1.0")
5264     (source
5265      (origin
5266        (method url-fetch)
5267        (uri (string-append
5268              "https://github.com/iqbalansari/mu4e-alert/archive/v"
5269              version ".tar.gz"))
5270        (file-name (string-append name "-" version ".tar.gz"))
5271        (sha256
5272         (base32
5273          "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj"))))
5274     (build-system emacs-build-system)
5275     (propagated-inputs
5276      `(("emacs-alert" ,emacs-alert)
5277        ("emacs-s" ,emacs-s)
5278        ("emacs-ht" ,emacs-ht)
5279        ("mu" ,mu)))
5280     (home-page "https://github.com/iqbalansari/mu4e-alert")
5281     (synopsis "Desktop notification for mu4e")
5282     (description
5283      "This package provides desktop notifications for mu4e.
5284 Additionally it can display the number of unread emails in the
5285 mode-line.")
5286     (license license:gpl3+)))
5288 (define-public emacs-pretty-mode
5289   (package
5290     (name "emacs-pretty-mode")
5291     (version "2.0.3")
5292     (source
5293      (origin
5294        (method url-fetch)
5295        (uri (string-append "https://github.com/akatov/pretty-mode/"
5296                            "archive/" version ".tar.gz"))
5297        (file-name (string-append name "-" version ".tar.gz"))
5298        (sha256
5299         (base32
5300          "1fan7m4vnqs8kpg7r54kx3g7faadkpkf9kzarfv8n57kq8w157pl"))))
5301     (build-system emacs-build-system)
5302     (home-page "https://github.com/akatov/pretty-mode")
5303     (synopsis "Redisplay parts of the buffer as Unicode symbols")
5304     (description
5305      "Emacs minor mode for redisplaying parts of the buffer as pretty symbols.")
5306     (license license:gpl3+)))
5308 (define-public emacs-yasnippet
5309   (package
5310     (name "emacs-yasnippet")
5311     (version "0.12.2")
5312     (source (origin
5313               (method url-fetch)
5314               (uri (string-append "https://github.com/joaotavora/yasnippet/"
5315                                   "archive/" version ".tar.gz"))
5316               (file-name (string-append name "-" version ".tar.gz"))
5317               (sha256
5318                (base32
5319                 "01jabaz0g67bsziayrxgv74px55fx4nlrcl0csl8f1by2102pwc5"))
5320               (modules '((guix build utils)))
5321               (snippet
5322                '(begin
5323                   ;; YASnippet expects a "snippets" subdirectory in the same
5324                   ;; directory as yasnippet.el, but we don't install it
5325                   ;; because it's a git submodule pointing to an external
5326                   ;; repository.  Adjust `yas-snippet-dirs' to prevent
5327                   ;; warnings about a missing directory.
5328                   (substitute* "yasnippet.el"
5329                     (("^ +'yas-installed-snippets-dir\\)\\)\n")
5330                      "))\n"))
5331                   #t))))
5332     (build-system emacs-build-system)
5333     (home-page "https://github.com/joaotavora/yasnippet")
5334     (synopsis "Yet another snippet extension for Emacs")
5335     (description
5336      "YASnippet is a template system for Emacs.  It allows you to type an
5337 abbreviation and automatically expand it into function templates.")
5338     (license license:gpl3+)))
5340 (define-public emacs-yasnippet-snippets
5341   (let ((commit "885050d34737e2fb36a3e7759d60c09347bd4ce0")
5342         (revision "1"))
5343     (package
5344       (name "emacs-yasnippet-snippets")
5345       (version (string-append "1-" revision "." (string-take commit 8)))
5346       (source
5347        (origin
5348          (method git-fetch)
5349          (uri (git-reference
5350                (url "https://github.com/AndreaCrotti/yasnippet-snippets")
5351                (commit commit)))
5352          (file-name (string-append name "-" version "-checkout"))
5353          (sha256
5354           (base32
5355            "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9"))))
5356       (build-system trivial-build-system)
5357       (arguments
5358        `(#:modules ((ice-9 ftw)
5359                     (ice-9 regex)
5360                     (guix build utils))
5361          #:builder
5362          (begin
5363            (use-modules (ice-9 ftw)
5364                         (ice-9 regex)
5365                         (guix build utils))
5366            (with-directory-excursion (assoc-ref %build-inputs "source")
5367              (for-each (lambda (dir)
5368                          (copy-recursively
5369                           dir
5370                           (string-append %output
5371                                          "/share/emacs/yasnippet-snippets/"
5372                                          dir)))
5373                        (scandir "." (lambda (fname)
5374                                       (and (string-match "-mode$" fname)
5375                                            (directory-exists? fname))))))
5376            #t)))
5377       (home-page "https://github.com/AndreaCrotti/yasnippet-snippets")
5378       (synopsis "Collection of YASnippet snippets for many languages")
5379       (description
5380        "Provides Andrea Crotti's collection of YASnippet snippets.  After installation,
5381 the snippets will be in \"~/.guix-profile/share/emacs/yasnippet-snippets/\".
5382 To make YASnippet aware of these snippets, add the above directory to
5383 @code{yas-snippet-dirs}.")
5384       (license license:expat))))
5386 (define-public emacs-helm-c-yasnippet
5387   (let ((commit "65ca732b510bfc31636708aebcfe4d2d845b59b0")
5388         (revision "1"))
5389     (package
5390       (name "emacs-helm-c-yasnippet")
5391       (version (string-append "0.6.7" "-" revision "."
5392                               (string-take commit 7)))
5393       (source (origin
5394                 (method git-fetch)
5395                 (uri (git-reference
5396                       (url "https://github.com/emacs-jp/helm-c-yasnippet")
5397                       (commit commit)))
5398                 (file-name (string-append name "-" version "-checkout"))
5399                 (sha256
5400                  (base32
5401                   "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8"))))
5402       (build-system emacs-build-system)
5403       (propagated-inputs
5404        `(("emacs-helm" ,emacs-helm)
5405          ("emacs-yasnippet" ,emacs-yasnippet)))
5406       (home-page "https://github.com/emacs-jp/helm-c-yasnippet")
5407       (synopsis "Helm integration for Yasnippet")
5408       (description "This Emacs library provides Helm interface for
5409 Yasnippet.")
5410       (license license:gpl2+))))
5412 (define-public emacs-helm-system-packages
5413   (let ((commit "986b7bd360a705053500c4ce2c9bea03dd7b24a6")
5414         (revision "1"))
5415     (package
5416       (name "emacs-helm-system-packages")
5417       (version (git-version "1.9.0" revision commit))
5418       (source (origin
5419                 (method git-fetch)
5420                 (uri (git-reference
5421                       (url "https://github.com/emacs-helm/helm-system-packages")
5422                       (commit commit)))
5423                 (file-name (string-append name "-" version "-checkout"))
5424                 (sha256
5425                  (base32
5426                   "19iklhpxgh5xx6h4dysf58nd46lmyb46xj601lf7kbwl6yq0y61f"))))
5427       (build-system emacs-build-system)
5428       (propagated-inputs
5429        `(("emacs-helm" ,emacs-helm)))
5430       (home-page "https://github.com/emacs-helm/helm-system-packages")
5431       (synopsis "Helm System Packages is an interface to your package manager")
5432       (description "List all available packages in Helm (with installed
5433 packages displayed in their own respective face).  Fuzzy-search, mark and
5434 execute the desired action over any selections of packages: Install,
5435 uninstall, display packages details (in Org Mode) or insert details at point,
5436 find files owned by packages...  And much more, including performing all the
5437 above over the network.")
5438       (license license:gpl3+))))
5440 (define-public emacs-memoize
5441   (package
5442     (name "emacs-memoize")
5443     (version "1.1")
5444     (source
5445      (origin
5446        (method url-fetch)
5447        (uri (string-append
5448              "https://github.com/skeeto/emacs-memoize/archive/"
5449              version ".tar.gz"))
5450        (file-name (string-append name "-" version ".tar.gz"))
5451        (sha256
5452         (base32
5453          "05ijgwi4ymxx31vpjm2pn356j85cykknajn14lrzz8pn5sh0vrg4"))))
5454     (build-system emacs-build-system)
5455     (arguments
5456      `(#:tests? #t
5457        #:test-command '("emacs" "--batch"
5458                         "-l" "memoize-test.el"
5459                         "-f" "ert-run-tests-batch-and-exit")))
5460     (home-page "https://github.com/skeeto/emacs-memoize")
5461     (synopsis "Emacs lisp memoization library")
5462     (description "@code{emacs-memoize} is an Emacs library for
5463 memoizing functions.")
5464     (license license:unlicense)))
5466 (define-public emacs-linum-relative
5467   (package
5468     (name "emacs-linum-relative")
5469     (version "0.5")
5470     (source
5471      (origin
5472        (method url-fetch)
5473        (uri (string-append
5474              "https://github.com/coldnew/linum-relative/archive/"
5475              version ".tar.gz"))
5476        (file-name (string-append name "-" version ".tar.gz"))
5477        (sha256
5478         (base32
5479          "0s4frvr27866lw1rn3jal9wj5rkz9fx4yiszqv7w06azsdgsqksv"))))
5480     (build-system emacs-build-system)
5481     (home-page "https://github.com/coldnew/linum-relative")
5482     (synopsis "Relative line numbering for Emacs")
5483     (description "@code{emacs-linum-relative} displays the relative line
5484 number on the left margin in Emacs.")
5485     (license license:gpl2+)))
5487 (define-public emacs-idle-highlight
5488   (package
5489     (name "emacs-idle-highlight")
5490     (version "1.1.3")
5491     (source
5492      (origin
5493        (method url-fetch)
5494        (uri (string-append
5495              "https://github.com/nonsequitur/idle-highlight-mode/archive/"
5496              version ".tar.gz"))
5497        (file-name (string-append name "-" version ".tar.gz"))
5498        (sha256
5499         (base32
5500          "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl"))))
5501     (build-system emacs-build-system)
5502     (home-page "https://www.emacswiki.org/emacs/IdleHighlight")
5503     (synopsis "Highlights all occurrences of the word the point is on")
5504     (description
5505      "This Emacs package provides @code{idle-highlight-mode} that sets
5506  an idle timer to highlight all occurrences in the buffer of the word under
5507  the point.")
5508     (license license:gpl3+)))
5510 (define-public emacs-ox-twbs
5511   (package
5512     (name "emacs-ox-twbs")
5513     (version "1.1.1")
5514     (source
5515      (origin
5516        (method url-fetch)
5517        (uri (string-append
5518              "https://github.com/marsmining/ox-twbs/archive/v"
5519              version ".tar.gz"))
5520        (file-name (string-append name "-" version ".tar.gz"))
5521        (sha256
5522         (base32
5523          "1zaq8dczq5wijjk36114k2x3hfrqig3lyx6djril6wyk67vczyqs"))))
5524     (build-system emacs-build-system)
5525     (home-page "https://github.com/marsmining/ox-twbs")
5526     (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap")
5527     (description
5528      "This Emacs package outputs your org-mode docs with a simple, clean and
5529 modern look.  It implements a new HTML back-end for exporting org-mode docs as
5530 HTML compatible with Twitter Bootstrap.  By default, HTML is exported with
5531 jQuery and Bootstrap resources included via osscdn.")
5532     (license license:gpl3+)))
5534 (define-public emacs-highlight-sexp
5535   (package
5536     (name "emacs-highlight-sexp")
5537     (version "1.0")
5538     (source
5539      (origin
5540        (method url-fetch)
5541        (uri (string-append
5542              "https://github.com/daimrod/highlight-sexp/archive/v"
5543              version ".tar.gz"))
5544        (file-name (string-append name "-" version ".tar.gz"))
5545        (sha256
5546         (base32
5547          "0jwx87qkln1rg9wmv4qkgkml935fh2pkgrg5x4ca6n5dgb4q6rj1"))))
5548     (build-system emacs-build-system)
5549     (home-page "https://github.com/daimrod/highlight-sexp")
5550     (synopsis "Minor mode that highlights the s-exp at the current position")
5551     (description
5552      "This Emacs package highlights the s-exp at the current position.")
5553     (license license:gpl3+)))
5555 (define-public emacs-highlight-stages
5556   (let ((commit "29cbc5b78261916da042ddb107420083da49b271")
5557         (revision "1"))
5558     (package
5559       (name "emacs-highlight-stages")
5560       (version (string-append "1.1.0" "-" revision "." (string-take commit 7)))
5561       (source
5562        (origin
5563          (method git-fetch)
5564          (uri (git-reference
5565                (url "https://github.com/zk-phi/highlight-stages.git")
5566                (commit commit)))
5567          (file-name (string-append name "-" version "-checkout"))
5568          (sha256
5569           (base32
5570            "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"))
5571          (patches
5572           (search-patches "emacs-highlight-stages-add-gexp.patch"))))
5573       (build-system emacs-build-system)
5574       (home-page "https://github.com/wigust/highlight-stages")
5575       (synopsis "Minor mode that highlights (quasi-quoted) expressions")
5576       (description "@code{highlight-stages} provides an Emacs minor mode that
5577 highlights quasi-quoted expressions.")
5578       (license license:gpl3+))))
5580 (define-public emacspeak
5581   (package
5582     (name "emacspeak")
5583     (version "47.0")
5584     (source
5585      (origin
5586        (method url-fetch)
5587        (uri (string-append
5588              "https://github.com/tvraman/emacspeak/releases/download/"
5589              version "/emacspeak-" version ".tar.bz2"))
5590        (sha256
5591         (base32
5592          "0xbcc266x752y68s3g096m161irzvsqym3axzqn8rb276a8x55n7"))))
5593     (build-system gnu-build-system)
5594     (arguments
5595      '(#:make-flags (list (string-append "prefix="
5596                                          (assoc-ref %outputs "out")))
5597        #:phases
5598        (modify-phases %standard-phases
5599          (replace 'configure
5600            (lambda _
5601              ;; Configure Emacspeak according to etc/install.org.
5602              (setenv "SHELL" (which "sh"))
5603              (zero? (system* "make" "config"))))
5604          (add-after 'build 'build-espeak
5605            (lambda _
5606              (zero? (system* "make" "espeak"))))
5607          (replace 'install
5608            (lambda* (#:key outputs #:allow-other-keys)
5609              (let* ((out (assoc-ref outputs "out"))
5610                     (bin (string-append out "/bin"))
5611                     (lisp (string-append out "/share/emacs/site-lisp/emacspeak"))
5612                     (info (string-append out "/share/info")))
5613                ;; According to etc/install.org, the Emacspeak directory should
5614                ;; be copied to its installation destination.
5615                (for-each
5616                 (lambda (file)
5617                   (copy-recursively file (string-append lisp "/" file)))
5618                 '("etc" "info" "lisp" "media" "servers" "sounds" "stumpwm"
5619                   "xsl"))
5620                ;; Make sure emacspeak is loaded from the correct directory.
5621                (substitute* "etc/emacspeak.sh"
5622                  (("exec emacs.*$")
5623                   (string-append "exec emacs -l " lisp
5624                                  "/lisp/emacspeak-setup.el $CL_ALL")))
5625                ;; Install the convenient startup script.
5626                (mkdir-p bin)
5627                (copy-file "etc/emacspeak.sh" (string-append bin "/emacspeak")))
5628              #t))
5629          (add-after 'install 'wrap-program
5630            (lambda* (#:key inputs outputs #:allow-other-keys)
5631              (let* ((out (assoc-ref outputs "out"))
5632                     (emacspeak (string-append out "/bin/emacspeak"))
5633                     (espeak (string-append (assoc-ref inputs "espeak")
5634                                            "/bin/espeak")))
5635                ;; The environment variable DTK_PROGRAM tells emacspeak what
5636                ;; program to use for speech.
5637                (wrap-program emacspeak
5638                  `("DTK_PROGRAM" ":" prefix (,espeak)))
5639                #t))))
5640        #:tests? #f)) ; no check target
5641     (inputs
5642      `(("espeak" ,espeak)
5643        ("tcl" ,tcl)
5644        ("tclx" ,tclx)))
5645     (native-inputs `(("emacs" ,emacs-minimal)))
5646     (home-page "http://emacspeak.sourceforge.net")
5647     (synopsis "Audio desktop interface for Emacs")
5648     (description
5649      "Emacspeak is a speech interface that allows visually impaired users to
5650 interact independently and efficiently with the computer.  Audio formatting
5651 --a technique pioneered by AsTeR-- and full support for W3C's Aural CSS (ACSS)
5652 allows Emacspeak to produce rich aural presentations of electronic information.
5653 By seamlessly blending all aspects of the Internet such as Web-surfing and
5654 messaging, Emacspeak speech-enables local and remote information via a
5655 consistent and well-integrated user interface.")
5656     (license license:gpl2+)))
5658 (define-public emacs-adaptive-wrap
5659   (package
5660     (name "emacs-adaptive-wrap")
5661     (version "0.5.1")
5662     (source (origin
5663               (method url-fetch)
5664               (uri (string-append
5665                     "http://elpa.gnu.org/packages/adaptive-wrap-"
5666                     version ".el"))
5667               (sha256
5668                (base32
5669                 "0qi7gjprcpywk2daivnlavwsx53hl5wcqvpxbwinvigg42vxh3ll"))))
5670     (build-system emacs-build-system)
5671     (home-page "http://elpa.gnu.org/packages/adaptive-wrap.html")
5672     (synopsis "Smart line-wrapping with wrap-prefix")
5673     (description
5674      "This Emacs package provides the @code{adaptive-wrap-prefix-mode}
5675 minor mode which sets the wrap-prefix property on the fly so that
5676 single-long-line paragraphs get word-wrapped in a way similar to what
5677 you'd get with @kbd{M-q} using @code{adaptive-fill-mode}, but without
5678 actually changing the buffer's text.")
5679     (license license:gpl3+)))
5681 (define-public emacs-diff-hl
5682  (package
5683   (name "emacs-diff-hl")
5684   (version "1.8.4")
5685   (source
5686     (origin
5687       (method url-fetch)
5688       (uri (string-append "http://elpa.gnu.org/packages/diff-hl-"
5689                           version ".tar"))
5690       (sha256
5691         (base32
5692           "0axhidc3cym7a2x4rpxf4745qss9s9ajyg4s9h5b4zn7v7fyp71n"))))
5693   (build-system emacs-build-system)
5694   (home-page "https://github.com/dgutov/diff-hl")
5695   (synopsis
5696     "Highlight uncommitted changes using VC")
5697   (description
5698     "@code{diff-hl-mode} highlights uncommitted changes on the side of the
5699 window (using the fringe, by default), allows you to jump between
5700 the hunks and revert them selectively.")
5701   (license license:gpl3+)))
5703 (define-public emacs-diminish
5704   (package
5705     (name "emacs-diminish")
5706     (version "0.45")
5707     (source
5708      (origin
5709        (method url-fetch)
5710        (uri (string-append
5711              "https://github.com/myrjola/diminish.el/archive/v"
5712              version ".tar.gz"))
5713        (file-name (string-append name "-" version ".tar.gz"))
5714        (sha256
5715         (base32
5716          "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9"))))
5717     (build-system emacs-build-system)
5718     (home-page "https://github.com/myrjola/diminish.el")
5719     (synopsis "Diminish minor modes with no modeline display")
5720     (description "@code{emacs-diminish} implements hiding or
5721 abbreviation of the mode line displays (lighters) of minor modes.")
5722     (license license:gpl2+)))
5724 (define-public emacs-use-package
5725   (package
5726     (name "emacs-use-package")
5727     (version "2.3")
5728     (source
5729      (origin
5730        (method url-fetch)
5731        (uri (string-append
5732              "https://github.com/jwiegley/use-package/archive/"
5733              version ".tar.gz"))
5734        (file-name (string-append name "-" version ".tar.gz"))
5735        (sha256
5736         (base32
5737          "0x4h136jb3imyli6zsh7dyzjrra6pv0v6b0yk94jdng3rdfcmsf5"))))
5738     (build-system emacs-build-system)
5739     (propagated-inputs
5740      `(("emacs-diminish" ,emacs-diminish)))
5741     (arguments
5742      ;; Tests fail in this release, but have been fixed in
5743      ;; upstream commit 7956d40eed57d6c06bef36ebc174cf57d934e30d
5744      `(#:tests? #f
5745        #:test-command '("emacs" "--batch"
5746                         "-l" "use-package-tests.el"
5747                         "-f" "ert-run-tests-batch-and-exit")))
5748     (home-page "https://github.com/jwiegley/use-package")
5749     (synopsis "Declaration for simplifying your .emacs")
5750     (description "The use-package macro allows you to isolate package
5751 configuration in your @file{.emacs} file in a way that is both
5752 performance-oriented and tidy.")
5753     (license license:gpl2+)))
5755 (define-public emacs-strace-mode
5756   (let* ((commit "6a69b4b06db6797af56f33eda5cb28af94e59f11")
5757          (revision "1"))
5758     (package
5759       (name "emacs-strace-mode")
5760       (version (string-append "0.0.2-" revision "." (string-take commit 7)))
5761       (source (origin
5762                 (method git-fetch)
5763                 (uri (git-reference
5764                       (url "https://github.com/pkmoore/strace-mode")
5765                       (commit commit)))
5766                 (file-name (string-append name "-" version "-checkout"))
5767                 (sha256
5768                  (base32
5769                   "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f"))))
5770       (build-system emacs-build-system)
5771       (home-page "https://github.com/pkmoore/strace-mode")
5772       (synopsis "Emacs major mode to highlight strace outputs")
5773       (description "@code{emacs-strace-mode} provides an Emacs major mode
5774  highlighting strace outputs.")
5775       (license license:gpl3+))))
5777 (define-public emacs-default-encrypt
5778   (package
5779     (name "emacs-default-encrypt")
5780     (version "4.3")
5781     (source
5782      (origin
5783        (method url-fetch)
5784        (uri (string-append
5785              "https://www.informationelle-selbstbestimmung-im-internet.de"
5786              "/emacs/jl-encrypt" version "/jl-encrypt.el"))
5787        (file-name (string-append "jl-encrypt-" version ".el"))
5788        (sha256
5789         (base32
5790          "16i3rlfp3jxlqvndn8idylhmczync3gwmy8a019v29vyr48rnnr0"))))
5791     (build-system emacs-build-system)
5792     (home-page "https://www.informationelle-selbstbestimmung-im-internet.de/Emacs.html")
5793     (synopsis "Automatically encrypt or sign Gnus messages in Emacs")
5794     (description
5795      "DefaultEncrypt is designed to be used with Gnus in Emacs.  It
5796 automatically encrypts messages that you send (e.g., email) when public keys
5797 for all recipients are available, and it protects you from accidentally
5798 sending un-encrypted messages.  It can also be configured to automatically
5799 sign messages that you send.  For details and instructions on how to use
5800 DefaultEncrypt, please refer to the home page or read the comments in the
5801 source file, @file{jl-encrypt.el}.")
5802     (license license:gpl3+)))
5804 (define-public emacs-htmlize
5805   (package
5806     (name "emacs-htmlize")
5807     (version "1.51")
5808     (source
5809      (origin
5810        (method url-fetch)
5811        (uri (string-append
5812              "https://github.com/hniksic/emacs-htmlize/archive/release/"
5813              version ".tar.gz"))
5814        (file-name (string-append name "-" version ".tar.gz"))
5815        (sha256
5816         (base32
5817          "1fy1lybzrxl8a8r88f6p19nz8ygmvcxhxbnymkxh7jqaz25viwld"))))
5818     (build-system emacs-build-system)
5819     (home-page "https://github.com/hniksic/emacs-htmlize")
5820     (synopsis "Convert buffer text and decorations to HTML")
5821     (description "@code{emacs-htmlize} converts the buffer text and
5822 the associated decorations to HTML.  Output to CSS, inline CSS and
5823 fonts is supported.")
5824     (license license:gpl2+)))
5826 (define-public emacs-xmlgen
5827   (package
5828     (name "emacs-xmlgen")
5829     (version "0.5")
5830     (source
5831      (origin
5832        (method url-fetch)
5833        (uri (string-append
5834              "https://github.com/philjackson/xmlgen/archive/"
5835              version ".tar.gz"))
5836        (file-name (string-append name "-" version ".tar.gz"))
5837        (sha256
5838         (base32
5839          "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r"))))
5840     (build-system emacs-build-system)
5841     (arguments
5842      `(#:tests? #t
5843        #:test-command '("emacs" "--batch"
5844                         "-l" "xmlgen-test.el"
5845                         "-f" "ert-run-tests-batch-and-exit")))
5846     (home-page "https://github.com/philjackson/xmlgen")
5847     (synopsis "S-expression to XML domain specific language (DSL) in
5848 Emacs Lisp")
5849     (description "@code{emacs-xmlgen} provides S-expression to XML
5850 conversion for Emacs Lisp.")
5851     (license license:gpl2+)))
5853 (define-public emacs-cdlatex
5854   (package
5855     (name "emacs-cdlatex")
5856     (version "4.7")
5857     (source
5858      (origin
5859        (method url-fetch)
5860        (uri (string-append
5861              "https://github.com/cdominik/cdlatex/archive/"
5862              version ".tar.gz"))
5863        (file-name (string-append name "-" version ".tar.gz"))
5864        (sha256
5865         (base32
5866          "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp"))))
5867     (build-system emacs-build-system)
5868     (propagated-inputs
5869      `(("emacs-auctex" ,emacs-auctex)))
5870     (home-page "https://github.com/cdominik/cdlatex")
5871     (synopsis "Fast Emacs input methods for LaTeX environments and
5872 math")
5873     (description "CDLaTeX is an Emacs minor mode supporting fast
5874 insertion of environment templates and math in LaTeX.  Similar
5875 commands are also offered as part of the AUCTeX package, but it is not
5876 the same - CDLaTeX focuses on speediness for inserting LaTeX
5877 constructs.")
5878     (license license:gpl3+)))
5880 (define-public emacs-cnfonts
5881   (package
5882     (name "emacs-cnfonts")
5883     (version "0.9.1")
5884     (source (origin
5885               (method url-fetch)
5886               (uri (string-append
5887                     "https://github.com/tumashu/cnfonts/archive/v"
5888                     version ".tar.gz"))
5889               (file-name (string-append name "-" version ".tar.gz"))
5890               (sha256
5891                (base32
5892                 "1l6cgcvc6md1zq97ccczankpyi0k4vjx6apflny6kjq3p33lyhf4"))))
5893     (build-system emacs-build-system)
5894     (home-page "https://github.com/tumashu/cnfonts")
5895     (synopsis "Emacs Chinese fonts setup tool")
5896     (description "cnfonts is a Chinese fonts setup tool, allowing for easy
5897 configuration of Chinese fonts.")
5898     (license license:gpl2+)))
5900 (define-public emacs-php-mode
5901   (package
5902     (name "emacs-php-mode")
5903     (version "20171225.342")
5904     (source (origin
5905               (method url-fetch)
5906               (uri (string-append
5907                     "https://melpa.org/packages/php-mode-"
5908                     version ".tar"))
5909               (sha256
5910                (base32
5911                 "1zz682f34v4wsm2dyj1gnrnvsrqdq1cy7j8p6cvc398w2fziyg3q"))))
5912     (build-system emacs-build-system)
5913     (home-page "https://github.com/ejmr/php-mode")
5914     (synopsis "Major mode for editing PHP code")
5915     (description "@code{php-mode} is a major mode for editing PHP source
5916 code.  It's an extension of C mode; thus it inherits all C mode's navigation
5917 functionality.  But it colors according to the PHP grammar and indents
5918 according to the PEAR coding guidelines.  It also includes a couple handy
5919 IDE-type features such as documentation search and a source and class
5920 browser.")
5921     (license license:gpl3+)))
5923 (define-public emacs-pos-tip
5924   (package
5925     (name "emacs-pos-tip")
5926     (version "0.4.6")
5927     (source (origin
5928               (method url-fetch)
5929               (uri (string-append
5930                     "https://github.com/pitkali/pos-tip/archive/"
5931                     version ".tar.gz"))
5932               (file-name (string-append name "-" version ".tar.gz"))
5933               (sha256
5934                (base32
5935                 "12jqfy26vjk7lq0aa8yn8zqj8c85fkvx7y9prj0pcn4wqiz2ad2r"))))
5936     (build-system emacs-build-system)
5937     ;; The following functions and variables needed by emacs-pos-tip are
5938     ;; not included in emacs-minimal:
5939     ;; x-display-pixel-width, x-display-pixel-height, x-show-tip
5940     (arguments `(#:emacs ,emacs))
5941     (home-page "https://github.com/pitkali/pos-tip")
5942     (synopsis "Show tooltip at point")
5943     (description "The standard library tooltip.el provides a function for
5944 displaying a tooltip at the mouse position.  However, locating a tooltip at an
5945 arbitrary buffer position in a window is not easy.  Pos-tip provides such a
5946 function to be used by other frontend programs.")
5947     (license license:gpl2+)))
5949 (define-public emacs-pyim-basedict
5950   (package
5951     (name "emacs-pyim-basedict")
5952     (version "0.3.1")
5953     (source (origin
5954               (method url-fetch)
5955               (uri (string-append
5956                     "https://github.com/tumashu/pyim-basedict/archive/v"
5957                     version ".tar.gz"))
5958               (file-name (string-append name "-" version ".tar.gz"))
5959               (sha256
5960                (base32
5961                 "0nfgxviavkgrpyfsw60xsws4fk51fcmgl8fp6zf4ibqjjbp53n3n"))))
5962     (build-system emacs-build-system)
5963     (home-page "https://github.com/tumashu/pyim-basedict")
5964     (synopsis "Input method dictionary of pyim")
5965     (description "Pyim-basedict is the default pinyin input method dictionary,
5966 containing words from the rime project.")
5967     (license license:gpl2+)))
5969 (define-public emacs-pyim
5970   (package
5971     (name "emacs-pyim")
5972     (version "1.6.4")
5973     (source (origin
5974               (method url-fetch)
5975               (uri (string-append
5976                     "https://github.com/tumashu/pyim/archive/v"
5977                     version ".tar.gz"))
5978               (file-name (string-append name "-" version ".tar.gz"))
5979               (sha256
5980                (base32
5981                 "0hfg8q9hcjifvnlghw2g94dfxfirms2psq2ghqb28fhkf0lks13r"))))
5982     (build-system emacs-build-system)
5983     (propagated-inputs
5984      `(("emacs-async" ,emacs-async)
5985        ("emacs-pyim-basedict" ,emacs-pyim-basedict)
5986        ("emacs-popup" ,emacs-popup)
5987        ("emacs-pos-tip" ,emacs-pos-tip)))
5988     (home-page "https://github.com/tumashu/pyim")
5989     (synopsis "Chinese input method")
5990     (description "Chinese input method which supports quanpin, shuangpin, wubi
5991 and cangjie.")
5992     (license license:gpl2+)))
5994 (define-public emacs-el2org
5995   (package
5996     (name "emacs-el2org")
5997     (version "0.6.0")
5998     (source (origin
5999               (method url-fetch)
6000               (uri (string-append
6001                     "https://github.com/tumashu/el2org/archive/v"
6002                     version ".tar.gz"))
6003               (file-name (string-append name "-" version ".tar.gz"))
6004               (sha256
6005                (base32
6006                 "0gd3km1swwvg2w0kdi7370f54wgrflxn63gjgssfjc1iyc9sbqwq"))))
6007     (build-system emacs-build-system)
6008     (home-page "https://github.com/tumashu/el2org")
6009     (synopsis "Convert Emacs-lisp file to org file")
6010     (description "El2org is a simple tool, which can convert Emacs-lisp file
6011 to org file, you can use this tool to write orgify commentary.")
6012     (license license:gpl2+)))
6014 (define-public emacs-mustache
6015   (package
6016     (name "emacs-mustache")
6017     (version "0.23")
6018     (source (origin
6019               (method url-fetch)
6020               (uri (string-append
6021                     "https://github.com/Wilfred/mustache.el/archive/"
6022                     version ".tar.gz"))
6023               (file-name (string-append name "-" version ".tar.gz"))
6024               (sha256
6025                (base32
6026                 "0k9lcgil7kykkv1ylrgwy1g13ldjjmgi2cwmysgyb2vlj3jbwpdj"))))
6027     (build-system emacs-build-system)
6028     (propagated-inputs
6029      `(("emacs-dash" ,emacs-dash)
6030        ("emacs-ht" ,emacs-ht)
6031        ("emacs-s" ,emacs-s)))
6032     (home-page "https://github.com/Wilfred/mustache.el")
6033     (synopsis "Mustache templating library for Emacs")
6034     (description "Mustache templating library for Emacs, mustache is
6035 a simple web template system, which is described as a logic-less system
6036 because it lacks any explicit control flow statements, both looping and
6037 conditional evaluation can be achieved using section tags processing lists
6038 and lambdas.")
6039     (license license:gpl3+)))
6041 (define-public emacs-org2web
6042   (package
6043     (name "emacs-org2web")
6044     (version "0.9.1")
6045     (source (origin
6046               (method url-fetch)
6047               (uri (string-append
6048                     "https://github.com/tumashu/org2web/archive/v"
6049                     version ".tar.gz"))
6050               (file-name (string-append name "-" version ".tar.gz"))
6051               (sha256
6052                (base32
6053                 "1c0ixcphlhp4c4qdiwq40bc3yp1gp1llp8pxrk4s7ny9n68s52zp"))))
6054     (build-system emacs-build-system)
6055     (propagated-inputs
6056      `(("emacs-dash" ,emacs-dash)
6057        ("emacs-el2org" ,emacs-el2org)
6058        ("emacs-ht" ,emacs-ht)
6059        ("emacs-mustache" ,emacs-mustache)
6060        ("emacs-simple-httpd" ,emacs-simple-httpd)))
6061     (home-page "https://github.com/tumashu/org2web")
6062     (synopsis "Static site generator based on org-mode ")
6063     (description "Org2web is a static site generator based on org-mode,
6064 which code derived from Kelvin H's org-page.")
6065     (license license:gpl2+)))
6067 (define-public emacs-xelb
6068   (package
6069     (name "emacs-xelb")
6070     (version "0.14")
6071     (source (origin
6072               (method url-fetch)
6073               (uri (string-append "https://elpa.gnu.org/packages/xelb-"
6074                                   version ".tar"))
6075               (sha256
6076                (base32
6077                 "09flnbjy9ck784kprz036rwg9qk45hpv0w5hz3pz3zhwyk57fv74"))))
6078     (build-system emacs-build-system)
6079     ;; The following functions and variables needed by emacs-xelb are
6080     ;; not included in emacs-minimal:
6081     ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
6082     ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
6083     ;; x-display-pixel-width, x-display-pixel-height
6084     (arguments
6085      `(#:emacs ,emacs
6086        #:phases
6087        (modify-phases %standard-phases
6088          (add-after 'unpack 'regenerate-el-files
6089            (lambda* (#:key inputs #:allow-other-keys)
6090              (zero? (system* "make"
6091                              (string-append "PROTO_PATH="
6092                                             (assoc-ref inputs "xcb-proto")
6093                                             "/share/xcb")
6094                              (string-append "EMACS_BIN="
6095                                             (assoc-ref inputs "emacs")
6096                                             "/bin/emacs -Q"))))))))
6097     (native-inputs `(("xcb-proto" ,xcb-proto)))
6098     (home-page "https://github.com/ch11ng/xelb")
6099     (synopsis "X protocol Emacs Lisp binding")
6100     (description "@code{emacs-xelb} is a pure Emacs Lisp implementation of the
6101 X11 protocol based on the XML description files from the XCB project.  It
6102 features an object-oriented API and permits a certain degree of concurrency.
6103 It should enable you to implement low-level X11 applications.")
6104     (license license:gpl3+)))
6106 (define-public emacs-exwm
6107   (package
6108     (name "emacs-exwm")
6109     (version "0.18")
6110     (synopsis "Emacs X window manager")
6111     (source (origin
6112               (method url-fetch)
6113               (uri (string-append "https://elpa.gnu.org/packages/exwm-"
6114                                   version ".tar"))
6115               (sha256
6116                (base32
6117                 "1shz5bf4v4gg3arjaaldics5qkg3aiiaf3ngys8lb6qyxhcpvh6q"))))
6118     (build-system emacs-build-system)
6119     (propagated-inputs
6120      `(("emacs-xelb" ,emacs-xelb)))
6121     (inputs
6122      `(("xhost" ,xhost)
6123        ("dbus" ,dbus)))
6124     ;; The following functions and variables needed by emacs-exwm are
6125     ;; not included in emacs-minimal:
6126     ;; scroll-bar-mode, fringe-mode
6127     ;; x-display-pixel-width, x-display-pixel-height
6128     (arguments
6129      `(#:emacs ,emacs
6130        #:phases
6131        (modify-phases %standard-phases
6132          (add-after 'build 'install-xsession
6133            (lambda* (#:key inputs outputs #:allow-other-keys)
6134              (let* ((out (assoc-ref outputs "out"))
6135                     (xsessions (string-append out "/share/xsessions"))
6136                     (bin (string-append out "/bin"))
6137                     (exwm-executable (string-append bin "/exwm")))
6138                ;; Add a .desktop file to xsessions
6139                (mkdir-p xsessions)
6140                (mkdir-p bin)
6141                (with-output-to-file
6142                    (string-append xsessions "/exwm.desktop")
6143                  (lambda _
6144                    (format #t "[Desktop Entry]~@
6145                      Name=~a~@
6146                      Comment=~a~@
6147                      Exec=~a~@
6148                      TryExec=~@*~a~@
6149                      Type=Application~%" ,name ,synopsis exwm-executable)))
6150                ;; Add a shell wrapper to bin
6151                (with-output-to-file exwm-executable
6152                  (lambda _
6153                    (format #t "#!~a ~@
6154                      ~a +SI:localuser:$USER ~@
6155                      exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
6156                            (string-append (assoc-ref inputs "bash") "/bin/sh")
6157                            (string-append (assoc-ref inputs "xhost") "/bin/xhost")
6158                            (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
6159                            (string-append (assoc-ref inputs "emacs") "/bin/emacs")
6160                            '(cond
6161                              ((file-exists-p "~/.exwm")
6162                               (load-file "~/.exwm"))
6163                              ((not (featurep 'exwm))
6164                               (require 'exwm)
6165                               (require 'exwm-config)
6166                               (exwm-config-default)
6167                               (message (concat "exwm configuration not found. "
6168                                                "Falling back to default configuration...")))))))
6169                (chmod exwm-executable #o555)
6170                #t))))))
6171     (home-page "https://github.com/ch11ng/exwm")
6172     (description "EXWM is a full-featured tiling X window manager for Emacs
6173 built on top of XELB.")
6174     (license license:gpl3+)))
6176 (define-public emacs-switch-window
6177   (package
6178     (name "emacs-switch-window")
6179     (version "1.5.1")
6180     (source (origin
6181               (method url-fetch)
6182               (uri (string-append
6183                     "https://github.com/dimitri/switch-window/archive/v"
6184                     version ".tar.gz"))
6185               (file-name (string-append name "-" version ".tar.gz"))
6186               (sha256
6187                (base32
6188                 "07f99apxscwvsp2bjxsbi462c433kcglrjh6xl0gyafs1nvvvnd8"))))
6189     (build-system emacs-build-system)
6190     (home-page "https://github.com/dimitri/switch-window")
6191     (synopsis "Emacs window switch tool")
6192     (description "Switch-window is an emacs window switch tool, which
6193 offer a visual way to choose a window to switch to, delete, split or
6194 other operations.")
6195     (license license:wtfpl2)))
6197 (define-public emacs-exwm-x
6198   (package
6199     (name "emacs-exwm-x")
6200     (version "1.8.1")
6201     (synopsis "Derivative window manager based on EXWM")
6202     (source (origin
6203               (method url-fetch)
6204               (uri (string-append
6205                     "https://github.com/tumashu/exwm-x/archive/v"
6206                     version ".tar.gz"))
6207               (file-name (string-append name "-" version ".tar.gz"))
6208               (sha256
6209                (base32
6210                 "0ali1100aacq4zbvcck80h51pvw204jlxhn4aikkqq4ngbx03kkr"))))
6211     (build-system emacs-build-system)
6212     (propagated-inputs
6213      `(("emacs-exwm" ,emacs-exwm)
6214        ("emacs-switch-window" ,emacs-switch-window)
6215        ("emacs-ivy" ,emacs-ivy)
6216        ("emacs-use-package" ,emacs-use-package)))
6217     (inputs
6218      `(("xhost" ,xhost)
6219        ("dbus" ,dbus)))
6220     ;; Need emacs instead of emacs-minimal,
6221     ;; for emacs's bin path will be inserted into bin/exwm-x file.
6222     (arguments
6223      `(#:emacs ,emacs
6224        #:phases
6225        (modify-phases %standard-phases
6226          (add-after 'build 'install-xsession
6227            (lambda* (#:key inputs outputs #:allow-other-keys)
6228              (let* ((out (assoc-ref outputs "out"))
6229                     (xsessions (string-append out "/share/xsessions"))
6230                     (bin (string-append out "/bin"))
6231                     (exwm-executable (string-append bin "/exwm-x")))
6232                ;; Add a .desktop file to xsessions
6233                (mkdir-p xsessions)
6234                (mkdir-p bin)
6235                (with-output-to-file
6236                    (string-append xsessions "/exwm-x.desktop")
6237                  (lambda _
6238                    (format #t "[Desktop Entry]~@
6239                      Name=~a~@
6240                      Comment=~a~@
6241                      Exec=~a~@
6242                      TryExec=~@*~a~@
6243                      Type=Application~%" ,name ,synopsis exwm-executable)))
6244                ;; Add a shell wrapper to bin
6245                (with-output-to-file exwm-executable
6246                  (lambda _
6247                    (format #t "#!~a ~@
6248                      ~a +SI:localuser:$USER ~@
6249                      exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
6250                            (string-append (assoc-ref inputs "bash") "/bin/sh")
6251                            (string-append (assoc-ref inputs "xhost") "/bin/xhost")
6252                            (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
6253                            (string-append (assoc-ref inputs "emacs") "/bin/emacs")
6254                            '(require 'exwmx-loader))))
6255                (chmod exwm-executable #o555)
6256                #t))))))
6257     (home-page "https://github.com/tumashu/exwm-x")
6258     (description "EXWM-X is a derivative window manager based on EXWM, with focus
6259 on mouse-control.")
6260     (license license:gpl3+)))
6262 (define-public emacs-gnuplot
6263   (package
6264     (name "emacs-gnuplot")
6265     (version "0.7.0")
6266     (source
6267      (origin
6268        (method url-fetch)
6269        (uri (string-append
6270              "https://github.com/bruceravel/gnuplot-mode/archive/"
6271              version ".tar.gz"))
6272        (file-name (string-append name "-" version ".tar.gz"))
6273        (sha256
6274         (base32
6275          "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i"))))
6276     (build-system gnu-build-system)
6277     (native-inputs `(("emacs" ,emacs-minimal)))
6278     (arguments
6279      (let ((elisp-dir (string-append "/share/emacs/site-lisp/guix.d"
6280                                      "/gnuplot-" version)))
6281        `(#:modules ((guix build gnu-build-system)
6282                     (guix build utils)
6283                     (guix build emacs-utils))
6284          #:imported-modules (,@%gnu-build-system-modules
6285                              (guix build emacs-utils))
6286          #:configure-flags
6287          (list (string-append "EMACS=" (assoc-ref %build-inputs "emacs")
6288                               "/bin/emacs")
6289                (string-append "--with-lispdir=" %output ,elisp-dir))
6290          #:phases
6291          (modify-phases %standard-phases
6292            (add-after 'install 'generate-autoloads
6293              (lambda* (#:key outputs #:allow-other-keys)
6294                (emacs-generate-autoloads
6295                 "gnuplot"
6296                 (string-append (assoc-ref outputs "out") ,elisp-dir))
6297                #t))))))
6298     (home-page "https://github.com/bruceravel/gnuplot-mode")
6299     (synopsis "Emacs major mode for interacting with gnuplot")
6300     (description "@code{emacs-gnuplot} is an emacs major mode for interacting
6301 with gnuplot.")
6302     (license license:gpl2+)))
6304 (define-public emacs-transpose-frame
6305   (package
6306     (name "emacs-transpose-frame")
6307     (version "0.1.0")
6308     (source
6309      (origin
6310        (method url-fetch)
6311        (uri "http://www.emacswiki.org/emacs/download/transpose-frame.el")
6312        (file-name (string-append "transpose-frame-" version ".el"))
6313        (sha256
6314         (base32
6315          "1f67yksgw9s6j0033hmqzaxx2a93jm11sd5ys7cc3li5gfh680m4"))))
6316     (build-system emacs-build-system)
6317     (home-page "https://www.emacswiki.org/emacs/TransposeFrame")
6318     (synopsis "Transpose window arrangement in current frame")
6319     (description "@code{emacs-transpose-frame} provides some interactive
6320 functions which allows users to transpose windows arrangement in currently
6321 selected frame.")
6322     (license license:bsd-2)))
6324 (define-public emacs-key-chord
6325   (package
6326     (name "emacs-key-chord")
6327     (version "0.6")
6328     (source
6329      (origin
6330        (method url-fetch)
6331        (uri "https://www.emacswiki.org/emacs/download/key-chord.el")
6332        (file-name (string-append "key-chord-" version ".el"))
6333        (sha256
6334         (base32
6335          "03m44pqggfrd53nh9dvpdjgm0rvca34qxmd30hr33hzprzjambxg"))))
6336     (build-system emacs-build-system)
6337     (home-page "https://www.emacswiki.org/emacs/key-chord.el")
6338     (synopsis "Map pairs of simultaneously pressed keys to Emacs commands")
6339     (description "@code{emacs-key-chord} provides @code{key-chord-mode}, a
6340 mode for binding key chords to commands.  A key chord is defined as two keys
6341 pressed simultaneously or a single key quickly pressed twice.")
6342     (license license:gpl2+)))
6344 (define-public emacs-evil-surround
6345   (package
6346     (name "emacs-evil-surround")
6347     (version "1.0.0")
6348     (source
6349      (origin
6350        (method url-fetch)
6351        (uri (string-append
6352              "https://github.com/timcharper/evil-surround/archive/v"
6353              version ".tar.gz"))
6354        (file-name (string-append name "-" version ".tar.gz"))
6355        (sha256
6356         (base32
6357          "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r"))))
6358     (build-system emacs-build-system)
6359     (propagated-inputs
6360      `(("emacs-evil" ,emacs-evil)))
6361     (home-page "https://github.com/timcharper/evil-surround")
6362     (synopsis "Easily modify surrounding parantheses and quotes")
6363     (description "@code{emacs-evil-surround} allows easy deletion, change and
6364 addition of surrounding pairs, such as parantheses and quotes, in evil mode.")
6365     (license license:gpl3+)))
6367 (define-public emacs-evil-commentary
6368   (package
6369     (name "emacs-evil-commentary")
6370     (version "2.1.1")
6371     (source
6372      (origin
6373        (method url-fetch)
6374        (uri (string-append
6375              "https://github.com/linktohack/evil-commentary/archive/v"
6376              version ".tar.gz"))
6377        (file-name (string-append name "-" version ".tar.gz"))
6378        (sha256
6379         (base32
6380          "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230"))))
6381     (build-system emacs-build-system)
6382     (propagated-inputs
6383      `(("emacs-evil" ,emacs-evil)))
6384     (home-page "https://github.com/linktohack/evil-commentary")
6385     (synopsis "Comment out code in evil mode")
6386     (description "@code{emacs-evil-commentary} adds keybindings to easily
6387 comment out lines of code in evil mode.  It provides @code{gcc} to comment out
6388 lines, and @code{gc} to comment out the target of a motion.")
6389     (license license:gpl3+)))
6391 ;; Tests for emacs-ansi have a circular dependency with ert-runner, and
6392 ;; therefore cannot be run
6393 (define-public emacs-ansi
6394   (package
6395     (name "emacs-ansi")
6396     (version "0.4.1")
6397     (source
6398      (origin
6399        (method url-fetch)
6400        (uri (string-append "https://github.com/rejeep/ansi.el/archive/v"
6401                            version ".tar.gz"))
6402        (file-name (string-append name "-" version ".tar.gz"))
6403        (sha256
6404         (base32
6405          "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8"))))
6406     (build-system emacs-build-system)
6407     (propagated-inputs
6408      `(("emacs-dash" ,emacs-dash)
6409        ("emacs-s" ,emacs-s)))
6410     (home-page "https://github.com/rejeep/ansi.el")
6411     (synopsis "Convert strings to ANSI")
6412     (description "@code{emacs-ansi} defines functions that turns simple
6413 strings to ANSI strings.  Turning a string into an ANSI string can be to add
6414 color to a text, add color in the background of a text or adding a style, such
6415 as bold, underscore or italic.")
6416     (license license:gpl3+)))
6418 ;; Tests for emacs-commander have a circular dependency with ert-runner, and
6419 ;; therefore cannot be run
6420 (define-public emacs-commander
6421   (package
6422     (name "emacs-commander")
6423     (version "0.7.0")
6424     (source
6425      (origin
6426        (method url-fetch)
6427        (uri (string-append "https://github.com/rejeep/commander.el/archive/v"
6428                            version ".tar.gz"))
6429        (file-name (string-append name "-" version ".tar.gz"))
6430        (sha256
6431         (base32
6432          "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y"))))
6433     (build-system emacs-build-system)
6434     (propagated-inputs
6435      `(("emacs-dash" ,emacs-dash)
6436        ("emacs-f" ,emacs-f)
6437        ("emacs-s" ,emacs-s)))
6438     (home-page "https://github.com/rejeep/commander.el")
6439     (synopsis "Emacs command line parser")
6440     (description "@code{emacs-commander} provides command line parsing for
6441 Emacs.")
6442     (license license:gpl3+)))
6444 ;; Tests for ert-runner have a circular dependency with ecukes, and therefore
6445 ;; cannot be run
6446 (define-public ert-runner
6447   (package
6448     (name "ert-runner")
6449     (version "0.7.0")
6450     (source
6451      (origin
6452        (method url-fetch)
6453        (uri (string-append "https://github.com/rejeep/ert-runner.el/archive/v"
6454                            version ".tar.gz"))
6455        (file-name (string-append name "-" version ".tar.gz"))
6456        (sha256
6457         (base32
6458          "1657nck9i96a4xgl8crfqq0s8gflzp21pkkzwg6m3z5npjxklgwp"))))
6459     (build-system emacs-build-system)
6460     (inputs
6461      `(("emacs-ansi" ,emacs-ansi)
6462        ("emacs-commander" ,emacs-commander)
6463        ("emacs-dash" ,emacs-dash)
6464        ("emacs-f" ,emacs-f)
6465        ("emacs-s" ,emacs-s)
6466        ("emacs-shut-up" ,emacs-shut-up)))
6467     (arguments
6468      `(#:phases
6469        (modify-phases %standard-phases
6470          (add-after 'install 'install-executable
6471            (lambda* (#:key inputs outputs #:allow-other-keys)
6472              (let ((out (assoc-ref outputs "out")))
6473                (substitute* "bin/ert-runner"
6474                  (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)")
6475                   (string-append "ERT_RUNNER=\"" out
6476                                  "/share/emacs/site-lisp/guix.d/"
6477                                  ,name "-" ,version)))
6478                (install-file "bin/ert-runner" (string-append out "/bin"))
6479                (wrap-program (string-append out "/bin/ert-runner")
6480                  (list "EMACSLOADPATH" ":" 'prefix
6481                        (string-split (getenv "EMACSLOADPATH") #\:)))
6482                #t))))
6483        #:include (cons* "^reporters/.*\\.el$" %default-include)))
6484     (home-page "https://github.com/rejeep/ert-runner.el")
6485     (synopsis "Opinionated Ert testing workflow")
6486     (description "@code{ert-runner} is a tool for Emacs projects tested
6487 using ERT.  It assumes a certain test structure setup and can therefore make
6488 running tests easier.")
6489     (license license:gpl3+)))
6491 (define-public emacs-disable-mouse
6492   (package
6493     (name "emacs-disable-mouse")
6494     (version "0.2")
6495     (source
6496      (origin
6497        (method url-fetch)
6498        (uri (string-append
6499              "https://github.com/purcell/disable-mouse/archive/"
6500              version ".tar.gz"))
6501        (file-name (string-append name "-" version ".tar.gz"))
6502        (sha256
6503         (base32
6504          "0haqpq23r1wx04lsqrrg3p5visg9hx5i36dg55ab003wfsrlrzbc"))))
6505     (build-system emacs-build-system)
6506     (home-page "https://github.com/purcell/disable-mouse")
6507     (synopsis "Disable mouse commands globally")
6508     (description
6509      "Provides @code{disable-mouse-mode} and @code{global-disable-mouse-mode},
6510 pair of minor modes which suppress all mouse events by intercepting them and
6511 running a customisable handler command (@code{ignore} by default). ")
6512     (license license:gpl3+)))
6514 (define-public emacs-json-reformat
6515   (package
6516     (name "emacs-json-reformat")
6517     (version "0.0.6")
6518     (source
6519      (origin
6520        (method url-fetch)
6521        (uri (string-append "https://github.com/gongo/json-reformat/archive/"
6522                            version ".tar.gz"))
6523        (file-name (string-append name "-" version ".tar.gz"))
6524        (sha256
6525         (base32
6526          "11fbq4scrgr7m0iwnzcrn2g7xvqwm2gf82sa7zy1l0nil7265p28"))
6527        (patches (search-patches "emacs-json-reformat-fix-tests.patch"))))
6528     (build-system emacs-build-system)
6529     (propagated-inputs
6530      `(("emacs-undercover" ,emacs-undercover)))
6531     (native-inputs
6532      `(("emacs-dash" ,emacs-dash)
6533        ("emacs-shut-up" ,emacs-shut-up)
6534        ("ert-runner" ,ert-runner)))
6535     (arguments
6536      `(#:tests? #t
6537        #:test-command '("ert-runner")))
6538     (home-page "https://github.com/gongo/json-reformat")
6539     (synopsis "Reformatting tool for JSON")
6540     (description "@code{json-reformat} provides a reformatting tool for
6541 @url{http://json.org/, JSON}.")
6542     (license license:gpl3+)))
6544 (define-public emacs-json-snatcher
6545   (package
6546     (name "emacs-json-snatcher")
6547     (version "1.0.0")
6548     (source
6549      (origin
6550        (method url-fetch)
6551        (uri (string-append "https://github.com/Sterlingg/json-snatcher/archive/"
6552                            version ".tar.gz"))
6553        (file-name (string-append name "-" version ".tar.gz"))
6554        (sha256
6555         (base32
6556          "1nfiwsifpdiz0lbrqa77nl0crnfrv5h85ans9b0g5rggnmyshcfb"))))
6557     (build-system emacs-build-system)
6558     (home-page "https://github.com/sterlingg/json-snatcher")
6559     (synopsis "Grabs the path to JSON values in a JSON file")
6560     (description "@code{emacs-json-snatcher} grabs the path to JSON values in
6561 a @url{http://json.org/, JSON} file.")
6562     (license license:gpl3+)))
6564 (define-public emacs-json-mode
6565   (package
6566     (name "emacs-json-mode")
6567     (version "1.7.0")
6568     (source
6569      (origin
6570        (method url-fetch)
6571        (uri (string-append "https://github.com/joshwnj/json-mode/archive/"
6572                            "v" version ".tar.gz"))
6573        (file-name (string-append name "-" version ".tar.gz"))
6574        (sha256
6575         (base32
6576          "06h45p4cn767pk9sqi2zb1c65wy5gyyijqxzpglp80zwxhvajdz5"))))
6577     (build-system emacs-build-system)
6578     (propagated-inputs
6579      `(("emacs-json-reformat" ,emacs-json-reformat)
6580        ("emacs-json-snatcher" ,emacs-json-snatcher)))
6581     (home-page "https://github.com/joshwnj/json-mode")
6582     (synopsis "Major mode for editing JSON files")
6583     (description "@code{json-mode} extends the builtin js-mode syntax
6584 highlighting.")
6585     (license license:gpl3+)))
6587 (define-public emacs-restclient
6588   (let ((commit "07a3888bb36d0e29608142ebe743b4362b800f40")
6589         (revision "1"))                 ;Guix package revision,
6590                                         ;upstream doesn't have official releases
6591     (package
6592       (name "emacs-restclient")
6593       (version (string-append revision "."
6594                               (string-take commit 7)))
6595       (source (origin
6596                 (method git-fetch)
6597                 (uri (git-reference
6598                       (url "https://github.com/pashky/restclient.el.git")
6599                       (commit commit)))
6600                 (sha256
6601                  (base32
6602                   "00lmjhb5im1kgrp54yipf1h9pshxzgjlg71yf2rq5n973gvb0w0q"))
6603                 (file-name (git-file-name name version))))
6604       (build-system emacs-build-system)
6605       (propagated-inputs
6606        `(("emacs-helm" ,emacs-helm)))
6607       (home-page "https://github.com/pashky/restclient.el")
6608       (synopsis "Explore and test HTTP REST webservices")
6609       (description
6610        "This tool allows for testing and exploration of HTTP REST Web services
6611 from within Emacs.  Restclient runs queries from a plan-text query sheet,
6612 displays results pretty-printed in XML or JSON with @code{restclient-mode}")
6613       (license license:public-domain))))
6615 (define-public emacs-eimp
6616   (let ((version "1.4.0")
6617         (commit "2e7536fe6d8f7faf1bad7a8ae37faba0162c3b4f")
6618         (revision "1"))
6619     (package
6620       (name "emacs-eimp")
6621       (version (git-version version revision commit))
6622       (source
6623        (origin
6624          (method git-fetch)
6625          (uri (git-reference
6626                (url "https://github.com/nicferrier/eimp.git")
6627                (commit commit)))
6628          (file-name (git-file-name name version))
6629          (sha256
6630           (base32
6631            "154d57yafxbcf39r89n5j43c86rp2fki3lw3gwy7ww2g6qkclcra"))))
6632       (build-system emacs-build-system)
6633       (arguments
6634        `(#:phases
6635          (modify-phases %standard-phases
6636            (add-after 'unpack 'configure
6637              (lambda* (#:key inputs #:allow-other-keys)
6638                (let ((imagemagick (assoc-ref inputs "imagemagick")))
6639                  ;; eimp.el is read-only in git.
6640                  (chmod "eimp.el" #o644)
6641                  (emacs-substitute-variables "eimp.el"
6642                    ("eimp-mogrify-program"
6643                     (string-append imagemagick "/bin/mogrify"))))
6644                #t)))))
6645       (inputs
6646        `(("imagemagick" ,imagemagick)))
6647       (home-page "https://github.com/nicferrier/eimp")
6648       (synopsis "Interactive image manipulation utility for Emacs")
6649       (description "@code{emacs-eimp} allows interactive image manipulation
6650 from within Emacs.  It uses the code@{mogrify} utility from ImageMagick to do
6651 the actual transformations.")
6652       (license license:gpl2+))))
6654 (define-public emacs-dired-hacks
6655   (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36")
6656         (revision "1"))
6657     (package
6658       (name "emacs-dired-hacks")
6659       (version (string-append "0.0.1-" revision "."
6660                               (string-take commit 7)))
6661       (source (origin
6662                 (method git-fetch)
6663                 (uri (git-reference
6664                       (url "https://github.com/Fuco1/dired-hacks.git")
6665                       (commit commit)))
6666                 (file-name (string-append name "-" version "-checkout"))
6667                 (sha256
6668                  (base32
6669                   "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx"))))
6670       (build-system emacs-build-system)
6671       (propagated-inputs
6672        `(("emacs-dash" ,emacs-dash)
6673          ("emacs-eimp" ,emacs-eimp)
6674          ("emacs-f" ,emacs-f)
6675          ("emacs-s" ,emacs-s)))
6676       (home-page "https://github.com/Fuco1/dired-hacks")
6677       (synopsis
6678        "Collection of useful dired additions")
6679       (description
6680        "Collection of Emacs dired mode additions:
6681 @itemize
6682 @item dired-avfs
6683 @item dired-columns
6684 @item dired-filter
6685 @item dired-hacks-utils
6686 @item dired-images
6687 @item dired-list
6688 @item dired-narrow
6689 @item dired-open
6690 @item dired-rainbow
6691 @item dired-ranger
6692 @item dired-subtree
6693 @item dired-tagsistant
6694 @end itemize\n")
6695       (license license:gpl3+))))
6697 (define-public emacs-which-key
6698   (package
6699     (name "emacs-which-key")
6700     (version "3.0.2")
6701     (source
6702      (origin
6703        (method url-fetch)
6704        (uri (string-append
6705              "https://github.com/justbur/emacs-which-key/archive/v"
6706              version ".tar.gz"))
6707        (sha256
6708         (base32
6709          "1xvd70cwq9n31f28viyjxmr3nn8l153gsy6scpszvgvjxkiikv24"))
6710        (file-name (string-append name "-" version ".tar.gz"))))
6711     (build-system emacs-build-system)
6712     (arguments
6713      `(#:tests? #t
6714        #:test-command '("emacs" "--batch"
6715                         "-l" "which-key-tests.el"
6716                         "-f" "ert-run-tests-batch-and-exit")))
6717     (home-page "https://github.com/justbur/emacs-which-key")
6718     (synopsis "Display available key bindings in popup")
6719     (description
6720      "@code{emacs-which-key} is a minor mode for Emacs that displays the key
6721 bindings following your currently entered incomplete command (a prefix) in a
6722 popup.  For example, after enabling the minor mode if you enter C-x and wait
6723 for the default of 1 second, the minibuffer will expand with all of the
6724 available key bindings that follow C-x (or as many as space allows given your
6725 settings).")
6726     (license license:gpl3+)))
6728 (define-public emacs-ws-butler
6729   (package
6730     (name "emacs-ws-butler")
6731     (version "0.6")
6732     (source (origin
6733               (method git-fetch)
6734               (uri (git-reference
6735                     (url "https://github.com/lewang/ws-butler.git")
6736                     (commit "323b651dd70ee40a25accc940b8f80c3a3185205")))
6737               (file-name (string-append name "-" version "-checkout"))
6738               (sha256
6739                (base32
6740                 "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb"))))
6741     (build-system emacs-build-system)
6742     (native-inputs
6743      `(("ert-runner" ,ert-runner)))
6744     (arguments
6745      `(#:tests? #t
6746        #:test-command '("ert-runner" "tests")))
6747     (home-page "https://github.com/lewang/ws-butler")
6748     (synopsis "Trim spaces from end of lines")
6749     (description
6750      "This Emacs package automatically and unobtrusively trims whitespace
6751 characters from end of lines.")
6752     (license license:gpl3+)))
6754 (define-public emacs-org-edit-latex
6755   (package
6756     (name "emacs-org-edit-latex")
6757     (version "0.8.0")
6758     (source
6759      (origin
6760        (method url-fetch)
6761        (uri (string-append
6762              "https://github.com/et2010/org-edit-latex/archive/v"
6763              version ".tar.gz"))
6764        (file-name (string-append name "-" version ".tar.gz"))
6765        (sha256
6766         (base32
6767          "1y4h6wrs8286h9pbsv4d8fr67a885vz8b2k80qgv5qddipi2i78p"))))
6768     (build-system emacs-build-system)
6769     (propagated-inputs
6770      `(("emacs-auctex" ,emacs-auctex)
6771        ;; The version of org in Emacs 25.2 is not sufficient, because the
6772        ;; `org-latex-make-preamble' function is required.
6773        ("emacs-org" ,emacs-org)))
6774     (home-page "https://github.com/et2010/org-edit-latex")
6775     (synopsis "Edit a latex fragment just like editing a src block")
6776     (description "@code{emacs-org-edit-latex} is an extension for org-mode.
6777 It lets you edit a latex fragment in a dedicated buffer just like editing a
6778 src block.")
6779     (license license:gpl3+)))
6781 (define-public emacs-emamux
6782   (package
6783     (name "emacs-emamux")
6784     (version "0.14")
6785     (source (origin
6786               (method url-fetch)
6787               (uri (string-append
6788                     "https://github.com/syohex/emacs-emamux/archive/"
6789                     version ".tar.gz"))
6790               (file-name (string-append name "-" version ".tar.gz"))
6791               (sha256
6792                (base32
6793                 "0wlqg4icy037bj70b0qmhvwvmiwhagpnx6pnxhq6gzy1hvwlilkx"))))
6794     (build-system emacs-build-system)
6795     (home-page "https://github.com/syohex/emacs-emamux")
6796     (synopsis "Manipulate Tmux from Emacs")
6797     (description
6798      "@code{emacs-emamux} lets Emacs interact with the @code{tmux} terminal
6799 multiplexer.")
6800     (license license:gpl3+)))
6802 (define-public emacs-rpm-spec-mode
6803   (package
6804     (name "emacs-rpm-spec-mode")
6805     (version "0.16")
6806     (source
6807      (origin
6808        (method url-fetch)
6809        ;; URI has the Fedora release number instead of the version
6810        ;; number. This will have to updated manually every new release.
6811        (uri (string-append
6812              "https://src.fedoraproject.org/cgit/rpms"
6813              "/emacs-rpm-spec-mode.git/snapshot"
6814              "/emacs-rpm-spec-mode-f26.tar.gz"))
6815        (sha256
6816         (base32
6817          "17dz80lhjrc89fj17pysl8slahzrqdkxgcjdk55zls6jizkr6kz3"))))
6818     (build-system emacs-build-system)
6819     (home-page "http://pkgs.fedoraproject.org/cgit/rpms/emacs-rpm-spec-mode.git")
6820     (synopsis "Emacs major mode for editing RPM spec files")
6821     (description "@code{emacs-rpm-spec-mode} provides an Emacs major mode for
6822 editing RPM spec files.")
6823     (license license:gpl2+)))
6825 (define-public emacs-git-messenger
6826   (package
6827     (name "emacs-git-messenger")
6828     (version "0.18")
6829     (source
6830      (origin
6831        (method url-fetch)
6832        (uri (string-append
6833              "https://github.com/syohex/emacs-git-messenger/archive/"
6834              version ".tar.gz"))
6835        (file-name (string-append name "-" version ".tar.gz"))
6836        (sha256
6837         (base32
6838          "17mqki6g0wx46fn7dcbcc2pjxik7vvrcb1j9jzxim8b9psbsbnp9"))))
6839     (build-system emacs-build-system)
6840     (propagated-inputs
6841      `(("emacs-popup" ,emacs-popup)))
6842     (arguments
6843      `(#:tests? #t
6844        #:test-command '("emacs" "--batch" "-l" "test/test.el"
6845                         "-f" "ert-run-tests-batch-and-exit")))
6846     (home-page "https://github.com/syohex/emacs-git-messenger")
6847     (synopsis "Popup commit message at current line")
6848     (description "@code{emacs-git-messenger} provides
6849 @code{git-messenger:popup-message}, a function that when called, will popup
6850 the last git commit message for the current line.  This uses git-blame
6851 internally.")
6852     (license license:gpl3+)))
6854 (define-public emacs-gitpatch
6855   (package
6856     (name "emacs-gitpatch")
6857     (version "0.5.0")
6858     (source
6859      (origin
6860        (method url-fetch)
6861        (uri (string-append "https://github.com/tumashu/gitpatch/archive/"
6862                            "v" version ".tar.gz"))
6863        (file-name (string-append name "-" version ".tar.gz"))
6864        (sha256
6865         (base32
6866          "1yj6pmic541lcnscjin300k380qp9xdfprs55xg1q57jrkq6f6k7"))))
6867     (build-system emacs-build-system)
6868     (home-page "https://github.com/tumashu/gitpatch")
6869     (synopsis "Mail git patch from Emacs")
6870     (description "@code{emacs-gitpatch} lets users easily send git patches,
6871 created by @code{git format-patch}, from @code{magit}, @code{dired} and
6872 @code{ibuffer} buffers.")
6873     (license license:gpl3+)))
6875 (define-public emacs-erc-hl-nicks
6876   (package
6877     (name "emacs-erc-hl-nicks")
6878     (version "1.3.2")
6879     (source
6880      (origin
6881        (method url-fetch)
6882        (uri (string-append "https://github.com/leathekd/erc-hl-nicks"
6883                            "/archive/" version ".tar.gz"))
6884        (file-name (string-append name "-" version ".tar.gz"))
6885        (sha256
6886         (base32
6887          "01svpl9bps5kx4y1wnymakxya2cznqmlynvqv2r500wpnbxczrbs"))))
6888     (build-system emacs-build-system)
6889     (synopsis "Nickname highlighting for Emacs ERC")
6890     (description "@code{erc-hl-nicks} highlights nicknames in ERC, an IRC
6891 client for Emacs.  The main features are:
6892 @itemize
6893 @item Auto-colorizes nicknames without having to specify colors
6894 @item Ignores certain characters that IRC clients add to nicknames to avoid
6895 duplicates (nickname, nickname’, nickname\", etc.)
6896 @item Attempts to produce colors with a sufficient amount of contrast between
6897 the nick color and the background color
6898 @end itemize\n")
6899     (home-page "https://github.com/leathekd/erc-hl-nicks")
6900     (license license:gpl3+)))
6902 (define-public emacs-engine-mode
6903   (package
6904     (name "emacs-engine-mode")
6905     (version "2.0.0")
6906     (source
6907      (origin
6908        (method url-fetch)
6909        (uri (string-append "https://github.com/hrs/engine-mode/archive/"
6910                            "v" version ".tar.gz"))
6911        (file-name (string-append name "-" version ".tar.gz"))
6912        (sha256
6913         (base32
6914          "1vm4p7pcp1vnwwxvps1bhm7i7hkabqqxl898knxf2hqvxys76684"))))
6915     (build-system emacs-build-system)
6916     (synopsis "Minor mode for defining and querying search engines")
6917     (description "@code{engine-mode} is a global minor mode for Emacs.  It
6918 enables you to easily define search engines, bind them to keybindings, and
6919 query them from the comfort of your editor.")
6920     (home-page "https://github.com/hrs/engine-mode")
6921     (license license:gpl3+)))
6923 (define-public emacs-prop-menu
6924   (package
6925     (name "emacs-prop-menu")
6926     (version "0.1.2")
6927     (source
6928      (origin
6929        (method url-fetch)
6930        (uri (string-append
6931              "http://stable.melpa.org/packages/prop-menu-"
6932              version ".el"))
6933        (sha256
6934         (base32
6935          "01bk4sjafzz7gqrkv9jg0pa85qr34vbk3q8ga2b0m61bndywzgpr"))))
6936     (build-system emacs-build-system)
6937     (home-page
6938      "https://github.com/david-christiansen/prop-menu-el")
6939     (synopsis
6940      "Create and display a context menu based on text and overlay properties")
6941     (description
6942      "This is a library for computing context menus based on text
6943 properties and overlays.  The intended use is to have tools that
6944 annotate source code and others that use these annotations, without
6945 requiring a direct coupling between them, but maintaining
6946 discoverability.
6948 Major modes that wish to use this library should first define an
6949 appropriate value for @code{prop-menu-item-functions}.  Then, they should
6950 bind @code{prop-menu-by-completing-read} to an appropriate
6951 key.  Optionally, a mouse pop-up can be added by binding
6952 @code{prop-menu-show-menu} to a mouse event.")
6953     (license license:gpl3+)))
6955 (define-public emacs-idris-mode
6956   (package
6957     (name "emacs-idris-mode")
6958     (version "0.9.19")
6959     (source
6960      (origin
6961        (method url-fetch)
6962        (uri (string-append
6963              "http://stable.melpa.org/packages/idris-mode-"
6964              version ".tar"))
6965        (sha256
6966         (base32
6967          "02r1qqsxi6qk7q4cj6a6pygbj856dcw9vcmhfh0ib92j41v77q6y"))))
6968     (build-system emacs-build-system)
6969     (propagated-inputs
6970      `(("emacs-prop-menu" ,emacs-prop-menu)))
6971     (home-page
6972      "https://github.com/idris-hackers/idris-mode")
6973     (synopsis "Major mode for editing Idris code")
6974     (description
6975      "This is an Emacs mode for editing Idris code.  It requires the latest
6976 version of Idris, and some features may rely on the latest Git version of
6977 Idris.")
6978     (license license:gpl3+)))
6980 (define-public emacs-browse-at-remote
6981   (let ((commit "31dcf77d7c89a12f230e2b2332585db2c44530ef")
6982         (revision "1"))
6983     (package
6984       (name "emacs-browse-at-remote")
6985       (version (string-append "0.9.0-" revision "."
6986                               (string-take commit 7)))
6987       (source (origin
6988                 (method git-fetch)
6989                 (uri (git-reference
6990                       (url "https://github.com/rmuslimov/browse-at-remote.git")
6991                       (commit commit)))
6992                 (file-name (string-append name "-" version "-checkout"))
6993                 (patches
6994                  (search-patches "emacs-browse-at-remote-cgit-gnu.patch"))
6995                 (sha256
6996                  (base32
6997                   "017cb8lf7zbg0jmr7zxzd7d5kz2jy35cvw5vcpdmq1fdr3wqwkgj"))))
6998       (build-system emacs-build-system)
6999       (propagated-inputs
7000        `(("emacs-f" ,emacs-f)
7001          ("emacs-s" ,emacs-s)))
7002       (native-inputs
7003        `(("ert-runner" ,ert-runner)))
7004       (arguments
7005        `(#:tests? #t
7006          #:test-command '("ert-runner")))
7007       (home-page "https://github.com/rmuslimov/browse-at-remote")
7008       (synopsis "Open github/gitlab/bitbucket/stash page from Emacs")
7009       (description
7010        "This Emacs package allows you to open a target page on
7011 github/gitlab (or bitbucket) by calling @code{browse-at-remote} command.
7012 It supports dired buffers and opens them in tree mode at destination.")
7013       (license license:gpl3+))))
7015 (define-public emacs-tiny
7016   (package
7017     (name "emacs-tiny")
7018     (version "0.2.1")
7019     (source
7020      (origin
7021        (method url-fetch)
7022        (uri (string-append "http://elpa.gnu.org/packages/tiny-" version ".tar"))
7023        (sha256
7024         (base32
7025          "1cr73a8gba549ja55x0c2s554f3zywf69zbnd7v82jz5q1k9wd2v"))))
7026     (build-system emacs-build-system)
7027     (home-page "https://github.com/abo-abo/tiny")
7028     (synopsis "Quickly generate linear ranges in Emacs")
7029     (description
7030      "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}.
7031 It is meant to quickly generate linear ranges, e.g. 5, 6, 7, 8.  Some elisp
7032 proficiency is an advantage, since you can transform your numeric range with
7033 an elisp expression.")
7034     (license license:gpl3+)))
7036 (define-public emacs-emojify
7037   (package
7038     (name "emacs-emojify")
7039     (version "0.4")
7040     (source
7041      (origin
7042        (method url-fetch)
7043        (uri (string-append "https://github.com/iqbalansari/emacs-emojify/"
7044                            "releases/download/v" version "/emojify-"
7045                            version ".tar"))
7046        (sha256
7047         (base32
7048          "0k84v2d2bkiwcky9fi1yyprgkj46g7wh6pyl9gzmcd7sqv051d5n"))))
7049     (build-system emacs-build-system)
7050     (arguments
7051      `(#:phases
7052        (modify-phases %standard-phases
7053          (add-after 'install 'install-data
7054            (lambda* (#:key  outputs #:allow-other-keys)
7055              (copy-recursively "data"
7056                                (string-append (assoc-ref outputs "out")
7057                                               "/share/emacs/site-lisp/guix.d/"
7058                                               "emojify-" ,version "/data"))
7059              #t)))))
7060     (propagated-inputs
7061      `(("emacs-ht" ,emacs-ht)))
7062     (home-page "https://github.com/iqbalansari/emacs-emojify")
7063     (synopsis "Display emojis in Emacs")
7064     (description "This package displays emojis in Emacs similar to how Github,
7065 Slack, and other websites do.  It can display plain ASCII like @code{:)} as
7066 well as Github-style emojis like @code{:smile:}.  It provides a minor mode
7067 @code{emojify-mode} to enable the display of emojis in a buffer.")
7068     (license license:gpl3+)))
7070 (define-public emacs-websocket
7071   (package
7072     (name "emacs-websocket")
7073     (version "1.10")
7074     (source
7075      (origin
7076        (method git-fetch)
7077        (uri (git-reference
7078              (url "https://github.com/ahyatt/emacs-websocket.git")
7079              (commit version)))
7080        (file-name (string-append name "-" version "-checkout"))
7081        (sha256
7082         (base32
7083          "1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52"))))
7084     (build-system emacs-build-system)
7085     (home-page "http://elpa.gnu.org/packages/websocket.html")
7086     (synopsis "Emacs WebSocket client and server")
7087     (description "This is an Elisp library for WebSocket clients to talk to
7088 WebSocket servers, and for WebSocket servers to accept connections from
7089 WebSocket clients.  This library is designed to be used by other library
7090 writers, to write applications that use WebSockets, and is not useful by
7091 itself.")
7092     (license license:gpl3+)))
7094 (define-public emacs-oauth2
7095   (package
7096     (name "emacs-oauth2")
7097     (version "0.11")
7098     (source
7099      (origin
7100        (method url-fetch)
7101        (uri (string-append "https://elpa.gnu.org/packages/oauth2-"
7102                            version ".el"))
7103        (sha256
7104         (base32
7105          "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp"))))
7106     (build-system emacs-build-system)
7107     (home-page "http://elpa.gnu.org/packages/oauth2.html")
7108     (synopsis "OAuth 2.0 authorization protocol implementation")
7109     (description
7110      "This package provides an Elisp implementation of the OAuth 2.0 draft.
7111 The main entry point is @code{oauth2-auth-and-store} which will return a token
7112 structure.  This token structure can be then used with
7113 @code{oauth2-url-retrieve-synchronously} or @code{oauth2-url-retrieve} to
7114 retrieve any data that need OAuth authentication to be accessed.  If the token
7115 needs to be refreshed, the code handles it automatically and stores the new
7116 value of the access token.")
7117     (license license:gpl3+)))
7119 (define-public emacs-circe
7120   (package
7121     (name "emacs-circe")
7122     (version "2.6")
7123     (source
7124      (origin
7125        (method git-fetch)
7126        (uri (git-reference
7127              (url "https://github.com/jorgenschaefer/circe.git")
7128              (commit (string-append "v" version))))
7129        (file-name (string-append name "-" version "-checkout"))
7130        (sha256
7131         (base32
7132          "19h3983zy3f15cgs86irvbdzz55qyjm48qd7gjlzcxplr7vnnh0j"))))
7133     (build-system emacs-build-system)
7134     ;; In order to securely connect to an IRC server using TLS, Circe requires
7135     ;; the GnuTLS binary.
7136     (propagated-inputs
7137      `(("gnutls" ,gnutls)))
7138     (home-page "https://github.com/jorgenschaefer/circe")
7139     (synopsis "Client for IRC in Emacs")
7140     (description "Circe is a Client for IRC in Emacs.  It integrates well with
7141 the rest of the editor, using standard Emacs key bindings and indicating
7142 activity in channels in the status bar so it stays out of your way unless you
7143 want to use it.")
7144     (license license:gpl3+)))
7146 (define-public emacs-slack
7147   (let ((commit "d90395482d26175ce38fd935e978c428be8af9a0")
7148         (revision "4"))
7149     (package
7150       (name "emacs-slack")
7151       (version (string-append "0-" revision "." (string-take commit 7)))
7152       (source (origin
7153                 (method git-fetch)
7154                 (uri (git-reference
7155                       (url "https://github.com/yuya373/emacs-slack.git")
7156                       (commit commit)))
7157                 (file-name (string-append name "-" version "-checkout"))
7158                 (sha256
7159                  (base32
7160                   "14f6wjcbl09cfd3yngr6m1k1d4nr764im666mbnqbk9nmqf50nib"))))
7161       (build-system emacs-build-system)
7162       (propagated-inputs
7163        `(("emacs-alert" ,emacs-alert)
7164          ("emacs-emojify" ,emacs-emojify)
7165          ("emacs-request" ,emacs-request)
7166          ("emacs-websocket" ,emacs-websocket)
7167          ("emacs-oauth2" ,emacs-oauth2)
7168          ("emacs-circe" ,emacs-circe)))
7169       (home-page "https://github.com/yuya373/emacs-slack")
7170       (synopsis "Slack client for Emacs")
7171       (description "This package provides an Emacs client for the Slack
7172 messaging service.")
7173       (license license:gpl3+))))
7175 (define-public emacs-bash-completion
7176   (package
7177    (name "emacs-bash-completion")
7178    (version "2.0.0")
7179    (source
7180     (origin
7181       (method url-fetch)
7182       (uri (string-append
7183             "https://github.com/szermatt/emacs-bash-completion/archive/v"
7184             version ".tar.gz"))
7185       (file-name (string-append name "-" version ".tar.gz"))
7186       (sha256
7187        (base32
7188         "0mkci4a1fy8z4cmry8mx5vsx4f16a8r454slnh7lqzidnhfi63hj"))))
7189    (inputs `(("bash" ,bash)))
7190    (build-system emacs-build-system)
7191    (arguments
7192      `(#:phases
7193        (modify-phases %standard-phases
7194          (add-before 'install 'configure
7195            (lambda* (#:key inputs #:allow-other-keys)
7196              (let ((bash (assoc-ref inputs "bash")))
7197                (emacs-substitute-variables "bash-completion.el"
7198                  ("bash-completion-prog" (string-append bash "/bin/bash"))))
7199              #t)))))
7200    (home-page "https://github.com/szermatt/emacs-bash-completion")
7201    (synopsis "BASH completion for the shell buffer")
7202    (description
7203     "@code{bash-completion} defines dynamic completion hooks for shell-mode
7204 and shell-command prompts that are based on bash completion.")
7205    (license license:gpl2+)))
7207 (define-public emacs-easy-kill
7208   (package
7209     (name "emacs-easy-kill")
7210     (version "0.9.3")
7211     (source (origin
7212               (method url-fetch)
7213               (uri (string-append "https://elpa.gnu.org/packages/easy-kill-"
7214                                   version ".tar"))
7215               (sha256
7216                (base32
7217                 "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb"))))
7218     (build-system emacs-build-system)
7219     (home-page "https://github.com/leoliu/easy-kill")
7220     (synopsis "Kill and mark things easily in Emacs")
7221     (description
7222      "This package provides commands @code{easy-kill} and @code{easy-mark} to
7223 let users kill or mark things easily.")
7224     (license license:gpl3+)))
7226 (define-public emacs-csv-mode
7227   (package
7228     (name "emacs-csv-mode")
7229     (version "1.7")
7230     (source
7231      (origin
7232        (method url-fetch)
7233        (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
7234                            version ".el"))
7235        (sha256
7236         (base32
7237          "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
7238     (build-system emacs-build-system)
7239     (home-page
7240      "http://elpa.gnu.org/packages/csv-mode.html")
7241     (synopsis
7242      "Major mode for editing comma/char separated values")
7243     (description
7244      "This Emacs package implements CSV mode, a major mode for editing records
7245 in a generalized CSV (character-separated values) format.")
7246     (license license:gpl3+)))
7248 (define-public emacs-transmission
7249   (package
7250     (name "emacs-transmission")
7251     (version "0.12.1")
7252     (source (origin
7253               (method url-fetch)
7254               (uri (string-append
7255                     "https://github.com/holomorph/transmission/archive/"
7256                     version ".tar.gz"))
7257               (file-name (string-append name "-" version ".tar.gz"))
7258               (sha256
7259                (base32
7260                 "1rrlgn96gi1ljfwbwvlyyxbq75xzamlbdhq1bpyadxxmxcvlmk3n"))))
7261     (build-system emacs-build-system)
7262     (home-page "https://github.com/holomorph/transmission")
7263     (synopsis "Emacs interface to a Transmission session")
7264     (description "This package provides an Emacs interface to interact with a
7265 running session of the Transmission Bittorrent client.
7267 Features:
7269 @itemize
7270 @item List, add, start/stop, verify, remove torrents.
7271 @item Set speed limits, ratio limits, bandwidth priorities, trackers.
7272 @item Navigate to the corresponding file list, torrent info, peer info
7273 contexts.
7274 @item Toggle downloading and set priorities for individual files.
7275 @end itemize\n")
7276     (license license:gpl3+)))
7278 (define-public emacs-polymode
7279   ;; There hasn't been a proper release.
7280   (let ((commit "0340f5e7e55235832e59673f027cc79a23cbdcd6")
7281         (revision "1"))
7282     (package
7283       (name "emacs-polymode")
7284       (version (string-append "1.0-" revision "." (string-take commit 7)))
7285       (source (origin
7286                 (method git-fetch)
7287                 (uri (git-reference
7288                       (url "https://github.com/vspinu/polymode.git")
7289                       (commit commit)))
7290                 (file-name (string-append name "-" version "-checkout"))
7291                 (sha256
7292                  (base32
7293                   "057cybkq3cy07n5s332k071sjiky3mziy003lza4rh75mgqkwhmh"))))
7294       (build-system emacs-build-system)
7295       (arguments
7296        `(#:include (cons* "^modes/.*\\.el$" %default-include)
7297          #:phases
7298          (modify-phases %standard-phases
7299            (add-after 'set-emacs-load-path 'add-modes-subdir-to-load-path
7300              (lambda _
7301                (setenv "EMACSLOADPATH"
7302                        (string-append (getenv "EMACSLOADPATH")
7303                                       ":" (getcwd) "/modes" ":")))))))
7304       (home-page "https://github.com/vspinu/polymode")
7305       (synopsis "Framework for multiple Emacs modes based on indirect buffers")
7306       (description "Polymode is an Emacs package that offers generic support
7307 for multiple major modes inside a single Emacs buffer.  It is lightweight,
7308 object oriented and highly extensible.  Creating a new polymode typically
7309 takes only a few lines of code.  Polymode also provides extensible facilities
7310 for external literate programming tools for exporting, weaving and tangling.")
7311       (license license:gpl3+))))
7313 (define-public eless
7314   (package
7315     (name "eless")
7316     (version "0.3")
7317     (source (origin
7318               (method url-fetch)
7319               (uri (string-append
7320                     "https://github.com/kaushalmodi/eless/archive/"
7321                     "v" version ".tar.gz"))
7322               (file-name (string-append name "-" version ".tar.gz"))
7323               (sha256
7324                (base32
7325                 "0gjnnhgw5xs1w3qfnkvwa2nv44gnxr8pkhx3c7qig45p8nh1461h"))))
7326     (build-system trivial-build-system)
7327     (inputs
7328      `(("bash" ,bash)))
7329     (native-inputs
7330      `(("tar" ,tar)
7331        ("gzip" ,gzip)))
7332     (arguments
7333      `(#:modules ((guix build utils))
7334        #:builder
7335        (begin
7336          (use-modules (guix build utils))
7337          (setenv "PATH" (string-append
7338                          (assoc-ref %build-inputs "tar") "/bin" ":"
7339                          (assoc-ref %build-inputs "gzip") "/bin"))
7340          (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
7341          (chdir (string-append "eless" "-" ,version))
7342          (substitute* "eless" (("/usr/bin/env bash")
7343                                (string-append (assoc-ref %build-inputs "bash")
7344                                               "/bin/bash")))
7345          (install-file "eless" (string-append %output "/bin"))
7346          (install-file "doc/eless.info" (string-append %output "/share/info"))
7347          #t)))
7348     (home-page "https://github.com/kaushalmodi/eless")
7349     (synopsis "Use Emacs as a paginator")
7350     (description "@code{eless} provides a combination of Bash script
7351 and a minimal Emacs view-mode.
7353 Feautures:
7355 @itemize
7356 @item Independent of a user’s Emacs config.
7357 @item Customizable via the @code{(locate-user-emacs-file \"elesscfg\")} config.
7358 @item Not require an Emacs server to be already running.
7359 @item Syntax highlighting.
7360 @item Org-mode file rendering.
7361 @item @code{man} page viewer.
7362 @item Info viewer.
7363 @item Dired, wdired, (batch edit symbolic links).
7364 @item Colored diffs, git diff, git log, ls with auto ANSI detection.
7365 @item Filter log files lines matching a regexp.
7366 @item Auto-revert log files similar to @code{tail -f}.
7367 @item Quickly change frame and font sizes.
7368 @end itemize\n")
7369     (license license:expat)))
7371 (define-public emacs-evil-matchit
7372   (package
7373     (name "emacs-evil-matchit")
7374     (version "2.2.6")
7375     (source
7376      (origin
7377        (method url-fetch)
7378        (uri (string-append
7379              "https://github.com/redguardtoo/evil-matchit/archive/"
7380              version ".tar.gz"))
7381        (file-name (string-append name "-" version ".tar.gz"))
7382        (sha256
7383         (base32
7384          "1yp9sl6542317mn1060ri90zyf6bs6qylagndhqy02p368q31rhi"))))
7385     (build-system emacs-build-system)
7386     (propagated-inputs
7387      `(("emacs-evil" ,emacs-evil)))
7388     (home-page "https://github.com/redguardtoo/evil-matchit")
7389     (synopsis "Vim matchit ported into Emacs")
7390     (description
7391      "@code{evil-matchit} is a minor mode for jumping between matching tags in
7392 evil mode using @kbd{%}.  It is a port of @code{matchit} for Vim.")
7393     (license license:gpl3+)))
7395 (define-public emacs-evil-smartparens
7396   (package
7397     (name "emacs-evil-smartparens")
7398     (version "0.4.0")
7399     (source
7400      (origin
7401        (method url-fetch)
7402        (uri (string-append
7403              "https://github.com/expez/evil-smartparens/archive/"
7404              version ".tar.gz"))
7405        (file-name (string-append name "-" version ".tar.gz"))
7406        (sha256
7407         (base32
7408          "1bwzdd3054d407d5j4m3njsbvmc9r8zzp33m32pj3b3irxrl68q0"))))
7409     (build-system emacs-build-system)
7410     (propagated-inputs
7411      `(("emacs-evil" ,emacs-evil)
7412        ("emacs-smartparens" ,emacs-smartparens)))
7413     (home-page "https://github.com/expez/evil-smartparens")
7414     (synopsis "Emacs Evil integration for Smartparens")
7415     (description "@code{emacs-evil-smartparens} is an Emacs minor mode which
7416 makes Evil play nice with Smartparens.  Evil is an Emacs minor mode that
7417 emulates Vim features and provides Vim-like key bindings.")
7418     (license license:gpl3+)))
7420 (define-public emacs-evil-quickscope
7421   (package
7422     (name "emacs-evil-quickscope")
7423     (version "0.1.4")
7424     (source
7425      (origin
7426        (method url-fetch)
7427        (uri (string-append "https://github.com/blorbx/evil-quickscope/archive/v"
7428                            version ".tar.gz"))
7429        (file-name (string-append name "-" version ".tar.gz"))
7430        (sha256
7431         (base32
7432          "1r26a412mmar7vbf89zcifswiwpdg30mjzj32xdyqss57aqi83ma"))))
7433     (build-system emacs-build-system)
7434     (propagated-inputs
7435      `(("emacs-evil" ,emacs-evil)))
7436     (arguments
7437      `(#:tests? #t
7438        #:test-command '("emacs" "--batch"
7439                         "-l" "evil-quickscope-tests.el"
7440                         "-f" "ert-run-tests-batch-and-exit")))
7441     (home-page "https://github.com/blorbx/evil-quickscope")
7442     (synopsis "Target highlighting for emacs evil-mode f,F,t and T commands")
7443     (description "@code{emacs-evil-quickscope} highlights targets for Evil
7444 mode’s f,F,t,T keys, allowing for quick navigation within a line.  It is a
7445 port of quick-scope for Vim.  Evil is an Emacs minor mode that emulates Vim
7446 features and provides Vim-like key bindings.")
7447     (license license:gpl3+)))
7449 (define-public emacs-bongo
7450   (package
7451     (name "emacs-bongo")
7452     (version "1.0")
7453     (source
7454      (origin
7455        (method url-fetch)
7456        (uri (string-append
7457              "https://github.com/dbrock/bongo/archive/"
7458              version ".tar.gz"))
7459        (file-name (string-append name "-" version ".tar.gz"))
7460        (sha256
7461         (base32
7462          "1pcsyyrvj7djjjwpaswd1i782hvqvlvs39cy9ns0k795si6xd64d"))))
7463     (build-system emacs-build-system)
7464     (home-page "https://github.com/dbrock/bongo")
7465     (synopsis "Media player for Emacs")
7466     (description
7467      "This package provides a flexible media player for Emacs.  @code{Bongo}
7468 supports multiple backends such as @code{vlc}, @code{mpg123},
7469 @code{ogg123}, @code{speexdec}, @code{timidity}, @code{mikmod} and
7470 @code{afplay}.")
7471     (license license:gpl2+)))
7473 (define-public groovy-emacs-modes
7474   (package
7475     (name "groovy-emacs-modes")
7476     (version "2.0")
7477     (source (origin
7478               (method url-fetch)
7479               (uri (string-append
7480                     "https://github.com/Groovy-Emacs-Modes/" name
7481                     "/archive/" version ".tar.gz"))
7482               (file-name (string-append name "-" version ".tar.gz"))
7483               (sha256
7484                (base32
7485                 "15j0hnkx9nppjzda5cqsxxz5f3bq9hc4xfyjcdypzqiypcvmpa39"))))
7486     (build-system emacs-build-system)
7487     (propagated-inputs
7488      `(("emacs-s" ,emacs-s)))
7489     (home-page "https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes")
7490     (synopsis "Groovy related modes for Emacs")
7491     (description
7492      "This package provides @code{groovy-mode} for syntax highlighing in
7493 Groovy source files, REPL integration with run-groovy and Grails project
7494 navigation with the grails mode.")
7495     (license license:gpl3+)))
7497 (define-public org-tree-slide
7498   (let ((commit "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134")
7499         (revision "0"))
7500     (package
7501       (name "emacs-org-tree-slide")
7502       (version (git-version "0.1" revision commit))
7503       (home-page "https://github.com/takaxp/org-tree-slide")
7504       (source (origin
7505                 (method git-fetch)
7506                 (uri (git-reference (url home-page) (commit commit)))
7507                 (sha256
7508                  (base32
7509                   "153bg0x7ypla11pq51jmsgzfjklwwnrq56xgpbfhk1j16xwz9hyf"))
7510                 (file-name (git-file-name name version))))
7511       (build-system emacs-build-system)
7512       (synopsis "Presentation tool for org-mode")
7513       (description
7514        "Org-tree-slide provides a slideshow mode to view org-mode files.  Use
7515 @code{org-tree-slide-mode} to enter the slideshow mode, and then @kbd{C->} and
7516 @kbd{C-<} to jump to the next and previous slide.")
7517       (license license:gpl3+))))
7519 (define-public emacs-scratch-el
7520   (let ((commit "2cdf2b841ce7a0987093f65b0cc431947549f897")
7521         (revision "1"))
7522     (package
7523       (name "emacs-scratch-el")
7524       (version (git-version "1.2" revision commit))
7525       (source (origin
7526                 (method git-fetch)
7527                 (uri (git-reference
7528                       (url "https://github.com/ieure/scratch-el.git")
7529                       (commit commit)))
7530                 (file-name (git-file-name name version))
7531                 (sha256
7532                  (base32
7533                   "0wscsndynjmnliajqaz28r1ww81j8wh84zwaaswx51abhwgl0idf"))))
7534       (build-system emacs-build-system)
7535       (native-inputs
7536        `(("texinfo" ,texinfo)))
7537       (arguments
7538        '(#:phases
7539          (modify-phases %standard-phases
7540            (add-after 'install 'install-doc
7541              (lambda* (#:key outputs #:allow-other-keys)
7542                (unless (invoke "makeinfo" "scratch.texi")
7543                  (error "makeinfo failed"))
7544                (install-file "scratch.info"
7545                              (string-append (assoc-ref outputs "out")
7546                                             "/share/info"))
7547                #t)))))
7548       (home-page "https://github.com/ieure/scratch-el/")
7549       (synopsis "Create scratch buffers with the same mode as current buffer")
7550       (description "Scratch is an extension to Emacs that enables one to create
7551 scratch buffers that are in the same mode as the current buffer.  This is
7552 notably useful when working on code in some language; you may grab code into a
7553 scratch buffer, and, by virtue of this extension, do so using the Emacs
7554 formatting rules for that language.")
7555       (license license:bsd-2))))
7557 (define-public emacs-kv
7558   (package
7559     (name "emacs-kv")
7560     (version "0.0.19")
7561     (source
7562      (origin
7563        (method git-fetch)
7564        (uri (git-reference
7565              (url "https://github.com/nicferrier/emacs-kv.git")
7566              (commit "721148475bce38a70e0b678ba8aa923652e8900e")))
7567        (file-name (string-append name "-" version "-checkout"))
7568        (sha256
7569         (base32
7570          "0r0lz2s6gvy04fwnafai668jsf4546h4k6zd6isx5wpk0n33pj5m"))))
7571     (build-system emacs-build-system)
7572     (arguments
7573      `(#:tests? #t
7574        #:test-command '("emacs" "--batch" "-l" "kv-tests.el"
7575                         "-f" "ert-run-tests-batch-and-exit")))
7576     (home-page "https://github.com/nicferrier/emacs-kv")
7577     (synopsis "Key/Value data structures library for Emacs Lisp")
7578     (description "@code{emacs-kv} is a collection of tools for dealing with
7579 key/value data structures such as plists, alists and hash-tables in Emacs
7580 Lisp.")
7581     (license license:gpl3+)))
7583 (define-public emacs-esxml
7584   (package
7585     (name "emacs-esxml")
7586     (version "0.3.4")
7587     (source (origin
7588               (method git-fetch)
7589               (uri (git-reference
7590                     (url "https://github.com/tali713/esxml.git")
7591                     (commit version)))
7592               (file-name (git-file-name name version))
7593               (sha256
7594                (base32
7595                 "00vv8a75wdklygdyr4km9mc2ismxak69c45jmcny41xl44rp9x8m"))))
7596     (build-system emacs-build-system)
7597     (arguments
7598      `(#:phases
7599        (modify-phases %standard-phases
7600          (add-after 'unpack 'fix-sources
7601            (lambda _
7602              ;; See: https://github.com/tali713/esxml/pull/28.
7603              (substitute* "css-lite.el"
7604                ((";;; main interface")
7605                 (string-append ";;; main interface\n"
7606                                "(require 'cl-lib)"))
7607                (("mapcan")
7608                 "cl-mapcan")
7609                (("',\\(cl-mapcan #'process-css-rule rules\\)")
7610                 "(cl-mapcan #'process-css-rule ',rules)"))
7611              (substitute* "esxml-form.el"
7612                ((",esxml-form-field-defn")
7613                 "#'esxml-form-field-defn"))
7614              ;; See: https://github.com/tali713/esxml/issues/25
7615              (delete-file "esxpath.el")
7616              #t)))))
7617     (propagated-inputs
7618      `(("emacs-kv" ,emacs-kv)))
7619     (home-page "https://github.com/tali713/esxml/")
7620     (synopsis "SXML for EmacsLisp")
7621     (description "This is XML/XHTML done with S-Expressions in EmacsLisp.
7622 Simply, this is the easiest way to write HTML or XML in Lisp.  This library
7623 uses the native form of XML representation as used by many libraries already
7624 included within Emacs.  See @code{esxml-to-xml} for a concise description of
7625 the format.")
7626     (license license:gpl3+)))
7628 (define-public emacs-nov-el
7629   (package
7630     (name "emacs-nov-el")
7631     (version "0.2.2")
7632     (source (origin
7633               (method git-fetch)
7634               (uri (git-reference
7635                     (url "https://github.com/wasamasa/nov.el.git")
7636                     (commit version)))
7637               (file-name (git-file-name name version))
7638               (sha256
7639                (base32
7640                 "03s0qjvwk1f7y3i4wh2p5y3z4hdv00adgz8za3vphzc0q8i1kjzb"))))
7641     (build-system emacs-build-system)
7642     (arguments
7643      `(#:phases
7644        (modify-phases %standard-phases
7645          (add-after 'unpack 'embed-path-to-unzip
7646            (lambda _
7647              (substitute* "nov.el"
7648                (("\\(executable-find \"unzip\"\\)")
7649                 (string-append "\"" (which "unzip") "\"")))
7650              #t)))))
7651     (propagated-inputs
7652      `(("emacs-dash" ,emacs-dash)
7653        ("emacs-esxml" ,emacs-esxml)))
7654     (inputs
7655      `(("unzip" ,unzip)))
7656     (home-page "https://github.com/wasamasa/nov.el/")
7657     (synopsis "Major mode for reading EPUBs in Emacs")
7658     (description "@code{nov.el} provides a major mode for reading EPUB
7659 documents.
7661 Features:
7663 @itemize
7664 @item Basic navigation (jump to TOC, previous/next chapter)
7665 @item Remembering and restoring the last read position
7666 @item Jump to next chapter when scrolling beyond end
7667 @item Renders EPUB2 (@code{.ncx}) and EPUB3 (@code{<nav>}) TOCs
7668 @item Hyperlinks to internal and external targets
7669 @item Supports textual and image documents
7670 @item View source of document files
7671 @item Metadata display
7672 @item Image rescaling
7673 @end itemize
7675     (license license:gpl3+)))
7677 (define-public epipe
7678   (package
7679     (name "epipe")
7680     (version "0.1.0")
7681     (source
7682      (origin
7683        (method url-fetch)
7684        (uri (string-append "https://github.com/cute-jumper/epipe/archive/"
7685                            version ".tar.gz"))
7686        (file-name (string-append name "-" version ".tar.gz"))
7687        (sha256
7688         (base32
7689          "05a036852g4j63k1mhvyfrcsgkl9lczayi7x61570ysw3cli5wp5"))))
7690     (build-system trivial-build-system)
7691     (inputs
7692      `(("bash" ,bash)
7693        ("perl" ,perl)))
7694     (native-inputs
7695      `(("tar" ,tar)
7696        ("gzip" ,gzip)))
7697     (arguments
7698      `(#:modules
7699        ((guix build utils))
7700        #:builder
7701        (begin
7702          (use-modules (guix build utils))
7703          ;; Extract source
7704          (setenv "PATH" (string-append
7705                          (assoc-ref %build-inputs "tar") "/bin" ":"
7706                          (assoc-ref %build-inputs "gzip") "/bin"))
7707          (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
7708          (chdir (string-append ,name "-" ,version))
7709          ;; Patch shebangs
7710          (substitute* "epipe"
7711            (("/usr/bin/env bash")
7712             (string-append (assoc-ref %build-inputs "bash") "/bin/bash")))
7713          (patch-shebang "epipe.pl"
7714                         (list (string-append (assoc-ref %build-inputs "perl")
7715                                              "/bin")))
7716          ;; Installation
7717          (for-each (lambda (file)
7718                      (install-file file (string-append %output "/bin")))
7719                    '("epipe" "epipe.pl"))
7720          #t)))
7721     (home-page "https://github.com/cute-jumper/epipe")
7722     (synopsis "Pipe to the @code{emacsclient}")
7723     (description "@code{epipe} provides an utility to use your editor in
7724 the pipeline, featuring the support for running @code{emacsclient}.")
7725     (license license:gpl3+)))
7727 (define-public emacs-hcl-mode
7728   (package
7729     (name "emacs-hcl-mode")
7730     (version "0.03")
7731     (source
7732      (origin
7733        (method url-fetch)
7734        (uri (string-append
7735              "https://github.com/syohex/emacs-hcl-mode/archive/"
7736              version ".tar.gz"))
7737        (file-name (string-append name "-" version ".tar.gz"))
7738        (sha256
7739         (base32
7740          "0pvw74qpwh0znqzp6syp4wxjqs7dp1hbn5h7xfk97mff9l5d8k6x"))))
7741     (build-system emacs-build-system)
7742     (home-page "https://github.com/syohex/emacs-hcl-mode")
7743     (synopsis "Major mode for the Hashicorp Configuration Language")
7744     (description
7745      "@code{emacs-hcl-mode} provides an Emacs major mode for working with
7746 @acronym{HCL, Hashicorp Configuration Language}.  It provides syntax
7747 highlighting and indentation support.")
7748     (license license:gpl3+)))
7750 (define-public emacs-terraform-mode
7751   (package
7752     (name "emacs-terraform-mode")
7753     (version "0.06")
7754     (source
7755      (origin
7756        (method url-fetch)
7757        (uri (string-append
7758              "https://github.com/syohex/emacs-terraform-mode/archive/"
7759              version ".tar.gz"))
7760        (file-name (string-append name "-" version ".tar.gz"))
7761        (sha256
7762         (base32
7763          "0h9267ifdjmcin4sj8slxydbacx4bqicbvg8pa1qq2l72h9m5381"))))
7764     (build-system emacs-build-system)
7765     (propagated-inputs
7766      `(("emacs-hcl-mode" ,emacs-hcl-mode)))
7767     (home-page "https://github.com/syohex/emacs-terraform-mode")
7768     (synopsis "Major mode for Terraform")
7769     (description
7770      "@code{emacs-terraform-mode} provides a major mode for working with
7771 @uref{https://www.terraform.io/, Terraform} configuration files.  Most of the
7772 functionality is inherited from @code{hcl-mode}.")
7773     (license license:gpl3+)))
7775 (define-public emacs-exec-path-from-shell
7776   (package
7777     (name "emacs-exec-path-from-shell")
7778     (version "1.11")
7779     (source
7780      (origin
7781        (method url-fetch)
7782        (uri (string-append
7783              "https://stable.melpa.org/packages/exec-path-from-shell-"
7784              version ".el"))
7785        (sha256
7786         (base32
7787          "03qjgb81cq1l3j54lvlf98r75vmmgd06mj6qh5wa6mz4xzp4w26r"))))
7788     (build-system emacs-build-system)
7789     (home-page "https://github.com/purcell/exec-path-from-shell")
7790     (synopsis "Get environment variables such as @var{PATH} from the shell")
7791     (description
7792      "This library allows the user to set Emacs @var{exec-path} and @var{PATH}
7793 from the shell @var{PATH}, so that @code{shell-command}, @code{compile} and
7794 the like work as expected on systems on which Emacs is not guaranteed to
7795 inherit a login shell's environment variables.  It also allows other
7796 environment variables to be retrieved from the shell, so that Emacs will see
7797 the same values you get in a terminal.")
7798     (license license:gpl3+)))
7800 (define-public emacs-deft
7801   (package
7802     (name "emacs-deft")
7803     (version "0.8")
7804     (source
7805      (origin
7806        (method url-fetch)
7807        (uri (string-append "https://stable.melpa.org/packages/deft-"
7808                            version ".el"))
7809        (sha256
7810         (base32
7811          "1vb9cjxskc7c0yyf9pvxy1fzypg1vrcgwnjz0m3hslinsgdyig58"))))
7812     (build-system emacs-build-system)
7813     (home-page "https://jblevins.org/projects/deft/")
7814     (synopsis "Quickly browse, filter, and edit plain text notes")
7815     (description
7816      "Deft is an Emacs mode for quickly browsing, filtering, and editing
7817 directories of plain text notes, inspired by Notational Velocity.")
7818     (license license:bsd-3)))
7820 (define-public emacs-anzu
7821   (package
7822     (name "emacs-anzu")
7823     (version "0.62")
7824     (source
7825      (origin
7826        (method url-fetch)
7827        (uri (string-append "https://github.com/syohex/emacs-anzu/archive/"
7828                            version ".tar.gz"))
7829        (file-name (string-append name "-" version ".tar.gz"))
7830        (sha256
7831         (base32
7832          "16cg3897x5znbmgk7sdy0qyd0fbic9dmmz0dchq2vz5z29yhg4cz"))))
7833     (build-system emacs-build-system)
7834     (home-page "https://github.com/syohex/emacs-anzu")
7835     (synopsis "Show number of matches in mode-line while searching")
7836     (description
7837      "Anzu provides a minor mode which displays \"current match/total
7838 matches\" in the mode line in various search modes.  This is an Emacs port of
7839 Anzu.zim.")
7840     (license license:gpl3+)))
7842 (define-public emacs-emmet-mode
7843   (package
7844     (name "emacs-emmet-mode")
7845     (version "1.0.8")
7846     (source (origin
7847               (method url-fetch)
7848               (uri (string-append "https://github.com/smihica/emmet-mode"
7849                                   "/archive/" version ".tar.gz"))
7850               (file-name (string-append name "-" version ".tar.gz"))
7851               (sha256
7852                (base32
7853                 "0g3p22yabfcp98cfv9dgl9il2m2pd53isq2q11vb3s7qyn31f7zj"))))
7854     (build-system emacs-build-system)
7855     (home-page "https://github.com/smihica/emmet-mode")
7856     (synopsis "Unofficial Emmet's support for Emacs")
7857     (description
7858      "Unfold CSS-selector-like expressions to markup.  It is intended to be
7859 used with SGML-like languages: XML, HTML, XHTML, XSL, etc.")
7860     (license license:gpl3+)))
7862 (define-public emacs-ergoemacs-mode
7863   (let ((commit "3ce23bba3cb50562693860f87f3528c471d603ba")
7864         (revision "1"))
7865     (package
7866       (name "emacs-ergoemacs-mode")
7867       (version (git-version "5.16.10.12" revision commit))
7868       (source
7869        (origin
7870          (method git-fetch)
7871          (uri (git-reference
7872                (url "https://github.com/ergoemacs/ergoemacs-mode.git")
7873                (commit commit)))
7874          (sha256
7875           (base32
7876            "1s3b9bridl78hh1mxmdk9nqlmqhibbaxk0a1cixmsf23s06w8w6l"))))
7877       (build-system emacs-build-system)
7878       (propagated-inputs
7879        `(("emacs-undo-tree" ,emacs-undo-tree)))
7880       (home-page "https://ergoemacs.github.io/")
7881       (synopsis "Emacs mode based on common modern interface and ergonomics")
7882       (description
7883        "This package provides an efficient Emacs keybinding set based on
7884 statistics of command frequency, and supports common shortcuts for open,
7885 close, copy, cut, paste, undo, redo.")
7886       (license license:gpl3+))))
7888 (define-public emacs-password-store
7889   (package
7890     (name "emacs-password-store")
7891     (version "1.7.1")
7892     (source (origin
7893               (method url-fetch)
7894               (uri
7895                (string-append "https://git.zx2c4.com/password-store/snapshot/"
7896                               "password-store-" version ".tar.xz"))
7897               (sha256
7898                (base32
7899                 "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
7900     (build-system emacs-build-system)
7901     (arguments
7902      `(#:phases
7903        (modify-phases %standard-phases
7904          (add-after 'unpack 'extract-el-file
7905            (lambda _
7906              (copy-file "contrib/emacs/password-store.el" "password-store.el")
7907              (delete-file-recursively "contrib")
7908              (delete-file-recursively "man")
7909              (delete-file-recursively "src")
7910              (delete-file-recursively "tests"))))))
7911     (propagated-inputs
7912      `(("emacs-f" ,emacs-f)
7913        ("emacs-s" ,emacs-s)
7914        ("password-store" ,password-store)))
7915     (home-page "https://git.zx2c4.com/password-store/tree/contrib/emacs")
7916     (synopsis "Password store (pass) support for Emacs")
7917     (description
7918      "This package provides functions for working with pass (\"the
7919 standard Unix password manager\").")
7920     (license license:gpl2+)))
7922 (define-public emacs-pass
7923   (package
7924     (name "emacs-pass")
7925     (version "1.7")
7926     (source (origin
7927               (method url-fetch)
7928               (uri (string-append
7929                     "https://github.com/NicolasPetton/pass/archive/"
7930                     version ".tar.gz"))
7931               (sha256
7932                (base32
7933                 "0zlx9v6z0q3w9qhq9bq6vb7sli4c9x7qccm2wq55j0nw7bwy2yvj"))
7934               (file-name (string-append name "-" version ".tar.gz"))))
7935     (build-system emacs-build-system)
7936     (propagated-inputs
7937      `(("emacs-password-store" ,emacs-password-store)
7938        ("emacs-f" ,emacs-f)))
7939     (home-page "https://github.com/NicolasPetton/pass")
7940     (synopsis "Major mode for @file{password-store.el}")
7941     (description "This is a major mode for managing password-store (pass)
7942 keychains.  The keychain entries are displayed in a directory-like structure
7943 and can be consulted and modified.")
7944     (license license:gpl3+)))
7946 (define-public emacs-evil-anzu
7947   (package
7948     (name "emacs-evil-anzu")
7949     (version "0.03")
7950     (source
7951      (origin
7952        (method url-fetch)
7953        (uri (string-append "https://github.com/syohex/emacs-evil-anzu"
7954                            "/archive/" version ".tar.gz"))
7955        (file-name (string-append name "-" version ".tar.gz"))
7956        (sha256
7957         (base32 "032hh2946z529cizqsg8pm6cpn5qdj8lfk3qskmx6xv3g2ra56ns"))))
7958     (build-system emacs-build-system)
7959     (propagated-inputs
7960      `(("emacs-evil" ,emacs-evil)
7961        ("emacs-anzu" ,emacs-anzu)))
7962     (home-page "https://github.com/syohex/emacs-evil-anzu")
7963     (synopsis "Anzu for evil-mode")
7964     (description "@code{anzu} provides a minor mode that displays the current
7965 match and total match information in the mode-line in various search modes.")
7966     (license license:gpl3+)))
7968 (define-public emacs-pg
7969   (let ((commit "4f6516ec3946d95dcef49abb6703cc89ecb5183d"))
7970     (package
7971       (name "emacs-pg")
7972       (version (git-version "0.1" "1" commit))
7973       (source (origin
7974                 (method git-fetch)
7975                 (uri (git-reference (url "https://github.com/cbbrowne/pg.el")
7976                                     (commit commit)))
7977                 (file-name (git-file-name name version))
7978                 (sha256
7979                  (base32
7980                   "1zh7v4nnpzvbi8yj1ynlqlawk5bmlxi6s80b5f2y7hkdqb5q26k0"))))
7981       (build-system emacs-build-system)
7982       (home-page "https://github.com/cbbrowne/pg.el")
7983       (synopsis "Emacs Lisp interface for PostgreSQL")
7984       (description
7985        "This package provides an Emacs Lisp interface for PostgreSQL.")
7986       (license license:gpl3+))))
7988 (define-public emacs-cl-generic
7989   (package
7990     (name "emacs-cl-generic")
7991     (version "0.3")
7992     (source
7993      (origin
7994        (method url-fetch)
7995        (uri (string-append "https://elpa.gnu.org/packages/cl-generic-"
7996                            version ".el"))
7997        (sha256
7998         (base32
7999          "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq"))))
8000     (build-system emacs-build-system)
8001     (home-page "https://elpa.gnu.org/packages/seq.html")
8002     (synopsis
8003      "Forward @code{cl-generic} compatibility for Emacs before version 25")
8004     (description "This package provides a subset of the features of the
8005 @code{cl-generic} package introduced in Emacs-25, for use on previous
8006 @code{emacsen}.")
8007     (license license:gpl3+)))
8009 (define-public emacs-finalize
8010   (package
8011   (name "emacs-finalize")
8012   (version "2.0.0")
8013   (source
8014     (origin
8015       (method url-fetch)
8016       (uri (string-append "https://github.com/skeeto/elisp-finalize/archive/"
8017                           version ".tar.gz"))
8018       (file-name (string-append name "-" version ".tar.gz"))
8019       (sha256
8020         (base32
8021          "077fycy3i5f0kjw5z3rhf4kld5lbk2idz690nkwhkz04vppk4q4x"))))
8022   (build-system emacs-build-system)
8023   (propagated-inputs
8024     `(("emacs-cl-generic" ,emacs-cl-generic)))
8025   (home-page "https://github.com/skeeto/elisp-finalize")
8026   (synopsis "Finalizers for Emacs Lisp")
8027   (description
8028     "This package will allows to immediately run a callback (a finalizer)
8029 after its registered lisp object has been garbage collected.  This allows for
8030 extra resources, such as buffers and processes, to be cleaned up after the
8031 object has been freed.")
8032   (license license:unlicense)))
8034 (define-public emacs-emacsql
8035   (package
8036     (name "emacs-emacsql")
8037     (version "2.0.3")
8038     (source
8039      (origin
8040        (method url-fetch)
8041        (uri (string-append "https://github.com/skeeto/emacsql/archive/"
8042                            version ".tar.gz"))
8043        (file-name (string-append name "-" version ".tar.gz"))
8044        (sha256
8045         (base32
8046          "04hfjdgl1zc7jysgjc7d7d3xqpr7q1q9gsmzffjd91ii3hpqjgx6"))))
8047     (build-system emacs-build-system)
8048     (arguments
8049      `(#:modules ((guix build emacs-build-system)
8050                   (guix build utils)
8051                   (guix build emacs-utils)
8052                   (srfi srfi-26))
8053        #:phases
8054        (modify-phases %standard-phases
8055          (delete 'build) ;‘build-emacsql-sqlite’ compiles ‘*.el’ files.
8056          (add-before 'install 'patch-elisp-shell-shebangs
8057            (lambda _
8058              (substitute* (find-files "." "\\.el")
8059                (("/bin/sh") (which "sh")))
8060              #t))
8061          (add-after 'patch-elisp-shell-shebangs 'setenv-shell
8062            (lambda _
8063              (setenv "SHELL" "sh")))
8064          (add-after 'setenv-shell 'build-emacsql-sqlite
8065            (lambda _
8066              (invoke "make" "binary" "CC=gcc")))
8067          (add-after 'build-emacsql-sqlite 'install-emacsql-sqlite
8068            ;; This build phase installs emacs-emacsql binary.
8069            (lambda* (#:key outputs #:allow-other-keys)
8070              (install-file "sqlite/emacsql-sqlite"
8071                            (string-append (assoc-ref outputs "out")
8072                                           "/bin"))
8073              #t))
8074          (add-after 'install-emacsql-sqlite 'patch-emacsql-sqlite.el
8075            ;; This build phase removes interactive prompts
8076            ;; and makes sure Emacs look for binaries in the right places.
8077            (lambda* (#:key outputs #:allow-other-keys)
8078              (let ((file "emacsql-sqlite.el"))
8079                (chmod file #o644)
8080                (emacs-substitute-sexps file
8081                  ;; Avoid interactive prompts.
8082                  ("(defvar emacsql-sqlite-user-prompted" 't)
8083                  ;; Make sure Emacs looks for ‘GCC’ binary in the right place.
8084                  ("(executable-find" (which "gcc"))
8085                  ;; Make sure Emacs looks for ‘emacsql-sqlite’ binary
8086                  ;; in the right place.
8087                  ("(defvar emacsql-sqlite-executable"
8088                   (string-append (assoc-ref outputs "out")
8089                                  "/bin/emacsql-sqlite"))))))
8090          (replace 'install
8091            (lambda* (#:key outputs #:allow-other-keys)
8092              (let* ((out (assoc-ref outputs "out")))
8093                (install-file "sqlite/emacsql-sqlite"
8094                              (string-append out "/bin"))
8095                (for-each (cut install-file <>
8096                               (string-append out "/share/emacs/site-lisp/guix.d/"
8097                                              "emacsql" "-" ,version))
8098                          (find-files "." "\\.elc*$")))
8099              #t)))))
8100     (inputs
8101      `(("emacs-minimal" ,emacs-minimal)
8102        ("mysql" ,mysql)
8103        ("postgresql" ,postgresql)))
8104     (propagated-inputs
8105      `(("emacs-finalize" ,emacs-finalize)
8106        ("emacs-pg" ,emacs-pg)))
8107     (home-page "https://github.com/skeeto/emacsql")
8108     (synopsis "Emacs high-level SQL database front-end")
8109     (description "Any readable Lisp value can be stored as a value in EmacSQL,
8110 including numbers, strings, symbols, lists, vectors, and closures.  EmacSQL
8111 has no concept of @code{TEXT} values; it's all just Lisp objects.  The Lisp
8112 object @code{nil} corresponds 1:1 with @code{NULL} in the database.")
8113     (license license:gpl3+)))
8115 (define-public emacs-closql
8116   (package
8117     (name "emacs-closql")
8118     (version "0.5.1")
8119     (source
8120      (origin
8121        (method url-fetch)
8122        (uri (string-append "https://github.com/emacscollective/closql/archive/"
8123                            "v" version ".tar.gz"))
8124        (file-name (string-append name "-" version ".tar.gz"))
8125        (sha256
8126         (base32
8127          "0wa6r0kgbb7f19039p5f3di4dvrvxfgpd8bkam94fca7jvzj536c"))))
8128     (build-system emacs-build-system)
8129     (propagated-inputs
8130      `(("emacs-emacsql" ,emacs-emacsql)))
8131     (home-page "https://github.com/emacscollective/closql")
8132     (synopsis "Store EIEIO objects using EmacSQL")
8133     (description
8134      "This package allows to store uniform EIEIO objects in an EmacSQL
8135 database.  SQLite is used as backend.  This library imposes some restrictions
8136 on what kind of objects can be stored; it isn't intended to store arbitrary
8137 objects.  All objects have to share a common superclass and subclasses cannot
8138 add any additional instance slots.")
8139     (license license:gpl3)))
8141 (define-public emacs-epkg
8142   ;; The release version is to old for the current database scheme.
8143   (let ((commit "432312b9583ed7b88ad9644fd1bf2183765a892e"))
8144     (package
8145       (name "emacs-epkg")
8146       (version (git-version "3.0.0" "1" commit))
8147       (source
8148        (origin
8149          (method git-fetch)
8150          (uri (git-reference
8151                (url "https://github.com/emacscollective/epkg.git")
8152                (commit commit)))
8153          (file-name (git-file-name name version))
8154          (sha256
8155           (base32
8156            "0d882kahn7a0vri7a9r15lvmfx1zn2hsga6jfcc6jv0hqbswlb2k"))))
8157       (build-system emacs-build-system)
8158       (propagated-inputs
8159        `(("emacs-closql" ,emacs-closql)
8160          ("emacs-dash" ,emacs-dash)))
8161       (home-page "https://emacsmirror.net")
8162       (synopsis "Browse the Emacsmirror package database")
8163       (description "This package provides access to a local copy of the
8164 Emacsmirror package database.  It provides low-level functions for querying
8165 the database and a @file{package.el} user interface for browsing the database.
8166 Epkg itself is not a package manager.
8168 Getting a local copy:
8170 @example
8171 git clone https://github.com/emacsmirror/epkgs.git ~/.emacs.d/epkgs
8172 cd ~/.emacs.d/epkgs
8173 git submodule init
8174 git config --global url.https://github.com/.insteadOf git@@github.com:
8175 git submodule update
8176 @end example
8178 Some submodule may be missing.  In this case Git will prompt for a GitHub user
8179 name and password.  To skip it press a @key{Return} key.
8181 You could get a Epkg package list by invoking @code{epkg-list-packages} in
8182 Emacs.")
8183       (license license:gpl3+))))
8185 (define-public emacs-elisp-slime-nav
8186   (package
8187     (name "emacs-elisp-slime-nav")
8188     (version "0.9")
8189     (source
8190      (origin
8191        (method url-fetch)
8192        (uri (string-append "https://github.com/purcell/elisp-slime-nav/archive/"
8193                            version ".tar.gz"))
8194        (file-name (string-append name "-" version ".tar.gz"))
8195        (sha256
8196         (base32
8197          "1vq7ym1q47p97gxrv45c9gm96d23xbp237vkmakikj6grngxjfb2"))))
8198     (build-system emacs-build-system)
8199     (home-page "https://github.com/purcell/elisp-slime-nav")
8200     (synopsis "Make @code{M-.} and @code{M-,} work for elisp like they do in SLIME")
8201     (description
8202      "This package provides SLIME's convenient @code{M-.}and @code{M-,} navigation
8203 in @code{emacs-lisp-mode}, together with an elisp equivalent of
8204 @code{slime-describe-symbol}.")
8205     (license license:gpl3+)))
8207 (define-public emacs-dedicated
8208   (package
8209     (name "emacs-dedicated")
8210     (version "1.0.0")
8211     (source (origin
8212               (method url-fetch)
8213               (uri (string-append
8214                     "https://github.com/emacsorphanage/dedicated/archive/"
8215                     version
8216                     ".tar.gz"))
8217               (sha256
8218                (base32
8219                 "0nhbkp278cvcznb5rp3jp9ii3mjgb79zx8iwfrw7zfk3yg8688ni"))
8220               (file-name (string-append name "-" version ".tar.gz"))))
8221     (build-system emacs-build-system)
8222     (home-page "https://github.com/emacsorphanage/dedicated")
8223     (synopsis "Emacs minor mode for toggling a windows's \"dedicated\" flag")
8224     (description
8225      "This simple Emacs minor mode allows you to toggle a window's
8226 \"dedicated\" flag.  When a window is \"dedicated\", Emacs will not select
8227 files into that window.  This can be quite handy since many commands will use
8228 another window to show results (compilation mode, starting info, and so on).
8229 A dedicated window won't be used for such a purpose.  For details, please read
8230 the source file.")
8231     (license license:gpl2+)))
8233 (define-public emacs-nnreddit
8234   (let ((commit "9843f99d01fd8f1eea2fc685965a7c7f4eeb187a")
8235         (revision "1"))
8236     (package
8237       (name "emacs-nnreddit")
8238       (version (string-append "0.0.1-" revision "."
8239                               (string-take commit 7)))
8240       (source (origin
8241                 (method git-fetch)
8242                 (uri (git-reference
8243                       (url "https://github.com/paul-issartel/nnreddit.git")
8244                       (commit commit)))
8245                 (file-name (string-append name "-" version "-checkout"))
8246                 (sha256
8247                  (base32
8248                   "0j4h3bnga640250jdq8bwyja49r41ssrsjd6lba4gzzllqk02nbn"))))
8249       (build-system emacs-build-system)
8250       (home-page "https://github.com/paul-issartel/nnreddit")
8251       (synopsis "Reddit backend for the Gnus newsreader")
8252       (description "@url{https://www.reddit.com} backend for the Gnus
8253 newsreader.")
8254       (license license:gpl3+))))
8256 (define-public emacs-makey
8257   (package
8258     (name "emacs-makey")
8259     (version "0.3")
8260     (source
8261      (origin
8262        (method url-fetch)
8263        (uri (string-append "https://github.com/mickeynp/makey/archive/"
8264                            version ".tar.gz"))
8265        (file-name (string-append name "-" version ".tar.gz"))
8266        (sha256
8267         (base32
8268          "0kzl4q1wf2zhkx9nrymxa67n99iq0bj7zqhpaz4byksna1hsxfmv"))))
8269     (build-system emacs-build-system)
8270     (home-page "https://github.com/mickeynp/makey")
8271     (synopsis "Emacs interactive command-line mode")
8272     (description
8273      "This package provides an Emacs interactive command-line mode.")
8274     (license license:gpl3+)))
8276 (define-public emacs-outorg
8277   (let ((commit "78b0695121fb974bc4e971eb4ef7f8afd6d89d64"))
8278     (package
8279       (name "emacs-outorg")
8280       (version (git-version "2.0" "1" commit))
8281       (source
8282        (origin
8283          (method git-fetch)
8284          (uri (git-reference
8285                (url "https://github.com/alphapapa/outorg")
8286                (commit commit)))
8287          (file-name (git-file-name name version))
8288          (sha256
8289           (base32
8290            "03aclh4m3f7rb821gr9pwvnqkkl91px3qxdcarpf3ypa1x4fxvlj"))))
8291       (build-system emacs-build-system)
8292       (home-page "https://github.com/alphapapa/outorg")
8293       (synopsis "Org-style comment editing")
8294       (description "Outorg is for editing comment-sections of source-code
8295 files in temporary Org-mode buffers.  It turns conventional
8296 literate-programming upside-down in that the default mode is the
8297 programming-mode, and special action has to be taken to switch to the
8298 text-mode (i.e. Org-mode).")
8299       (license license:gpl3+))))
8301 (define-public emacs-outshine
8302   (let ((commit "5f1a6b70231d2811c522e4e5e8c89ff461b311d6"))
8303     (package
8304       (name "emacs-outshine")
8305       (version (git-version "2.0" "1" commit))
8306       (source (origin
8307                 (method git-fetch)
8308                 (uri (git-reference
8309                       (url "https://github.com/alphapapa/outshine.git")
8310                       (commit commit)))
8311                 (file-name (git-file-name name version))
8312                 (sha256
8313                  (base32
8314                   "1l9v1dfhgg7il11ifbhvcvrg3acfjk9sdxlc3lja1k54d7dp60jv"))))
8315       (build-system emacs-build-system)
8316       (propagated-inputs
8317        `(("emacs-outorg" ,emacs-outorg)))
8318       (home-page "https://github.com/alphapapa/outshine")
8319       (synopsis "Emacs outline with outshine")
8320       (description "Outshine attempts to bring the look and feel of
8321 @code{org-mode} to an Emacs outside of the Org major-mode.  It is an extension
8322 of @code{outline-minor-mode} (@code{org-mode} itself derives from
8323 outline-mode), so there is no such thing like an outshine mode, only
8324 @code{outline-minor-mode} with outshine extensions loaded.")
8325       (license license:gpl3+))))
8327 (define-public emacs-parsebib
8328   (package
8329     (name "emacs-parsebib")
8330     (version "2.3.1")
8331     (source
8332      (origin
8333        (method url-fetch)
8334        (uri (string-append "https://github.com/joostkremers/parsebib/archive/"
8335                            version ".tar.gz"))
8336        (file-name (string-append name "-" version ".tar.gz"))
8337        (sha256
8338         (base32
8339          "0cxagnmc5ab6idmb26axpizhr4sqglkncc59768yavn3p04jyq63"))))
8340     (build-system emacs-build-system)
8341     (home-page "https://github.com/joostkremers/parsebib")
8342     (synopsis "Library for parsing bib files")
8343     (description
8344      "This package provides an Emacs library for parsing bib files.")
8345     (license license:gpl3+)))
8347 (define-public emacs-biblio
8348   (package
8349     (name "emacs-biblio")
8350     (version "0.1")
8351     (source
8352      (origin
8353        (method url-fetch)
8354        (uri (string-append "https://github.com/cpitclaudel/biblio.el/archive/"
8355                            version ".tar.gz"))
8356        (file-name (string-append name "-" version ".tar.gz"))
8357        (sha256
8358         (base32
8359          "109fvivsb4r0rbqljngqrmxqvbnbkqlivczx6brrvlr7ci625lhf"))))
8360     (build-system emacs-build-system)
8361     (home-page "https://github.com/cpitclaudel/biblio.el")
8362     (synopsis "Browse and import bibliographic references")
8363     (description "This package provides an extensible Emacs package for
8364 browsing and fetching references.
8366 @file{biblio.el} makes it easy to browse and gather bibliographic references
8367 and publications from various sources, by keywords or by DOI.  References are
8368 automatically fetched from well-curated sources, and formatted as BibTeX.")
8369     (license license:gpl3+)))
8371 (define-public emacs-helm-bibtex
8372   (let ((commit "8ed898fb5a68f18e9bb9973832a5c1f8abcfc463")
8373         (revision "1"))
8374     (package
8375       (name "emacs-helm-bibtex")
8376       (version (string-append "2.0.0" "-" revision "."
8377                               (string-take commit 7)))
8378       (source
8379        (origin
8380          (method git-fetch)
8381          (uri (git-reference
8382                (url "https://github.com/tmalsburg/helm-bibtex.git")
8383                (commit commit)))
8384          (file-name (string-append name "-" version "-checkout"))
8385          (sha256
8386           (base32
8387            "14lyx0vbqr97p3anzrsp7m3q0kqclyjcdwplpraim403fcklzbnz"))))
8388       (build-system emacs-build-system)
8389       (propagated-inputs
8390        `(("emacs-helm" ,emacs-helm)
8391          ("emacs-parsebib" ,emacs-parsebib)
8392          ("emacs-s" ,emacs-s)
8393          ("emacs-dash" ,emacs-dash)
8394          ("emacs-f" ,emacs-f)
8395          ("emacs-biblio" ,emacs-biblio)))
8396       (home-page "https://github.com/tmalsburg/helm-bibtex")
8397       (synopsis "Bibliography manager based on Helm")
8398       (description "This package provides bibliography manager for Emacs,
8399 based on Helm and the bibtex-completion backend.
8401 Key features:
8403 @itemize
8404 @item Quick access to your bibliography from within Emacs
8405 @item Powerful search capabilities
8406 @item Provides instant search results as you type
8407 @item Tightly integrated with LaTeX authoring, emails, Org mode, etc.
8408 @item Open the PDFs, URLs, or DOIs associated with an entry
8409 @item Insert LaTeX cite commands, Ebib links, or Pandoc citations,
8410 BibTeX entries, or plain text references at point, attach PDFs to emails
8411 @item Support for note taking
8412 @item Quick access to online bibliographic databases such as Pubmed,
8413 arXiv, Google Scholar, Library of Congress, etc.
8414 @item Imports BibTeX entries from CrossRef and other sources.
8415 @end itemize\n")
8416       (license license:gpl3+))))
8418 (define-public emacs-ewmctrl
8419   (let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf"))
8420     (package
8421       (name "emacs-ewmctrl")
8422       (version (git-version "0.0.1" "1" commit))
8423       (source
8424        (origin
8425          (method git-fetch)
8426          (uri (git-reference
8427                (url "https://github.com/flexibeast/ewmctrl.git")
8428                (commit commit)))
8429          (file-name (git-file-name name version))
8430          (sha256
8431           (base32
8432            "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"))))
8433       (build-system emacs-build-system)
8434       (arguments
8435        '(#:phases
8436          (modify-phases %standard-phases
8437            (add-after 'unpack 'patch-ewmctrl
8438              ;; This build phase makes sure ‘ewmctrl’ looks
8439              ;; for ‘wmctrl’ in the right place.
8440              (lambda _
8441                (let ((file "ewmctrl.el"))
8442                  (chmod file #o644)
8443                  (emacs-substitute-sexps file
8444                    ("(defcustom ewmctrl-wmctrl-path" (which "wmctrl")))))))))
8445       (inputs
8446        `(("wmctrl" ,wmctrl)))
8447       (home-page "https://github.com/flexibeast/ewmctrl")
8448       (synopsis "Emacs interface to @code{wmctrl}")
8449       (description "@code{ewmctrl} provides an Emacs interface to
8450 @code{wmctrl} command-line window-management program.")
8451       (license license:gpl3+))))
8453 (define-public emacs-helm-gtags
8454   (package
8455     (name "emacs-helm-gtags")
8456     (version "1.5.6")
8457     (source (origin
8458               (method url-fetch)
8459               (uri (string-append
8460                     "https://github.com/syohex/emacs-helm-gtags/archive/"
8461                     version ".tar.gz"))
8462               (file-name (string-append name "-" version ".tar.gz"))
8463               (sha256
8464                (base32
8465                 "1a10snhg6nnnan6w9a7mcziy26vxbsr3c35i0gcarnkdp2yqng36"))))
8466     (build-system emacs-build-system)
8467     (propagated-inputs
8468      `(("emacs-helm" ,emacs-helm)))
8469     (home-page "https://github.com/syohex/emacs-helm-gtags")
8470     (synopsis "Emacs Helm interface to GNU Global")
8471     (description
8472      "@code{emacs-helm-gtags} provides a Emacs Helm interface to GNU Global.")
8473     (license license:gpl3+)))
8475 (define-public emacs-list-utils
8476   (package
8477     (name "emacs-list-utils")
8478     (version "0.4.4")
8479     (source
8480      (origin
8481        (method url-fetch)
8482        (uri (string-append "https://github.com/rolandwalker/list-utils/archive/"
8483                            "v" version ".tar.gz"))
8484        (file-name (string-append name "-" version ".tar.gz"))
8485        (sha256
8486         (base32
8487          "1xc1xh8c82h5gdjbgpdsdclgwxkxbb7h3x3a2bscpm41g8pnan4p"))))
8488     (build-system emacs-build-system)
8489     (home-page "https://github.com/rolandwalker/list-utils")
8490     (synopsis "List-manipulation utility functions")
8491     (description "This package provides a list manipulation library for Emacs.")
8492     (license license:gpl3+)))
8494 (define-public emacs-move-text
8495   (package
8496     (name "emacs-move-text")
8497     (version "2.0.8")
8498     (source
8499      (origin
8500        (method url-fetch)
8501        (uri (string-append "https://github.com/emacsfodder/move-text/archive/"
8502                            version ".tar.gz"))
8503        (file-name (string-append name "-" version ".tar.gz"))
8504        (sha256
8505         (base32
8506          "1sjfja9r25692pgcldgnjzkapzy970m14jh9l4pajysiqcdk72g0"))))
8507     (build-system emacs-build-system)
8508     (home-page "https://github.com/emacsfodder/move-text")
8509     (synopsis "Move current line or region with M-up or M-down")
8510     (description "This package provide functions to move the current line
8511 using @kbd{M-up} or @kbd{M-down} if a region is marked, it will move the
8512 region instead.")
8513     (license license:gpl3+)))
8515 (define-public emacs-validate
8516   (package
8517     (name "emacs-validate")
8518     (version "1.0.5")
8519     (source (origin
8520               (method url-fetch)
8521               (uri (string-append "https://github.com/Malabarba/validate.el"
8522                                   "/archive/" version ".tar.gz"))
8523               (file-name (string-append name "-" version ".tar.gz"))
8524               (sha256
8525                (base32
8526                 "125mbd111f1h1baw0z3fzm48y1bvaigljyzvvnqgrn0shxbj0khg"))))
8527     (build-system emacs-build-system)
8528     (home-page "https://github.com/Malabarba/validate.el")
8529     (synopsis "Emacs library for scheme validation")
8530     (description "This Emacs library provides two functions that perform
8531 schema validation.")
8532     (license license:gpl3+)))
8534 (define-public emacs-load-relative
8535   (let ((commit "738896e3da491b35399178ed2c6bc92cc728d119")
8536         (revision "1"))
8537     (package
8538       (name "emacs-load-relative")
8539       (version (string-append "0.0.1" "-" revision "."
8540                               (string-take commit 7)))
8541       (source
8542        (origin
8543          (method git-fetch)
8544          (uri (git-reference
8545                (url "https://github.com/rocky/emacs-load-relative")
8546                (commit commit)))
8547          (file-name (string-append name "-" version "-checkout"))
8548          (sha256
8549           (base32
8550            "1rpy5mfncncl6gqgg53d3g25g1700g4b9bivd4c0cfcv5dbxhp73"))))
8551       (build-system emacs-build-system)
8552       (home-page "https://github.com/rocky/emacs-load-relative")
8553       (synopsis "Relative loads for Emacs Lisp files")
8554       (description "@code{load-relative} allows to write small Emacs
8555 functions or modules in a larger multi-file Emacs package and
8556 facilitate running from the source tree without having to install the
8557 code or fiddle with evil @code{load-path}.")
8558       (license license:gpl3+))))
8560 (define-public emacs-rainbow-blocks
8561   (let ((commit "dd435d7bb34ff6f162a5f315df308b90b7e9f842"))
8562     (package
8563       (name "emacs-rainbow-blocks")
8564       (version (git-version "1.0.0" "1" commit))
8565       (source (origin
8566                 (method git-fetch)
8567                 (uri (git-reference
8568                       (url "https://github.com/istib/rainbow-blocks.git")
8569                       (commit commit)))
8570                 (file-name (git-file-name name version))
8571                 (sha256
8572                  (base32
8573                   "06yfb3i7wzvqrhkb61zib9xvpb5i00s4frizkzff66im05k0n795"))))
8574       (build-system emacs-build-system)
8575       (home-page "https://github.com/istib/rainbow-blocks")
8576       (synopsis "Highlight sexp blocks")
8577       (description "Rainbow-blocks is an Emacs mode that highlights blocks
8578 made of parentheses, brackets, and braces according to their depth.  Each
8579 successive level is highlighted in a different color.  This makes it easy to
8580 orient yourself in the code, and tell which statements are at a given level.")
8581       (license license:gpl3+))))
8583 (define-public emacs-hierarchy
8584   (package
8585     (name "emacs-hierarchy")
8586     (version "0.7.0")
8587     (source
8588      (origin
8589        (method url-fetch)
8590        (uri (string-append
8591              "https://github.com/DamienCassou/hierarchy/archive/"
8592              "v" version ".tar.gz"))
8593        (file-name (string-append name "-" version ".tar.gz"))
8594        (sha256
8595         (base32
8596          "1a463v5zk6zis2p8cs4mads3iyxh266yahi6j6y0paggfl2yhkc8"))))
8597     (build-system emacs-build-system)
8598     (home-page "https://github.com/DamienCassou/hierarchy")
8599     (synopsis "Library to create and display hierarchy structures")
8600     (description "This package provides an Emacs library to create, query,
8601 navigate and display hierarchy structures.")
8602     (license license:gpl3+)))
8604 (define-public emacs-tree-mode
8605   (let ((commit "b06078826d5875d74b0e7b7ac47b0d0917610534")
8606         (revision "1"))
8607     (package
8608       (name "emacs-tree-mode")
8609       (version (string-append "0.0.1" "-" revision "."
8610                               (string-take commit 7)))
8611       (source
8612        (origin
8613          (method git-fetch)
8614          (uri (git-reference
8615                (url "https://github.com/emacsorphanage/tree-mode.git")
8616                (commit commit)))
8617          (file-name (string-append name "-" version "-checkout"))
8618          (sha256
8619           (base32
8620            "13bbdhdmqg4x9yghanhr8fsbsxbnypzxdxgicz31sjjm675kpnix"))))
8621       (build-system emacs-build-system)
8622       (home-page "https://github.com/emacsorphanage/tree-mode")
8623       (synopsis "Emacs mode to manage tree widgets")
8624       (description
8625        "This package provides an Emacs library to manage tree widgets.")
8626       (license license:gpl3+))))
8628 (define-public emacs-md4rd
8629   (let ((commit "be0fc4951b2d1f5194ffa1fcaac706dbac560500")
8630         (revision "1"))
8631     (package
8632       (name "emacs-md4rd")
8633       (version (string-append "0.0.1" "-" revision "."
8634                               (string-take commit 7)))
8635       (source (origin
8636                 (method git-fetch)
8637                 (uri (git-reference
8638                       (url "https://github.com/ahungry/md4rd.git")
8639                       (commit commit)))
8640                 (file-name (string-append name "-" version "-checkout"))
8641                 (sha256
8642                  (base32
8643                   "1i93shx5x192gd7cl2r6gvcvhhwyi1k08abi5w3izv1hn3pmksgq"))))
8644       (propagated-inputs
8645        `(("emacs-hierarchy" ,emacs-hierarchy)
8646          ("emacs-request" ,emacs-request)
8647          ("emacs-dash" ,emacs-dash)
8648          ("emacs-s" ,emacs-s)
8649          ("emacs-tree-mode" ,emacs-tree-mode)))
8650       (build-system emacs-build-system)
8651       (home-page "https://github.com/ahungry/md4rd")
8652       (synopsis "Emacs Mode for Reddit")
8653       (description
8654        "This package allows to read Reddit from within Emacs interactively.")
8655       (license license:gpl3+))))
8657 (define-public emacs-pulseaudio-control
8658   (let ((commit "08c59e1dc45ec96edb62f34036e82cf5f14c0e8b")
8659         (revision "1"))
8660     (package
8661       (name "emacs-pulseaudio-control")
8662       (version (string-append "0.0.1" "-" revision "."
8663                               (string-take commit 7)))
8664       (source
8665        (origin
8666          (method git-fetch)
8667          (uri (git-reference
8668                (url "https://github.com/flexibeast/pulseaudio-control.git")
8669                (commit commit)))
8670          (file-name (string-append name "-" version "-checkout"))
8671          (sha256
8672           (base32
8673            "10cgg1r00kz2fsnnryvzay5pf8s1pwb1dzlds1fbjdnyfvdgammv"))))
8674       (build-system emacs-build-system)
8675       (home-page "https://github.com/flexibeast/pulseaudio-control")
8676       (synopsis "Control @code{pulseaudio} from Emacs")
8677       (description
8678        "This package allows to control @code{pulseaudio} from Emacs.")
8679       (license license:gpl3+))))
8681 (define-public emacs-datetime
8682   (package
8683     (name "emacs-datetime")
8684     (version "0.3")
8685     (source (origin
8686               (method url-fetch)
8687               (uri (string-append
8688                     "https://github.com/doublep/datetime/archive/"
8689                     version ".tar.gz"))
8690               (file-name (string-append name "-" version ".tar.gz"))
8691               (sha256
8692                (base32
8693                 "12wqpj67rjij2ki7nmw38rz3k2bsq68pk6zswknlcn9qhp1zd9w9"))))
8694     (build-system emacs-build-system)
8695     (home-page "https://github.com/doublep/datetime/")
8696     (synopsis "Library to work with dates in Emacs")
8697     (description "Parsing, formatting, matching and recoding
8698 timestamps and date-time format strings library for Emacs.")
8699     (license license:gpl3+)))
8701 (define-public emacs-org-mind-map
8702   (let ((commit "9d6e262bedd94daf9de269f4d56de277275677cb")
8703         (revision "1"))
8704     (package
8705       (name "emacs-org-mind-map")
8706       (version (string-append "0.0.1" "-" revision "."
8707                               (string-take commit 7)))
8708       (source
8709        (origin
8710          (method git-fetch)
8711          (uri (git-reference
8712                (url "https://github.com/theodorewiles/org-mind-map.git")
8713                (commit commit)))
8714          (file-name (string-append name "-" version "-checkout"))
8715          (sha256
8716           (base32
8717            "0jgkkgq7g64zckrmjib0hvz0qy3ynz5vz13qbmlpf096l3bb65wn"))))
8718       (propagated-inputs
8719        `(("emacs-dash" ,emacs-dash)))
8720       (build-system emacs-build-system)
8721       (home-page "https://github.com/theodorewiles/org-mind-map")
8722       (synopsis "Create Graphviz directed graphs from Org files")
8723       (description
8724        "This package creates Graphviz directed graphs from Org files.")
8725       (license license:gpl3+))))
8727 (define-public emacs-npm-mode
8728   (package
8729     (name "emacs-npm-mode")
8730     (version "0.6.0")
8731     (source
8732      (origin
8733        (method url-fetch)
8734        (uri (string-append "https://github.com/mojochao/npm-mode/archive/"
8735                            version ".tar.gz"))
8736        (file-name (string-append name "-" version ".tar.gz"))
8737        (sha256
8738         (base32
8739          "1kq1ww22dwf8c2i2b4z2ldbbmnihj65kb7n5vzvwkch9h4hxpqh5"))))
8740     (build-system emacs-build-system)
8741     (home-page "https://github.com/mojochao/npm-mode")
8742     (synopsis "Minor mode for working with @code{npm} projects")
8743     (description
8744      "@code{npm-mode} provides a minor mode to work with @code{npm} projects.")
8745     (license license:gpl3+)))
8747 (define-public emacs-seq
8748   (package
8749     (name "emacs-seq")
8750     (version "2.20")
8751     (source
8752      (origin
8753        (method url-fetch)
8754        (uri (string-append "http://elpa.gnu.org/packages/seq-" version ".tar"))
8755        (sha256
8756         (base32
8757          "0vrpx6nnyjb0gsypknzagimlhvcvi5y1rcdkpxyqr42415zr8d0n"))))
8758     (build-system emacs-build-system)
8759     (home-page "http://elpa.gnu.org/packages/seq.html")
8760     (synopsis "Sequence manipulation functions")
8761     (description "Sequence-manipulation functions that complement basic
8762 functions provided by @file{subr.el}.")
8763     (license license:gpl3+)))
8765 (define-public emacs-itail
8766   (let ((commit "6e43c20da03be3b9c6ece93b7dc3495975ec1888")
8767         (revision "1"))
8768     (package
8769       (name "emacs-itail")
8770       (version (string-append "0.0.1" "-" revision "."
8771                               (string-take commit 7)))
8772       (source
8773        (origin
8774          (method git-fetch)
8775          (uri (git-reference
8776                (url "https://github.com/re5et/itail.git")
8777                (commit commit)))
8778          (file-name (string-append name "-" version "-checkout"))
8779          (sha256
8780           (base32
8781            "044nzxh1hq41faxw3lix0wy78vfz304pjcaa5a11dqfz7q3gx5cv"))))
8782       (build-system emacs-build-system)
8783       (home-page "https://github.com/re5et/itail")
8784       (synopsis "Interactive @code{tail} Emacs mode")
8785       (description "@code{itail} provides interactive @code{tail} mode
8786 that allows you to filter the tail with unix pipes and highlight the
8787 contents of the tailed file.  Works locally or on remote files using
8788 tramp.")
8789       (license license:gpl3+))))
8791 (define-public emacs-loop
8792   (package
8793     (name "emacs-loop")
8794     (version "1.3")
8795     (source
8796      (origin
8797        (method url-fetch)
8798        (uri (string-append "https://github.com/Wilfred/loop.el/archive/"
8799                            version ".tar.gz"))
8800        (file-name (string-append name "-" version ".tar.gz"))
8801        (sha256
8802         (base32
8803          "1z3rhh3zyjabz36410yz0lp4a0qwwj0387as662wvx3z9y54jia9"))))
8804     (build-system emacs-build-system)
8805     (home-page "https://github.com/Wilfred/loop.el")
8806     (synopsis "Imperative loop structures for Emacs")
8807     (description "Loop structures familiar to users of other languages.  This
8808 library adds a selection of popular loop structures as well as break and
8809 continue.")
8810     (license license:gpl3+)))
8812 (define-public emacs-elisp-refs
8813   (package
8814     (name "emacs-elisp-refs")
8815     (version "1.2")
8816     (source
8817      (origin
8818        (method url-fetch)
8819        (uri (string-append "https://github.com/Wilfred/elisp-refs/archive/"
8820                            version ".tar.gz"))
8821        (file-name (string-append name "-" version ".tar.gz"))
8822        (sha256
8823         (base32
8824          "0fj6wphwrvbslw46w7wgdk3b4bfr312ygj3lbgr9qw63lpqw26nl"))))
8825     (build-system emacs-build-system)
8826     (propagated-inputs
8827      `(("emacs-dash" ,emacs-dash)
8828        ("emacs-f" ,emacs-f)
8829        ("emacs-list-utils" ,emacs-list-utils)
8830        ("emacs-loop" ,emacs-loop)
8831        ("emacs-s" ,emacs-s)))
8832     (home-page "https://github.com/Wilfred/elisp-refs")
8833     (synopsis "Find callers of elisp functions or macros")
8834     (description "Find references to functions, macros or variables.  Unlike a
8835 dumb text search, @code{elisp-refs} actually parses the code, so it's never
8836 confused by comments or @code{foo-bar} matching @code{foo}.")
8837     (license license:gpl3+)))
8839 (define-public emacs-crux
8840   (let ((commit "4f5c8fefd5a6aa52e128c4a0401cc86410d6ac8f")
8841         (revision "1"))
8842     (package
8843       (name "emacs-crux")
8844       (version (string-append "0.3.0" "-" revision "."
8845                               (string-take commit 7)))
8846       (source
8847        (origin
8848          (method git-fetch)
8849          (uri (git-reference
8850                (url "https://github.com/bbatsov/crux.git")
8851                (commit commit)))
8852          (file-name (string-append name "-" version "-checkout"))
8853          (sha256
8854           (base32
8855            "1fdxvv25cs01sg6fmvmzxpzvs50i6v8n2jya60lbavxqqhi0sbxd"))))
8856       (build-system emacs-build-system)
8857       (home-page "https://github.com/bbatsov/crux")
8858       (synopsis "Collection of useful functions for Emacs")
8859       (description
8860        "@code{crux} provides a collection of useful functions for Emacs.")
8861       (license license:gpl3+))))
8863 (define-public emacs-edit-server
8864   (package
8865     (name "emacs-edit-server")
8866     (version "1.13")
8867     (source
8868      (origin
8869        (method url-fetch)
8870        (uri (string-append "https://github.com/stsquad/emacs_chrome/archive/"
8871                            "v" version ".tar.gz"))
8872        (file-name (string-append name "-" version ".tar.gz"))
8873        (sha256
8874         (base32
8875          "1r92kqggslqasza718z4ka883mqfbnibdm43f0j9gaipk0msm2wf"))))
8876     (build-system emacs-build-system)
8877     (arguments
8878      `(#:phases
8879        (modify-phases %standard-phases
8880          (add-after 'unpack 'chdir-elisp
8881            ;; Elisp directory is not in root of the source.
8882            (lambda _
8883              (chdir "servers"))))))
8884     (home-page "https://github.com/stsquad/emacs_chrome")
8885     (synopsis "Server that responds to edit requests from Chromium")
8886     (description
8887      "This package provides an edit server to respond to requests from Emacs.")
8888     (license license:gpl3+)))
8890 (define-public emacs-m-buffer-el
8891   (package
8892     (name "emacs-m-buffer-el")
8893     (version "0.15")
8894     (source
8895      (origin
8896        (method url-fetch)
8897        (uri (string-append "https://github.com/phillord/m-buffer-el"
8898                            "/archive/" "v" version ".tar.gz"))
8899        (file-name (string-append name "-" version ".tar.gz"))
8900        (sha256
8901         (base32
8902          "17vdcc8q37q9db98jyww1c0ivinmwfcw4l04zccfacalra63a214"))))
8903     (arguments
8904      `(#:phases
8905        (modify-phases %standard-phases
8906          (add-before 'install 'check
8907            (lambda* (#:key inputs #:allow-other-keys)
8908              (zero? (system* "emacs" "--batch" "-L" "."
8909                              "-l" "test/m-buffer-test.el"
8910                              "-l" "test/m-buffer-at-test.el"
8911                              "-f" "ert-run-tests-batch-and-exit")))))))
8912     (build-system emacs-build-system)
8913     (home-page "https://github.com/phillord/m-buffer-el")
8914     (synopsis "List oriented buffer operations for Emacs")
8915     (description "@code{m-buffer} provides a set of list-orientated functions
8916 for operating over the contents of Emacs buffers.")
8917     (license license:gpl3+)))
8919 (define-public emacs-let-alist
8920   (package
8921     (name "emacs-let-alist")
8922     (version "1.0.5")
8923     (source
8924      (origin
8925        (method url-fetch)
8926        (uri (string-append
8927              "https://elpa.gnu.org/packages/let-alist-" version ".el"))
8928        (sha256
8929         (base32
8930          "0r7b9jni50la1m79kklml11syg8d2fmdlr83pv005sv1wh02jszw"))))
8931     (build-system emacs-build-system)
8932     (home-page "https://elpa.gnu.org/packages/let-alist.html")
8933     (synopsis "Easily let-bind values of an assoc-list by their names")
8934     (description "This package offers a single macro, @code{let-alist}.  This
8935 macro takes a first argument (whose value must be an alist) and a body.")
8936     (license license:gpl3+)))
8938 (define-public emacs-esup
8939   (let ((commit "a589005a9a888537deef94d6fe38a9b8790c97c7")
8940         (revision "1"))
8941     (package
8942       (name "emacs-esup")
8943       (version (string-append "0.6" "-" revision "."
8944                               (string-take commit 7)))
8945       (source
8946        (origin
8947          (method git-fetch)
8948          (uri (git-reference
8949                (url "https://github.com/jschaf/esup.git")
8950                (commit commit)))
8951          (file-name (string-append name "-" version "-checkout"))
8952          (sha256
8953           (base32
8954            "04lxmd0h7mfjjl0qghrycgff0vcv950j1wqv0dbkr61jxp64n5fv"))))
8955       ;; TODO: Add tests
8956       (build-system emacs-build-system)
8957       (home-page "https://github.com/jschaf/esup")
8958       (synopsis "Emacs start up profiler")
8959       (description "Benchmark Emacs Startup time without ever leaving
8960 your Emacs.")
8961       (license license:gpl2+))))
8963 (define-public emacs-sourcemap
8964   (package
8965     (name "emacs-sourcemap")
8966     (version "0.03")
8967     (source
8968      (origin
8969        (method url-fetch)
8970        (uri (string-append "https://github.com/syohex/emacs-sourcemap/archive/"
8971                            version ".tar.gz"))
8972        (file-name (string-append name "-" version ".tar.gz"))
8973        (sha256
8974         (base32
8975          "0bmd5l3cx2iyl7vxn84xdhs80b07kpdpfwki28lh5d0kmm5qs6m6"))))
8976     (build-system emacs-build-system)
8977     (home-page "https://github.com/syohex/emacs-sourcemap")
8978     (synopsis "Sourcemap parser")
8979     (description "Sourcemap parser")
8980     (license license:gpl3+)))
8982 (define-public emacs-macrostep
8983   (let ((commit "424e3734a1ee526a1bd7b5c3cd1d3ef19d184267"))
8984     (package
8985       (name "emacs-macrostep")
8986       (version (git-version "0.9" "1" commit))
8987       (source (origin
8988                 (method git-fetch)
8989                 (uri (git-reference
8990                       (url "https://github.com/joddie/macrostep.git")
8991                       (commit commit)))
8992                 (file-name (string-append name "-" version "-checkout"))
8993                 (sha256
8994                  (base32
8995                   "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"))))
8996       (build-system emacs-build-system)
8997       (arguments
8998        '(#:phases
8999          (modify-phases %standard-phases
9000            (add-before 'check 'remove-test
9001              ;; Fails because of requirement ‘/bin/sh’.
9002              (lambda _
9003                (let ((file "macrostep-test.el"))
9004                  (chmod file #o644)
9005                  (emacs-batch-edit-file file
9006                    `(progn (progn (goto-char (point-min))
9007                                   (re-search-forward
9008                                    "(ert-deftest macrostep-expand-c-macros")
9009                                   (beginning-of-line)
9010                                   (kill-sexp))
9011                            (basic-save-buffer))))))
9012            (add-before 'install 'check
9013              (lambda _
9014                (invoke "emacs" "--batch" "-L" "."
9015                        "-l" "macrostep-test.el"
9016                        "-f" "ert-run-tests-batch-and-exit"))))))
9017       (home-page "https://github.com/joddie/macrostep")
9018       (synopsis "Interactive macro-expander for Emacs")
9019       (description "@code{macrostep} is an Emacs minor mode for interactively
9020 stepping through the expansion of macros in Emacs Lisp source code.  It lets
9021 you see exactly what happens at each step of the expansion process by
9022 pretty-printing the expanded forms inline in the source buffer, which is
9023 temporarily read-only while macro expansions are visible.  You can expand and
9024 collapse macro forms one step at a time, and evaluate or instrument the
9025 expansions for debugging with Edebug as normal (but see “Bugs and known
9026 limitations”, below).  Single-stepping through the expansion is particularly
9027 useful for debugging macros that expand into another macro form.  These can be
9028 difficult to debug with Emacs’ built-in macroexpand, which continues expansion
9029 until the top-level form is no longer a macro call.")
9030       (license license:gpl3+))))
9032 (define-public emacs-parent-mode
9033   (package
9034     (name "emacs-parent-mode")
9035     (version "2.3")
9036     (source
9037      (origin
9038        (method url-fetch)
9039        (uri (string-append "https://github.com/Fanael/parent-mode/archive/"
9040                            version ".tar.gz"))
9041        (file-name (string-append name "-" version ".tar.gz"))
9042        (sha256
9043         (base32
9044          "0gxbl5s1w96v6v55b7aaansgw4sxhzfx9nrsvpk3pfhsibs6yqjd"))))
9045     (build-system emacs-build-system)
9046     (home-page "https://github.com/Fanael/parent-mode")
9047     (synopsis "Get major mode's parent modes")
9048     (description "Get major mode's parent modes")
9049     (license license:gpl3+)))
9051 (define-public emacs-lacarte
9052   (package
9053     (name "emacs-lacarte")
9054     (version "0.1")
9055     (source (origin
9056               (method url-fetch)
9057               (uri "https://www.emacswiki.org/emacs/download/lacarte.el")
9058               (sha256
9059                (base32
9060                 "1sbmk37ljq5j7dsw5c37sbxvlfgdqswh7bi4dknyjzfxlq50f4am"))))
9061     (build-system emacs-build-system)
9062     (home-page "https://www.emacswiki.org/emacs/lacarte.el")
9063     (synopsis "Execute menu items as commands, with completion")
9064     (description "Execute menu items as commands, with completion.")
9065     (license license:gpl3)))
9067 (define-public emacs-company-lua
9068   (let ((commit "0be8122f3adf57ad27953bf4b03545d6298d3da4"))
9069     (package
9070       (name "emacs-company-lua")
9071       (version (git-version "0.1" "1" commit))
9072       (source
9073        (origin
9074          (method git-fetch)
9075          (uri (git-reference
9076                (url "https://github.com/ptrv/company-lua.git")
9077                (commit commit)))
9078          (file-name (git-file-name name version))
9079          (sha256
9080           (base32
9081            "1d9i165apgmwns7b2fd5wcpjpkah3dyj20v5sb8ynvz6qhhr5r9c"))))
9082       (build-system emacs-build-system)
9083       (propagated-inputs
9084        `(("emacs-company" ,emacs-company)
9085          ("emacs-s" ,emacs-s)
9086          ("emacs-f" ,emacs-f)
9087          ("emacs-lua-mode" ,emacs-lua-mode)))
9088       (home-page "https://github.com/ptrv/company-lua")
9089       (synopsis "Company backend for Lua")
9090       (description
9091        "This package provides Company backend for Lua programming language.")
9092       (license license:gpl3+))))
9094 (define-public emacs-beginend
9095   (package
9096     (name "emacs-beginend")
9097     (version "2.0.0")
9098     (source
9099      (origin
9100        (method url-fetch)
9101        (uri (string-append "https://github.com/DamienCassou/beginend/archive/"
9102                            "v" version ".tar.gz"))
9103        (file-name (string-append name "-" version ".tar.gz"))
9104        (sha256
9105         (base32
9106          "0z4rbwffh9vxfvcrlvym4p73z7gf72q0b5iv33llbpcpbijknnrq"))))
9107     ;; TODO: Run tests.
9108     (build-system emacs-build-system)
9109     (inputs
9110      `(("emacs-undercover" ,emacs-undercover))) ; For tests.
9111     (home-page "https://github.com/DamienCassou/beginend")
9112     (synopsis "Redefine @code{M-<} and @code{M->} for Emacs modes")
9113     (description "@code{beginend} redefines @code{M-<} and @code{M->}
9114 keybindings for Emacs modes so that point moves to meaningful
9115 locations.  Redefined keys are still accessible by pressing the same
9116 key again.")
9117     (license license:gpl3+)))
9119 (define-public emacs-mbsync
9120   (let ((commit "42077e83ae2db778ce0f8e22f8357b40355526b3")
9121         (revision "1"))
9122     (package
9123       (name "emacs-mbsync")
9124       (version (string-append "0.0.1" "-" revision "."
9125                               (string-take commit 7)))
9126       (source
9127        (origin
9128          (method git-fetch)
9129          (uri (git-reference
9130                (url "https://github.com/dimitri/mbsync-el.git")
9131                (commit commit)))
9132          (file-name (string-append name "-" version "-checkout"))
9133          (sha256
9134           (base32
9135            "0yj93y2mpxlir8x73znlg1slxlv4blm1vjv5h2w3j8lxg8bxvmn6"))))
9136       (build-system emacs-build-system)
9137       (home-page "https://github.com/dimitri/mbsync-el")
9138       (synopsis "Interface to mbsync for Emacs")
9139       (description "This package allows to call the @code{mbsync} from
9140 within Emacs.")
9141       (license license:gpl3+))))
9143 (define-public emacs-ibuffer-projectile
9144   (let ((commit "c18ac540ee46cb759fc5df18747f6e8d23563011")
9145         (revision "1"))
9146     (package
9147       (name "emacs-ibuffer-projectile")
9148       (version (string-append "0.2" "-" revision "."
9149                               (string-take commit 7)))
9150       (source
9151        (origin
9152          (method git-fetch)
9153          (uri (git-reference
9154                (url "https://github.com/purcell/ibuffer-projectile.git")
9155                (commit commit)))
9156          (file-name (string-append name "-" version "-checkout"))
9157          (sha256
9158           (base32
9159            "1nd26cwwdpnwj0g4w393rd59klpyr6wqrnyr6scmwb5d06bsm44n"))))
9160       (build-system emacs-build-system)
9161       (propagated-inputs
9162        `(("emacs-projectile" ,emacs-projectile)))
9163       (home-page "https://github.com/purcell/ibuffer-projectile")
9164       (synopsis "Group ibuffer's list by projectile root")
9165       (description "Adds functionality to Emacs @code{ibuffer} for
9166 grouping buffers by their projectile root directory.")
9167       (license license:gpl3+))))
9169 (define-public emacs-helm-mode-manager
9170   (package
9171     (name "emacs-helm-mode-manager")
9172     (version "1.0.0")
9173     (source
9174      (origin
9175        (method url-fetch)
9176        (uri (string-append "https://github.com/istib/helm-mode-manager/"
9177                            "archive/" version ".tar.gz"))
9178        (file-name (string-append name "-" version ".tar.gz"))
9179        (sha256
9180         (base32
9181          "0wllj321z16hgrx0ddwzk5wz4mnnx5am7w5nclqclfc5dfdn92wm"))))
9182     (build-system emacs-build-system)
9183     (propagated-inputs
9184      `(("emacs-helm" ,emacs-helm)))
9185     (home-page "https://github.com/istib/helm-mode-manager/")
9186     (synopsis "Switch and toggle Emacs major and minor modes using Helm")
9187     (description "This package provides a Helm interface for toggling Emacs
9188 major or minor mode.
9190 @itemize
9191 @item @code{helm-switch-major-mode} list of all major modes
9192 @item @code{helm-enable-minor-mode} list of all inactive minor modes
9193 @item @code{helm-disable-minor-mode} list of all ACTIVE minor modes
9194 @end itemize\n
9196 Hitting @code{RET} enables the mode, @code{C-z} shows the mode
9197 documentation.")
9198     (license license:gpl3+)))
9200 (define-public emacs-hy-mode
9201   (package
9202     (name "emacs-hy-mode")
9203     (version "1.0.2")
9204     (source
9205      (origin
9206        (method url-fetch)
9207        (uri (string-append "https://github.com/hylang/hy-mode/archive/"
9208                            "v" version ".tar.gz"))
9209        (file-name (string-append name "-" version ".tar.gz"))
9210        (sha256
9211         (base32
9212          "0sbga36zkyhzrzcczsyjzll7b9qsa215pnlw51m4li2irm23jh17"))))
9213     (build-system emacs-build-system)
9214     (propagated-inputs
9215      `(("emacs-dash" ,emacs-dash)
9216        ("emacs-s" ,emacs-s)))
9217     (home-page "https://github.com/hylang/hy-mode")
9218     (synopsis "Major mode for Hylang")
9219     (description "This package provides a major mode for Hylang.")
9220     (license license:gpl3+)))
9222 (define-public emacs-web-beautify
9223   (package
9224     (name "emacs-web-beautify")
9225     (version "0.3.2")
9226     (source
9227      (origin
9228        (method url-fetch)
9229        (uri (string-append "https://github.com/yasuyk/web-beautify/archive/"
9230                            version ".tar.gz"))
9231        (file-name (string-append name "-" version ".tar.gz"))
9232        (sha256
9233         (base32
9234          "1j57hwid74id4swkx2g0iljfawx0k9c7qjrwqc0mv657x9p78hcs"))))
9235     (build-system emacs-build-system)
9236     (home-page "https://github.com/yasuyk/web-beautify")
9237     (synopsis "Format HTML, CSS and JavaScript, JSON")
9238     (description "This package provides an Emacs functions to format HTML,
9239 CSS, JavaScript, JSON.")
9240     (license license:gpl3+)))
9242 (define-public emacs-helm-shell-history
9243   (let ((commit "110d3c35c52fe4b89b29e79ea4c8626bce7266a1"))
9244     (package
9245       (name "emacs-helm-shell-history")
9246       (version (git-version "0.1" "1" commit))
9247       (source
9248        (origin
9249          (method git-fetch)
9250          (uri (git-reference
9251                (url "https://github.com/yuutayamada/helm-shell-history.git")
9252                (commit commit)))
9253          (file-name (git-file-name name version))
9254          (sha256
9255           (base32
9256            "18fkjcz69g4dyaxhf9j8svr5x6dhsdnglddwisis8hdn504scpfj"))))
9257       (build-system emacs-build-system)
9258       (arguments
9259        '(#:phases
9260          (modify-phases %standard-phases
9261            (add-before 'check 'patch-helm-shell-history-file
9262              (lambda _
9263                (let ((file "helm-shell-history.el"))
9264                  (chmod file #o644)
9265                  (emacs-substitute-sexps file
9266                    ("(defvar helm-shell-history-file"
9267                     `(expand-file-name "~/.bash_history"))))
9268                #t)))))
9269       (propagated-inputs
9270        `(("emacs-helm" ,emacs-helm)))
9271       (home-page "https://github.com/yuutayamada/helm-shell-history")
9272       (synopsis "Find shell history with Emacs Helm")
9273       (description "This package provides an Emacs Helm interface to search
9274 throw a shell history.")
9275       (license license:gpl3+))))
9277 (define-public emacs-discover-my-major
9278   (package
9279     (name "emacs-discover-my-major")
9280     (version "1.0")
9281     (source
9282      (origin
9283        (method url-fetch)
9284        (uri
9285         (string-append "https://github.com/steckerhalter/discover-my-major"
9286                        "/archive/" version ".tar.gz"))
9287        (file-name (string-append name "-" version ".tar.gz"))
9288        (sha256
9289         (base32
9290          "0nah41f92rrl2l405kpqr6iaks11jyclgl4z7ilfymbr4ifmsiyl"))))
9291     (build-system emacs-build-system)
9292     (propagated-inputs
9293      `(("emacs-makey" ,emacs-makey)))
9294     (home-page "https://github.com/steckerhalter/discover-my-major")
9295     (synopsis "Discover key bindings for the current Emacs major mode")
9296     (description "This package provides allows to discover key bindings and
9297 their meaning for the current Emacs major-mode.")
9298     (license license:gpl3+)))
9300 (define-public emacs-org-ref
9301   (let ((commit "8c9b5d7efb9f0c1ad5186b8203bdd017f4249129")
9302         (revision "1"))
9303     (package
9304       (name "emacs-org-ref")
9305       (version (string-append "1.1.1" "-" revision "."
9306                               (string-take commit 7)))
9307       (source
9308        (origin
9309          (method git-fetch)
9310          (uri (git-reference
9311                (url "https://github.com/jkitchin/org-ref.git")
9312                (commit commit)))
9313          (file-name (string-append name "-" version "-checkout"))
9314          (sha256
9315           (base32
9316            "1rxz0bjdsayk0slv23i07d9xhj2m7s4hsc81wc2d1cs52dkr5zmz"))))
9317       (build-system emacs-build-system)
9318       (propagated-inputs
9319        `(("emacs-dash" ,emacs-dash)
9320          ("emacs-helm" ,emacs-helm)
9321          ("emacs-helm-bibtex" ,emacs-helm-bibtex)
9322          ("emacs-ivy" ,emacs-ivy)
9323          ("emacs-hydra" ,emacs-hydra)
9324          ("emacs-key-chord" ,emacs-key-chord)
9325          ("emacs-s" ,emacs-s)
9326          ("emacs-f" ,emacs-f)
9327          ("emacs-pdf-tools" ,emacs-pdf-tools)))
9328       (home-page "https://github.com/jkitchin/org-ref")
9329       (synopsis "Citations, cross-references and bibliographies in org-mode")
9330       (description
9331        "Lisp code to setup bibliography, cite, ref and label org-mode links.
9332 Also sets up reftex and helm for org-mode citations.  The links are
9333 clickable and do things that are useful.
9335 The default setup uses helm-bibtex.
9337 You should really read org-ref.org in this package for details.")
9338       (license license:gpl3+))))
9340 (define-public emacs-add-hooks
9341   (package
9342     (name "emacs-add-hooks")
9343     (version "3.1.1")
9344     (source (origin
9345               (method url-fetch)
9346               (uri (string-append
9347                     "https://github.com/nickmccurdy/add-hooks/archive/"
9348                     version ".tar.gz"))
9349               (file-name (string-append name "-" version ".tar.gz"))
9350               (sha256
9351                (base32
9352                 "03a28gb3298g7pc2qji9hi44p4d99ljp5mpi9cmg42ldv8fl6549"))))
9353     (build-system emacs-build-system)
9354     (home-page "https://github.com/nickmccurdy/add-hooks/")
9355     (synopsis "Emacs function for setting multiple hooks")
9356     (description "This package provides a @code{add-hooks} function tidies up
9357 duplicate hook and function names further into a single declarative call.")
9358     (license license:gpl3+)))
9360 (define-public emacs-fancy-narrow
9361   (package
9362     (name "emacs-fancy-narrow")
9363     (version "0.9.5")
9364     (source
9365      (origin
9366        (method url-fetch)
9367        (uri (string-append "https://github.com/Malabarba/fancy-narrow/archive/"
9368                            version ".tar.gz"))
9369        (file-name (string-append name "-" version ".tar.gz"))
9370        (sha256
9371         (base32
9372          "0rf2rnzg82pdqch041yyx3f9ddixffkk9s2ydzg8hwy66sg3385n"))))
9373     (build-system emacs-build-system)
9374     (home-page "https://github.com/Malabarba/fancy-narrow/releases")
9375     (synopsis "Immitate narrow-to-region with more eye-candy")
9376     (description "Unlike narrow-to-region, which completely hides text outside
9377 the narrowed region, this package simply deemphasizes the text, makes it
9378 readonly, and makes it unreachable.  This leads to a much more natural
9379 feeling, where the region stays static (instead of being brutally moved to a
9380 blank slate) and is clearly highlighted with respect to the rest of the
9381 buffer.")
9382     (license license:gpl2+)))
9384 (define-public emacs-know-your-http-well
9385   (package
9386     (name "emacs-know-your-http-well")
9387     (version "0.5.0")
9388     (source
9389      (origin
9390        (method url-fetch)
9391        (uri (string-append
9392              "https://github.com/for-GET/know-your-http-well/archive/"
9393              "v" version ".tar.gz"))
9394        (file-name (string-append name "-" version ".tar.gz"))
9395        (sha256
9396         (base32
9397          "1y3kwz88awcgwaivlswq0q4g2i02762r23lpwg61bfqy5lrjjqnj"))))
9398     (arguments
9399      `(#:phases
9400        (modify-phases %standard-phases
9401          (add-after 'unpack 'install-json-files
9402            (lambda* (#:key outputs #:allow-other-keys)
9403              (for-each (lambda (directory)
9404                          (copy-recursively directory
9405                                            (string-append
9406                                             (assoc-ref outputs "out")
9407                                             directory)))
9408                        '("js" "json"))))
9409          (add-after 'unpack 'chdir-elisp
9410            ;; Elisp directory is not in root of the source.
9411            (lambda _
9412              (chdir "emacs"))))))
9413     (build-system emacs-build-system)
9414     (home-page "https://github.com/for-GET/know-your-http-well")
9415     (synopsis "Meaning of HTTP headers codes")
9416     (description "Meaning of HTTP headers codes.")
9417     (license license:gpl3+)))
9419 (define-public emacs-navi-mode
9420   (let ((commit "c1d38e8237f4e14af020a0b7d4f118ea198ab674"))
9421     (package
9422       (name "emacs-navi-mode")
9423       (version (git-version "2.0" "1" commit))
9424       (source
9425        (origin
9426          (method git-fetch)
9427          (uri (git-reference
9428                (url "https://github.com/alphapapa/navi.git")
9429                (commit commit)))
9430          (file-name (git-file-name name version))
9431          (sha256
9432           (base32
9433            "0jj5spk14hgb7zb1cd2n8whcw4k1kd5zb6llwj96v178yaws7l8k"))))
9434       (build-system emacs-build-system)
9435       (propagated-inputs
9436        `(("emacs-outshine" ,emacs-outshine)
9437          ("emacs-outorg" ,emacs-outorg)))
9438       (home-page "https://github.com/alphapapa/navi")
9439       (synopsis "Emacs major-mode for easy buffer-navigation")
9440       (description
9441        "This package provides an Emacs major-mode for easy buffer-navigation")
9442       (license license:gpl3+))))
9444 (define-public emacs-download-region
9445   (let ((commit "eb9e557529a73b4cfc8281c70dd0d95db333fffa")
9446         (revision "1"))
9447     (package
9448       (name "emacs-download-region")
9449       (version (string-append "0.0.1" "-" revision "."
9450                               (string-take commit 7)))
9451       (source
9452        (origin
9453          (method git-fetch)
9454          (uri (git-reference
9455                (url "https://github.com/zk-phi/download-region.git")
9456                (commit commit)))
9457          (file-name (string-append name "-" version "-checkout"))
9458          (sha256
9459           (base32
9460            "0v52djg39b6k2snizd9x0qc009ws5y0ywqsfwhqgcbs5ymzh7dsc"))))
9461       (build-system emacs-build-system)
9462       (home-page "https://github.com/zk-phi/download-region")
9463       (synopsis "In buffer download manager for Emacs")
9464       (description "@code{download-region} provides in buffer
9465 downloading manager for Emacs.")
9466       (license license:gpl3+))))
9468 (define-public emacs-csv-mode
9469   (package
9470     (name "emacs-csv-mode")
9471     (version "1.7")
9472     (source
9473      (origin
9474        (method url-fetch)
9475        (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
9476                            version ".el"))
9477        (sha256
9478         (base32
9479          "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
9480     (build-system emacs-build-system)
9481     (home-page "http://elpa.gnu.org/packages/csv-mode.html")
9482     (synopsis "Major mode for editing comma or char separated values")
9483     (description
9484      "This package provides an Emacs CSV mode, a major mode for editing
9485 records in a generalized CSV (character-separated values) format.")
9486     (license license:gpl3+)))
9488 (define-public emacs-helpful
9489   (package
9490     (name "emacs-helpful")
9491     (version "0.1")
9492     (source (origin
9493               (method url-fetch)
9494               (uri (string-append
9495                     "https://github.com/Wilfred/helpful/archive/"
9496                     version ".tar.gz"))
9497               (file-name (string-append name "-" version ".tar.gz"))
9498               (sha256
9499                (base32
9500                 "16dx566qzrjj0bf43lnw7h1qlvgs94brqplamw8kppp2ylr72qs9"))))
9501     (build-system emacs-build-system)
9502     (propagated-inputs
9503      `(("emacs-elisp-refs" ,emacs-elisp-refs)))
9504     (home-page "https://github.com/Wilfred/helpful")
9505     (synopsis "More contextual information in Emacs help")
9506     (description "@code{helpful} is an alternative to the built-in Emacs help
9507 that provides much more contextual information.
9509 @itemize
9510 @item Show the source code for interactively defined functions (unlike the
9511 built-in Help).
9512 @item Fall back to the raw sexp if no source is available.
9513 @item Show where a function is being called.
9514 @item Docstrings will Highlight the summary (the first sentence), include
9515 cross-references, hide superfluous puncuation.
9516 @item Show you the properties that have been applied to the current
9517 symbol.  This provides visibility of features like edebug or byte-code
9518 optimisation.
9519 @item Provide a separate @code{helpful-command} function to view interactive
9520 functions.
9521 @item Display any keybindings that apply to interactive functions.
9522 @item Trace, disassemble functions from inside Helpful.  This is discoverable
9523 and doesn't require memorisation of commands.
9524 @end itemize\n")
9525     (license license:gpl3+)))
9527 (define-public emacs-logview
9528   (package
9529     (name "emacs-logview")
9530     (version "0.9")
9531     (source (origin
9532               (method url-fetch)
9533               (uri (string-append
9534                     "https://github.com/doublep/logview/archive/"
9535                     version ".tar.gz"))
9536               (file-name (string-append name "-" version ".tar.gz"))
9537               (sha256
9538                (base32
9539                 "1vd11ppm46ldqsiwhqgw91p34gbjh1y82r9mxcn9r2gj65nvhxcp"))))
9540     (propagated-inputs
9541      `(("emacs-datetime" ,emacs-datetime)))
9542     (build-system emacs-build-system)
9543     (home-page "https://github.com/doublep/logview/")
9544     (synopsis "Emacs mode for viewing log files")
9545     (description "@code{logview} provides an Emacs mode to view log files.")
9546     (license license:gpl3+)))
9548 (define-public emacs-suggest
9549   (package
9550     (name "emacs-suggest")
9551     (version "0.4")
9552     (source
9553      (origin
9554        (method url-fetch)
9555        (uri (string-append "https://github.com/Wilfred/suggest.el/archive/"
9556                            version ".tar.gz"))
9557        (file-name (string-append name "-" version ".tar.gz"))
9558        (sha256
9559         (base32
9560          "1760fm3j19w8xxcawq6s859h86q1rdg69pg9yz48n76kwfk3vlgp"))))
9561     (build-system emacs-build-system)
9562     (propagated-inputs
9563      `(("emacs-loop" ,emacs-loop)
9564        ("emacs-dash" ,emacs-dash)
9565        ("emacs-s" ,emacs-s)
9566        ("emacs-f" ,emacs-f)))
9567     (home-page "https://github.com/Wilfred/suggest.el")
9568     (synopsis "Suggest Elisp functions that give the output requested")
9569     (description "Suggest.el will find functions that give the output
9570 requested.  It's a great way of exploring list, string and arithmetic
9571 functions.")
9572     (license license:gpl3+)))
9574 (define-public emacs-benchmark-init
9575   (package
9576     (name "emacs-benchmark-init")
9577     (version "1.0")
9578     (source (origin
9579               (method url-fetch)
9580               (uri (string-append
9581                     "https://github.com/dholm/benchmark-init-el/archive/"
9582                     version ".tar.gz"))
9583               (file-name (string-append name "-" version ".tar.gz"))
9584               (sha256
9585                (base32
9586                 "0szyqr4nncwz4vd5gww1vz31kf9r2lx25p4d0d09pm35974x53kz"))))
9587     (build-system emacs-build-system)
9588     (home-page "https://github.com/dholm/benchmark-init-el")
9589     (synopsis "Benchmark Emacs @code{require} and @code{load} calls")
9590     (description "@code{benchmark-init} provides a way to keep track of where
9591 time is being spent during Emacs startup in order to optimize startup time.")
9592     (license license:gpl3+)))
9594 (define-public emacs-emms-player-simple-mpv
9595   (let ((commit "101d120ccdee1c2c213fd2f0423c858b21649c00")
9596         (revision "1"))
9597     (package
9598       (name "emacs-emms-player-simple-mpv")
9599       (version (string-append "0.4.0" "-" revision "."
9600                               (string-take commit 7)))
9602       (source
9603        (origin
9604          (method git-fetch)
9605          (uri (git-reference
9606                (url "https://github.com/momomo5717/emms-player-simple-mpv.git")
9607                (commit commit)))
9608          (file-name (git-file-name name version))
9609          (sha256
9610           (base32
9611            "1i6rxkm0ra0jbkkwgkwxg3vk5xfl794h1gkgnlpscynz0v94b6ll"))))
9612       (build-system emacs-build-system)
9613       (propagated-inputs
9614        `(("emacs-emms" ,emms)))
9615       (home-page "https://github.com/momomo5717/emms-player-simple-mpv")
9616       (synopsis "Extension of @file{emms-player-simple.el} for mpv JSON IPC")
9617       (description "@code{emms-player-simple-mpv} provides macros and
9618 functions for defining emms simple players of mpv.")
9619       (license license:gpl3+))))
9621 (define-public emacs-magit-org-todos-el
9622   (let ((commit "df206287737b9671f2e36ae7b1474ebbe9940d2a"))
9623     (package
9624       (name "emacs-magit-org-todos-el")
9625       (version (git-version "0.1.1" "1" commit))
9626       (source
9627        (origin
9628          (method git-fetch)
9629          (uri (git-reference
9630                (url "https://github.com/danielma/magit-org-todos.el.git")
9631                (commit commit)))
9632          (file-name (git-file-name name version))
9633          (sha256
9634           (base32
9635            "0kdp7k7jnnrkhsg0xh1c3h7iz0vgi120gf5xwl1hxy61avivnxrn"))))
9636       (propagated-inputs
9637        `(("magit" ,magit)))
9638       (build-system emacs-build-system)
9639       (home-page "https://github.com/danielma/magit-org-todos.el")
9640       (synopsis "Get todo.org into Emacs Magit status")
9641       (description "This package allows you to get @file{todo.org} into your
9642 magit status.
9644 If you have a @file{todo.org} file with @code{TODO} items in the root of your
9645 repository, @code{magit-org-todos} will create a section in your Magit status
9646 buffer with each of your todos.")
9647       (license license:gpl3+))))
9649 (define-public emacs-f3
9650   (package
9651     (name "emacs-f3")
9652     (version "0.1")
9653     (source
9654      (origin
9655        (method url-fetch)
9656        (uri (string-append "https://github.com/cosmicexplorer/f3/archive/"
9657                            version ".tar.gz"))
9658        (file-name (string-append name "-" version ".tar.gz"))
9659        (sha256
9660         (base32
9661          "06b8i1jvklm5k3k90n65f197l1miq1xlxqkqpbppw4h3rhl4y98h"))))
9662     (build-system emacs-build-system)
9663     (propagated-inputs
9664      `(("emacs-helm" ,emacs-helm)))
9665     (home-page "https://github.com/cosmicexplorer/f3")
9666     (synopsis "Fantastic File Finder for Emacs")
9667     (description
9668      "The Fantastic File Finder for Emacs.  Find files fast, using helm.")
9669     (license license:gpl3+)))
9671 (define-public emacs-lice-el
9672   (let ((commit "4339929927c62bd636f89bb39ea999d18d269250"))
9673     (package
9674       (name "emacs-lice-el")
9675       (version (git-version "0.2" "1" commit))
9676       (source (origin
9677                 (method git-fetch)
9678                 (uri (git-reference
9679                       (url "https://github.com/buzztaiki/lice-el.git")
9680                       (commit commit)))
9681                 (file-name (git-file-name name version))
9682                 (sha256
9683                  (base32
9684                   "0879z761b7gajkhq176ps745xpdrivch349crransv8fnsc759yb"))))
9685       (build-system emacs-build-system)
9686       (home-page "https://github.com/buzztaiki/lice-el")
9687       (synopsis "License and header template for Emacs")
9688       (description "@code{lice.el} provides following features:
9690 @itemize
9691 @item License template management.
9692 @item File header insertion.
9693 @end itemize\n")
9694       (license license:gpl3+))))
9696 (define-public emacs-academic-phrases
9697   (let ((commit "0823ed8c24b26c32f909b896a469833ec4d7b656"))
9698     (package
9699       (name "emacs-academic-phrases")
9700       (version (git-version "0.1" "1" commit))
9701       (source
9702        (origin
9703          (method git-fetch)
9704          (uri (git-reference
9705                (url "https://github.com/nashamri/academic-phrases.git")
9706                (commit commit)))
9707          (file-name (string-append name "-" version "-checkout"))
9708          (sha256
9709           (base32
9710            "0qfzsq8jh05w4zkr0cvq3i1hdn97bq344vcqjg46sib26x3wpz6r"))))
9711       (build-system emacs-build-system)
9712       (propagated-inputs
9713        `(("emacs-dash" ,emacs-dash)
9714          ("emacs-s" ,emacs-s)
9715          ("emacs-ht" ,emacs-ht)))
9716       (home-page "https://github.com/nashamri/academic-phrases")
9717       (synopsis "Bypass that mental block when writing your papers")
9718       (description
9719        "When writing your academic paper, you might get stuck trying to find
9720 the right phrase that captures your intention.  This package tries to
9721 alleviate that problem by presenting you with a list of phrases organized by
9722 the topic or by the paper section that you are writing.  This package has
9723 around 600 phrases so far.
9725 Using this package is easy, just call @code{academic-phrases} to get a list of
9726 phrases organized by topic, or call @code{academic-phrases-by-section} to
9727 browse the phrases by the paper section and fill-in the blanks if required.")
9728       (license license:gpl3+))))
9730 (define-public emacs-auto-yasnippet
9731   (let ((commit "d1ccfea87312c6dd8cf8501ab5b71b1d3d44d95b"))
9732     (package
9733       (name "emacs-auto-yasnippet")
9734       (version (git-version "0.3.0" "1" commit))
9735       (source (origin
9736                 (method git-fetch)
9737                 (uri (git-reference
9738                       (url "https://github.com/abo-abo/auto-yasnippet.git")
9739                       (commit commit)))
9740                 (file-name (string-append name "-" version "-checkout"))
9741                 (sha256
9742                  (base32
9743                   "1i8k2qiyzd5rq0zplk4xb5nfa5mp0ibxbzwqj6c7877waq7244xk"))))
9744       (build-system emacs-build-system)
9745       (arguments
9746        '(#:phases
9747          (modify-phases %standard-phases
9748            (add-before 'install 'check
9749              (lambda _
9750                (invoke "emacs" "--batch"
9751                        "-l" "auto-yasnippet.el"
9752                        "-l" "auto-yasnippet-test.el"
9753                        "-f" "ert-run-tests-batch-and-exit"))))))
9754       (propagated-inputs
9755        `(("emacs-yasnippet" ,emacs-yasnippet)))
9756       (home-page "https://github.com/abo-abo/auto-yasnippet/")
9757       (synopsis "Quickly create disposable yasnippets")
9758       (description "This package provides a hybrid of keyboard macros and
9759 yasnippet.  You create the snippet on the go, usually to be used just in the
9760 one place.  It's fast, because you're not leaving the current buffer, and all
9761 you do is enter the code you'd enter anyway, just placing ~ where you'd like
9762 yasnippet fields and mirrors to be.")
9763       (license license:gpl3+))))
9765 (define-public emacs-highlight-numbers
9766   (package
9767     (name "emacs-highlight-numbers")
9768     (version "0.2.3")
9769     (source
9770      (origin
9771        (method url-fetch)
9772        (uri (string-append
9773              "https://github.com/Fanael/highlight-numbers/archive/"
9774              version ".tar.gz"))
9775        (file-name (string-append name "-" version ".tar.gz"))
9776        (sha256
9777         (base32
9778          "030v5p11d4n0581ncv499l1fqrmfziy756q6378x2bv22ixghqqp"))))
9779     (build-system emacs-build-system)
9780     (propagated-inputs
9781      `(("emacs-parent-mode" ,emacs-parent-mode)))
9782     (home-page "https://github.com/Fanael/highlight-numbers")
9783     (synopsis "Highlight numbers in source code")
9784     (description "@code{highlight-numbers-mode} provides a minor mode for
9785 syntax highlighting of numeric literals in source code.
9787 It s customizable: it's easy to add or redefine what exactly consitutes a
9788 \"number\" in given major mode.  See @code{highlight-numbers-modelist}.")
9789     (license license:gpl3+)))
9791 (define-public emacs-darkroom
9792   (package
9793     (name "emacs-darkroom")
9794     (version "0.1")
9795     (source (origin
9796               (method url-fetch)
9797               (uri (string-append "https://elpa.gnu.org/packages/darkroom-"
9798                                   version ".el"))
9799               (sha256
9800                (base32
9801                 "0fif8fm1h7x7g16949shfnaik5f5488clsvkf8bi5izpqp3vi6ak"))))
9802     (build-system emacs-build-system)
9803     (home-page "https://elpa.gnu.org/packages/darkroom.html")
9804     (synopsis "Remove visual distractions and focus on writing")
9805     (description "@code{darkroom-mode} makes visual distractions disappear.
9806 The mode-line is temporarily elided, text is enlarged and margins are adjusted
9807 so that it's centered on the window.
9809 @code{darkroom-tentative-mode} is similar, but it doesn't immediately turn-on
9810 @code{darkroom-mode}, unless the current buffer lives in the sole window of
9811 the Emacs frame (i.e. all other windows are deleted).  Whenever the frame is
9812 split to display more windows and more buffers, the buffer exits
9813 @code{darkroom-mode}.  Whenever they are deleted, the buffer re-enters
9814 @code{darkroom-mode}.")
9815     (license license:gpl3+)))
9817 (define-public emacs-rsw-elisp
9818   (package
9819     (name "emacs-rsw-elisp")
9820     (version "1.0.5")
9821     (source (origin
9822               (method url-fetch)
9823               (uri (string-append "https://github.com/rswgnu/rsw-elisp"
9824                                   "/archive/" version ".tar.gz"))
9825               (file-name (string-append name "-" version ".tar.gz"))
9826               (sha256
9827                (base32
9828                 "1jnn7xfwl3wxc87v44ccsf1wwp80par3xgcvfb1icd6zchjmlcps"))))
9829     (build-system emacs-build-system)
9830     (home-page "https://github.com/rswgnu/rsw-elisp")
9831     (synopsis "Improved expressions that interactively evaluate Emacs Lisp")
9832     (description "This package improves and replaces the GNU Emacs commands
9833 that interactively evaluate Emacs Lisp expressions.  The new commands replace
9834 standard key bindings and are all prefixed with @code{rsw-elisp-}.  They work
9835 the same way as the old commands when called non-interactively; only the
9836 interactive behavior should be different.")
9837     (license license:gpl3+)))
9839 (define-public emacs-default-text-scale
9840   (let ((commit "968e985e219235f3e744d6d967e592acbaf6e0a8")
9841         (revision "1"))
9842     (package
9843       (name "emacs-default-text-scale")
9844       (version (string-append "0.1" "-" revision "."
9845                               (string-take commit 7)))
9846       (source (origin
9847                 (method git-fetch)
9848                 (uri (git-reference
9849                       (url "https://github.com/purcell/default-text-scale")
9850                       (commit commit)))
9851                 (file-name (string-append name "-" version "-checkout"))
9852                 (sha256
9853                  (base32
9854                   "0zds01c3q5yny6ab1fxfkzzgn1kgl3q23lxxap905f4qd70v922h"))))
9855       (build-system emacs-build-system)
9856       (home-page "https://github.com/purcell/default-text-scale")
9857       (synopsis "Adjust the font size in all Emacs frames")
9858       (description "This package provides commands for increasing or
9859 decreasing the default font size in all GUI Emacs frames.")
9860       (license license:gpl3+))))
9862 (define-public emacs-visual-regexp
9863   (package
9864     (name "emacs-visual-regexp")
9865     (version "1.1.1")
9866     (source
9867      (origin
9868        (method url-fetch)
9869        (uri (string-append "https://github.com/benma/visual-regexp.el/archive/"
9870                            "v" version ".tar.gz"))
9871        (file-name (string-append name "-" version ".tar.gz"))
9872        (sha256
9873         (base32
9874          "1czmhvcivlcdyz7rfm0vd4a3xsgmy4qbvbl6yjxc217wrxqflr92"))))
9875     (build-system emacs-build-system)
9876     (home-page "https://github.com/benma/visual-regexp.el/")
9877     (synopsis "Regexp command with interactive visual feedback")
9878     (description "This package provides an Emacs regexp command with
9879 interactive visual feedback.")
9880     (license license:gpl3+)))
9882 (define-public emacs-faceup
9883   (let ((commit "6c92dad56a133e14e7b27831e1bcf9b3a71ff154")
9884         (revision "1"))
9885     (package
9886       (name "emacs-faceup")
9887       (version (string-append "0.0.1" "-" revision "."
9888                               (string-take commit 7)))
9889       (source
9890        (origin
9891          (method git-fetch)
9892          (uri (git-reference
9893                (url "https://github.com/Lindydancer/faceup.git")
9894                (commit commit)))
9895          (file-name (string-append name "-" version "-checkout"))
9896          (sha256
9897           (base32
9898            "1yzmy7flrhrh0i10bdszx8idx6r8h6czm4vm4q0z6fp5fw94zwrx"))))
9899       (build-system emacs-build-system)
9900       (home-page "https://github.com/Lindydancer/faceup")
9901       (synopsis "Markup language for faces and font-lock regression testing")
9902       (description "Emacs is capable of highlighting buffers based on
9903 language-specific @code{font-lock} rules.  This package makes it possible to
9904 perform regression test for packages that provide font-lock rules.")
9905       (license license:gpl3+))))
9907 (define-public emacs-racket-mode
9908   (let ((commit "33877b1bb24faea68842e0396bd5718b84e47451")
9909         (revision "1"))
9910     (package
9911       (name "emacs-racket-mode")
9912       (version (string-append "0.0.1" "-" revision "."
9913                               (string-take commit 7)))
9914       (source
9915        (origin
9916          (method git-fetch)
9917          (uri (git-reference
9918                (url "https://github.com/greghendershott/racket-mode")
9919                (commit commit)))
9920          (file-name (string-append name "-" version "-checkout"))
9921          (sha256
9922           (base32
9923            "0681mzwx08zwbh8qg3s26jw1jn4fw2ljp1akxqkhy08sxhafqvb1"))))
9924       (build-system emacs-build-system)
9925       (propagated-inputs
9926        `(("emacs-faceup" ,emacs-faceup)
9927          ("emacs-s" ,emacs-s)))
9928       (home-page "https://github.com/greghendershott/racket-mode")
9929       (synopsis "Major mode for Racket language")
9930       (description "@code{racket-mode} provides:
9932 @itemize
9933 @item Focus on Racket (not various Schemes).
9934 @item Follow DrRacket concepts where applicable.
9935 @item Thorough font-lock and indent.
9936 @end itemize\n")
9937       (license license:gpl3+))))
9939 (define-public emacs-grep-context
9940   (let ((commit "a17c57e66687a54e195e08afe776bdd60cb6c0a7"))
9941     (package
9942       (name "emacs-grep-context")
9943       (version (git-version "0.1" "1" commit))
9944       (source
9945        (origin
9946          (method git-fetch)
9947          (uri (git-reference
9948                (url "https://github.com/mkcms/grep-context.git")
9949                (commit commit)))
9950          (file-name (string-append name "-" version "-checkout"))
9951          (sha256
9952           (base32
9953            "1nqfa6kjzjshww4hnwg1c0vcr90bdjihy3kmixq3c3jkvxg99b62"))))
9954       (build-system emacs-build-system)
9955       (propagated-inputs
9956        `(("emacs-dash" ,emacs-dash)))
9957       (home-page "https://github.com/nashamri/academic-phrases")
9958       (synopsis "Increase context in compilation and grep buffers")
9959       (description
9960        "This package provides an Emacs package for more context in
9961 compilation/grep buffers.  Works with @code{wgrep}, @code{ack}, @code{ag},
9962 @code{ivy}.")
9963       (license license:gpl3+))))
9965 (define-public emacs-helm-firefox
9966   (let ((commit "0ad34b7b5abc485a86cae6920c14de861cbeb085")
9967         (revision "1"))
9968     (package
9969       (name "emacs-helm-firefox")
9970       (version (string-append "0.0.1" "-" revision "."
9971                               (string-take commit 7)))
9972       (source
9973        (origin
9974          (method git-fetch)
9975          (uri (git-reference
9976                (url "https://github.com/emacs-helm/helm-firefox.git")
9977                (commit commit)))
9978          (file-name (string-append name "-" version "-checkout"))
9979          (sha256
9980           (base32
9981            "08mjsi2f9s29fkk35cj1rrparjnkm836qmbfdwdz7y51f9varjbs"))))
9982       (propagated-inputs
9983        `(("emacs-helm" ,emacs-helm)))
9984       (build-system emacs-build-system)
9985       (home-page "https://github.com/emacs-helm/helm-firefox")
9986       (synopsis "Display firefox bookmarks with Emacs Helm interface")
9987       (description "Display firefox bookmarks with Emacs Helm interface")
9988       (license license:gpl3+))))
9990 (define-public emacs-interactive-align
9991   (package
9992     (name "emacs-interactive-align")
9993     (version "0.1.0")
9994     (source
9995      (origin
9996        (method url-fetch)
9997        (uri (string-append "https://github.com/mkcms/interactive-align/"
9998                            "archive/" "v" version ".tar.gz"))
9999        (file-name (string-append name "-" version ".tar.gz"))
10000        (sha256
10001         (base32
10002          "0sibpgb4lp6yy3pziak8f3hz4b28yj0dqy2nzh51z3d0b63h528m"))))
10003     (build-system emacs-build-system)
10004     (home-page "https://github.com/mkcms/interactive-align/")
10005     (synopsis "Interactive align-regexp command in Emacs")
10006     (description "Interactive align-regexp command in Emacs")
10007     (license license:gpl3+)))
10009 (define-public emacs-shift-number
10010   (package
10011     (name "emacs-shift-number")
10012     (version "0.1")
10013     (source
10014      (origin
10015        (method url-fetch)
10016        (uri (string-append "https://github.com/alezost/shift-number.el"
10017                            "/archive/" "v" version ".tar.gz"))
10018        (file-name (string-append name "-" version ".tar.gz"))
10019        (sha256
10020         (base32
10021          "1g79m0hqn9jgpm565vvh8pdfzndc4vw7xisnh5qysj55qfg8cb1x"))))
10022     (build-system emacs-build-system)
10023     (home-page "https://github.com/alezost/shift-number.el")
10024     (synopsis "Increase or decrease the number at point")
10025     (description "@code{emacs-shift-number} provides commands
10026 @code{shift-number-up} to increase and @code{shift-number-down} to
10027 decrease the number at point.")
10028     (license license:gpl3+)))
10030 (define-public emacs-highlight-defined
10031   (package
10032     (name "emacs-highlight-defined")
10033     (version "0.1.5")
10034     (source
10035      (origin
10036        (method url-fetch)
10037        (uri (string-append
10038              "https://github.com/Fanael/highlight-defined/archive/"
10039              version ".tar.gz"))
10040        (file-name (string-append name "-" version ".tar.gz"))
10041        (sha256
10042         (base32
10043          "1ryd66989b5byqdw8jmjrjf0c78iiz72wibld750skcnj5h5h506"))))
10044     (build-system emacs-build-system)
10045     (home-page "https://github.com/Fanael/highlight-defined")
10046     (synopsis "Syntax highlighting of known Elisp symbols")
10047     (description "Minor mode providing syntax highlighting of known Emacs Lisp
10048 symbols.  Currently the code distinguishes Lisp functions, built-in functions,
10049 macros, faces and variables.  To enable call @code{highlight-defined-mode}. ")
10050     (license license:gpl3+)))
10052 (define-public emacs-parinfer-mode
10053   (package
10054     (name "emacs-parinfer-mode")
10055     (version "0.4.10")
10056     (source
10057      (origin
10058        (method url-fetch)
10059        (uri (string-append "https://github.com/DogLooksGood/parinfer-mode/archive/"
10060                            "v" version ".tar.gz"))
10061        (file-name (string-append name "-" version ".tar.gz"))
10062        (sha256
10063         (base32
10064          "06ba9qi59sm9ih9m38fbr8kj4qkvrm58n0c0ngfjz60gnr9x9pcv"))))
10065     (propagated-inputs
10066      `(("emacs-dash" ,emacs-dash)
10067        ("emacs-rainbow-delimiters" ,emacs-rainbow-delimiters)
10068        ("emacs-company" ,emacs-company)))
10069     (build-system emacs-build-system)
10070     (home-page "https://github.com/DogLooksGood/parinfer-mode/")
10071     (synopsis "Lisp structure editing mode")
10072     (description "@code{parinfer-mode} is a proof-of-concept editor
10073 mode for Lisp programming languages.  It will infer some changes to
10074 keep Parens and Indentation inline with one another.")
10075     (license license:gpl3+)))
10077 (define-public emacs-helm-eww
10078   (let ((commit "5d6c2c66d4694415ef8a16a6d38a37aeae76c5ac"))
10079     (package
10080       (name "emacs-helm-eww")
10081       (version (git-version "0.1" "1" commit))
10082       (source (origin
10083                 (method git-fetch)
10084                 (uri (git-reference
10085                       (url "https://github.com/emacs-helm/helm-eww.git")
10086                       (commit commit)))
10087                 (file-name (string-append name "-" version "-checkout"))
10088                 (sha256
10089                  (base32
10090                   "1x442ylrr7cx587s4rvfh187h3qbkr79qp95qr57a4igxkkw6183"))))
10091       (propagated-inputs
10092        `(("emacs-helm" ,emacs-helm)))
10093       (build-system emacs-build-system)
10094       (home-page "https://github.com/emacs-helm/helm-eww/")
10095       (synopsis "Helm interface to EWW")
10096       (description "This package provides a Helm interface for EWW buffers,
10097 bookmarks and history.")
10098       (license license:gpl3+))))
10100 (define-public emacs-stumpwm-mode
10101   (let ((commit "8fbe071d2c6c040794060a354eb377218dc10b35")
10102         (revision "1"))
10103     (package
10104       (name "emacs-stumpwm-mode")
10105       (version (string-append "0.0.1-" revision "."
10106                               (string-take commit 7)))
10107       (source (origin
10108                 (method git-fetch)
10109                 (uri (git-reference
10110                       (url "https://github.com/stumpwm/stumpwm-contrib.git")
10111                       (commit commit)))
10112                 (file-name (string-append name "-" version "-checkout"))
10113                 (sha256
10114                  (base32
10115                   "1dfwsvz1c8w6j4jp0kzaz78ml3f5dp0a5pvf090kwpbpg176r7iq"))))
10116       (build-system emacs-build-system)
10117       (arguments
10118        `(#:phases
10119          (modify-phases %standard-phases
10120            (add-after 'unpack 'chdir-elisp
10121              ;; Elisp directory is not in root of the source.
10122              (lambda _
10123                (chdir "util/swm-emacs"))))))
10124       (home-page "https://github.com/stumpwm/stumpwm-contrib")
10125       (synopsis "Emacs minor-mode for Stumpwm")
10126       (description "Emacs minor-mode for Stumpwm")
10127       (license license:gpl3+))))
10129 (define-public emacs-irfc
10130   (package
10131     (name "emacs-irfc")
10132     (version "20130824.507")
10133     (source
10134      (origin
10135        (method url-fetch)
10136        (uri "https://www.emacswiki.org/emacs/download/irfc.el")
10137        (file-name (string-append "irfc-" version ".el"))
10138        (sha256
10139         (base32
10140          "197ybqwbj8qjh2p9pkf5mvqnrkpcgmv8c5s2gvl6msyrabk0mnca"))))
10141     (build-system emacs-build-system)
10142     (home-page "https://www.emacswiki.org/emacs/download/irfc.el")
10143     (synopsis "Interface for IETF RFC document")
10144     (description
10145      "This package provides an Emacs interface for IETF RFC document.")
10146     (license license:gpl3+)))
10148 (define-public emacs-ido-vertical-mode
10149   (package
10150     (name "emacs-ido-vertical-mode")
10151     (version "0.1.6")
10152     (source
10153      (origin
10154        (method url-fetch)
10155        (uri (string-append
10156              "https://github.com/creichert/ido-vertical-mode.el/archive/"
10157              "v" version ".tar.gz"))
10158        (file-name (string-append name "-" version ".tar.gz"))
10159        (sha256
10160         (base32
10161          "0dprdxq8wvqd45dinwj92k0kixr07c8xvspa6i613mjcpxgwjg53"))))
10162     (build-system emacs-build-system)
10163     (home-page "https://github.com/creichert/ido-vertical-mode.el")
10164     (synopsis "Makes ido-mode display vertically")
10165     (description "Makes ido-mode display prospects vertically.")
10166     (license license:gpl3+)))
10168 (define-public emacs-wordgen
10169   (package
10170     (name "emacs-wordgen")
10171     (version "0.1.4")
10172     (source
10173      (origin
10174        (method url-fetch)
10175        (uri (string-append "https://github.com/Fanael/wordgen.el/archive/"
10176                            version ".tar.gz"))
10177        (file-name (string-append name "-" version ".tar.gz"))
10178        (sha256
10179         (base32
10180          "1h2iyixdm49h53pwj9ics9gb9h3g6wa4hainpnjg6mfarf49jkmg"))))
10181     (build-system emacs-build-system)
10182     (home-page "https://github.com/Fanael/wordgen.el")
10183     (synopsis "Random word generator")
10184     (description "This package provides functions to generate random words
10185 using user-provided rules.")
10186     (license license:gpl3+)))
10188 (define-public emacs-on-screen
10189   (package
10190     (name "emacs-on-screen")
10191     (version "1.3.2")
10192     (source
10193      (origin
10194        (method url-fetch)
10195        (uri (string-append
10196              "http://elpa.gnu.org/packages/on-screen-" version ".el"))
10197        (file-name (string-append name "-" version ".el"))
10198        (sha256
10199         (base32
10200          "15d18mjgv1pnwl6kf3pr5w64q1322p1l1qlfvnckglwmzy5sl2qv"))))
10201     (build-system emacs-build-system)
10202     (home-page
10203      "https://github.com/michael-heerdegen/on-screen.el")
10204     (synopsis "Guide your eyes while scrolling")
10205     (description
10206      "Scrolling can be distracting because your eyes may lose
10207 orientation.  This library implements a minor mode that highlights
10208 the previously visible buffer part after each scroll.")
10209     (license license:gpl3+)))
10211 (define-public emacs-highlight-escape-sequences
10212   (let ((commit "08d846a7aa748209d65fecead2b6a766c3e5cb41")
10213         (revision "1"))
10214     (package
10215       (name "emacs-highlight-escape-sequences")
10216       (version (string-append "0.0.1" "-" revision "."
10217                               (string-take commit 7)))
10218       (source
10219        (origin
10220          (method git-fetch)
10221          (uri (git-reference
10222                (url "https://github.com/dgutov/highlight-escape-sequences.git")
10223                (commit commit)))
10224          (file-name (string-append name "-" version "-checkout"))
10225          (sha256
10226           (base32
10227            "05mc3w1f8ykf80914a1yddw6j8cmh0h57llm07xh89s53821v2is"))))
10228       (build-system emacs-build-system)
10229       (home-page "https://github.com/dgutov/highlight-escape-sequences")
10230       (synopsis "Highlight escape sequences in Emacs")
10231       (description "@code{highlight-escape-sequences} provides an
10232 Emacs minor mode to escape sequences in code.")
10233       (license license:gpl3+))))
10235 (define-public emacs-dashboard
10236   (package
10237     (name "emacs-dashboard")
10238     (version "1.2.4")
10239     (source
10240      (origin
10241        (method url-fetch)
10242        (uri (string-append
10243              "https://github.com/rakanalh/emacs-dashboard/archive/"
10244              version ".tar.gz"))
10245        (file-name (string-append name "-" version ".tar.gz"))
10246        (sha256
10247         (base32
10248          "1738lmbgq6gk24hcwic0qjyajr21l5xzhya4pv58dw1bhd6vxv9g"))))
10249     (build-system emacs-build-system)
10250     (propagated-inputs
10251      `(("emacs-page-break-lines" ,emacs-page-break-lines)))
10252     (arguments '(#:include '("\\.el$" "\\.txt$" "\\.png$")))
10253     (home-page "https://github.com/rakanalh/emacs-dashboard")
10254     (synopsis "Startup screen extracted from Spacemacs")
10255     (description "This package provides an extensible Emacs dashboard, with
10256 sections for bookmarks, projectil projects, org-agenda and more. ")
10257     (license license:gpl3+)))
10259 (define-public emacs-slime-company
10260   (package
10261     (name "emacs-slime-company")
10262     (version "1.1")
10263     (source
10264      (origin
10265        (method url-fetch)
10266        (uri (string-append "https://github.com/anwyn/slime-company/archive/"
10267                            "v" version ".tar.gz"))
10268        (sha256
10269         (base32
10270          "1myl79pxj501xfr5qc5a24qddsn2l5iaamg7rf7fpny7mr9v70ar"))
10271        (file-name (string-append name "-" version ".tar.gz"))))
10272     (build-system emacs-build-system)
10273     (propagated-inputs
10274      `(("emacs-slime" ,emacs-slime)
10275        ("emacs-company" ,emacs-company)))
10276     (home-page "https://company-mode.github.io")
10277     (synopsis "SLIME completion backend for @code{company-mode}")
10278     (description
10279      "This is a backend implementation for the completion package
10280 @code{company-mode} which supports the normal and the fuzzy completion
10281 modes of SLIME.")
10282     (license license:gpl3+)))
10284 (define-public emacs-sml-mode
10285   (package
10286     (name "emacs-sml-mode")
10287     (version "6.8")
10288     (source
10289      (origin
10290        (method url-fetch)
10291        (uri (string-append "http://elpa.gnu.org/packages/sml-mode-"
10292                            version ".el"))
10293        (sha256
10294         (base32
10295          "105fcrz5qp95f2n3fdm3awr6z58sbrjihjss6qnrg4lz2ggbc328"))))
10296     (build-system emacs-build-system)
10297     (home-page "http://elpa.gnu.org/packages/sml-mode.html")
10298     (synopsis "Major mode for editing (Standard) ML")
10299     (description "SML-MODE is a major Emacs mode for editing Standard ML.
10300 It provides syntax highlighting and automatic indentation and
10301 comes with sml-proc which allows interaction with an inferior SML
10302 interactive loop.")
10303     (license license:gpl3+)))
10305 (define-public emacs-eros
10306   (let ((commit "a42e45c9b2397156c684330b0fc90ee0eba773f5")
10307         (revision "1"))
10308     (package
10309       (name "emacs-eros")
10310       (version (string-append "0.0.1" "-" revision "."
10311                               (string-take commit 7)))
10312       (source
10313        (origin
10314          (method git-fetch)
10315          (uri (git-reference
10316                (url "https://github.com/xiongtx/eros.git")
10317                (commit commit)))
10318          (file-name (string-append name "-" version "-checkout"))
10319          (sha256
10320           (base32
10321            "0whlsq90v13fz69k3wjrwcwb9gkpfxqjd75mg3nrp85j9nwhb5i4"))))
10322       (build-system emacs-build-system)
10323       (home-page "https://github.com/xiongtx/eros")
10324       (synopsis "Evaluation result overlays")
10325       (description "@code{eros} provides evaluation result overlays.")
10326       (license license:gpl3+))))
10328 (define-public emacs-stickyfunc-enhance
10329   (let ((commit "13bdba51fcd83ccbc3267959d23afc94d458dcb0")
10330         (revision "1"))
10331     (package
10332       (name "emacs-stickyfunc-enhance")
10333       (version "0.1")
10334       (source
10335        (origin
10336          (method git-fetch)
10337          (uri (git-reference
10338                (url "https://github.com/tuhdo/semantic-stickyfunc-enhance.git")
10339                (commit commit)))
10340          (file-name (string-append name "-" version "-checkout"))
10341          (sha256
10342           (base32
10343            "16dxjsr5nj20blww4xpd4jzgjprzzh1nwvb810ggdmp9paf4iy0g"))))
10344       (build-system emacs-build-system)
10345       (home-page "https://github.com/tuhdo/semantic-stickyfunc-enhance")
10346       (synopsis "Enhancement to stock @code{semantic-stickyfunc-mode}")
10347       (description
10348        "@code{semantic-stickyfunc-mode} shows the function point is currently
10349 in at the first line of the current buffer.  This is useful when you have a
10350 very long function that spreads more than a screen, and you don't have to
10351 scroll up to read the function name and then scroll down to original position.")
10352       (license license:gpl3+))))
10354 (define-public emacs-git-auto-commit-mode
10355   (package
10356     (name "emacs-git-auto-commit-mode")
10357     (version "4.4.0")
10358     (source
10359      (origin
10360        (method url-fetch)
10361        (uri (string-append
10362              "https://github.com/ryuslash/git-auto-commit-mode/archive/"
10363              version ".tar.gz"))
10364        (file-name (string-append name "-" version ".tar.gz"))
10365        (sha256
10366         (base32
10367          "04avxmalsl3b7zi2vipfw9rb4wrwysnipsbch96skviql9axk870"))))
10368     (build-system emacs-build-system)
10369     (home-page "https://github.com/ryuslash/git-auto-commit-mode")
10370     (synopsis "Emacs Minor mode to automatically commit and push")
10371     (description "@code{git-auto-commit-mode} is an Emacs minor mode that
10372 tries to commit changes to a file after every save.
10374 When @code{gac-automatically-push-p} is non-nil, it also tries to push to
10375 the current upstream.")
10376     (license license:gpl3+)))
10378 (define-public emacs-company-restclient
10379   (package
10380     (name "emacs-company-restclient")
10381     (version "0.1.0")
10382     (source
10383      (origin
10384        (method url-fetch)
10385        (uri (string-append
10386              "https://github.com/iquiw/company-restclient/archive/"
10387              "v" version ".tar.gz"))
10388        (file-name (string-append name "-" version ".tar.gz"))
10389        (sha256
10390         (base32
10391          "1kr3f0wgqlk7r171bvb2kinv7fanwj2md01wdpx04qkgwcr1as00"))))
10392     (build-system emacs-build-system)
10393     (propagated-inputs
10394      `(("emacs-company" ,emacs-company)
10395        ("emacs-know-your-http-well" ,emacs-know-your-http-well)
10396        ("emacs-restclient" ,emacs-restclient)))
10397     (home-page "https://github.com/iquiw/company-restclient")
10398     (synopsis "Company-mode completion back-end for restclient-mode")
10399     (description "@code{company-mode} back-end for
10400 @code{restclient-mode}.
10402 It provides auto-completion for HTTP methods and headers in
10403 @code{restclient-mode}.  Completion source is given by
10404 @code{know-your-http-well}.")
10405     (license license:gpl3+)))
10407 (define-public emacs-noflet
10408   (let ((version "20170629")
10409         (revision "1")
10410         (commit "7ae84dc3257637af7334101456dafe1759c6b68a"))
10411     (package
10412       (name "emacs-noflet")
10413       (version (git-version version revision commit))
10414       (source
10415        (origin
10416          (method git-fetch)
10417          (uri (git-reference
10418                (url "https://github.com/nicferrier/emacs-noflet")
10419                (commit commit)))
10420          (file-name (string-append name "-" version "-checkout"))
10421          (sha256
10422           (base32
10423            "0g70gnmfi8n24jzfci9nrj0n9bn1qig7b8f9f325rin8h7x32ypf"))))
10424       (build-system emacs-build-system)
10425       (arguments
10426        `(#:phases
10427          (modify-phases %standard-phases
10428            (add-after 'unpack 'require-dash
10429              ;; noflet.el uses -map from dash, but (require 'dash) is
10430              ;; missing. So, add it.
10431              (lambda _
10432                (substitute* "noflet.el"
10433                  ((";;; Code:") ";;; Code:\n(require 'dash)"))
10434                #t)))))
10435       (propagated-inputs
10436        `(("emacs-dash" ,emacs-dash)))
10437       (home-page "https://github.com/nicferrier/emacs-noflet")
10438       (synopsis "Locally override functions")
10439       (description "@code{emacs-noflet} let's you locally override functions,
10440 in the manner of @command{flet}, but with access to the original function
10441 through the symbol: @command{this-fn}.")
10442       (license license:gpl3+))))
10444 (define-public emacs-dumb-jump
10445   (package
10446     (name "emacs-dumb-jump")
10447     (version "0.5.2")
10448     (source
10449      (origin
10450        (method url-fetch)
10451        (uri (string-append
10452              "https://github.com/jacktasia/dumb-jump/archive/v"
10453              version ".tar.gz"))
10454        (file-name (string-append name "-" version ".tar.gz"))
10455        (sha256
10456         (base32
10457          "07n0xjgpxjpf3vp9gxchkjpydyj0zm166930as0kwiwkhjlsirsf"))))
10458     (build-system emacs-build-system)
10459     (arguments
10460      `(#:tests? #f ; FIXME: Tests freeze when run.
10461        #:test-command '("ert-runner")
10462        #:phases
10463        (modify-phases %standard-phases
10464          (add-after 'unpack 'set-shell
10465            (lambda _
10466              ;; Setting the SHELL environment variable is required for the
10467              ;; tests to find sh.
10468              (setenv "SHELL" (which "sh"))
10469              #t)))))
10470     (native-inputs
10471      `(("emacs-el-mock" ,emacs-el-mock)
10472        ("emacs-noflet" ,emacs-noflet)
10473        ("emacs-undercover" ,emacs-undercover)
10474        ("ert-runner" ,ert-runner)))
10475     (propagated-inputs
10476      `(("emacs-f" ,emacs-f)
10477        ("emacs-popup" ,emacs-popup)))
10478     (home-page "https://github.com/jacktasia/dumb-jump")
10479     (synopsis "Jump to definition for multiple languages without configuration")
10480     (description "Dumb Jump is an Emacs \"jump to definition\" package with
10481 support for multiple programming languages that favors \"just working\" over
10482 speed or accuracy.  This means minimal --- and ideally zero --- configuration
10483 with absolutely no stored indexes (tags) or persistent background processes.
10484 Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
10485 @command{rg} installed.")
10486     (license license:gpl3+)))
10488 (define-public emacs-dts-mode
10489   (let ((commit "9ee0854446dcc6c53d2b8d2941051768dba50344")
10490         (revision "1"))
10491     (package
10492       (name "emacs-dts-mode")
10493       (version (string-append "0.1.0-" revision "." (string-take commit 7)))
10494       (source
10495        (origin
10496          (method git-fetch)
10497          (uri (git-reference
10498                (url "https://github.com/bgamari/dts-mode.git")
10499                (commit commit)))
10500          (file-name (string-append name "-" version "-checkout"))
10501          (sha256
10502           (base32
10503            "1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
10504       (build-system emacs-build-system)
10505       (home-page "https://github.com/bgamari/dts-mode.git")
10506       (synopsis "Emacs minor mode for editing device tree files")
10507       (description
10508        "This package provides an Emacs minor mode for highlighting
10509 device tree files.")
10510       (license license:gpl3+))))
10512 (define-public emacs-daemons
10513   (package
10514     (name "emacs-daemons")
10515     (version "1.2.0")
10516     (source
10517      (origin
10518        (method git-fetch)
10519        (uri (git-reference
10520              (url "https://github.com/cbowdon/daemons.el")
10521              (commit version)))
10522        (file-name (string-append name "-" version "-checkout"))
10523        (sha256
10524         (base32
10525          "00ijgm22ck76gw0x79krl05yy0m8a502yfakazfy5xhpn1zi6ab7"))))
10526     (build-system emacs-build-system)
10527     (home-page "https://github.com/cbowdon/daemons.el")
10528     (synopsis "Emacs UI for managing init system services")
10529     (description
10530      "This is an Emacs mode to give you a UI for managing init system
10531 daemons (services) for those getting tired of typing out @code{sudo service
10532 my_thing reload} all the time.  It offers a consistent UI over different init
10533 systems.")
10534     (license license:gpl3+)))
10536 (define-public emacs-esh-autosuggest
10537   (package
10538     (name "emacs-esh-autosuggest")
10539     (version "2.0.0")
10540     (source
10541      (origin
10542        (method git-fetch)
10543        (uri (git-reference
10544              (url "https://github.com/dieggsy/esh-autosuggest")
10545              (commit version)))
10546        (file-name (string-append name "-" version "-checkout"))
10547        (sha256
10548         (base32
10549          "116pdjgpjy9b0psm5kzwkwy7dq8vn0p6dy75dl1zsy2xrjf1iqdw"))))
10550     (build-system emacs-build-system)
10551     (propagated-inputs `(("emacs-company" ,emacs-company)))
10552     (home-page "https://github.com/dieggsy/esh-autosuggest")
10553     (synopsis "Fish-like autosuggestions in Eshell")
10554     (description
10555      "This package assumes you use something other than company for eshell
10556 completion (e.g. @code{eshell-pcomplete}, @code{completion-at-point},
10557 @code{helm-esh-pcomplete}).  @code{company-mode} is used solely as a mechanism
10558 for history autosuggestions.
10560 Unless you're using @code{use-package}'s hook keyword, you can enable the
10561 autosuggestions with:
10562 @code{(add-hook 'eshell-mode-hook #'esh-autosuggest-mode)}")
10563     (license license:gpl3+)))
10565 (define-public emacs-desktop-environment
10566   (package
10567     (name "emacs-desktop-environment")
10568     (version "0.2.0")
10569     (source
10570      (origin
10571        (method git-fetch)
10572        (uri (git-reference
10573              (url "https://github.com/DamienCassou/desktop-environment.git")
10574              (commit (string-append "v" version))))
10575        (file-name (string-append name "-" version "-checkout"))
10576        (sha256
10577         (base32
10578          "1fal3yfmqg10cb53qsf5gsq2gvyz9w16wmlpnpjwjzwnjfn6l73r"))))
10579     (build-system emacs-build-system)
10580     (home-page "https://gitlab.petton.fr/DamienCassou/desktop-environment")
10581     (synopsis "Control your GNU/Linux desktop environment from Emacs")
10582     (description
10583      "This package helps you control your GNU/Linux desktop from Emacs.
10584 With @code{desktop-environment}, you can control the brightness and volume as
10585 well as take screenshots and lock your screen.  The package depends on the
10586 availability of shell commands to do the hard work for us.  These commands can
10587 be changed by customizing the appropriate variables.")
10588     (license license:gpl3+)))
10590 (define-public emacs-org-caldav
10591   (package
10592     (name "emacs-org-caldav")
10593     (version "20180403")
10594     (source
10595      (origin
10596        (method url-fetch)
10597        (uri (string-append
10598              "https://github.com/dengste/org-caldav/raw/"
10599              "8d3492c27a09f437d2d94f2736c56d7652e87aa0"
10600              "/org-caldav.el"))
10601        (sha256
10602         (base32
10603          "1fh4gh68ddj0is99z2ccyh97v6psnyda61n2dsadzqhcxn51amlc"))))
10604     (build-system emacs-build-system)
10605     (propagated-inputs `(("emacs-org" ,emacs-org)))
10606     (home-page "https://github.com/dengste/org-caldav")
10607     (synopsis
10608      "Sync Org files with external calendars via the CalDAV protocol")
10609     (description
10610      "Synchronize between events in Org-mode files and a CalDAV calendar.
10611 This code is still alpha.")
10612     (license license:gpl3+)))
10614 (define-public emacs-zotxt
10615   (package
10616     (name "emacs-zotxt")
10617     (version "20180518")
10618     (source
10619      (origin
10620        (method url-fetch)
10621        (uri (string-append
10622              "https://github.com/egh/zotxt-emacs/archive/"
10623              "23a4a9f74a658222027d53a9a83cd4bcc583ca8b"
10624              ".tar.gz"))
10625        (sha256
10626         (base32
10627          "1qlibaciqgsva6fc7vv9krssjq00bi880396jk7llbi3c52q9n1y"))))
10628     (build-system emacs-build-system)
10629     (propagated-inputs
10630      `(("emacs-deferred" ,emacs-deferred)
10631        ("emacs-request" ,emacs-request)))
10632     (home-page "https://github.com/egh/zotxt-emacs")
10633     (synopsis "Integrate Emacs with Zotero")
10634     (description "This package provides two integration features between Emacs
10635 and the Zotero research assistant: Insertion of links to Zotero items into an
10636 Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
10637     (license license:gpl3+)))
10639 (define-public emacs-evil-ediff
10640   (package
10641     (name "emacs-evil-ediff")
10642     (version "20170724")
10643     (source
10644      (origin
10645        (method url-fetch)
10646        (uri (string-append
10647              "https://github.com/emacs-evil/evil-ediff/archive/"
10648              "67b0e69f65c196eff5b39dacb7a9ec05bb919c74"
10649              ".tar.gz"))
10650        (sha256
10651         (base32
10652          "0j2x26zfc6md54mjf76qpybil4yal70lp5bifcz62l1f8fc1vvlq"))))
10653     (build-system emacs-build-system)
10654     (propagated-inputs `(("emacs-evil" ,emacs-evil)))
10655     (home-page "https://github.com/emacs-evil/evil-ediff")
10656     (synopsis "Make Ediff a little evil")
10657     (description
10658      "This Emacs package configures Ediff to be friendlier to users of Vi-like
10659 keybindings.  Consult the help buffer for more information.")
10660     (license license:gpl3+)))
10662 (define-public emacs-evil-magit
10663   (let ((commit "dbf5a646a7ce1c35c229dfdc423bd5ecd927a3a8"))
10664     (package
10665       (name "emacs-evil-magit")
10666       (version (git-version "0.4.2" "1" commit))
10667       (source
10668        (origin
10669          (method git-fetch)
10670          (uri (git-reference
10671                (url "https://github.com/emacs-evil/evil-magit")
10672                (commit commit)))
10673          (file-name (string-append name "-" version "-checkout"))
10674          (sha256
10675           (base32
10676            "0ya0dkviq4pi92ab69a4j674y5r1hc1x3x7r7hlm97ag3a6zfkav"))))
10677       (build-system emacs-build-system)
10678       (propagated-inputs
10679        `(("emacs-evil" ,emacs-evil)
10680          ("magit" ,magit)))
10681       (home-page
10682        "https://github.com/emacs-evil/evil-magit")
10683       (synopsis "Evil-based key bindings for Magit")
10684       (description
10685        "This Emacs library configures Magit and Evil to play well with each other.
10686 For some background see @url{https://github.com/magit/evil-magit/issues/1}.
10687 See the README at @url{https://github.com/justbur/evil-magit} for a table
10688 describing the key binding changes.")
10689       (license license:gpl3+))))
10691 (define-public emacs-evil-mu4e
10692   (package
10693     (name "emacs-evil-mu4e")
10694     (version "0.0.8")
10695     (source
10696      (origin
10697        (method url-fetch)
10698        (uri (string-append
10699              "https://github.com/JorisE/evil-mu4e/archive/"
10700              "c03a0e11afda3092eb1461be09fa6a61ebc0e4f6"
10701              ".tar.gz"))
10702        (sha256
10703         (base32
10704          "1k3z5h04bqslrkq13paqf8pv9r0rf0zjl0zbb57ly043ds3nvxr2"))))
10705     (build-system emacs-build-system)
10706     (propagated-inputs
10707      `(("emacs-dash" ,emacs-dash)
10708        ("emacs-evil" ,emacs-evil)
10709        ("mu" ,mu)))
10710     (home-page "https://github.com/JorisE/evil-mu4e")
10711     (synopsis "Evil-based key bindings for mu4e")
10712     (description
10713      "Use keybindings for the mu4e mail reader in Emacs that make sense for
10714 Evil users.")
10715     (license license:gpl3+)))
10717 (define-public emacs-evil-multiedit
10718   (let ((commit "ea3d9177b74ab0bc65e55df9cc0a0b42e4ef815d"))
10719     (package
10720       (name "emacs-evil-multiedit")
10721       (version (git-version "1.3.9" "1" commit))
10722       (source
10723        (origin
10724          (method git-fetch)
10725          (uri (git-reference
10726                (url "https://github.com/hlissner/evil-multiedit")
10727                (commit commit)))
10728          (file-name (string-append name "-" version "-checkout"))
10729          (sha256
10730           (base32
10731            "17zm35r474z8ras4xy7124pcb972d385pbdv4jxyj5vq042vq07w"))))
10732       (build-system emacs-build-system)
10733       (propagated-inputs
10734        `(("emacs-evil" ,emacs-evil)
10735          ("emacs-iedit" ,emacs-iedit)))
10736       (home-page
10737        "https://github.com/hlissner/evil-multiedit")
10738       (synopsis "Multiple cursors for Evil mode")
10739       (description
10740        "This plugin was an answer to the lack of proper multiple cursor support
10741 in Emacs+Evil.  It allows you to select and edit matches interactively,
10742 integrating @code{iedit-mode} into Evil mode with an attempt at sensible
10743 defaults.")
10744     (license license:gpl3+))))
10746 (define-public emacs-evil-org
10747   (let ((commit "b6d652a9163d3430a9e0933a554bdbee5244bbf6"))
10748     (package
10749       (name "emacs-evil-org")
10750       (version (git-version "0.1.1" "1" commit))
10751       (source
10752        (origin
10753          (method git-fetch)
10754          (uri (git-reference
10755                (url "https://github.com/Somelauw/evil-org-mode")
10756                (commit commit)))
10757          (file-name (string-append name "-" version "-checkout"))
10758          (sha256
10759           (base32
10760            "176hrw7y7nczffbyhsa167b8rvfacsmcafm2gpkrdjqlrikbmrhl"))))
10761       (build-system emacs-build-system)
10762       (propagated-inputs `(("emacs-evil" ,emacs-evil)))
10763       (home-page
10764        "https://github.com/Somelauw/evil-org-mode")
10765       (synopsis "Evil keybindings for Org mode")
10766       (description
10767        "This package adds supplemental Evil mode key-bindings to Emacs
10768 Org-mode.  It features:
10769 @itemize
10770 @item normal, visual and insert mode bindings;
10771 @item key bindings organised in key themes;
10772 @item operators like > and < to work on headings;
10773 @item text objects;
10774 @item table support;
10775 @item calendar (date selection) support;
10776 @item agenda support.
10777 @end itemize\n")
10778       (license license:gpl3+))))
10780 (define-public emacs-fish-completion
10781   (package
10782     (name "emacs-fish-completion")
10783     (version "20180329")
10784     (source
10785      (origin
10786        (method url-fetch)
10787        (uri (string-append
10788              "https://github.com/Ambrevar/emacs-fish-completion/archive/"
10789              "3e3ed1f19fa778b7c35ad88e033dce5a6b1fc153"
10790              ".tar.gz"))
10791        (sha256
10792         (base32
10793          "16329py7fvid0bap1qhqxhdc68m9qqy1p8gc2bhng81zhm5a5zsm"))))
10794     (build-system emacs-build-system)
10795     (propagated-inputs `(("fish" ,fish)))
10796     (home-page
10797      "https://github.com/Ambrevar/emacs-fish-completion")
10798     (synopsis "Fish completion for Emacs pcomplete")
10799     (description
10800      "This package provides completion for the Fish shell to pcomplete (used
10801 by shell and Eshell).  You can set it up globally with:
10803 @example
10804 (when (and (executable-find \"fish\")
10805            (require 'fish-completion nil t))
10806   (global-fish-completion-mode))
10807 @end example
10809 Alternatively, you can call the @code{fish-completion-mode} manually or in
10810 shell/Eshell mode hook.
10812 The package @code{emacs-bash-completion} is an optional dependency: if available,
10813 @code{fish-completion-complete} can be configured to fall back on bash to further
10814 try completing.  See @code{fish-completion-fallback-on-bash-p}.")
10815     (license license:gpl3+)))
10817 (define-public emacs-gif-screencast
10818   (let ((commit "825e606950ec842304bf75cf85baef707b853b03"))
10819     (package
10820       (name "emacs-gif-screencast")
10821       (version (git-version "20180309" "1" commit))
10822       (source
10823        (origin
10824          (method url-fetch)
10825          (uri (string-append
10826                "https://github.com/Ambrevar/emacs-gif-screencast/archive/"
10827                commit
10828                ".tar.gz"))
10829          (sha256
10830           (base32
10831            "1f83sdx4qj4g6byvbdq7aayissbcy5lqm43djp8h0lq455nf7jkc"))))
10832       (build-system emacs-build-system)
10833       (inputs
10834        `(("scrot" ,scrot)
10835          ("imagemagick" ,imagemagick)
10836          ("gifsicle" ,gifsicle)))
10837      (arguments
10838       `(#:phases
10839        (modify-phases %standard-phases
10840          (add-after 'unpack 'configure
10841            (lambda* (#:key inputs outputs #:allow-other-keys)
10842              (let ((scrot (assoc-ref inputs "scrot"))
10843                    (imagemagick (assoc-ref inputs "imagemagick"))
10844                    (gifsicle (assoc-ref inputs "gifsicle")))
10845                ;; Specify the absolute file names of the various
10846                ;; programs so that everything works out-of-the-box.
10847                (emacs-substitute-variables
10848                    "gif-screencast.el"
10849                  ("gif-screencast-program"
10850                   (string-append scrot "/bin/scrot"))
10851                  ("gif-screencast-convert-program"
10852                   (string-append imagemagick "/bin/convert"))
10853                  ("gif-screencast-cropping-program"
10854                   (string-append imagemagick "/bin/mogrify"))
10855                  ("gif-screencast-optimize-program"
10856                   (string-append imagemagick "/bin/gifsicle")))))))))
10857       (home-page
10858        "https://github.com/Ambrevar/emacs-gif-screencast")
10859       (synopsis "One-frame-per-action GIF recording")
10860       (description
10861        "Call @code{gif-screencast} to start a recording.
10862 A screenshot is taken for every user action.  Call
10863 @code{gif-screencast-stop} (<f9> by default) to finish recording and create
10864 the GIF result.")
10865       (license license:gpl3+))))
10867 (define-public emacs-google-translate
10868   (let ((commit "d8b84a8359fcc697114d1298840e9a45b111c974"))
10869     (package
10870       (name "emacs-google-translate")
10871       (version (git-version "0.11.14" "1" commit))
10872       (source
10873        (origin
10874          (method git-fetch)
10875          (uri (git-reference
10876                (url "https://github.com/atykhonov/google-translate")
10877                (commit commit)))
10878          (file-name (string-append name "-" version "-checkout"))
10879          (sha256
10880           (base32
10881            "1qs4hcg1i2m487z50nnwgs0sa2xj4lpgizbrvi2yda0mf3m75fgc"))))
10882       (build-system emacs-build-system)
10883       (home-page "https://github.com/atykhonov/google-translate")
10884       (synopsis "Emacs interface to Google Translate")
10885       (description
10886        "This packages provides an Emacs interface to the Google Translate
10887 on-line service.")
10888       (license license:gpl3+))))
10890 (define-public emacs-helm-company
10891   (let ((commit "acc9c7901e094c1591327a0db1ec7a439f67a84d"))
10892     (package
10893       (name "emacs-helm-company")
10894       (version (git-version "0.2.2" "1" commit))
10895       (source
10896        (origin
10897          (method git-fetch)
10898          (uri (git-reference
10899                (url "https://github.com/Sodel-the-Vociferous/helm-company")
10900                (commit commit)))
10901          (file-name (string-append name "-" version "-checkout"))
10902          (sha256
10903           (base32
10904            "1d4q9clp0q56br80c21a4wz1gc4jw3mdy97z9mq07x9i8rhlppzs"))))
10905       (build-system emacs-build-system)
10906       (propagated-inputs
10907        `(("emacs-helm" ,emacs-helm)
10908          ("emacs-company" ,emacs-company)))
10909       (home-page "https://github.com/Sodel-the-Vociferous/helm-company")
10910       (synopsis "Helm interface for company-mode")
10911       (description
10912        "This is a Helm interface to company-mode, a text completion
10913 framework.")
10914       (license license:gpl3+))))
10916 (define-public emacs-helm-descbinds
10917   (let ((commit "033be73f21778633813264ce1634a6e1ad873d8e"))
10918     (package
10919       (name "emacs-helm-descbinds")
10920       (version (git-version "1.13" "1" commit))
10921       (source
10922        (origin
10923          (method git-fetch)
10924          (uri (git-reference
10925                (url "https://github.com/emacs-helm/helm-descbinds")
10926                (commit commit)))
10927          (file-name (string-append name "-" version "-checkout"))
10928          (sha256
10929           (base32
10930            "1n89p56qwa243w1c85i5awnaf7piwjsvfi7nmnsrwm33hix5dknk"))))
10931       (build-system emacs-build-system)
10932       (propagated-inputs `(("emacs-helm" ,emacs-helm)))
10933       (home-page "https://github.com/emacs-helm/helm-descbinds")
10934       (synopsis "Convenient @code{describe-bindings} with Helm")
10935       (description
10936        "This package is a replacement of @code{describe-bindings} for Helm.
10937 @code{describe-bindings} is replaced with @code{helm-descbinds}.  As usual,
10938 type @code{C-h b}, or any incomplete key sequence plus @code{C-h}, to run
10939 @code{helm-descbinds}.  The bindings are presented in a similar way as
10940 @code{describe-bindings} does, but you can use completion to find the command
10941 you searched for and execute it, or view its documentation.")
10942     (license license:gpl3+))))
10944 (define-public emacs-helm-emms
10945   (let ((commit "d3f9bdef8ff0d093eaf6e26af50ea905ab53fdec"))
10946     (package
10947       (name "emacs-helm-emms")
10948       (version (git-version "1.3" "1" commit))
10949       (source
10950        (origin
10951          (method git-fetch)
10952          (uri (git-reference
10953                (url "https://github.com/emacs-helm/helm-emms")
10954                (commit commit)))
10955          (file-name (string-append name "-" version "-checkout"))
10956          (sha256
10957           (base32
10958            "0bdb8xp0yp3gijpa9i2rc17gfzjhzlm92vdzw93i10qpd1xhj4aa"))))
10959       (build-system emacs-build-system)
10960       (propagated-inputs
10961        `(("emacs-helm" ,emacs-helm)
10962          ("emacs-emms" ,emms)))
10963       (home-page
10964        "https://github.com/emacs-helm/helm-emms")
10965       (synopsis "Emms for Helm")
10966       (description "Helm interface for Emms to browse all tracks and all folders
10967 from @code{emms-source-file-default-directory}.")
10968       (license license:gpl3+))))
10970 (define-public emacs-helm-exwm
10971   (let ((commit "82a856c80c8d295e3be522a01c5a15af50d08990"))
10972     (package
10973       (name "emacs-helm-exwm")
10974       (version (git-version "20180523" "1" commit))
10975       (source
10976        (origin
10977          (method url-fetch)
10978          (uri (string-append
10979                "https://github.com/emacs-helm/helm-exwm/archive/"
10980                commit
10981                ".tar.gz"))
10982          (sha256
10983           (base32
10984            "1xsg2lar1vh7jmj5lnnyi14vssxkgy95sv9r8pbfhbnkjkbjm9pb"))))
10985       (build-system emacs-build-system)
10986       (propagated-inputs
10987        `(("emacs-helm" ,emacs-helm)
10988          ("emacs-exwm" ,emacs-exwm)))
10989       (home-page
10990        "https://github.com/emacs-helm/helm-exwm")
10991       (synopsis "Helm for EXWM buffers")
10992       (description
10993        "@code{helm-exwm} runs a Helm session over the list of EXWM buffers.
10994 @code{helm-exwm-switch} is a convenience X application launcher using Helm to
10995 switch between the various windows of one or several specific applications.
10996 See @code{helm-exwm-switch-browser} for an example.")
10997       (license license:gpl3+))))
10999 (define-public emacs-helm-flycheck
11000   (let ((commit "3cf7d3bb194acacc6395f88360588013d92675d6"))
11001     (package
11002       (name "emacs-helm-flycheck")
11003       (version (git-version "0.4" "1" commit))
11004       (source
11005        (origin
11006          (method git-fetch)
11007          (uri (git-reference
11008                (url "https://github.com/yasuyk/helm-flycheck")
11009                (commit commit)))
11010          (file-name (string-append name "-" version "-checkout"))
11011          (sha256
11012           (base32
11013            "1a2yfxhz04klwhcandqvfzysxp6b7bxyxx1xk1x3kds5hif5fkl4"))))
11014       (build-system emacs-build-system)
11015       (propagated-inputs
11016        `(("emacs-dash" ,emacs-dash)
11017          ("emacs-flycheck" ,flycheck)
11018          ("emacs-helm" ,emacs-helm)))
11019       (home-page "https://github.com/yasuyk/helm-flycheck")
11020       (synopsis "Show Flycheck errors with Helm")
11021       (description
11022        "This integrates Flycheck with Helm.")
11023       (license license:gpl3+))))