gnu: All snippets report errors using exceptions, else return #t.
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
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 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 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 ng0 <ng0@infotropique.org>
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 Mathieu Othacehe <m.othacehe@gmail.com>
22 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
23 ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
24 ;;; Copyright © 2017 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 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 ;;;
36 ;;; This file is part of GNU Guix.
37 ;;;
38 ;;; GNU Guix is free software; you can redistribute it and/or modify it
39 ;;; under the terms of the GNU General Public License as published by
40 ;;; the Free Software Foundation; either version 3 of the License, or (at
41 ;;; your option) any later version.
42 ;;;
43 ;;; GNU Guix is distributed in the hope that it will be useful, but
44 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
45 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
46 ;;; GNU General Public License for more details.
47 ;;;
48 ;;; You should have received a copy of the GNU General Public License
49 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
50
51 (define-module (gnu packages emacs)
52 #:use-module ((guix licenses) #:prefix license:)
53 #:use-module (guix packages)
54 #:use-module (guix download)
55 #:use-module (guix git-download)
56 #:use-module (guix gexp)
57 #:use-module (guix monads)
58 #:use-module (guix store)
59 #:use-module (guix build-system gnu)
60 #:use-module (guix build-system emacs)
61 #:use-module (guix build-system glib-or-gtk)
62 #:use-module (guix build-system trivial)
63 #:use-module (gnu packages)
64 #:use-module (gnu packages audio)
65 #:use-module (gnu packages bash)
66 #:use-module (gnu packages code)
67 #:use-module (gnu packages guile)
68 #:use-module (gnu packages gtk)
69 #:use-module (gnu packages gnome)
70 #:use-module (gnu packages ncurses)
71 #:use-module (gnu packages python)
72 #:use-module (gnu packages tex)
73 #:use-module (gnu packages texinfo)
74 #:use-module (gnu packages tcl)
75 #:use-module (gnu packages tls)
76 #:use-module (gnu packages pkg-config)
77 #:use-module (gnu packages xorg)
78 #:use-module (gnu packages lesstif)
79 #:use-module (gnu packages image)
80 #:use-module (gnu packages linux)
81 #:use-module (gnu packages version-control)
82 #:use-module (gnu packages imagemagick)
83 #:use-module (gnu packages w3m)
84 #:use-module (gnu packages wget)
85 #:use-module (gnu packages autotools)
86 #:use-module (gnu packages base)
87 #:use-module (gnu packages compression)
88 #:use-module (gnu packages xml)
89 #:use-module (gnu packages glib)
90 #:use-module (gnu packages acl)
91 #:use-module (gnu packages package-management)
92 #:use-module (gnu packages perl)
93 #:use-module (gnu packages pdf)
94 #:use-module (gnu packages scheme)
95 #:use-module (gnu packages statistics)
96 #:use-module (gnu packages xiph)
97 #:use-module (gnu packages mp3)
98 #:use-module (gnu packages gettext)
99 #:use-module (gnu packages fribidi)
100 #:use-module (gnu packages gd)
101 #:use-module (gnu packages fontutils)
102 #:use-module (guix utils)
103 #:use-module (srfi srfi-1)
104 #:use-module (ice-9 match))
105
106 (define-public emacs
107 (package
108 (name "emacs")
109 (version "25.3")
110 (source (origin
111 (method url-fetch)
112 (uri (string-append "mirror://gnu/emacs/emacs-"
113 version ".tar.xz"))
114 (sha256
115 (base32
116 "02y00y9q42g1iqgz5qhmsja75hwxd88yrn9zp14lanay0zkwafi5"))
117 (patches (search-patches "emacs-exec-path.patch"
118 "emacs-fix-scheme-indent-function.patch"
119 "emacs-source-date-epoch.patch"))
120 (modules '((guix build utils)))
121 (snippet
122 ;; Delete the bundled byte-compiled elisp files and
123 ;; generated autoloads.
124 '(with-directory-excursion "lisp"
125 (for-each delete-file
126 (append (find-files "." "\\.elc$")
127 (find-files "." "loaddefs\\.el$")
128 ;; This is the only "autoloads" file that
129 ;; does not have "*loaddefs.el" name.
130 '("eshell/esh-groups.el")))
131
132 ;; Make sure Tramp looks for binaries in the right places on
133 ;; remote GuixSD machines, where 'getconf PATH' returns
134 ;; something bogus.
135 (substitute* "net/tramp-sh.el"
136 ;; Patch the line after "(defcustom tramp-remote-path".
137 (("\\(tramp-default-remote-path")
138 (format #f "(tramp-default-remote-path ~s ~s ~s ~s "
139 "~/.guix-profile/bin" "~/.guix-profile/sbin"
140 "/run/current-system/profile/bin"
141 "/run/current-system/profile/sbin")))
142
143 ;; Make sure Man looks for C header files in the right
144 ;; places.
145 (substitute* "man.el"
146 (("\"/usr/local/include\"" line)
147 (string-join
148 (list line
149 "\"~/.guix-profile/include\""
150 "\"/var/guix/profiles/system/profile/include\"")
151 " ")))
152 #t))))
153 (build-system glib-or-gtk-build-system)
154 (arguments
155 `(#:phases
156 (modify-phases %standard-phases
157 (add-before 'configure 'fix-/bin/pwd
158 (lambda _
159 ;; Use `pwd', not `/bin/pwd'.
160 (substitute* (find-files "." "^Makefile\\.in$")
161 (("/bin/pwd")
162 "pwd"))))
163 (add-after 'install 'install-site-start
164 ;; Use 'guix-emacs' in "site-start.el". This way, Emacs packages
165 ;; provided by Guix and installed in
166 ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
167 ;; automatically found.
168 (lambda* (#:key inputs outputs #:allow-other-keys)
169 (let* ((out (assoc-ref outputs "out"))
170 (lisp-dir (string-append out "/share/emacs/site-lisp")))
171 (copy-file (assoc-ref inputs "guix-emacs.el")
172 (string-append lisp-dir "/guix-emacs.el"))
173 (with-output-to-file (string-append lisp-dir "/site-start.el")
174 (lambda ()
175 (display
176 (string-append "(when (require 'guix-emacs nil t)\n"
177 " (guix-emacs-autoload-packages))\n"))))
178 #t))))))
179 (inputs
180 `(("gnutls" ,gnutls)
181 ("ncurses" ,ncurses)
182
183 ;; TODO: Add the optional dependencies.
184 ("libx11" ,libx11)
185 ("gtk+" ,gtk+)
186 ("libxft" ,libxft)
187 ("libtiff" ,libtiff)
188 ("giflib" ,giflib)
189 ("libjpeg" ,libjpeg-8)
190 ("imagemagick" ,imagemagick)
191 ("acl" ,acl)
192
193 ;; When looking for libpng `configure' links with `-lpng -lz', so we
194 ;; must also provide zlib as an input.
195 ("libpng" ,libpng)
196 ("zlib" ,zlib)
197
198 ("librsvg" ,librsvg)
199 ("libxpm" ,libxpm)
200 ("libxml2" ,libxml2)
201 ("libice" ,libice)
202 ("libsm" ,libsm)
203 ("alsa-lib" ,alsa-lib)
204 ("dbus" ,dbus)
205
206 ;; multilingualization support
207 ("libotf" ,libotf)
208 ("m17n-lib" ,m17n-lib)))
209 (native-inputs
210 `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
211 ("pkg-config" ,pkg-config)
212 ("texinfo" ,texinfo)))
213
214 (native-search-paths
215 (list (search-path-specification
216 (variable "INFOPATH")
217 (files '("share/info")))))
218
219 (home-page "https://www.gnu.org/software/emacs/")
220 (synopsis "The extensible, customizable, self-documenting text editor")
221 (description
222 "GNU Emacs is an extensible and highly customizable text editor. It is
223 based on an Emacs Lisp interpreter with extensions for text editing. Emacs
224 has been extended in essentially all areas of computing, giving rise to a
225 vast array of packages supporting, e.g., email, IRC and XMPP messaging,
226 spreadsheets, remote server editing, and much more. Emacs includes extensive
227 documentation on all aspects of the system, from basic editing to writing
228 large Lisp programs. It has full Unicode support for nearly all human
229 languages.")
230 (license license:gpl3+)))
231
232 (define-public emacs-minimal
233 ;; This is the version that you should use as an input to packages that just
234 ;; need to byte-compile .el files.
235 (package (inherit emacs)
236 (name "emacs-minimal")
237 (synopsis "The extensible text editor (used only for byte-compilation)")
238 (build-system gnu-build-system)
239 (arguments
240 (substitute-keyword-arguments (package-arguments emacs)
241 ((#:phases phases)
242 `(modify-phases ,phases
243 (delete 'install-site-start)))))
244 (inputs
245 `(("ncurses" ,ncurses)))
246 (native-inputs
247 `(("pkg-config" ,pkg-config)))))
248
249 (define-public emacs-no-x
250 (package (inherit emacs)
251 (name "emacs-no-x")
252 (synopsis "The extensible, customizable, self-documenting text
253 editor (console only)")
254 (build-system gnu-build-system)
255 (inputs (fold alist-delete
256 (package-inputs emacs)
257 '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
258 "imagemagick" "libpng" "librsvg" "libxpm" "libice"
259 "libsm"
260
261 ;; These depend on libx11, so remove them as well.
262 "libotf" "m17n-lib" "dbus")))))
263
264 (define-public emacs-no-x-toolkit
265 (package (inherit emacs)
266 (name "emacs-no-x-toolkit")
267 (synopsis "The extensible, customizable, self-documenting text
268 editor (without an X toolkit)" )
269 (build-system gnu-build-system)
270 (inputs (append `(("inotify-tools" ,inotify-tools))
271 (alist-delete "gtk+" (package-inputs emacs))))
272 (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
273 (package-arguments emacs)))))
274
275 (define-public guile-emacs
276 (package (inherit emacs)
277 (name "guile-emacs")
278 (version "20150512.41120e0")
279 (source (origin
280 (method git-fetch)
281 (uri (git-reference
282 (url "git://git.hcoop.net/git/bpt/emacs.git")
283 (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
284 (file-name (string-append name "-" version "-checkout"))
285 (patches (search-patches "guile-emacs-fix-configure.patch"))
286 (sha256
287 (base32
288 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
289 (native-inputs
290 `(("autoconf" ,autoconf)
291 ("automake" ,automake)
292 ("guile" ,guile-for-guile-emacs)
293 ,@(package-native-inputs emacs)))
294 (arguments
295 (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
296 #:parallel-build? #f
297 ;; Tests aren't passing for now.
298 #:tests? #f
299 ,@(package-arguments emacs))
300 ((#:phases phases)
301 `(modify-phases ,phases
302 (add-after 'unpack 'autogen
303 (lambda _
304 (zero? (system* "sh" "autogen.sh"))))
305 ;; Build sometimes fails: deps/dispnew.d: No such file or directory
306 (add-before 'build 'make-deps-dir
307 (lambda _
308 (zero? (system* "mkdir" "-p" "src/deps"))))))))))
309
310 \f
311 ;;;
312 ;;; Emacs hacking.
313 ;;;
314
315 (define-public geiser
316 (package
317 (name "geiser")
318 (version "0.9")
319 (source (origin
320 (method url-fetch)
321 (uri (string-append "mirror://savannah/geiser/" version
322 "/geiser-" version ".tar.gz"))
323 (sha256
324 (base32
325 "0phz9d8wjk4p13vqannv0003fwh8qqrp0gfzcs2hgq1mrmv1srss"))))
326 (build-system gnu-build-system)
327 (arguments
328 '(#:phases
329 (modify-phases %standard-phases
330 (add-after 'install 'post-install
331 (lambda* (#:key outputs #:allow-other-keys)
332 (symlink "geiser-install.el"
333 (string-append (assoc-ref outputs "out")
334 "/share/emacs/site-lisp/"
335 "geiser-autoloads.el"))
336 #t)))))
337 (inputs `(("guile" ,guile-2.0)))
338 (native-inputs `(("emacs" ,emacs-minimal)))
339 (home-page "https://nongnu.org/geiser/")
340 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
341 (description
342 "Geiser is a collection of Emacs major and minor modes that conspire with
343 one or more Scheme implementations to keep the Lisp Machine Spirit alive. The
344 continuously running Scheme interpreter takes the center of the stage in
345 Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme
346 implementation, Emacs and, ultimately, the schemer, giving them access to live
347 metadata.")
348 (license license:bsd-3)))
349
350 (define-public geiser-next
351 ;; This has become "geiser".
352 (deprecated-package "geiser-next" geiser))
353
354 (define-public paredit
355 (package
356 (name "emacs-paredit")
357 (version "24")
358 (source (origin
359 (method url-fetch)
360 (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
361 version ".el"))
362 (sha256
363 (base32
364 "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
365 (build-system emacs-build-system)
366 (home-page "http://mumble.net/~campbell/emacs/paredit/")
367 (synopsis "Emacs minor mode for editing parentheses")
368 (description
369 "ParEdit (paredit.el) is a minor mode for performing structured editing
370 of S-expression data. The typical example of this would be Lisp or Scheme
371 source code.
372
373 ParEdit helps **keep parentheses balanced** and adds many keys for moving
374 S-expressions and moving around in S-expressions. Its behavior can be jarring
375 for those who may want transient periods of unbalanced parentheses, such as
376 when typing parentheses directly or commenting out code line by line.")
377 (license license:gpl3+)))
378
379 (define-public paredit/old-name
380 (deprecated-package "paredit" paredit))
381
382 (define-public git-modes
383 (package
384 (name "emacs-git-modes")
385 (version "1.2.6")
386 (source (origin
387 (method url-fetch)
388 (uri (string-append
389 "https://github.com/magit/git-modes/archive/"
390 version ".tar.gz"))
391 (file-name (string-append name "-" version ".tar.gz"))
392 (sha256
393 (base32
394 "18z04wn5ird9l0h6n6x97v0kyzdj73832bj9qakm3fjjl7vcn0pw"))))
395 (build-system emacs-build-system)
396 (home-page "https://github.com/magit/git-modes")
397 (synopsis "Emacs major modes for Git configuration files")
398 (description
399 "This package provides Emacs major modes for editing various Git
400 configuration files, such as .gitattributes, .gitignore, and .git/config.")
401 (license license:gpl3+)))
402
403 (define-public git-modes/old-name
404 (deprecated-package "git-modes" git-modes))
405
406 (define-public emacs-with-editor
407 (package
408 (name "emacs-with-editor")
409 (version "2.7.0")
410 (source (origin
411 (method url-fetch)
412 (uri (string-append
413 "https://github.com/magit/with-editor/archive/v"
414 version ".tar.gz"))
415 (file-name (string-append name "-" version ".tar.gz"))
416 (sha256
417 (base32
418 "0kah7pv211zx9fsb5g4hd51bqcq2bxd1chdykd488ihvfz1l5y14"))))
419 (build-system emacs-build-system)
420 (propagated-inputs
421 `(("emacs-dash" ,emacs-dash)))
422 (home-page "https://github.com/magit/with-editor")
423 (synopsis "Emacs library for using Emacsclient as EDITOR")
424 (description
425 "This package provides an Emacs library to use the Emacsclient as
426 @code{$EDITOR} of child processes, making sure they know how to call home.
427 For remote processes a substitute is provided, which communicates with Emacs
428 on stdout instead of using a socket as the Emacsclient does.")
429 (license license:gpl3+)))
430
431 (define-public magit
432 (package
433 (name "magit")
434 (version "2.11.0")
435 (source (origin
436 (method url-fetch)
437 (uri (string-append
438 "https://github.com/magit/magit/releases/download/"
439 version "/" name "-" version ".tar.gz"))
440 (sha256
441 (base32
442 "11xly5bma9jc1jhs8fqbqrci8kz1y26yfq7dqjkqfy956wvfg6hz"))))
443 (build-system gnu-build-system)
444 (native-inputs `(("texinfo" ,texinfo)
445 ("emacs" ,emacs-minimal)))
446 (inputs
447 `(("git" ,git)
448 ("perl" ,perl)))
449 (propagated-inputs
450 `(("dash" ,emacs-dash)
451 ;; XXX Add 'magit-popup' dependency for the next release (after 2.11.0).
452 ("with-editor" ,emacs-with-editor)))
453 (arguments
454 `(#:test-target "test"
455 #:tests? #f ; tests are not included in the release
456
457 #:make-flags
458 (list (string-append "PREFIX=" %output)
459 ;; Don't put .el files in a sub-directory.
460 (string-append "lispdir=" %output "/share/emacs/site-lisp")
461 (string-append "DASH_DIR="
462 (assoc-ref %build-inputs "dash")
463 "/share/emacs/site-lisp/guix.d/dash-"
464 ,(package-version emacs-dash))
465 (string-append "WITH_EDITOR_DIR="
466 (assoc-ref %build-inputs "with-editor")
467 "/share/emacs/site-lisp/guix.d/with-editor-"
468 ,(package-version emacs-with-editor)))
469
470 #:phases
471 (modify-phases %standard-phases
472 (delete 'configure)
473 (add-before
474 'build 'patch-exec-paths
475 (lambda* (#:key inputs #:allow-other-keys)
476 (let ((perl (assoc-ref inputs "perl")))
477 (substitute* "lisp/magit-sequence.el"
478 (("perl") (string-append perl "/bin/perl")))
479 #t))))))
480 (home-page "http://magit.github.io/")
481 (synopsis "Emacs interface for the Git version control system")
482 (description
483 "With Magit, you can inspect and modify your Git repositories with Emacs.
484 You can review and commit the changes you have made to the tracked files, for
485 example, and you can browse the history of past changes. There is support for
486 cherry picking, reverting, merging, rebasing, and other common Git
487 operations.")
488 (license license:gpl3+)))
489
490 (define-public magit-svn
491 (package
492 (name "magit-svn")
493 (version "2.1.1")
494 (source (origin
495 (method url-fetch)
496 (uri (string-append
497 "https://github.com/magit/magit-svn/archive/"
498 version ".tar.gz"))
499 (file-name (string-append name "-" version ".tar.gz"))
500 (sha256
501 (base32
502 "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
503 (build-system trivial-build-system)
504 (native-inputs `(("emacs" ,emacs-minimal)
505 ("tar" ,tar)
506 ("gzip" ,gzip)))
507 (propagated-inputs `(("dash" ,emacs-dash)
508 ("magit" ,magit)))
509 (arguments
510 `(#:modules ((guix build utils)
511 (guix build emacs-utils))
512
513 #:builder
514 (begin
515 (use-modules (guix build utils)
516 (guix build emacs-utils))
517
518 (let* ((tar (string-append (assoc-ref %build-inputs "tar")
519 "/bin/tar"))
520 (PATH (string-append (assoc-ref %build-inputs "gzip")
521 "/bin"))
522 (emacs (string-append (assoc-ref %build-inputs "emacs")
523 "/bin/emacs"))
524 (magit (string-append (assoc-ref %build-inputs "magit")
525 "/share/emacs/site-lisp"))
526 (dash (string-append (assoc-ref %build-inputs "dash")
527 "/share/emacs/site-lisp/guix.d/dash-"
528 ,(package-version emacs-dash)))
529 (source (assoc-ref %build-inputs "source"))
530 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
531 (setenv "PATH" PATH)
532 (system* tar "xvf" source)
533
534 (install-file (string-append ,name "-" ,version "/magit-svn.el")
535 lisp-dir)
536
537 (with-directory-excursion lisp-dir
538 (parameterize ((%emacs emacs))
539 (emacs-generate-autoloads ,name lisp-dir)
540 (setenv "EMACSLOADPATH"
541 (string-append ":" magit ":" dash))
542 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
543 (home-page "https://github.com/magit/magit-svn")
544 (synopsis "Git-SVN extension to Magit")
545 (description
546 "This package is an extension to Magit, the Git Emacs mode, providing
547 support for Git-SVN.")
548 (license license:gpl3+)))
549
550 (define-public emacs-magit-popup
551 (package
552 (name "emacs-magit-popup")
553 (version "2.12.0")
554 (source (origin
555 (method url-fetch)
556 (uri (string-append
557 "https://github.com/magit/magit-popup/archive/v"
558 version ".tar.gz"))
559 (file-name (string-append name "-" version ".tar.gz"))
560 (sha256
561 (base32
562 "1dnk611f7lww6rb03hk8ijg2jwxx9f26pjfff4bwjmnjz7hnd6vz"))))
563 (build-system emacs-build-system)
564 (arguments
565 `(#:phases
566 (modify-phases %standard-phases
567 (add-before 'install 'make-info
568 (lambda _
569 (zero? (system* "make" "info")))))))
570 (native-inputs
571 `(("texinfo" ,texinfo)))
572 (propagated-inputs
573 `(("emacs-dash" ,emacs-dash)))
574 (home-page "https://github.com/magit/magit-popup")
575 (synopsis "Define prefix-infix-suffix command combos")
576 (description
577 "This library implements a generic interface for toggling switches and
578 setting options and then invoking an Emacs command which does something with
579 these arguments. The prototypical use is for the command to call an external
580 process, passing on the arguments as command line arguments.")
581 (license license:gpl3+)))
582
583 (define-public haskell-mode
584 (package
585 (name "haskell-mode")
586 (version "16.1")
587 (source (origin
588 (method url-fetch)
589 (file-name (string-append name "-" version ".tar.gz"))
590 (uri (string-append
591 "https://github.com/haskell/haskell-mode/archive/v"
592 version ".tar.gz"))
593 (sha256
594 (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h"))))
595 (inputs
596 `(("emacs-el-search" ,emacs-el-search) ; for tests
597 ("emacs-stream" ,emacs-stream))) ; for tests
598 (propagated-inputs
599 `(("emacs-dash" ,emacs-dash)))
600 (native-inputs
601 `(("emacs" ,emacs-minimal)
602 ("texinfo" ,texinfo)))
603 (build-system gnu-build-system)
604 (arguments
605 `(#:make-flags (list (string-append "EMACS="
606 (assoc-ref %build-inputs "emacs")
607 "/bin/emacs"))
608 #:modules ((ice-9 match)
609 (srfi srfi-26)
610 ,@%gnu-build-system-modules)
611 #:phases
612 (modify-phases %standard-phases
613 (delete 'configure)
614 (add-before
615 'build 'pre-build
616 (lambda* (#:key inputs #:allow-other-keys)
617 (define (el-dir store-dir)
618 (match (find-files store-dir "\\.el$")
619 ((f1 f2 ...) (dirname f1))
620 (_ "")))
621
622 (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
623 (define emacs-prefix? (cut string-prefix? "emacs-" <>))
624
625 (setenv "SHELL" "sh")
626 (setenv "EMACSLOADPATH"
627 (string-concatenate
628 (map (match-lambda
629 (((? emacs-prefix? name) . dir)
630 (string-append (el-dir dir) ":"))
631 (_ ""))
632 inputs)))
633 (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
634 (substitute* "tests/haskell-code-conventions.el"
635 ;; Function name recently changed in "emacs-el-search".
636 (("el-search--search-pattern") "el-search-forward")
637 ;; Don't contact home.
638 (("\\(when \\(>= emacs-major-version 25\\)")
639 "(require 'el-search) (when nil"))
640 #t)))
641 (replace
642 'install
643 (lambda* (#:key outputs #:allow-other-keys)
644 (let* ((out (assoc-ref outputs "out"))
645 (el-dir (string-append out "/share/emacs/site-lisp"))
646 (doc (string-append
647 out "/share/doc/haskell-mode-" ,version))
648 (info (string-append out "/share/info")))
649 (define (copy-to-dir dir files)
650 (for-each (lambda (f)
651 (install-file f dir))
652 files))
653
654 (with-directory-excursion "doc"
655 (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
656 (error "makeinfo failed"))
657 (install-file "haskell-mode.info" info))
658 (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
659 (copy-to-dir el-dir (find-files "." "\\.elc?"))
660 ;; These are part of other packages.
661 (with-directory-excursion el-dir
662 (for-each delete-file '("dash.el" "ert.el")))
663 #t))))))
664 (home-page "https://github.com/haskell/haskell-mode")
665 (synopsis "Haskell mode for Emacs")
666 (description
667 "This is an Emacs mode for editing, debugging and developing Haskell
668 programs.")
669 (license license:gpl3+)))
670
671 (define-public flycheck
672 (package
673 (name "emacs-flycheck")
674 (version "30")
675 (source (origin
676 (method url-fetch)
677 (uri (string-append
678 "https://github.com/flycheck/flycheck/releases/download/"
679 version "/flycheck-" version ".tar"))
680 (sha256
681 (base32
682 "1rxzkaqsj48z3nska5wsgwafvwkam014dzqd32baycmxjl0jxvy7"))))
683 (build-system emacs-build-system)
684 (propagated-inputs
685 `(("emacs-dash" ,emacs-dash)))
686 (home-page "https://www.flycheck.org")
687 (synopsis "On-the-fly syntax checking")
688 (description
689 "This package provides on-the-fly syntax checking for GNU Emacs. It is a
690 replacement for the older Flymake extension which is part of GNU Emacs, with
691 many improvements and additional features.
692
693 Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
694 checking for over 30 programming and markup languages with more than 70
695 different tools. It highlights errors and warnings inline in the buffer, and
696 provides an optional IDE-like error list.")
697 (license license:gpl3+))) ;+GFDLv1.3+ for the manual
698
699 \f
700 ;;;
701 ;;; Web browsing.
702 ;;;
703
704 (define-public emacs-w3m
705 (package
706 (name "emacs-w3m")
707 (version "1.4.538+0.20141022")
708 (source (origin
709 (method url-fetch)
710 (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
711 version ".orig.tar.gz"))
712 (sha256
713 (base32
714 "0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y"))))
715 (build-system gnu-build-system)
716 (native-inputs `(("autoconf" ,autoconf)
717 ("emacs" ,emacs-minimal)))
718 (inputs `(("w3m" ,w3m)
719 ("imagemagick" ,imagemagick)))
720 (arguments
721 `(#:modules ((guix build gnu-build-system)
722 (guix build utils)
723 (guix build emacs-utils))
724 #:imported-modules (,@%gnu-build-system-modules
725 (guix build emacs-utils))
726 #:configure-flags
727 (let ((out (assoc-ref %outputs "out")))
728 (list (string-append "--with-lispdir="
729 out "/share/emacs/site-lisp")
730 (string-append "--with-icondir="
731 out "/share/images/emacs-w3m")
732 ;; Leave .el files uncompressed, otherwise GC can't
733 ;; identify run-time dependencies. See
734 ;; <http://lists.gnu.org/archive/html/guix-devel/2015-12/msg00208.html>
735 "--without-compress-install"))
736 #:tests? #f ; no check target
737 #:phases
738 (modify-phases %standard-phases
739 (add-after 'unpack 'autoconf
740 (lambda _
741 (zero? (system* "autoconf"))))
742 (add-before 'build 'patch-exec-paths
743 (lambda* (#:key inputs outputs #:allow-other-keys)
744 (let ((out (assoc-ref outputs "out"))
745 (w3m (assoc-ref inputs "w3m"))
746 (imagemagick (assoc-ref inputs "imagemagick"))
747 (coreutils (assoc-ref inputs "coreutils")))
748 (emacs-substitute-variables "w3m.el"
749 ("w3m-command" (string-append w3m "/bin/w3m"))
750 ("w3m-touch-command"
751 (string-append coreutils "/bin/touch"))
752 ("w3m-image-viewer"
753 (string-append imagemagick "/bin/display"))
754 ("w3m-icon-directory"
755 (string-append out "/share/images/emacs-w3m")))
756 (emacs-substitute-variables "w3m-image.el"
757 ("w3m-imagick-convert-program"
758 (string-append imagemagick "/bin/convert"))
759 ("w3m-imagick-identify-program"
760 (string-append imagemagick "/bin/identify")))
761 #t)))
762 (replace 'install
763 (lambda* (#:key outputs #:allow-other-keys)
764 (and (zero? (system* "make" "install" "install-icons"))
765 (with-directory-excursion
766 (string-append (assoc-ref outputs "out")
767 "/share/emacs/site-lisp")
768 (for-each delete-file '("ChangeLog" "ChangeLog.1"))
769 (symlink "w3m-load.el" "w3m-autoloads.el")
770 #t)))))))
771 (home-page "http://emacs-w3m.namazu.org/")
772 (synopsis "Simple Web browser for Emacs based on w3m")
773 (description
774 "Emacs-w3m is an emacs interface for the w3m web browser.")
775 (license license:gpl2+)))
776
777 (define-public emacs-wget
778 (package
779 (name "emacs-wget")
780 (version "0.5.0")
781 (source (origin
782 (method url-fetch)
783 (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
784 version ".orig.tar.gz"))
785 (sha256
786 (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
787 (build-system gnu-build-system)
788 (inputs `(("wget" ,wget)))
789 (native-inputs `(("emacs" ,emacs-minimal)))
790 (arguments
791 `(#:modules ((guix build gnu-build-system)
792 (guix build utils)
793 (guix build emacs-utils))
794 #:imported-modules (,@%gnu-build-system-modules
795 (guix build emacs-utils))
796 #:tests? #f ; no check target
797 #:phases
798 (modify-phases %standard-phases
799 (replace 'configure
800 (lambda* (#:key outputs #:allow-other-keys)
801 (substitute* "Makefile"
802 (("/usr/local") (assoc-ref outputs "out"))
803 (("/site-lisp/emacs-wget") "/site-lisp"))
804 #t))
805 (add-before 'build 'patch-exec-paths
806 (lambda* (#:key inputs outputs #:allow-other-keys)
807 (let ((wget (assoc-ref inputs "wget")))
808 (emacs-substitute-variables "wget.el"
809 ("wget-command" (string-append wget "/bin/wget"))))
810 #t))
811 (add-after 'install 'post-install
812 (lambda* (#:key outputs #:allow-other-keys)
813 (emacs-generate-autoloads
814 "wget" (string-append (assoc-ref outputs "out")
815 "/share/emacs/site-lisp/"))
816 #t)))))
817 (home-page "http://www.emacswiki.org/emacs/EmacsWget")
818 (synopsis "Simple file downloader for Emacs based on wget")
819 (description
820 "Emacs-wget is an emacs interface for the wget file downloader.")
821 (license license:gpl2+)))
822
823 \f
824 ;;;
825 ;;; Multimedia.
826 ;;;
827
828 (define-public emms
829 (package
830 (name "emacs-emms")
831 (version "4.4")
832 (source (origin
833 (method url-fetch)
834 (uri (string-append "mirror://gnu/emms/emms-"
835 version ".tar.gz"))
836 (sha256
837 (base32
838 "1b0kalhn81dir26jgsma30i5bbly7d3s1ngqpf01zjjpr7lw5v0h"))
839 (modules '((guix build utils)))
840 (snippet
841 '(begin
842 (substitute* "Makefile"
843 (("/usr/bin/install-info")
844 ;; No need to use 'install-info' since it would create a
845 ;; useless 'dir' file.
846 "true")
847 (("^INFODIR=.*")
848 ;; Install Info files to $out/share/info, not $out/info.
849 "INFODIR := $(PREFIX)/share/info\n")
850 (("/site-lisp/emms")
851 ;; Install directly in share/emacs/site-lisp, not in a
852 ;; sub-directory.
853 "/site-lisp")
854 (("^all: (.*)\n" _ rest)
855 ;; Build 'emms-print-metadata'.
856 (string-append "all: " rest " emms-print-metadata\n")))
857 #t))))
858 (build-system gnu-build-system)
859 (arguments
860 `(#:modules ((guix build gnu-build-system)
861 (guix build utils)
862 (guix build emacs-utils))
863 #:imported-modules (,@%gnu-build-system-modules
864 (guix build emacs-utils))
865
866 #:phases
867 (modify-phases %standard-phases
868 (replace 'configure
869 (lambda* (#:key inputs outputs #:allow-other-keys)
870 (let ((out (assoc-ref outputs "out"))
871 (flac (assoc-ref inputs "flac"))
872 (vorbis (assoc-ref inputs "vorbis-tools"))
873 (alsa (assoc-ref inputs "alsa-utils"))
874 (mpg321 (assoc-ref inputs "mpg321"))
875 (mp3info (assoc-ref inputs "mp3info")))
876 ;; Specify the installation directory.
877 (substitute* "Makefile"
878 (("PREFIX=.*$")
879 (string-append "PREFIX := " out "\n")))
880
881 (setenv "SHELL" (which "sh"))
882 (setenv "CC" "gcc")
883
884 ;; Specify the absolute file names of the various
885 ;; programs so that everything works out-of-the-box.
886 (with-directory-excursion "lisp"
887 (emacs-substitute-variables
888 "emms-player-mpg321-remote.el"
889 ("emms-player-mpg321-remote-command"
890 (string-append mpg321 "/bin/mpg321")))
891 (substitute* "emms-player-simple.el"
892 (("\"ogg123\"")
893 (string-append "\"" vorbis "/bin/ogg123\"")))
894 (substitute* "emms-player-simple.el"
895 (("\"mpg321\"")
896 (string-append "\"" mpg321 "/bin/mpg321\"")))
897 (emacs-substitute-variables "emms-info-ogginfo.el"
898 ("emms-info-ogginfo-program-name"
899 (string-append vorbis "/bin/ogginfo")))
900 (emacs-substitute-variables "emms-info-libtag.el"
901 ("emms-info-libtag-program-name"
902 (string-append out "/bin/emms-print-metadata")))
903 (emacs-substitute-variables "emms-info-mp3info.el"
904 ("emms-info-mp3info-program-name"
905 (string-append mp3info "/bin/mp3info")))
906 (emacs-substitute-variables "emms-info-metaflac.el"
907 ("emms-info-metaflac-program-name"
908 (string-append flac "/bin/metaflac")))
909 (emacs-substitute-variables "emms-source-file.el"
910 ("emms-source-file-gnu-find" (which "find")))
911 (substitute* "emms-volume-amixer.el"
912 (("\"amixer\"")
913 (string-append "\"" alsa "/bin/amixer\"")))
914 (substitute* "emms-tag-editor.el"
915 (("\"mp3info\"")
916 (string-append "\"" mp3info "/bin/mp3info\"")))))))
917 (add-before 'install 'pre-install
918 (lambda* (#:key outputs #:allow-other-keys)
919 ;; The 'install' rule expects the target directories to exist.
920 (let* ((out (assoc-ref outputs "out"))
921 (bin (string-append out "/bin"))
922 (man1 (string-append out "/share/man/man1")))
923 (mkdir-p bin)
924 (mkdir-p man1)
925 #t)))
926 (add-after 'install 'post-install
927 (lambda* (#:key outputs #:allow-other-keys)
928 (let ((out (assoc-ref outputs "out")))
929 (symlink "emms-auto.el"
930 (string-append out "/share/emacs/site-lisp/"
931 "emms-autoloads.el"))))))
932 #:tests? #f))
933 (native-inputs `(("emacs" ,emacs-minimal) ;for (guix build emacs-utils)
934 ("texinfo" ,texinfo)))
935 (inputs `(("alsa-utils" ,alsa-utils)
936 ("flac" ,flac) ;for metaflac
937 ("vorbis-tools" ,vorbis-tools)
938 ("mpg321" ,mpg321)
939 ("taglib" ,taglib)
940 ("mp3info" ,mp3info)))
941 (properties '((upstream-name . "emms")))
942 (synopsis "Emacs Multimedia System")
943 (description
944 "EMMS is the Emacs Multimedia System. It is a small front-end which
945 can control one of the supported external players. Thus, it supports
946 whatever formats are supported by your music player. It also
947 supports tagging and playlist management, all behind a clean and
948 light user interface.")
949 (home-page "https://www.gnu.org/software/emms/")
950 (license license:gpl3+)))
951
952 (define-public emacs-emms-player-mpv
953 (package
954 (name "emacs-emms-player-mpv")
955 (version "0.0.13")
956 (source
957 (origin
958 (method url-fetch)
959 (uri (string-append "https://github.com/dochang/emms-player-mpv/archive/"
960 version ".tar.gz"))
961 (file-name (string-append name "-" version ".tar.gz"))
962 (sha256
963 (base32
964 "01i0bz7wdqzcnv5r63m9xgl07yf1nmn86dwy00rcfsn5za46y3r3"))))
965 (build-system emacs-build-system)
966 (propagated-inputs
967 `(("emms" ,emms)))
968 (home-page "https://github.com/dochang/emms-player-mpv/")
969 (synopsis "Mpv support for EMMS")
970 (description
971 "This package provides an EMMS player that uses mpv. It supports pause
972 and seeking.")
973 (license license:gpl3+)))
974
975 (define-public emacs-emms-mode-line-cycle
976 (package
977 (name "emacs-emms-mode-line-cycle")
978 (version "0.2.5")
979 (source
980 (origin
981 (method url-fetch)
982 (uri (string-append "https://github.com/momomo5717/emms-mode-line-cycle"
983 "/archive/" version ".tar.gz"))
984 (file-name (string-append name "-" version ".tar.gz"))
985 (sha256
986 (base32
987 "0ifszi930pnaxk1x8pcydmvnp06868gc7nfx14q17zbajbx735k6"))))
988 (build-system emacs-build-system)
989 (propagated-inputs
990 `(("emms" ,emms)))
991 (home-page "https://github.com/momomo5717/emms-mode-line-cycle")
992 (synopsis "Display the EMMS mode line as a ticker")
993 (description
994 "This is a minor mode for updating the EMMS mode-line string cyclically
995 within a specified width. It is useful for displaying long track titles.")
996 (license license:gpl3+)))
997
998 \f
999 ;;;
1000 ;;; Miscellaneous.
1001 ;;;
1002
1003 (define-public bbdb
1004 (package
1005 (name "bbdb")
1006 (version "3.1.2")
1007 (source (origin
1008 (method url-fetch)
1009 (uri (string-append "mirror://savannah/bbdb/bbdb-"
1010 version ".tar.gz"))
1011 (sha256
1012 (base32
1013 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
1014 (modules '((guix build utils)))
1015 (snippet
1016 ;; We don't want to build and install the PDF.
1017 '(begin
1018 (substitute* "doc/Makefile.in"
1019 (("^doc_DATA = .*$")
1020 "doc_DATA =\n"))
1021 #t))))
1022 (build-system gnu-build-system)
1023 (arguments
1024 '(#:phases
1025 (modify-phases %standard-phases
1026 (add-after 'install 'post-install
1027 (lambda* (#:key outputs #:allow-other-keys)
1028 ;; Add an autoloads file with the right name for guix.el.
1029 (let* ((out (assoc-ref outputs "out"))
1030 (site (string-append out "/share/emacs/site-lisp")))
1031 (with-directory-excursion site
1032 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
1033 #t)))))
1034 (native-inputs `(("emacs" ,emacs-minimal)))
1035 (home-page "https://savannah.nongnu.org/projects/bbdb/")
1036 (synopsis "Contact management utility for Emacs")
1037 (description
1038 "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides
1039 an address book for email and snail mail addresses, phone numbers and the
1040 like. It can be linked with various Emacs mail clients (Message and Mail
1041 mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
1042 (license license:gpl3+)))
1043
1044 (define-public emacs-aggressive-indent
1045 (package
1046 (name "emacs-aggressive-indent")
1047 (version "1.8.3")
1048 (source (origin
1049 (method url-fetch)
1050 (uri (string-append "https://elpa.gnu.org/packages/"
1051 "aggressive-indent-" version ".el"))
1052 (sha256
1053 (base32
1054 "0jnzccl50x0wapprgwxinp99pwwa6j43q6msn4gv437j7swy8wnj"))))
1055 (build-system emacs-build-system)
1056 (home-page "https://elpa.gnu.org/packages/aggressive-indent.html")
1057 (synopsis "Minor mode to aggressively keep your code always indented")
1058 (description
1059 "@code{aggressive-indent-mode} is a minor mode that keeps your code
1060 always indented. It reindents after every change, making it more reliable
1061 than @code{electric-indent-mode}.")
1062 (license license:gpl2+)))
1063
1064 (define-public emacs-ag
1065 (package
1066 (name "emacs-ag")
1067 (version "0.47")
1068 (source (origin
1069 (method url-fetch)
1070 (uri (string-append
1071 "https://github.com/Wilfred/ag.el/archive/"
1072 version ".tar.gz"))
1073 (file-name (string-append name "-" version ".tar.gz"))
1074 (sha256
1075 (base32
1076 "1rlmp6wnyhqfg86dbz17r914msp58favn4kd4yrdwyia265a4lar"))))
1077 (build-system emacs-build-system)
1078 (arguments
1079 `(#:phases
1080 (modify-phases %standard-phases
1081 (add-before 'install 'make-info
1082 (lambda _
1083 (with-directory-excursion "docs"
1084 (zero? (system* "make" "info")))))
1085 (add-after 'install 'install-info
1086 (lambda* (#:key outputs #:allow-other-keys)
1087 (let* ((out (assoc-ref outputs "out"))
1088 (info (string-append out "/share/info")))
1089 (install-file "docs/_build/texinfo/agel.info" info)
1090 #t))))))
1091 (native-inputs
1092 `(("python-sphinx" ,python-sphinx)
1093 ("texinfo" ,texinfo)))
1094 (propagated-inputs
1095 `(("dash" ,emacs-dash)
1096 ("s" ,emacs-s)
1097 ;; We need to use 'ag' as the executable on remote systems.
1098 ("the-silver-searcher" ,the-silver-searcher)))
1099 (home-page "https://github.com/Wilfred/ag.el")
1100 (synopsis "Front-end for ag (the-silver-searcher) for Emacs")
1101 (description "This package provides the ability to use the silver
1102 searcher, a code searching tool, sometimes abbreviated to @code{ag}. Features
1103 include version control system awareness, use of Perl compatible regular
1104 expressions, editing the search results directly and searching file names
1105 rather than the contents of files.")
1106 (license license:gpl3+)))
1107
1108 (define-public emacs-async
1109 (package
1110 (name "emacs-async")
1111 (version "1.9.2")
1112 (source (origin
1113 (method url-fetch)
1114 (uri (string-append "https://elpa.gnu.org/packages/async-"
1115 version ".tar"))
1116 (sha256
1117 (base32
1118 "17fnvrj7jww29sav6a6jpizclg4w2962m6h37akpii71gf0vrffw"))))
1119 (build-system emacs-build-system)
1120 (home-page "https://elpa.gnu.org/packages/async.html")
1121 (synopsis "Asynchronous processing in Emacs")
1122 (description
1123 "This package provides the ability to call asynchronous functions and
1124 processes. For example, it can be used to run dired commands (for copying,
1125 moving, etc.) asynchronously using @code{dired-async-mode}. Also it is used
1126 as a library for other Emacs packages.")
1127 (license license:gpl3+)))
1128
1129 (define-public emacs-auctex
1130 (package
1131 (name "emacs-auctex")
1132 (version "12.1.0")
1133 (source
1134 (origin
1135 (method url-fetch)
1136 (uri (string-append
1137 "https://elpa.gnu.org/packages/auctex-"
1138 version
1139 ".tar"))
1140 (sha256
1141 (base32
1142 "0iy5x61xqkxaph2hq64sg50l1c6yp6qhzppwadayxkdz00b46sas"))))
1143 (build-system emacs-build-system)
1144 ;; We use 'emacs' because AUCTeX requires dbus at compile time
1145 ;; ('emacs-minimal' does not provide dbus).
1146 (arguments
1147 `(#:emacs ,emacs
1148 #:include '("\\.el$" "^images/" "^latex/" "\\.info$")
1149 #:exclude '("^tests/" "^latex/README")))
1150 (native-inputs
1151 `(("perl" ,perl)))
1152 (home-page "https://www.gnu.org/software/auctex/")
1153 (synopsis "Integrated environment for TeX")
1154 (description
1155 "AUCTeX is a comprehensive customizable integrated environment for
1156 writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs
1157 or XEmacs.")
1158 (license license:gpl3+)))
1159
1160 (define-public emacs-autothemer
1161 (package
1162 (name "emacs-autothemer")
1163 (version "0.2.2")
1164 (source
1165 (origin
1166 (method url-fetch)
1167 (uri (string-append "https://github.com/sebastiansturm/autothemer/archive/"
1168 version ".tar.gz"))
1169 (file-name (string-append name "-" version ".tar.gz"))
1170 (sha256
1171 (base32
1172 "0rd28r9wfrbll212am4ih9hrvypx785aff76va2cbfxdwm9kixsa"))))
1173 (build-system emacs-build-system)
1174 (propagated-inputs
1175 `(("emacs-dash" ,emacs-dash)))
1176 (home-page "https://github.com/sebastiansturm/autothemer")
1177 (synopsis "Conveniently create Emacs themes")
1178 (description
1179 "Autothemer provides a thin layer on top of @code{deftheme} and
1180 @code{custom-theme-set-faces} that creates a new custom color theme, based on
1181 a set of simplified face specifications and a user-supplied color palette")
1182 (license license:gpl3+)))
1183
1184 (define-public emacs-calfw
1185 (package
1186 (name "emacs-calfw")
1187 (version "1.5")
1188 (source
1189 (origin
1190 (method url-fetch)
1191 (uri (string-append
1192 "https://github.com/kiwanami/emacs-calfw/archive/v"
1193 version ".tar.gz"))
1194 (file-name (string-append name "-" version ".tar.gz"))
1195 (sha256
1196 (base32
1197 "17ssg8gx66yp63nhygjq2r6kgl4h45cacmrxsxs9f0lrfcx37k0l"))))
1198 (build-system emacs-build-system)
1199 (home-page "https://github.com/kiwanami/emacs-calfw/")
1200 (synopsis "Calendar framework for Emacs")
1201 (description
1202 "This package displays a calendar view with various schedule data in the
1203 Emacs buffer.")
1204 (license license:gpl3+)))
1205
1206 (define-public emacs-direnv
1207 (package
1208 (name "emacs-direnv")
1209 (version "1.2.0")
1210 (source
1211 (origin
1212 (method url-fetch)
1213 (uri (string-append
1214 "https://github.com/wbolster/emacs-direnv/archive/"
1215 version ".tar.gz"))
1216 (file-name (string-append name "-" version ".tar.gz"))
1217 (sha256
1218 (base32
1219 "0m9nxawklhiiysyibzzhh2zkxgq1fskqvaqb06f7r8dnhabfy9fr"))))
1220 (build-system emacs-build-system)
1221 (propagated-inputs
1222 `(("dash" ,emacs-dash)
1223 ("with-editor" ,emacs-with-editor)))
1224 (home-page "https://github.com/wbolster/emacs-direnv")
1225 (synopsis "Direnv integration for Emacs")
1226 (description
1227 "This package provides support for invoking direnv to get the environment
1228 for the current file and updating the environment within Emacs to match.
1229
1230 Direnv can be invoked manually, and a global minor mode is included that will
1231 update the environment when the active buffer changes.
1232
1233 Using emacs-direnv means that programs started from Emacs will use the
1234 environment set through Direnv.")
1235 (license license:gpl3+)))
1236
1237 (define-public emacs-ggtags
1238 (package
1239 (name "emacs-ggtags")
1240 (version "0.8.12")
1241 (source
1242 (origin
1243 (method url-fetch)
1244 (uri (string-append "http://elpa.gnu.org/packages/ggtags-"
1245 version ".el"))
1246 (sha256
1247 (base32
1248 "0ny3llk021g6r0s75xdm4hzpbxv393ddm2r6f2xdk8kqnq4gnirp"))))
1249 (build-system emacs-build-system)
1250 (home-page "https://github.com/leoliu/ggtags")
1251 (synopsis "Frontend to the GNU Global source code tagging system")
1252 (description "@code{ggtags} provides a frontend to the GNU Global source
1253 code tagging system.
1254
1255 Features:
1256
1257 @itemize
1258 @item Build on @code{compile.el} for asynchronicity and its large feature-set.
1259 @item Automatically update Global's tag files when needed with tuning for
1260 large source trees.
1261 @item Intuitive navigation among multiple matches with mode-line display of
1262 current match, total matches and exit status.
1263 @item Read tag with completion.
1264 @item Show definition at point.
1265 @item Jump to #include files.
1266 @item Support search history and saving a search to register/bookmark.
1267 @item Query replace.
1268 @item Manage Global's environment variables on a per-project basis.
1269 @item Highlight (definition) tag at point.
1270 @item Abbreviated display of file names.
1271 @item Support all Global search backends: @code{grep}, @code{idutils}, etc.
1272 @item Support exuberant ctags @url{http://ctags.sourceforge.net/} and
1273 @code{pygments} backend.
1274 @item Support all Global's output formats: @code{grep}, @code{ctags-x},
1275 @code{cscope} etc.
1276 @item Support projects on remote hosts (e.g. via @code{tramp}).
1277 @item Support eldoc.
1278 @item Search @code{GTAGSLIBPATH} for references and symbols.
1279 @end itemize\n")
1280 (license license:gpl3+)))
1281
1282 (define-public emacs-go-mode
1283 (package
1284 (name "emacs-go-mode")
1285 (version "1.5.0")
1286 (source (origin
1287 (method url-fetch)
1288 (uri (string-append "https://github.com/dominikh/go-mode.el/"
1289 "archive/v" version ".tar.gz"))
1290 (file-name (string-append name "-" version ".tar.gz"))
1291 (sha256
1292 (base32
1293 "1adngbjyb8qnwg7n6r2y31djw9j6qf3b9fi63zd85035q7x4ljnm"))))
1294 (build-system emacs-build-system)
1295 (home-page "https://github.com/dominikh/go-mode.el")
1296 (synopsis "Go mode for Emacs")
1297 (description
1298 "This package provides go-mode, an Emacs mode for working with software
1299 written in the Go programming language.")
1300 (license license:bsd-3)))
1301
1302 (define-public emacs-google-maps
1303 (package
1304 (name "emacs-google-maps")
1305 (version "1.0.0")
1306 (source (origin
1307 (method url-fetch)
1308 (uri (string-append "https://github.com/jd/google-maps.el/"
1309 "archive/" version ".tar.gz"))
1310 (file-name (string-append name "-" version ".tar.gz"))
1311 (sha256
1312 (base32
1313 "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs"))))
1314 (build-system emacs-build-system)
1315 (home-page "https://github.com/jd/google-maps.el")
1316 (synopsis "Access Google Maps from Emacs")
1317 (description "The @code{google-maps} package allows to display Google
1318 Maps directly inside Emacs.")
1319 (license license:gpl3+)))
1320
1321 (define-public emacs-graphviz-dot-mode
1322 (let ((commit "fdaabbcc95d9156e3dadc84f81a4750c5b692580")
1323 (revision "1"))
1324 (package
1325 (name "emacs-graphviz-dot-mode")
1326 (version (string-append "0.3.10-" revision "."
1327 (string-take commit 7)))
1328 (source (origin
1329 (method git-fetch)
1330 (uri (git-reference
1331 (url "https://github.com/ppareit/graphviz-dot-mode.git")
1332 (commit commit)))
1333 (file-name (string-append name "-" version "-checkout"))
1334 (sha256
1335 (base32
1336 "1s1qh5r0xp6hs0rl5yz5mkmjhpg04bh449c7vgjbb1pjsl1dl714"))))
1337 (build-system emacs-build-system)
1338 (arguments
1339 `(#:phases
1340 (modify-phases %standard-phases
1341 (add-before 'install 'make-info
1342 (lambda* (#:key inputs #:allow-other-keys)
1343 (with-directory-excursion "texinfo"
1344 (substitute* "Makefile"
1345 (("\\/usr\\/bin\\/gzip")
1346 (string-append (assoc-ref inputs "gzip") "/bin/gzip")))
1347 (zero?
1348 (system* "make"
1349 "clean"
1350 "info"
1351 (string-append "TEXINFODIR="
1352 (assoc-ref inputs "texinfo")
1353 "/bin"))))))
1354 (add-after 'install 'install-info
1355 (lambda* (#:key outputs #:allow-other-keys)
1356 (let* ((out (assoc-ref outputs "out"))
1357 (info (string-append out "/share/info")))
1358 (install-file "texinfo/graphviz-dot-mode.info.gz" info)
1359 #t))))))
1360 (native-inputs
1361 `(("texinfo" ,texinfo)
1362 ("gzip" ,gzip)))
1363 (home-page "http://ppareit.github.com/graphviz-dot-mode")
1364 (synopsis "Major mode for editing Graphviz Dot files")
1365 (description
1366 "This Emacs packages helps you to create @file{.dot} or @file{.gv}
1367 files using the dot syntax, and use Graphviz to convert these files to
1368 diagrams.")
1369 (license license:gpl2+))))
1370
1371 (define-public emacs-mmm-mode
1372 (package
1373 (name "emacs-mmm-mode")
1374 (version "0.5.4")
1375 (source
1376 (origin
1377 (method url-fetch)
1378 (uri (string-append
1379 "https://github.com/purcell/mmm-mode/archive/"
1380 version ".tar.gz"))
1381 (file-name (string-append name "-" version ".tar.gz"))
1382 (sha256
1383 (base32
1384 "10kwslnflbjqm62wkrq420crqzdqalzfflp9pqk1i12zm6dm4mfv"))))
1385 (build-system gnu-build-system)
1386 (arguments
1387 '(#:phases
1388 (modify-phases %standard-phases
1389 (add-after 'unpack 'autogen
1390 (lambda _
1391 (zero? (system* "sh" "autogen.sh")))))))
1392 (native-inputs
1393 `(("autoconf" ,autoconf)
1394 ("automake" ,automake)
1395 ("emacs" ,emacs-minimal)
1396 ("texinfo" ,texinfo)))
1397 (home-page "https://github.com/purcell/mmm-mode")
1398 (synopsis "Allow multiple major modes in an Emacs buffer")
1399 (description
1400 "MMM Mode is a minor mode that allows multiple major modes to coexist in a
1401 single buffer.")
1402 (license license:gpl3+)))
1403
1404 (define-public emacs-tablist
1405 (package
1406 (name "emacs-tablist")
1407 (version "0.70")
1408 (source (origin
1409 (method url-fetch)
1410 (uri (string-append
1411 "https://github.com/politza/tablist/archive/v"
1412 version ".tar.gz"))
1413 (file-name (string-append name "-" version ".tar.gz"))
1414 (sha256
1415 (base32
1416 "177d6s7ym1mwz1nhnl09r14z3n093g9a2szm97xsaig0c204xz9c"))))
1417 (build-system emacs-build-system)
1418 (home-page "https://github.com/politza/tablist")
1419 (synopsis "Extension for @code{tabulated-list-mode}")
1420 (description "Tablist is the Emacs package that provides several
1421 additional features to @code{tabulated-list-mode}: it adds marks,
1422 filters, new key bindings and faces. It can be enabled by
1423 @code{tablist-mode} or @code{tablist-minor-mode} commands.")
1424 (license license:gpl3+)))
1425
1426 (define-public emacs-pdf-tools
1427 (package
1428 (name "emacs-pdf-tools")
1429 (version "0.80")
1430 (source (origin
1431 (method url-fetch)
1432 (uri (string-append
1433 "https://github.com/politza/pdf-tools/archive/v"
1434 version ".tar.gz"))
1435 (file-name (string-append name "-" version ".tar.gz"))
1436 (sha256
1437 (base32
1438 "06imydn3a92vr57azpn1zhqc14kxyyslmyi9ldsyphan9b724gb6"))))
1439 (build-system gnu-build-system)
1440 (arguments
1441 `(#:tests? #f ; there are no tests
1442 #:modules ((guix build gnu-build-system)
1443 ((guix build emacs-build-system) #:prefix emacs:)
1444 (guix build utils)
1445 (guix build emacs-utils))
1446 #:imported-modules (,@%gnu-build-system-modules
1447 (guix build emacs-build-system)
1448 (guix build emacs-utils))
1449 #:phases
1450 (modify-phases %standard-phases
1451 ;; Build server side using 'gnu-build-system'.
1452 (add-after 'unpack 'enter-server-dir
1453 (lambda _ (chdir "server") #t))
1454 (add-after 'enter-server-dir 'autogen
1455 (lambda _
1456 (zero? (system* "bash" "autogen.sh"))))
1457
1458 ;; Build emacs side using 'emacs-build-system'.
1459 (add-after 'compress-documentation 'enter-lisp-dir
1460 (lambda _ (chdir "../lisp") #t))
1461 (add-after 'enter-lisp-dir 'emacs-patch-variables
1462 (lambda* (#:key outputs #:allow-other-keys)
1463 ;; Set path to epdfinfo program.
1464 (emacs-substitute-variables "pdf-info.el"
1465 ("pdf-info-epdfinfo-program"
1466 (string-append (assoc-ref outputs "out")
1467 "/bin/epdfinfo")))
1468 ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
1469 ;; upgrading" that pdf-tools tries to perform.
1470 (emacs-substitute-variables "pdf-tools.el"
1471 ("pdf-tools-handle-upgrades" '()))))
1472 (add-after 'emacs-patch-variables 'emacs-install
1473 (assoc-ref emacs:%standard-phases 'install))
1474 (add-after 'emacs-install 'emacs-build
1475 (assoc-ref emacs:%standard-phases 'build))
1476 (add-after 'emacs-install 'emacs-make-autoloads
1477 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1478 (native-inputs `(("autoconf" ,autoconf)
1479 ("automake" ,automake)
1480 ("pkg-config" ,pkg-config)
1481 ("emacs" ,emacs-minimal)))
1482 (inputs `(("poppler" ,poppler)
1483 ("cairo" ,cairo)
1484 ("glib" ,glib)
1485 ("libpng" ,libpng)
1486 ("zlib" ,zlib)))
1487 (propagated-inputs `(("tablist" ,emacs-tablist)))
1488 (synopsis "Emacs support library for PDF files")
1489 (description
1490 "PDF Tools is, among other things, a replacement of DocView for PDF
1491 files. The key difference is that pages are not pre-rendered by
1492 e.g. ghostscript and stored in the file-system, but rather created on-demand
1493 and stored in memory.")
1494 (home-page "https://github.com/politza/pdf-tools")
1495 (license license:gpl3+)))
1496
1497 (define-public emacs-dash
1498 (package
1499 (name "emacs-dash")
1500 (version "2.13.0")
1501 (source (origin
1502 (method url-fetch)
1503 (uri (string-append
1504 "https://github.com/magnars/dash.el/archive/"
1505 version ".tar.gz"))
1506 (file-name (string-append name "-" version ".tar.gz"))
1507 (sha256
1508 (base32
1509 "1pjlkrzr8n45bnp3xs3dybvy0nz3gwamrfc7vsi1nhpkkw99ihhb"))))
1510 (build-system emacs-build-system)
1511 (arguments
1512 `(#:phases
1513 (modify-phases %standard-phases
1514 (add-before 'install 'check
1515 (lambda _
1516 (zero? (system* "./run-tests.sh")))))))
1517 (home-page "https://github.com/magnars/dash.el")
1518 (synopsis "Modern list library for Emacs")
1519 (description "This package provides a modern list API library for Emacs.")
1520 (license license:gpl3+)))
1521
1522 (define-public emacs-bui
1523 (package
1524 (name "emacs-bui")
1525 (version "1.1.0")
1526 (source (origin
1527 (method url-fetch)
1528 (uri (string-append
1529 "https://github.com/alezost/bui.el/archive/v"
1530 version ".tar.gz"))
1531 (file-name (string-append name "-" version ".tar.gz"))
1532 (sha256
1533 (base32
1534 "112k0mq6xpy0r47vk66miw7rxbkv3d06pv3pd0vcmrhcnhnnk486"))))
1535 (build-system emacs-build-system)
1536 (propagated-inputs
1537 `(("dash" ,emacs-dash)))
1538 (home-page "https://github.com/alezost/bui.el")
1539 (synopsis "Buffer interface library for Emacs")
1540 (description
1541 "BUI (Buffer User Interface) is a library for making @code{list} and
1542 @code{info} interfaces to display an arbitrary data of the same
1543 type, for example: packages, buffers, files, etc.")
1544 (license license:gpl3+)))
1545
1546 (define-public emacs-guix
1547 (package
1548 (name "emacs-guix")
1549 (version "0.3.4")
1550 (source (origin
1551 (method url-fetch)
1552 (uri (string-append "https://github.com/alezost/guix.el"
1553 "/releases/download/v" version
1554 "/emacs-guix-" version ".tar.gz"))
1555 (sha256
1556 (base32
1557 "152zf9vkafmnnf7by5armg165npznb961csgnvr8iwdj3smvivjf"))))
1558 (build-system gnu-build-system)
1559 (arguments
1560 `(#:configure-flags
1561 (let ((guix (assoc-ref %build-inputs "guix"))
1562 (geiser (assoc-ref %build-inputs "geiser"))
1563 (dash (assoc-ref %build-inputs "dash"))
1564 (bui (assoc-ref %build-inputs "bui"))
1565 (magit-popup (assoc-ref %build-inputs "magit-popup"))
1566 (site-lisp "/share/emacs/site-lisp"))
1567 (list (string-append "--with-guix-site-dir="
1568 (car (find-files (string-append guix
1569 "/share/guile/site")
1570 (lambda (file stat)
1571 (string-prefix?
1572 "2."
1573 (basename file)))
1574 #:directories? #t)))
1575 (string-append "--with-guix-site-ccache-dir="
1576 (car (find-files (string-append guix "/lib/guile")
1577 (lambda (file stat)
1578 (string-prefix?
1579 "2." (basename file)))
1580 #:directories? #t))
1581 "/site-ccache")
1582 (string-append "--with-geiser-lispdir=" geiser site-lisp)
1583 (string-append "--with-dash-lispdir="
1584 dash site-lisp "/guix.d/dash-"
1585 ,(package-version emacs-dash))
1586 (string-append "--with-bui-lispdir="
1587 bui site-lisp "/guix.d/bui-"
1588 ,(package-version emacs-bui))
1589 (string-append "--with-popup-lispdir="
1590 magit-popup site-lisp "/guix.d/magit-popup-"
1591 ,(package-version emacs-magit-popup))))))
1592 (native-inputs
1593 `(("pkg-config" ,pkg-config)
1594 ("emacs" ,emacs-minimal)))
1595 (inputs
1596 `(("guile" ,guile-2.2)
1597 ("guix" ,guix)))
1598 (propagated-inputs
1599 `(("geiser" ,geiser)
1600 ("dash" ,emacs-dash)
1601 ("bui" ,emacs-bui)
1602 ("magit-popup" ,emacs-magit-popup)))
1603 (home-page "https://alezost.github.io/guix.el/")
1604 (synopsis "Emacs interface for GNU Guix")
1605 (description
1606 "Emacs-Guix provides a visual interface, tools and features for the GNU
1607 Guix package manager. Particularly, it allows you to do various package
1608 management tasks from Emacs. To begin with, run @code{M-x guix-about} or
1609 @code{M-x guix-help} command.")
1610 (license license:gpl3+)))
1611
1612 (define-public emacs-d-mode
1613 (package
1614 (name "emacs-d-mode")
1615 (version "2.0.8")
1616 (source (origin
1617 (method url-fetch)
1618 (uri (string-append
1619 "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
1620 "archive/" version ".tar.gz"))
1621 (file-name (string-append name "-" version ".tar.gz"))
1622 (sha256
1623 (base32
1624 "0knpgi55jm09282aqf8pv55zillpnpzf9f4sgm6gwsmvxf17xaw0"))))
1625 (build-system emacs-build-system)
1626 (propagated-inputs
1627 `(("emacs-undercover" ,emacs-undercover)))
1628 (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
1629 (synopsis "Emacs major mode for editing D code")
1630 (description "This package provides an Emacs major mode for highlighting
1631 code written in the D programming language. This mode is currently known to
1632 work with Emacs 24 and 25.")
1633 (license license:gpl2+)))
1634
1635 (define-public emacs-keyfreq
1636 (package
1637 (name "emacs-keyfreq")
1638 (version "20160516.716")
1639 (source
1640 (origin
1641 (method url-fetch)
1642 (uri (string-append "http://melpa.org/packages/keyfreq-"
1643 version ".el"))
1644 (sha256
1645 (base32
1646 "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8"))))
1647 (build-system emacs-build-system)
1648 (home-page "https://github.com/dacap/keyfreq")
1649 (synopsis "Track Emacs command frequencies")
1650 (description "@code{emacs-keyfeq} tracks and shows how many times you used
1651 a command.")
1652 (license license:gpl3+)))
1653
1654 (define-public emacs-olivetti
1655 (package
1656 (name "emacs-olivetti")
1657 (version "1.5.7")
1658 (source (origin
1659 (method url-fetch)
1660 (uri (string-append
1661 "https://stable.melpa.org/packages/olivetti-"
1662 version ".el"))
1663 (sha256
1664 (base32
1665 "1yj2ylg46q0pw1xzlv2b0fv9x8p56x25284s9v2smwjr4vf0nwcj"))))
1666 (build-system emacs-build-system)
1667 (home-page "https://github.com/rnkn/olivetti")
1668 (synopsis "Emacs minor mode for a nice writing environment")
1669 (description "This package provides an Emacs minor mode that puts writing
1670 in the center.")
1671 (license license:gpl3+)))
1672
1673 (define-public emacs-undo-tree
1674 (package
1675 (name "emacs-undo-tree")
1676 (version "0.6.6")
1677 (source (origin
1678 (method git-fetch)
1679 (uri (git-reference
1680 (url "http://dr-qubit.org/git/undo-tree.git")
1681 (commit (string-append "release/" version))))
1682 (file-name (string-append name "-" version "-checkout"))
1683 (sha256
1684 (base32
1685 "1hnh2mnmw179gr094r561w6cw1haid0lpvpqvkc24wpj82vphzpa"))))
1686 (build-system emacs-build-system)
1687 (home-page "http://www.dr-qubit.org/emacs.php")
1688 (synopsis "Treat undo history as a tree")
1689 (description "Tree-like interface to Emacs undo system, providing
1690 graphical tree presentation of all previous states of buffer that
1691 allows easily move between them.")
1692 (license license:gpl3+)))
1693
1694 (define-public emacs-s
1695 (package
1696 (name "emacs-s")
1697 (version "1.12.0")
1698 (source (origin
1699 (method url-fetch)
1700 (uri (string-append
1701 "https://github.com/magnars/s.el/archive/"
1702 version ".tar.gz"))
1703 (file-name (string-append name "-" version ".tar.gz"))
1704 (sha256
1705 (base32
1706 "0xbl75863pcm806zg0x1lw7qznzjq2c8320k8js7apyag8q4srvh"))))
1707 (build-system emacs-build-system)
1708 (arguments
1709 `(#:phases
1710 (modify-phases %standard-phases
1711 (add-before 'install 'check
1712 (lambda _
1713 (zero? (system* "./run-tests.sh")))))))
1714 (home-page "https://github.com/magnars/s.el")
1715 (synopsis "Emacs string manipulation library")
1716 (description "This package provides an Emacs library for manipulating
1717 strings.")
1718 (license license:gpl3+)))
1719
1720 (define-public emacs-symon
1721 (package
1722 (name "emacs-symon")
1723 (version "20160630")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (string-append "https://github.com/zk-phi/symon/archive/"
1728 version ".tar.gz"))
1729 (file-name (string-append name "-" version ".tar.gz"))
1730 (sha256
1731 (base32
1732 "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz"))))
1733 (build-system emacs-build-system)
1734 (home-page "https://github.com/zk-phi/symon")
1735 (synopsis "Tiny graphical system monitor")
1736 (description
1737 "Tiny graphical system monitor for the Emacs minibuffer when idle.")
1738 (license license:gpl2+)))
1739
1740 (define-public emacs-sx
1741 (package
1742 (name "emacs-sx")
1743 (version "0.4")
1744 (source (origin
1745 (method url-fetch)
1746 (uri (string-append "https://github.com/vermiculus/sx.el/"
1747 "archive/v" version ".tar.gz"))
1748 (file-name (string-append name "-" version ".tar.gz"))
1749 (sha256
1750 (base32
1751 "1w0xghfljqg31axcnv8gzlrd8pw25nji6idnrhflq0af9qh1dw03"))))
1752 (build-system emacs-build-system)
1753 (propagated-inputs
1754 `(("emacs-markdown-mode" ,emacs-markdown-mode)))
1755 (home-page "https://github.com/vermiculus/sx.el/")
1756 (synopsis "Emacs StackExchange client")
1757 (description
1758 "Emacs StackExchange client. Ask and answer questions on
1759 Stack Overflow, Super User, and other StackExchange sites.")
1760 (license license:gpl3+)))
1761
1762 (define-public emacs-f
1763 (package
1764 (name "emacs-f")
1765 (version "0.19.0")
1766 (source (origin
1767 (method url-fetch)
1768 (uri (string-append
1769 "https://github.com/rejeep/f.el/archive/v"
1770 version ".tar.gz"))
1771 (file-name (string-append name "-" version ".tar.gz"))
1772 (sha256
1773 (base32
1774 "05195n80ywa68qykxn7dza6qd59rhakvlzhaa9l6mcpmjf9l9grs"))))
1775 (build-system emacs-build-system)
1776 (propagated-inputs
1777 `(("emacs-s" ,emacs-s)
1778 ("emacs-dash" ,emacs-dash)))
1779 (home-page "https://github.com/rejeep/f.el")
1780 (synopsis "Emacs API for working with files and directories")
1781 (description "This package provides an Emacs library for working with
1782 files and directories.")
1783 (license license:gpl3+)))
1784
1785 (define-public emacs-git-gutter
1786 (package
1787 (name "emacs-git-gutter")
1788 (version "0.90")
1789 (source (origin
1790 (method url-fetch)
1791 (uri (string-append
1792 "https://github.com/syohex/" name "/archive/"
1793 version ".tar.gz"))
1794 (file-name (string-append name "-" version ".tar.gz"))
1795 (sha256
1796 (base32
1797 "1nmhvhpq1l56mj2yq3ag23rw3x4xgnsy8szp30s26l0yjnkhc4qg"))))
1798 (build-system emacs-build-system)
1799 (home-page "https://github.com/syohex/emacs-git-gutter")
1800 (synopsis "See and manage hunks of text in a version control system")
1801 (description
1802 "This package is an Emacs minor mode for displaying and interacting with
1803 hunks of text managed in a version control system. Added modified and deleted
1804 areas can be indicated with symbols on the edge of the buffer, and commands
1805 can be used to move between and perform actions on these hunks.
1806
1807 Git, Mercurial, Subversion and Bazaar are supported, and many parts of the
1808 display and behaviour is easily customisable.")
1809 (license license:gpl3+)))
1810
1811 (define-public emacs-git-timemachine
1812 (package
1813 (name "emacs-git-timemachine")
1814 (version "3.0")
1815 (source
1816 (origin
1817 (method url-fetch)
1818 (uri (string-append "https://github.com/pidu/git-timemachine/"
1819 "archive/" version ".tar.gz"))
1820 (file-name (string-append name "-" version ".tar.gz"))
1821 (sha256
1822 (base32
1823 "1l4g0r69wfrnjsywv03v4bpdd53byg6zdx6mzabfxyymss3kvisa"))))
1824 (build-system emacs-build-system)
1825 (home-page "https://github.com/pidu/git-timemachine")
1826 (synopsis "Step through historic versions of Git-controlled files")
1827 (description "This package enables you to step through historic versions
1828 of files under Git version control from within Emacs.")
1829 (license license:gpl3+)))
1830
1831 (define-public emacs-minitest
1832 (package
1833 (name "emacs-minitest")
1834 (version "0.8.0")
1835 (source (origin
1836 (method url-fetch)
1837 (uri (string-append
1838 "https://github.com/arthurnn/minitest-emacs/archive/v"
1839 version ".tar.gz"))
1840 (file-name (string-append name "-" version ".tar.gz"))
1841 (sha256
1842 (base32
1843 "1dsb7kzvs1x6g4sgqmq73jqacb7wzm0wfkiq5m9dqdzq8mppgiqs"))))
1844 (build-system emacs-build-system)
1845 (arguments
1846 '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include)
1847 #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude)))
1848 (propagated-inputs
1849 `(("emacs-dash" ,emacs-dash)
1850 ("emacs-f" ,emacs-f)))
1851 (home-page "https://github.com/arthurnn/minitest-emacs")
1852 (synopsis "Emacs minitest mode")
1853 (description
1854 "The minitest mode provides commands to run the tests for the current
1855 file or line, as well as rerunning the previous tests, or all the tests for a
1856 project.
1857
1858 This package also includes relevant snippets for yasnippet.")
1859 (license license:expat)))
1860
1861 (define-public emacs-el-mock
1862 (package
1863 (name "emacs-el-mock")
1864 (version "1.25.1")
1865 (source
1866 (origin
1867 (method url-fetch)
1868 (uri (string-append "https://github.com/rejeep/el-mock.el/"
1869 "archive/v" version ".tar.gz"))
1870 (file-name (string-append name "-" version ".tar.gz"))
1871 (sha256
1872 (base32
1873 "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
1874 (build-system emacs-build-system)
1875 (home-page "https://github.com/rejeep/el-mock.el")
1876 (synopsis "Tiny mock and stub framework in Emacs Lisp")
1877 (description
1878 "Emacs Lisp Mock is a library for mocking and stubbing using readable
1879 syntax. Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp
1880 Expectations, but it can be used in other contexts.")
1881 (license license:gpl3+)))
1882
1883 (define-public emacs-espuds
1884 (package
1885 (name "emacs-espuds")
1886 (version "0.3.3")
1887 (source
1888 (origin
1889 (method url-fetch)
1890 (uri (string-append "https://github.com/ecukes/espuds/"
1891 "archive/v" version ".tar.gz"))
1892 (file-name (string-append name "-" version ".tar.gz"))
1893 (sha256
1894 (base32
1895 "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
1896 (build-system emacs-build-system)
1897 (propagated-inputs
1898 `(("emacs-s" ,emacs-s)
1899 ("emacs-dash" ,emacs-dash)
1900 ("emacs-f" ,emacs-f)))
1901 (home-page "https://github.com/ecukes/espuds")
1902 (synopsis "Common step definitions for Ecukes")
1903 (description "Espuds is a collection of the most commonly used step
1904 definitions for testing with the Ecukes framework.")
1905 (license license:gpl3+)))
1906
1907 (define-public emacs-es-mode
1908 (package
1909 (name "emacs-es-mode")
1910 (version "4.2.0")
1911 (source (origin
1912 (method url-fetch)
1913 (uri (string-append
1914 "https://github.com/dakrone/es-mode/archive/"
1915 version ".tar.gz"))
1916 (file-name (string-append name "-" version ".tar.gz"))
1917 (sha256
1918 (base32
1919 "02as82clm553yss7jfjac888308zr1h2229cch4z1yij70j25c8y"))))
1920 (build-system emacs-build-system)
1921 (propagated-inputs
1922 ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
1923 ;; to be rendered incorrectly
1924 `(("emacs-org" ,emacs-org)))
1925 (home-page "https://github.com/dakrone/es-mode")
1926 (synopsis "Major mode for editing Elasticsearch queries")
1927 (description "@code{es-mode} includes highlighting, completion and
1928 indentation support for Elasticsearch queries. Also supported are
1929 @code{es-mode} blocks in @code{org-mode}, for which the results of queries can
1930 be processed through @code{jq}, or in the case of aggregations, can be
1931 rendered in to a table. In addition, there is an @code{es-command-center}
1932 mode, which displays information about Elasticsearch clusters.")
1933 (license license:gpl3+)))
1934
1935 (define-public emacs-expand-region
1936 (package
1937 (name "emacs-expand-region")
1938 (version "0.11.0")
1939 (source
1940 (origin
1941 (method url-fetch)
1942 (uri (string-append "https://github.com/magnars/expand-region.el"
1943 "/archive/" version ".tar.gz"))
1944 (file-name (string-append name "-" version ".tar.gz"))
1945 (sha256
1946 (base32
1947 "08dy1f411sh9wwww53rjw80idcf3vpki6ba2arl4hl5jcw9651g0"))))
1948 (build-system emacs-build-system)
1949 (home-page "https://github.com/magnars/expand-region.el")
1950 (synopsis "Increase selected region by semantic units")
1951 (description
1952 "Expand region increases the selected region by semantic units. Just
1953 keep pressing the key until it selects what you want. There's also
1954 @code{er/contract-region} if you expand too far.")
1955 (license license:gpl3+)))
1956
1957 (define-public emacs-fill-column-indicator
1958 (package
1959 (name "emacs-fill-column-indicator")
1960 (version "1.81")
1961 (source
1962 (origin
1963 (method url-fetch)
1964 (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
1965 "/archive/v" version ".tar.gz"))
1966 (file-name (string-append name "-" version ".tar.gz"))
1967 (sha256
1968 (base32
1969 "1xwyqbjbbicmvhlb85vg4j5snwy1vd7rfk89ws4viws5ljkhhyg8"))))
1970 (build-system emacs-build-system)
1971 (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
1972 (synopsis "Graphically indicate the fill column")
1973 (description
1974 "Fill-column-indicator graphically indicates the location of the fill
1975 column by drawing a thin line down the length of the editing window.")
1976 (license license:gpl3+)))
1977
1978 (define-public emacs-grep-a-lot
1979 (package
1980 (name "emacs-grep-a-lot")
1981 (version "1.0.7")
1982 (source (origin
1983 (method git-fetch)
1984 (uri (git-reference
1985 (url "https://github.com/ZungBang/emacs-grep-a-lot.git")
1986 (commit "9f9f645b9e308a0d887b66864ff97d0fca1ba4ad")))
1987 (file-name (string-append name "-" version "-checkout"))
1988 (sha256
1989 (base32
1990 "1f8262mrlinzgnn4m49hbj1hm3c1mvzza24py4b37sasn49546lw"))))
1991 (build-system emacs-build-system)
1992 (home-page "https://github.com/ZungBang/emacs-grep-a-lot")
1993 (synopsis "Enables multiple grep buffers in Emacs")
1994 (description
1995 "This Emacs package allows managing multiple grep buffers.")
1996 (license license:gpl3+)))
1997
1998 (define-public emacs-inf-ruby
1999 (package
2000 (name "emacs-inf-ruby")
2001 (version "2.5.1")
2002 (source
2003 (origin
2004 (method url-fetch)
2005 (uri (string-append "https://github.com/nonsequitur/inf-ruby/"
2006 "archive/" version ".tar.gz"))
2007 (file-name (string-append name "-" version ".tar.gz"))
2008 (sha256
2009 (base32
2010 "0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
2011 (build-system emacs-build-system)
2012 (home-page "https://github.com/nonsequitur/inf-ruby")
2013 (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
2014 (description
2015 "@code{inf-ruby} provides a Read Eval Print Loop (REPL) buffer, allowing
2016 for easy interaction with a ruby subprocess. Features include support for
2017 detecting specific uses of Ruby, e.g. when using rails, and using a
2018 appropriate console.")
2019 (license license:gpl3+)))
2020
2021 (define-public emacs-znc
2022 (package
2023 (name "emacs-znc")
2024 (version "0.0.2")
2025 (source
2026 (origin
2027 (method url-fetch)
2028 (uri (string-append "https://marmalade-repo.org/packages/znc-"
2029 version ".el"))
2030 (sha256
2031 (base32
2032 "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh"))))
2033 (build-system emacs-build-system)
2034 (home-page "https://github.com/sshirokov/ZNC.el")
2035 (synopsis "Make ERC and ZNC get along better")
2036 (description
2037 "This is a thin wrapper around @code{erc} that enables one to use the ZNC
2038 IRC bouncer with ERC.")
2039 (license license:expat)))
2040
2041 (define-public emacs-shut-up
2042 (package
2043 (name "emacs-shut-up")
2044 (version "0.3.2")
2045 (source
2046 (origin
2047 (method url-fetch)
2048 (uri (string-append "https://github.com/cask/shut-up/"
2049 "archive/v" version ".tar.gz"))
2050 (file-name (string-append name "-" version ".tar.gz"))
2051 (sha256
2052 (base32
2053 "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
2054 (build-system emacs-build-system)
2055 (home-page "https://github.com/cask/shut-up")
2056 (synopsis "Silence Emacs")
2057 (description "This package silences most output of Emacs when running an
2058 Emacs shell script.")
2059 (license license:expat)))
2060
2061 (define-public emacs-undercover
2062 (package
2063 (name "emacs-undercover")
2064 (version "0.6.0")
2065 (source
2066 (origin
2067 (method url-fetch)
2068 (uri (string-append "https://github.com/sviridov/undercover.el/"
2069 "archive/v" version ".tar.gz"))
2070 (file-name (string-append name "-" version ".tar.gz"))
2071 (sha256
2072 (base32
2073 "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
2074 (build-system emacs-build-system)
2075 (propagated-inputs
2076 `(("emacs-dash" ,emacs-dash)
2077 ("emacs-shut-up" ,emacs-shut-up)))
2078 (home-page "https://github.com/sviridov/undercover.el")
2079 (synopsis "Test coverage library for Emacs Lisp")
2080 (description
2081 "Undercover is a test coverage library for software written in Emacs
2082 Lisp.")
2083 (license license:expat)))
2084
2085 (define-public emacs-paren-face
2086 (package
2087 (name "emacs-paren-face")
2088 (version "1.0.0")
2089 (source
2090 (origin
2091 (method url-fetch)
2092 (uri (string-append "https://github.com/tarsius/paren-face/archive/"
2093 version ".tar.gz"))
2094 (file-name (string-append name "-" version ".tar.gz"))
2095 (sha256
2096 (base32
2097 "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
2098 (build-system emacs-build-system)
2099 (home-page "https://github.com/tarsius/paren-face")
2100 (synopsis "Face for parentheses in lisp modes")
2101 (description
2102 "This library defines a face named @code{parenthesis} used just for
2103 parentheses. The intended purpose of this face is to make parentheses less
2104 visible in Lisp code by dimming them. Lispers probably don't need to be
2105 constantly made aware of the existence of the parentheses. Dimming them might
2106 be even more useful for people new to lisp who have not yet learned to
2107 subconsciously blend out the parentheses.")
2108 (license license:gpl3+)))
2109
2110 (define-public emacs-page-break-lines
2111 (package
2112 (name "emacs-page-break-lines")
2113 (version "0.11")
2114 (source
2115 (origin
2116 (method url-fetch)
2117 (uri (string-append "https://github.com/purcell/page-break-lines/"
2118 "archive/" version ".tar.gz"))
2119 (file-name (string-append name "-" version ".tar.gz"))
2120 (sha256
2121 (base32
2122 "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
2123 (build-system emacs-build-system)
2124 (home-page "https://github.com/purcell/page-break-lines")
2125 (synopsis "Display page breaks as tidy horizontal lines")
2126 (description
2127 "This library provides a global mode which displays form feed characters
2128 as horizontal rules.")
2129 (license license:gpl3+)))
2130
2131 (define-public emacs-simple-httpd
2132 (package
2133 (name "emacs-simple-httpd")
2134 (version "1.4.6")
2135 (source
2136 (origin
2137 (method url-fetch)
2138 (uri (string-append "https://github.com/skeeto/emacs-web-server/"
2139 "archive/" version ".tar.gz"))
2140 (file-name (string-append name "-" version ".tar.gz"))
2141 (sha256
2142 (base32
2143 "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
2144 (build-system emacs-build-system)
2145 (home-page "https://github.com/skeeto/emacs-http-server")
2146 (synopsis "HTTP server in pure Emacs Lisp")
2147 (description
2148 "This package provides a simple HTTP server written in Emacs Lisp to
2149 serve files and directory listings.")
2150 (license license:unlicense)))
2151
2152 (define-public emacs-skewer-mode
2153 (package
2154 (name "emacs-skewer-mode")
2155 (version "1.6.2")
2156 (source
2157 (origin
2158 (method url-fetch)
2159 (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
2160 version ".tar.gz"))
2161 (file-name (string-append name "-" version ".tar.gz"))
2162 (sha256
2163 (base32
2164 "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
2165 (build-system emacs-build-system)
2166 (propagated-inputs
2167 `(("emacs-simple-httpd" ,emacs-simple-httpd)
2168 ("emacs-js2-mode" ,emacs-js2-mode)))
2169 (arguments '(#:include '("\\.el$" "\\.js$" "\\.html$")))
2170 (home-page "https://github.com/skeeto/skewer-mode")
2171 (synopsis "Live web development in Emacs")
2172 (description
2173 "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in
2174 a web browser. Expressions are sent on-the-fly from an editing buffer to be
2175 evaluated in the browser, just like Emacs does with an inferior Lisp process
2176 in Lisp modes.")
2177 (license license:unlicense)))
2178
2179 (define-public emacs-string-inflection
2180 (package
2181 (name "emacs-string-inflection")
2182 (version "1.0.6")
2183 (source (origin
2184 (method git-fetch)
2185 (uri (git-reference
2186 (url "https://github.com/akicho8/string-inflection")
2187 (commit "a150e7bdda60b7824d3a936750ce23f73b0e4edd")))
2188 (file-name (string-append name "-" version "-checkout"))
2189 (sha256
2190 (base32
2191 "1k0sm552iawi49v4zis6dbb81d1rzgky9v0dpv7nj31gnb7bmy7k"))))
2192 (build-system emacs-build-system)
2193 (native-inputs
2194 `(("ert-runner" ,ert-runner)))
2195 (arguments
2196 `(#:phases
2197 (modify-phases %standard-phases
2198 (add-before 'install 'check
2199 (lambda _
2200 (zero? (system* "ert-runner")))))))
2201 (home-page "https://github.com/akicho8/string-inflection")
2202 (synopsis "Convert symbol names between different naming conventions")
2203 (description
2204 "This Emacs package provides convenient methods for manipulating the
2205 naming style of a symbol. It supports different naming conventions such as:
2206
2207 @enumerate
2208 @item camel case
2209 @item Pascal case
2210 @item all upper case
2211 @item lower case separated by underscore
2212 @item etc...
2213 @end enumerate\n")
2214 (license license:gpl2+)))
2215
2216 (define-public emacs-stripe-buffer
2217 (package
2218 (name "emacs-stripe-buffer")
2219 (version "0.2.5")
2220 (source
2221 (origin
2222 (method url-fetch)
2223 (uri (string-append "https://github.com/sabof/stripe-buffer/"
2224 "archive/" version ".tar.gz"))
2225 (file-name (string-append name "-" version ".tar.gz"))
2226 (sha256
2227 (base32
2228 "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik"))))
2229 (build-system emacs-build-system)
2230 (home-page "https://github.com/sabof/stripe-buffer/")
2231 (synopsis "Add stripes to list buffers")
2232 (description
2233 "This Emacs package adds faces to add stripes to list buffers and org
2234 tables.")
2235 (license license:gpl2+)))
2236
2237 (define-public emacs-rich-minority
2238 (package
2239 (name "emacs-rich-minority")
2240 (version "1.0.1")
2241 (source
2242 (origin
2243 (method url-fetch)
2244 (uri (string-append "https://github.com/Malabarba/rich-minority/"
2245 "archive/" version ".tar.gz"))
2246 (file-name (string-append name "-" version ".tar.gz"))
2247 (sha256
2248 (base32
2249 "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
2250 (build-system emacs-build-system)
2251 (home-page "https://github.com/Malabarba/rich-minority")
2252 (synopsis "Clean-up and beautify the list of minor modes")
2253 (description
2254 "This Emacs package hides and/or highlights minor modes in the
2255 mode-line.")
2256 (license license:gpl2+)))
2257
2258 (define-public emacs-robe
2259 (package
2260 (name "emacs-robe")
2261 (version "0.8.1")
2262 (source
2263 (origin
2264 (method url-fetch)
2265 (uri (string-append "https://github.com/dgutov/robe/"
2266 "archive/" version ".tar.gz"))
2267 (file-name (string-append name "-" version ".tar.gz"))
2268 (sha256
2269 (base32
2270 "1vp45y99fwj88z04ah4yppz4z568qcib646az6m9az5ar0f203br"))))
2271 (build-system emacs-build-system)
2272 (propagated-inputs
2273 `(("emacs-inf-ruby" ,emacs-inf-ruby)))
2274 (home-page "https://github.com/dgutov/robe")
2275 (synopsis "Ruby code assistance tool for Emacs")
2276 (description
2277 "Robe can provide information on loaded classes and modules in Ruby code,
2278 as well as where methods are defined. This allows the user to jump to method
2279 definitions, modules and classes, display method documentation and provide
2280 method and constant name completion.")
2281 (license license:gpl3+)))
2282
2283 (define-public emacs-rspec
2284 (package
2285 (name "emacs-rspec")
2286 (version "1.11")
2287 (source
2288 (origin
2289 (method url-fetch)
2290 (uri (string-append "https://github.com/pezra/rspec-mode/"
2291 "archive/v" version ".tar.gz"))
2292 (file-name (string-append name "-" version ".tar.gz"))
2293 (sha256
2294 (base32
2295 "1j0a7ms5516nlg60qfyn730pfxys6acm0rgyxh5xfkpi6jafgpvw"))))
2296 (build-system emacs-build-system)
2297 (home-page "https://github.com/pezra/rspec-mode")
2298 (synopsis "Provides a rspec mode for working with RSpec")
2299 (description
2300 "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to
2301 verify the spec associated with the current buffer, or entire project, as well
2302 as moving between the spec files, and coresponding code files.
2303
2304 Also included are keybindings for spec files and Dired buffers, as well as
2305 snippets for yasnippet.")
2306 (license license:gpl3+)))
2307
2308 (define-public emacs-smart-mode-line
2309 (package
2310 (name "emacs-smart-mode-line")
2311 (version "2.10.1")
2312 (source
2313 (origin
2314 (method url-fetch)
2315 (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
2316 "archive/" version ".tar.gz"))
2317 (file-name (string-append name "-" version ".tar.gz"))
2318 (sha256
2319 (base32
2320 "0i9wajabrrsjzwd842q0m2611kf0q31p9hg1pdj81177gynkw8l8"))))
2321 (build-system emacs-build-system)
2322 (propagated-inputs
2323 `(("emacs-rich-minority" ,emacs-rich-minority)))
2324 (home-page "https://github.com/Malabarba/smart-mode-line")
2325 (synopsis "Color-coded smart mode-line")
2326 (description
2327 "Smart Mode Line is a mode-line theme for Emacs. It aims to be easy to
2328 read from small to large monitors by using colors, a prefix feature, and smart
2329 truncation.")
2330 (license license:gpl2+)))
2331
2332 (define-public emacs-sr-speedbar
2333 (let ((commit "77a83fb50f763a465c021eca7343243f465b4a47")
2334 (revision "0"))
2335 (package
2336 (name "emacs-sr-speedbar")
2337 (version (git-version "20161025" revision commit))
2338 (source
2339 (origin
2340 (method git-fetch)
2341 (uri (git-reference
2342 (url "https://github.com/emacsorphanage/sr-speedbar.git")
2343 (commit commit)))
2344 (file-name (git-file-name name version))
2345 (sha256
2346 (base32
2347 "0sd12555hk7z721y00kv3crdybvcn1i08wmd148z5imayzibj153"))))
2348 (build-system emacs-build-system)
2349 (home-page "https://www.emacswiki.org/emacs/SrSpeedbar")
2350 (synopsis "Same frame Emacs @code{speedbar}")
2351 (description
2352 "This Emacs package allows you to show @code{M-x speedbar} in the
2353 same frame (in an extra window). You can customize the initial width of
2354 the speedbar window.")
2355 (license license:gpl3+))))
2356
2357 (define-public emacs-shell-switcher
2358 (package
2359 (name "emacs-shell-switcher")
2360 (version "1.0.1")
2361 (source
2362 (origin
2363 (method url-fetch)
2364 (uri (string-append "https://github.com/DamienCassou/shell-switcher"
2365 "/archive/v" version ".tar.gz"))
2366 (file-name (string-append name "-" version ".tar.gz"))
2367 (sha256
2368 (base32
2369 "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
2370 (build-system emacs-build-system)
2371 (home-page "https://github.com/DamienCassou/shell-switcher")
2372 (synopsis "Provide fast switching between shell buffers")
2373 (description
2374 "This package provides commands to quickly switch between shell buffers.")
2375 (license license:gpl3+)))
2376
2377 (define-public emacs-ob-ipython
2378 (package
2379 (name "emacs-ob-ipython")
2380 (version "20150704.8807064693")
2381 (source (origin
2382 (method git-fetch)
2383 (uri (git-reference
2384 (commit "880706469338ab59b5bb7dbe8460016f89755364")
2385 (url "https://github.com/gregsexton/ob-ipython.git")))
2386 (file-name (string-append name "-" version "-checkout"))
2387 (sha256
2388 (base32
2389 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
2390 (build-system emacs-build-system)
2391 (propagated-inputs
2392 `(("emacs-f" ,emacs-f)))
2393 (home-page "http://www.gregsexton.org")
2394 (synopsis "Org-Babel functions for IPython evaluation")
2395 (description "This package adds support to Org-Babel for evaluating Python
2396 source code using IPython.")
2397 (license license:gpl3+)))
2398
2399 (define-public emacs-debbugs
2400 (package
2401 (name "emacs-debbugs")
2402 (version "0.15")
2403 (source (origin
2404 (method url-fetch)
2405 (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
2406 version ".tar"))
2407 (sha256
2408 (base32
2409 "1x7jw2ldgkknyxg7x9fhnqkary691icnysmi3xw0g2fjrvllzhqw"))))
2410 (build-system emacs-build-system)
2411 (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
2412 (propagated-inputs
2413 `(("emacs-async" ,emacs-async)))
2414 (home-page "https://elpa.gnu.org/packages/debbugs.html")
2415 (synopsis "Access the Debbugs bug tracker in Emacs")
2416 (description
2417 "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
2418 Tracker} from within Emacs.
2419
2420 For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
2421 and the command @code{M-x debbugs-gnu-search} for bug searching. If you
2422 prefer the listing of bugs as TODO items of @code{org-mode}, you could use
2423 @code{M-x debbugs-org} and related commands.
2424
2425 A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
2426 Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
2427 (license license:gpl3+)))
2428
2429 (define-public emacs-deferred
2430 (package
2431 (name "emacs-deferred")
2432 (version "0.3.2")
2433 (home-page "https://github.com/kiwanami/emacs-deferred")
2434 (source (origin
2435 (method git-fetch)
2436 (uri (git-reference
2437 (url home-page)
2438 (commit (string-append "v" version))))
2439 (sha256
2440 (base32
2441 "0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
2442 (file-name (string-append name "-" version))))
2443 (build-system emacs-build-system)
2444 ;; FIXME: Would need 'el-expectations' to actually run tests.
2445 (synopsis "Simple asynchronous functions for Emacs Lisp")
2446 (description
2447 "The @code{deferred.el} library provides support for asynchronous tasks.
2448 The API is almost the same as that of
2449 @uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
2450 for asynchronous tasks.")
2451 (license license:gpl3+)))
2452
2453 (define-public butler
2454 (package
2455 (name "emacs-butler")
2456 (version "0.2.4")
2457 (home-page "https://github.com/AshtonKem/Butler")
2458 (source (origin
2459 (method git-fetch)
2460 (uri (git-reference
2461 (url home-page)
2462 (commit version)))
2463 (sha256
2464 (base32
2465 "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
2466 (file-name (string-append name "-" version))))
2467 (build-system emacs-build-system)
2468 (propagated-inputs
2469 `(("emacs-deferred" ,emacs-deferred)))
2470 (synopsis "Emacs client for Jenkins")
2471 (description
2472 "Butler provides an interface to connect to Jenkins continuous
2473 integration servers. Users can specify a list of server in the
2474 @code{butler-server-list} variable and then use @code{M-x butler-status} to
2475 view the build status of those servers' build jobs, and possibly to trigger
2476 build jobs.")
2477 (license license:gpl3+)))
2478
2479 (define-public emacs-company
2480 (package
2481 (name "emacs-company")
2482 (version "0.9.3")
2483 (source
2484 (origin
2485 (method url-fetch)
2486 (uri (string-append "https://github.com/company-mode/company-mode/archive/"
2487 version ".tar.gz"))
2488 (file-name (string-append name "-" version ".tar.gz"))
2489 (sha256
2490 (base32
2491 "1fyrpchpdmvszssy1qmsw41aqpv6q5rybvs1bw00nv9xdhiaq4vh"))))
2492 (build-system emacs-build-system)
2493 (arguments
2494 `(#:phases
2495 (modify-phases %standard-phases
2496 (add-before 'install 'check
2497 (lambda _
2498 ;; The company-files-candidates-normal-root test looks
2499 ;; for the /bin directory, but the build environment has
2500 ;; no /bin directory. Modify the test to look for the
2501 ;; /tmp directory.
2502 (substitute* "test/files-tests.el"
2503 (("/bin/") "/tmp/"))
2504 (zero? (system* "make" "test-batch")))))))
2505 (home-page "http://company-mode.github.io/")
2506 (synopsis "Modular text completion framework")
2507 (description
2508 "Company is a modular completion mechanism. Modules for retrieving
2509 completion candidates are called back-ends, modules for displaying them are
2510 front-ends. Company comes with many back-ends, e.g. @code{company-elisp}.
2511 These are distributed in separate files and can be used individually.")
2512 (license license:gpl3+)))
2513
2514 (define-public emacs-company-quickhelp
2515 (package
2516 (name "emacs-company-quickhelp")
2517 (version "2.3.0")
2518 (source
2519 (origin
2520 (method url-fetch)
2521 (uri (string-append
2522 "https://github.com/expez/company-quickhelp/archive/"
2523 version ".tar.gz"))
2524 (file-name (string-append name "-" version ".tar.gz"))
2525 (sha256
2526 (base32
2527 "0xrn2z1dgk5gmkmp2jkn9g83ckk39lqp5pyyv8rl7f6gqvib3qh0"))))
2528 (build-system emacs-build-system)
2529 (propagated-inputs
2530 `(("emacs-pos-tip" ,emacs-pos-tip)
2531 ("emacs-company" ,emacs-company)))
2532 (home-page "https://github.com/expez/company-quickhelp")
2533 (synopsis "Popup documentation for completion candidates")
2534 (description "@code{company-quickhelp} shows documentation for the
2535 completion candidate when using the Company text completion framework.")
2536 (license license:gpl3+)))
2537
2538 (define-public emacs-multiple-cursors
2539 (package
2540 (name "emacs-multiple-cursors")
2541 (version "1.4.0")
2542 (source
2543 (origin
2544 (method url-fetch)
2545 (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
2546 "archive/" version ".tar.gz"))
2547 (file-name (string-append name "-" version ".tar.gz"))
2548 (sha256
2549 (base32
2550 "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
2551 (build-system emacs-build-system)
2552 (home-page "https://github.com/magnars/multiple-cursors.el")
2553 (synopsis "Multiple cursors for Emacs")
2554 (description
2555 "This package adds support to Emacs for editing text with multiple
2556 simultaneous cursors.")
2557 (license license:gpl3+)))
2558
2559 (define-public typo
2560 (package
2561 (name "emacs-typo")
2562 (version "1.1")
2563 (home-page "https://github.com/jorgenschaefer/typoel")
2564 (source (origin
2565 (method git-fetch)
2566 (uri (git-reference
2567 (url home-page)
2568 (commit (string-append "v" version))))
2569 (sha256
2570 (base32
2571 "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
2572 (file-name (string-append name "-" version))))
2573 (build-system emacs-build-system)
2574 (synopsis "Minor mode for typographic editing")
2575 (description
2576 "This package provides two Emacs modes, @code{typo-mode} and
2577 @code{typo-global-mode}. These modes automatically insert Unicode characters
2578 for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
2579 automatically inserts a Unicode opening or closing quotation mark, depending
2580 on context.")
2581 (license license:gpl3+)))
2582
2583 (define-public emacs-scheme-complete
2584 (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
2585 (package
2586 (name "emacs-scheme-complete")
2587 (version (string-append "20151223." (string-take commit 8)))
2588 (source
2589 (origin
2590 (file-name (string-append name "-" version))
2591 (method git-fetch)
2592 (uri (git-reference
2593 (url "https://github.com/ashinn/scheme-complete.git")
2594 (commit commit)))
2595 (sha256
2596 (base32
2597 "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
2598 (patches
2599 (search-patches "emacs-scheme-complete-scheme-r5rs-info.patch"))))
2600 (build-system emacs-build-system)
2601 (home-page "https://github.com/ashinn/scheme-complete")
2602 (synopsis "Smart tab completion for Scheme in Emacs")
2603 (description
2604 "This file provides a single function, @code{scheme-smart-complete},
2605 which you can use for intelligent, context-sensitive completion for any Scheme
2606 implementation in Emacs. To use it just load this file and bind that function
2607 to a key in your preferred mode.")
2608 (license license:public-domain))))
2609
2610 (define-public emacs-mit-scheme-doc
2611 (package
2612 (name "emacs-mit-scheme-doc")
2613 (version "20140203")
2614 (source
2615 (origin
2616 (modules '((guix build utils)))
2617 (snippet
2618 ;; keep only file of interest
2619 '(begin
2620 (for-each delete-file '("dot-emacs.el" "Makefile"))
2621 (install-file "6.945-config/mit-scheme-doc.el" ".")
2622 (delete-file-recursively "6.945-config")
2623 #t))
2624 (file-name (string-append name "-" version ".tar.bz2"))
2625 (method url-fetch)
2626 (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
2627 "6.945/dont-panic/emacs-basic-config.tar.bz2"))
2628 (sha256
2629 (base32
2630 "0dqidg2bd66pawqfarvwca93w5gqf9mikn1k2a2rmd9ymfjpziq1"))))
2631 (build-system emacs-build-system)
2632 (inputs `(("mit-scheme" ,mit-scheme)))
2633 (arguments
2634 `(#:phases
2635 (modify-phases %standard-phases
2636 (add-after 'unpack 'configure-doc
2637 (lambda* (#:key inputs #:allow-other-keys)
2638 (let* ((mit-scheme-dir (assoc-ref inputs "mit-scheme"))
2639 (doc-dir (string-append mit-scheme-dir "/share/doc/"
2640 "mit-scheme-"
2641 ,(package-version mit-scheme))))
2642 (substitute* "mit-scheme-doc.el"
2643 (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/")
2644 (string-append "file:" doc-dir "/mit-scheme-ref/")))))))))
2645 (home-page "http://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
2646 (synopsis "MIT-Scheme documentation lookup for Emacs")
2647 (description
2648 "This package provides a set of Emacs functions to search definitions of
2649 identifiers in the MIT-Scheme documentation.")
2650 (license license:gpl2+)))
2651
2652 (define-public emacs-constants
2653 (package
2654 (name "emacs-constants")
2655 (version "2.6")
2656 (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
2657 (source
2658 (origin
2659 (file-name (string-append name "-" version ".tar.gz"))
2660 (method url-fetch)
2661 (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
2662 "/archive/v" version ".tar.gz"))
2663 (sha256
2664 (base32
2665 "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
2666 (build-system emacs-build-system)
2667 (synopsis "Enter definition of constants into an Emacs buffer")
2668 (description
2669 "This package provides functions for inserting the definition of natural
2670 constants and units into an Emacs buffer.")
2671 (license license:gpl2+)))
2672
2673 (define-public emacs-tagedit
2674 (package
2675 (name "emacs-tagedit")
2676 (version "1.4.0")
2677 (source
2678 (origin
2679 (method url-fetch)
2680 (uri (string-append "https://github.com/magnars/tagedit/"
2681 "archive/" version ".tar.gz"))
2682 (file-name (string-append name "-" version ".tar.gz"))
2683 (sha256
2684 (base32
2685 "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
2686 (build-system emacs-build-system)
2687 (propagated-inputs
2688 `(("emacs-s" ,emacs-s)
2689 ("emacs-dash" ,emacs-dash)))
2690 (home-page "https://github.com/magnars/tagedit")
2691 (synopsis "Some paredit-like features for html-mode")
2692 (description
2693 "This package provides a collection of paredit-like functions for editing
2694 in @code{html-mode}.")
2695 (license license:gpl3+)))
2696
2697 (define-public emacs-slime
2698 (package
2699 (name "emacs-slime")
2700 (version "2.20")
2701 (source
2702 (origin
2703 (file-name (string-append name "-" version ".tar.gz"))
2704 (method url-fetch)
2705 (uri (string-append
2706 "https://github.com/slime/slime/archive/v"
2707 version ".tar.gz"))
2708 (sha256
2709 (base32
2710 "086lq5y4pvj9wihy0si02xxvyzpzz8mcg3hz1cvy9zxlyjwzr1gk"))))
2711 (build-system emacs-build-system)
2712 (native-inputs
2713 `(("texinfo" ,texinfo)))
2714 (arguments
2715 `(#:include '("\\.el$" "\\.lisp$" "\\.asd$" "contrib")
2716 #:exclude '("^slime-tests.el" "^contrib/test/"
2717 "^contrib/Makefile$" "^contrib/README.md$")
2718 #:phases
2719 (modify-phases %standard-phases
2720 (add-before 'install 'configure
2721 (lambda* _
2722 (emacs-substitute-variables "slime.el"
2723 ("inferior-lisp-program" "sbcl"))
2724 #t))
2725 (add-before 'install 'install-doc
2726 (lambda* (#:key outputs #:allow-other-keys)
2727 (let* ((out (assoc-ref outputs "out"))
2728 (info-dir (string-append out "/share/info"))
2729 (doc-dir (string-append out "/share/doc/"
2730 ,name "-" ,version))
2731 (doc-files '("doc/slime-refcard.pdf"
2732 "README.md" "NEWS" "PROBLEMS"
2733 "CONTRIBUTING.md")))
2734 (with-directory-excursion "doc"
2735 (substitute* "Makefile"
2736 (("infodir=/usr/local/info")
2737 (string-append "infodir=" info-dir)))
2738 (system* "make" "html/index.html")
2739 (system* "make" "slime.info")
2740 (install-file "slime.info" info-dir)
2741 (copy-recursively "html" (string-append doc-dir "/html")))
2742 (for-each (lambda (f)
2743 (install-file f doc-dir)
2744 (delete-file f))
2745 doc-files)
2746 (delete-file-recursively "doc")
2747 #t))))))
2748 (home-page "https://github.com/slime/slime")
2749 (synopsis "Superior Lisp Interaction Mode for Emacs")
2750 (description
2751 "SLIME extends Emacs with support for interactive programming in
2752 Common Lisp. The features are centered around @command{slime-mode},
2753 an Emacs minor mode that complements the standard @command{lisp-mode}.
2754 While lisp-mode supports editing Lisp source files, @command{slime-mode}
2755 adds support for interacting with a running Common Lisp process
2756 for compilation, debugging, documentation lookup, and so on.")
2757 (license license:gpl2+)))
2758
2759 (define-public emacs-popup
2760 (package
2761 (name "emacs-popup")
2762 (version "0.5.3")
2763 (source (origin
2764 (method url-fetch)
2765 (uri (string-append
2766 "https://github.com/auto-complete/popup-el/archive/v"
2767 version ".tar.gz"))
2768 (file-name (string-append name "-" version ".tar.gz"))
2769 (sha256
2770 (base32
2771 "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
2772 (build-system emacs-build-system)
2773 (home-page "https://github.com/auto-complete/popup-el")
2774 (synopsis "Visual Popup User Interface for Emacs")
2775 (description
2776 "Popup.el is a visual popup user interface library for Emacs.
2777 This provides a basic API and common UI widgets such as popup tooltips
2778 and popup menus.")
2779 (license license:gpl3+)))
2780
2781 (define-public emacs-god-mode
2782 (let ((commit "6cf0807b6555eb6fcf8387a4e3b667071ef38964")
2783 (revision "1"))
2784 (package
2785 (name "emacs-god-mode")
2786 (version (string-append "20151005.925."
2787 revision "-" (string-take commit 9)))
2788 (source
2789 (origin
2790 (method git-fetch)
2791 (uri (git-reference
2792 (url "https://github.com/chrisdone/god-mode.git")
2793 (commit commit)))
2794 (file-name (string-append name "-" version "-checkout"))
2795 (sha256
2796 (base32
2797 "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
2798 (build-system emacs-build-system)
2799 (home-page "https://github.com/chrisdone/god-mode")
2800 (synopsis "Minor mode for entering commands without modifier keys")
2801 (description
2802 "This package provides a global minor mode for entering Emacs commands
2803 without modifier keys. It's similar to Vim's separation of commands and
2804 insertion mode. When enabled all keys are implicitly prefixed with
2805 @samp{C-} (among other helpful shortcuts).")
2806 (license license:gpl3+))))
2807
2808 (define-public emacs-jinja2-mode
2809 (package
2810 (name "emacs-jinja2-mode")
2811 (version "0.2")
2812 (source
2813 (origin
2814 (method url-fetch)
2815 (uri (string-append "https://github.com/paradoxxxzero/jinja2-mode/"
2816 "archive/v" version ".tar.gz"))
2817 (file-name (string-append name "-" version ".tar.gz"))
2818 (sha256
2819 (base32
2820 "0cgxjab1kla2zc2fj7bzib6i7snp08zshandmp9kqcm85l262xpn"))))
2821 (build-system emacs-build-system)
2822 (home-page "https://github.com/paradoxxxzero/jinja2-mode")
2823 (synopsis "Major mode for jinja2")
2824 (description
2825 "Emacs major mode for jinja2 with: syntax highlighting,
2826 sgml/html integration, and indentation (working with sgml).")
2827 (license license:gpl3+)))
2828
2829 (define-public emacs-rfcview
2830 (package
2831 (name "emacs-rfcview")
2832 (version "0.13")
2833 (home-page "http://www.loveshack.ukfsn.org/emacs")
2834 (source (origin
2835 (method url-fetch)
2836 (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
2837 (sha256
2838 (base32
2839 "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
2840 (build-system emacs-build-system)
2841 (synopsis "Prettify Request for Comments (RFC) documents")
2842 (description "The Internet Engineering Task Force (IETF) and the Internet
2843 Society (ISOC) publish various Internet-related protocols and specifications
2844 as \"Request for Comments\" (RFC) documents and Internet Standard (STD)
2845 documents. RFCs and STDs are published in a simple text form. This package
2846 provides an Emacs major mode, rfcview-mode, which makes it more pleasant to
2847 read these documents in Emacs. It prettifies the text and adds
2848 hyperlinks/menus for easier navigation. It also provides functions for
2849 browsing the index of RFC documents and fetching them from remote servers or
2850 local directories.")
2851 (license license:gpl3+)))
2852
2853 (define-public emacs-ffap-rfc-space
2854 (package
2855 (name "emacs-ffap-rfc-space")
2856 (version "12")
2857 (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
2858 (source (origin
2859 (method url-fetch)
2860 (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
2861 (sha256
2862 (base32
2863 "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
2864 (build-system emacs-build-system)
2865 (synopsis "Make ffap recognize an RFC with a space before its number")
2866 (description "The Internet Engineering Task Force (IETF) and the
2867 Internet Society (ISOC) publish various Internet-related protocols and
2868 specifications as \"Request for Comments\" (RFC) documents. The
2869 built-in Emacs module \"ffap\" (Find File at Point) has the ability to
2870 recognize names at point which look like \"RFC1234\" and \"RFC-1234\"
2871 and load the appropriate RFC from a remote server. However, it fails
2872 to recognize a name like \"RFC 1234\". This package enhances ffap so
2873 that it correctly finds RFCs even when a space appears before the
2874 number.")
2875 (license license:gpl3+)))
2876
2877 (define-public emacs-org-bullets
2878 (package
2879 (name "emacs-org-bullets")
2880 (version "0.2.4")
2881 (source
2882 (origin
2883 (method url-fetch)
2884 (uri (string-append "https://github.com/sabof/org-bullets/archive/"
2885 version ".tar.gz"))
2886 (file-name (string-append name "-" version ".tar.gz"))
2887 (sha256
2888 (base32
2889 "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
2890 (build-system emacs-build-system)
2891 (home-page "https://github.com/sabof/org-bullets")
2892 (synopsis "Show bullets in org-mode as UTF-8 characters")
2893 (description
2894 "This package provides an Emacs minor mode causing bullets in
2895 @code{org-mode} to be rendered as UTF-8 characters.")
2896 (license license:gpl3+)))
2897
2898 (define-public emacs-org-pomodoro
2899 (package
2900 (name "emacs-org-pomodoro")
2901 (version "2.1.0")
2902 (source
2903 (origin
2904 (method url-fetch)
2905 (uri (string-append
2906 "https://github.com/lolownia/org-pomodoro/archive/"
2907 version ".tar.gz"))
2908 (file-name (string-append name "-" version ".tar.gz"))
2909 (sha256
2910 (base32
2911 "1jalsggw3q5kvj353f84x4nl04a5vmq07h75ggppy1627lb31zm4"))))
2912 (build-system emacs-build-system)
2913 (propagated-inputs
2914 `(("emacs-alert" ,emacs-alert)))
2915 (home-page "https://github.com/lolownia/org-pomodoro")
2916 (synopsis "Pomodoro technique for org-mode")
2917 (description "@code{emacs-org-pomodoro} adds very basic support for
2918 Pomodoro technique in Emacs org-mode.
2919
2920 Run @code{M-x org-pomodoro} for the task at point or select one of the
2921 last tasks that you clocked time for. Each clocked-in pomodoro starts
2922 a timer of 25 minutes and after each pomodoro a break timer of 5
2923 minutes is started automatically. Every 4 breaks a long break is
2924 started with 20 minutes. All values are customizable.")
2925 (license license:gpl3+)))
2926
2927 (define-public emacs-org-trello
2928 (package
2929 (name "emacs-org-trello")
2930 (version "0.7.9")
2931 (source (origin
2932 (method url-fetch)
2933 (uri (string-append
2934 "https://github.com/org-trello/org-trello/archive/"
2935 version ".tar.gz"))
2936 (file-name (string-append name "-" version ".tar.gz"))
2937 (sha256
2938 (base32
2939 "074dka8g673bj1ck5vavbjaij5jyniygdlw51mdds005wd2br9wf"))))
2940 (build-system emacs-build-system)
2941 (propagated-inputs
2942 `(("emacs-deferred" ,emacs-deferred)
2943 ("emacs-request" ,emacs-request)
2944 ("emacs-dash" ,emacs-dash)
2945 ("emacs-s" ,emacs-s)))
2946 (home-page "https://org-trello.github.io")
2947 (synopsis "Emacs minor mode for interacting with Trello")
2948 (description "This package provides an Emacs minor mode to extend
2949 @code{org-mode} with Trello abilities. Trello is an online project
2950 organizer.")
2951 (license license:gpl3+)))
2952
2953 (define-public emacs-zenburn-theme
2954 (package
2955 (name "emacs-zenburn-theme")
2956 (version "2.5")
2957 (source (origin
2958 (method url-fetch)
2959 (uri (string-append
2960 "https://github.com/bbatsov/zenburn-emacs/archive/v"
2961 version ".tar.gz"))
2962 (file-name (string-append name "-" version ".tar.gz"))
2963 (sha256
2964 (base32
2965 "03kfhzgbbbl8ivpzzky6qxw4j9mmp452m1sk7wikxmcalfnix0gn"))))
2966 (build-system emacs-build-system)
2967 (home-page "https://github.com/bbatsov/zenburn-emacs")
2968 (synopsis "Low contrast color theme for Emacs")
2969 (description
2970 "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs.
2971 It is built on top of the custom theme support in Emacs 24 or later.")
2972 (license license:gpl3+)))
2973
2974 (define-public emacs-solarized-theme
2975 (package
2976 (name "emacs-solarized-theme")
2977 (version "1.2.2")
2978 (source (origin
2979 (method url-fetch)
2980 (uri (string-append "https://github.com/bbatsov/solarized-emacs/"
2981 "archive/v" version ".tar.gz"))
2982 (file-name (string-append name "-" version ".tar.gz"))
2983 (sha256
2984 (base32
2985 "1ha3slc6d9wi9ilkhmwrzkvf308n6ph7b0k69pk369s9304awxzx"))))
2986 (build-system emacs-build-system)
2987 (propagated-inputs
2988 `(("emacs-dash" ,emacs-dash)))
2989 (home-page "https://github.com/bbatsov/solarized-emacs")
2990 (synopsis "Port of the Solarized theme for Emacs")
2991 (description
2992 "Solarized for Emacs is a port of the Solarized theme for Vim. This
2993 package provides a light and a dark variant.")
2994 (license license:gpl3+)))
2995
2996 (define-public emacs-ahungry-theme
2997 (package
2998 (name "emacs-ahungry-theme")
2999 (version "1.10.0")
3000 (source
3001 (origin (method url-fetch)
3002 (uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-"
3003 version ".tar"))
3004 (sha256
3005 (base32
3006 "14q5yw56n82qph09bk7wmj5b1snhh9w0nk5s1l7yn9ldg71xq6pm"))))
3007 (build-system emacs-build-system)
3008 (home-page "https://github.com/ahungry/color-theme-ahungry")
3009 (synopsis "Ahungry color theme for Emacs")
3010 (description "Ahungry theme for Emacs provides bright and bold colors.
3011 If you load it from a terminal, you will be able to make use of the
3012 transparent background. If you load it from a GUI, it will default to a
3013 dark background.")
3014 (license license:gpl3+)))
3015
3016 (define-public emacs-2048-game
3017 (package
3018 (name "emacs-2048-game")
3019 (version "20151026.1233")
3020 (source
3021 (origin
3022 (method url-fetch)
3023 (uri (string-append "https://melpa.org/packages/2048-game-"
3024 version ".el"))
3025 (sha256
3026 (base32
3027 "0gy2pvz79whpavp4jmz8h9krzn7brmvv3diixi1d4w51pcdvaldd"))))
3028 (build-system emacs-build-system)
3029 (home-page "https://bitbucket.org/zck/2048.el")
3030 (synopsis "Implementation of the game 2048 in Emacs Lisp")
3031 (description
3032 "This program is an implementation of 2048 for Emacs.
3033 The goal of this game is to create a tile with value 2048. The size of the
3034 board and goal value can be customized.")
3035 (license license:gpl3+)))
3036
3037 (define-public emacs-base16-theme
3038 (package
3039 (name "emacs-base16-theme")
3040 (version "2.1")
3041 (source
3042 (origin
3043 (method url-fetch)
3044 (uri (string-append "https://stable.melpa.org/packages/base16-theme-"
3045 version ".tar"))
3046 (sha256
3047 (base32
3048 "0z6hrwz2jlz6jbr381rcqcqvx6hss5cad352klx07rark7zccacj"))))
3049 (build-system emacs-build-system)
3050 (home-page "https://github.com/belak/base16-emacs")
3051 (synopsis "Base16 color themes for Emacs")
3052 (description
3053 "Base16 provides carefully chosen syntax highlighting and a default set
3054 of sixteen colors suitable for a wide range of applications. Base16 is not a
3055 single theme but a set of guidelines with numerous implementations.")
3056 (license license:expat)))
3057
3058 (define-public emacs-smartparens
3059 (package
3060 (name "emacs-smartparens")
3061 (version "1.11.0")
3062 (source (origin
3063 (method url-fetch)
3064 (uri (string-append
3065 "https://github.com/Fuco1/smartparens/archive/"
3066 version ".tar.gz"))
3067 (file-name (string-append name "-" version ".tar.gz"))
3068 (sha256
3069 (base32
3070 "0q5as813xs8y29i3v2rm97phd6m7xsmmw6hwbvx57gwmi8i1c409"))))
3071 (build-system emacs-build-system)
3072 (propagated-inputs `(("emacs-dash" ,emacs-dash)))
3073 (home-page "https://github.com/Fuco1/smartparens")
3074 (synopsis "Paredit-like insertion, wrapping and navigation with user
3075 defined pairs")
3076 (description
3077 "Smartparens is a minor mode for Emacs that deals with parens pairs
3078 and tries to be smart about it. It started as a unification effort to
3079 combine functionality of several existing packages in a single,
3080 compatible and extensible way to deal with parentheses, delimiters, tags
3081 and the like. Some of these packages include autopair, textmate,
3082 wrap-region, electric-pair-mode, paredit and others. With the basic
3083 features found in other packages it also brings many improvements as
3084 well as completely new features.")
3085 (license license:gpl3+)))
3086
3087 (define-public emacs-highlight-symbol
3088 (package
3089 (name "emacs-highlight-symbol")
3090 (version "1.3")
3091 (source (origin
3092 (method url-fetch)
3093 (uri (string-append
3094 "https://github.com/nschum/highlight-symbol.el/archive/"
3095 version ".tar.gz"))
3096 (file-name (string-append name "-" version ".tar.gz"))
3097 (sha256
3098 (base32
3099 "1n7k1qns0fn0jsyc0hrjac5nzk21xw48yc30vyrhwvc51h0b9g90"))))
3100 (build-system emacs-build-system)
3101 (home-page "https://nschum.de/src/emacs/highlight-symbol")
3102 (synopsis "Automatic and manual symbol highlighting for Emacs")
3103 (description
3104 "Use @code{highlight-symbol} to toggle highlighting of the symbol at
3105 point throughout the current buffer. Use @code{highlight-symbol-mode} to keep
3106 the symbol at point highlighted.
3107
3108 The functions @code{highlight-symbol-next}, @code{highlight-symbol-prev},
3109 @code{highlight-symbol-next-in-defun} and
3110 @code{highlight-symbol-prev-in-defun} allow for cycling through the locations
3111 of any symbol at point. Use @code{highlight-symbol-nav-mode} to enable key
3112 bindings @code{M-p} and @code{M-p} for navigation. When
3113 @code{highlight-symbol-on-navigation-p} is set, highlighting is triggered
3114 regardless of @code{highlight-symbol-idle-delay}.
3115
3116 @code{highlight-symbol-query-replace} can be used to replace the symbol. ")
3117 (license license:gpl2+)))
3118
3119 (define-public emacs-hl-todo
3120 (package
3121 (name "emacs-hl-todo")
3122 (version "1.8.0")
3123 (source (origin
3124 (method url-fetch)
3125 (uri (string-append
3126 "https://raw.githubusercontent.com/tarsius/hl-todo/"
3127 version "/hl-todo.el"))
3128 (file-name (string-append "hl-todo-" version ".el"))
3129 (sha256
3130 (base32
3131 "0g0h9v4572p7mcird8wsj1c41haf60krslm6mlpi4mdbh248kv6z"))))
3132 (build-system emacs-build-system)
3133 (home-page "https://github.com/tarsius/hl-todo")
3134 (synopsis "Emacs mode to highlight TODO and similar keywords")
3135 (description
3136 "This package provides an Emacs mode to highlight TODO and similar
3137 keywords in comments and strings. This package also provides commands for
3138 moving to the next or previous keyword and to invoke @code{occur} with a
3139 regexp that matches all known keywords.")
3140 (license license:gpl3+)))
3141
3142 (define-public emacs-perspective
3143 (package
3144 (name "emacs-perspective")
3145 (version "1.12")
3146 (source
3147 (origin
3148 (method url-fetch)
3149 (uri (string-append "https://github.com/nex3/perspective-el/"
3150 "archive/" version ".tar.gz"))
3151 (file-name (string-append name "-" version ".tar.gz"))
3152 (sha256
3153 (base32
3154 "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic"))))
3155 (build-system emacs-build-system)
3156 (home-page "https://github.com/nex3/perspective-el")
3157 (synopsis "Switch between named \"perspectives\"")
3158 (description
3159 "This package provides tagged workspaces in Emacs, similar to workspaces in
3160 windows managers such as Awesome and XMonad. @code{perspective.el} provides
3161 multiple workspaces (or \"perspectives\") for each Emacs frame. Each
3162 perspective is composed of a window configuration and a set of buffers.
3163 Switching to a perspective activates its window configuration, and when in a
3164 perspective only its buffers are available by default.")
3165 ;; This package is released under the same license as Emacs (GPLv3+) or
3166 ;; the Expat license.
3167 (license license:gpl3+)))
3168
3169 (define-public emacs-test-simple
3170 (package
3171 (name "emacs-test-simple")
3172 (version "1.3.0")
3173 (source
3174 (origin
3175 (method url-fetch)
3176 (uri (string-append "https://elpa.gnu.org/packages/test-simple-"
3177 version ".el"))
3178 (sha256
3179 (base32
3180 "1yd61jc9ds95a5n09052kwc5gasy57g4lxr0jsff040brlyi9czz"))))
3181 (build-system emacs-build-system)
3182 (home-page "https://github.com/rocky/emacs-test-simple")
3183 (synopsis "Simple unit test framework for Emacs Lisp")
3184 (description
3185 "Test Simple is a simple unit test framework for Emacs Lisp. It
3186 alleviates the need for context macros, enclosing specifications or required
3187 test tags. It supports both interactive and non-interactive use.")
3188 (license license:gpl3+)))
3189
3190 (define-public emacs-load-relative
3191 (package
3192 (name "emacs-load-relative")
3193 (version "1.3")
3194 (source
3195 (origin
3196 (method url-fetch)
3197 (uri (string-append "https://elpa.gnu.org/packages/load-relative-"
3198 version ".el"))
3199 (sha256
3200 (base32
3201 "1hfxb2436jdsi9wfmsv47lkkpa5galjf5q81bqabbsv79rv59dps"))))
3202 (build-system emacs-build-system)
3203 (home-page "http://github.com/rocky/emacs-load-relative")
3204 (synopsis "Emacs Lisp relative file loading related functions")
3205 (description
3206 "Provides functions which facilitate writing multi-file Emacs packages
3207 and running from the source tree without having to \"install\" code or fiddle
3208 with @{load-path}.
3209
3210 The main function, @code{load-relative}, loads an Emacs Lisp file relative to
3211 another (presumably currently running) Emacs Lisp file.")
3212 (license license:gpl3+)))
3213
3214 (define-public emacs-loc-changes
3215 (package
3216 (name "emacs-loc-changes")
3217 (version "1.2")
3218 (source
3219 (origin
3220 (method url-fetch)
3221 (uri (string-append "https://elpa.gnu.org/packages/loc-changes-"
3222 version ".el"))
3223 (sha256
3224 (base32
3225 "1x8fn8vqasayf1rb8a6nma9n6nbvkx60krmiahyb05vl5rrsw6r3"))))
3226 (build-system emacs-build-system)
3227 (home-page "https://github.com/rocky/emacs-loc-changes")
3228 (synopsis "Keeps track of positions even after buffer changes")
3229 (description
3230 "This Emacs package provides a mean to track important buffer positions
3231 after buffer changes.")
3232 (license license:gpl3+)))
3233
3234 (define-public emacs-realgud
3235 (package
3236 (name "emacs-realgud")
3237 (version "1.4.4")
3238 (source
3239 (origin
3240 (method url-fetch)
3241 (uri (string-append "https://elpa.gnu.org/packages/realgud-"
3242 version ".tar"))
3243 (sha256
3244 (base32
3245 "1nc8km339ip90h1j55ahfga03v7x7rh4iycmw6yrxyzir68vwn7c"))))
3246 (build-system emacs-build-system)
3247 (arguments
3248 `(#:tests? #t
3249 #:phases
3250 (modify-phases %standard-phases
3251 (add-after 'unpack 'fix-autogen-script
3252 (lambda _
3253 (substitute* "autogen.sh"
3254 (("./configure") "sh configure"))))
3255 (add-after 'fix-autogen-script 'autogen
3256 (lambda _
3257 (setenv "CONFIG_SHELL" "sh")
3258 (invoke "sh" "autogen.sh")))
3259 (add-after 'fix-autogen-script 'set-home
3260 (lambda _
3261 (setenv "HOME" (getenv "TMPDIR"))))
3262 (add-before 'patch-el-files 'remove-realgud-pkg.el
3263 (lambda _
3264 ;; XXX: This file is auto-generated at some point and causes
3265 ;; substitute* to crash during the `patch-el-files' phase with:
3266 ;; ERROR: In procedure stat: No such file or directory:
3267 ;; "./realgud-pkg.el"
3268 (delete-file "./realgud-pkg.el")
3269 ;; FIXME: `patch-el-files' crashes on this file with error:
3270 ;; unable to locate "bashdb".
3271 (delete-file "./test/test-regexp-bashdb.el"))))
3272 #:include (cons* ".*\\.el$" %default-include)))
3273 (native-inputs
3274 `(("autoconf" ,autoconf)
3275 ("automake" ,automake)
3276 ("emacs-test-simple" ,emacs-test-simple)))
3277 (propagated-inputs
3278 `(("emacs-load-relative" ,emacs-load-relative)
3279 ("emacs-loc-changes" ,emacs-loc-changes)))
3280 (home-page "https://github.com/realgud/realgud/")
3281 (synopsis
3282 "Modular front-end for interacting with external debuggers")
3283 (description
3284 "RealGUD is a modular, extensible GNU Emacs front-end for interacting
3285 with external debuggers. It integrates various debuggers such as gdb, pdb,
3286 ipdb, jdb, lldb, bashdb, zshdb, etc. and allows to visually step code in the
3287 sources. Unlike GUD, it also supports running multiple debug sessions in
3288 parallel.")
3289 (license license:gpl3+)))
3290
3291 (define-public emacs-request
3292 (package
3293 (name "emacs-request")
3294 (version "0.3.0")
3295 (source (origin
3296 (method git-fetch)
3297 (uri (git-reference
3298 (url "https://github.com/tkf/emacs-request.git")
3299 (commit (string-append "v" version))))
3300 (file-name (string-append name "-" version "-checkout"))
3301 (sha256
3302 (base32
3303 "0wyxqbb35yqf6ci47531lk32d6fppamx9d8826kdz983vm87him7"))))
3304 (build-system emacs-build-system)
3305 (home-page "https://github.com/tkf/emacs-request")
3306 (synopsis "Package for speaking HTTP in Emacs Lisp")
3307 (description "This package provides a HTTP request library with multiple
3308 backends. It supports url.el which is shipped with Emacs and the curl command
3309 line program.")
3310 (license license:gpl3+)))
3311
3312 (define-public emacs-rudel
3313 (package
3314 (name "emacs-rudel")
3315 (version "0.3.1")
3316 (source
3317 (origin
3318 (method url-fetch)
3319 (uri (string-append "http://elpa.gnu.org/packages/rudel-"
3320 version ".tar"))
3321 (sha256
3322 (base32
3323 "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz"))))
3324 (build-system emacs-build-system)
3325 (home-page "http://rudel.sourceforge.net/")
3326 (synopsis "Collaborative editing framework")
3327 (description
3328 "Rudel is a collaborative editing environment for GNU Emacs. Its purpose
3329 is to share buffers with other users in order to edit the contents of those
3330 buffers collaboratively. Rudel supports multiple backends to enable
3331 communication with other collaborative editors using different protocols,
3332 though currently Obby (for use with the Gobby editor) is the only
3333 fully-functional one.")
3334 (license license:gpl3+)))
3335
3336 (define-public emacs-hydra
3337 (package
3338 (name "emacs-hydra")
3339 (version "0.14.0")
3340 (source
3341 (origin
3342 (method url-fetch)
3343 (uri (string-append "https://github.com/abo-abo/hydra/archive/"
3344 version ".tar.gz"))
3345 (file-name (string-append name "-" version ".tar.gz"))
3346 (sha256
3347 (base32
3348 "0884k3ffwzhh6krbd8l7vvm184dkagb2jf4q8xzg72plln34qrm8"))))
3349 (build-system emacs-build-system)
3350 (home-page "https://github.com/abo-abo/hydra")
3351 (synopsis "Make Emacs bindings that stick around")
3352 (description
3353 "This package can be used to tie related commands into a family of short
3354 bindings with a common prefix---a Hydra. Once you summon the Hydra (through
3355 the prefixed binding), all the heads can be called in succession with only a
3356 short extension. Any binding that isn't the Hydra's head vanquishes the
3357 Hydra. Note that the final binding, besides vanquishing the Hydra, will still
3358 serve its original purpose, calling the command assigned to it. This makes
3359 the Hydra very seamless; it's like a minor mode that disables itself
3360 automatically.")
3361 (license license:gpl3+)))
3362
3363 (define-public emacs-ivy
3364 (package
3365 (name "emacs-ivy")
3366 (version "0.10.0")
3367 (source
3368 (origin
3369 (method git-fetch)
3370 (uri (git-reference
3371 (url "https://github.com/abo-abo/swiper.git")
3372 (commit version)))
3373 (file-name (string-append name "-" version "-checkout"))
3374 (sha256
3375 (base32
3376 "14vnigqb5c3yi4q9ysw1fiwdqyqwyklqpb9wnjf81chm7s2mshnr"))))
3377 (build-system emacs-build-system)
3378 (arguments
3379 `(#:phases
3380 (modify-phases %standard-phases
3381 (add-after 'install 'install-doc
3382 (lambda* (#:key outputs #:allow-other-keys)
3383 (let* ((out (assoc-ref outputs "out"))
3384 (info (string-append out "/share/info")))
3385 (with-directory-excursion "doc"
3386 (unless (zero? (system* "makeinfo" "ivy.texi"))
3387 (error "makeinfo failed"))
3388 (install-file "ivy.info" info))))))))
3389 (propagated-inputs
3390 `(("emacs-hydra" ,emacs-hydra)))
3391 (native-inputs
3392 `(("texinfo" ,texinfo)))
3393 (home-page "http://oremacs.com/swiper/")
3394 (synopsis "Incremental vertical completion for Emacs")
3395 (description
3396 "This package provides @code{ivy-read} as an alternative to
3397 @code{completing-read} and similar functions. No attempt is made to determine
3398 the best candidate. Instead, the user can navigate candidates with
3399 @code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by
3400 splitting the input text by spaces and re-building it into a regular
3401 expression.")
3402 (license license:gpl3+)))
3403
3404 (define-public emacs-avy
3405 (package
3406 (name "emacs-avy")
3407 (version "0.4.0")
3408 (source
3409 (origin
3410 (method url-fetch)
3411 (uri (string-append "https://github.com/abo-abo/avy/archive/"
3412 version ".tar.gz"))
3413 (file-name (string-append name "-" version ".tar.gz"))
3414 (sha256
3415 (base32
3416 "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
3417 (build-system emacs-build-system)
3418 (home-page "https://github.com/abo-abo/avy")
3419 (synopsis "Tree-based completion for Emacs")
3420 (description
3421 "This package provides a generic completion method based on building a
3422 balanced decision tree with each candidate being a leaf. To traverse the tree
3423 from the root to a desired leaf, typically a sequence of @code{read-key} can
3424 be used.
3425
3426 In order for @code{read-key} to make sense, the tree needs to be visualized
3427 appropriately, with a character at each branch node. So this completion
3428 method works only for things that you can see on your screen, all at once,
3429 such as the positions of characters, words, line beginnings, links, or
3430 windows.")
3431 (license license:gpl3+)))
3432
3433 (define-public emacs-ace-window
3434 (package
3435 (name "emacs-ace-window")
3436 (version "0.9.0")
3437 (source
3438 (origin
3439 (method url-fetch)
3440 (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
3441 version ".tar.gz"))
3442 (file-name (string-append name "-" version ".tar.gz"))
3443 (sha256
3444 (base32
3445 "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
3446 (build-system emacs-build-system)
3447 (propagated-inputs
3448 `(("emacs-avy" ,emacs-avy)))
3449 (home-page "https://github.com/abo-abo/ace-window")
3450 (synopsis "Quickly switch windows in Emacs")
3451 (description
3452 "@code{ace-window} is meant to replace @code{other-window}.
3453 In fact, when there are only two windows present, @code{other-window} is
3454 called. If there are more, each window will have its first character
3455 highlighted. Pressing that character will switch to that window.")
3456 (license license:gpl3+)))
3457
3458 (define-public emacs-iedit
3459 (package
3460 (name "emacs-iedit")
3461 (version "0.9.9.9")
3462 (source
3463 (origin
3464 (method url-fetch)
3465 (uri (string-append "https://github.com/victorhge/iedit/archive/v"
3466 version ".tar.gz"))
3467 (file-name (string-append name "-" version ".tar.gz"))
3468 (sha256
3469 (base32
3470 "1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
3471 (build-system emacs-build-system)
3472 (home-page "http://www.emacswiki.org/emacs/Iedit")
3473 (synopsis "Edit multiple regions in the same way simultaneously")
3474 (description
3475 "This package is an Emacs minor mode and allows you to edit one
3476 occurrence of some text in a buffer (possibly narrowed) or region, and
3477 simultaneously have other occurrences edited in the same way.
3478
3479 You can also use Iedit mode as a quick way to temporarily show only the buffer
3480 lines that match the current text being edited. This gives you the effect of
3481 a temporary @code{keep-lines} or @code{occur}.")
3482 (license license:gpl3+)))
3483
3484 (define-public emacs-lispy
3485 (package
3486 (name "emacs-lispy")
3487 (version "0.26.0")
3488 (source
3489 (origin
3490 (method url-fetch)
3491 (uri (string-append "https://github.com/abo-abo/lispy/archive/"
3492 version ".tar.gz"))
3493 (file-name (string-append name "-" version ".tar.gz"))
3494 (sha256
3495 (base32
3496 "15gig95cvamw5zlw99cxggd27c18b9scznjj97gvjn2zbljcaqzl"))))
3497 (build-system emacs-build-system)
3498 (propagated-inputs
3499 `(("emacs-ace-window" ,emacs-ace-window)
3500 ("emacs-iedit" ,emacs-iedit)
3501 ("emacs-ivy" ,emacs-ivy)
3502 ("emacs-hydra" ,emacs-hydra)))
3503 (home-page "https://github.com/abo-abo/lispy")
3504 (synopsis "Modal S-expression editing")
3505 (description
3506 "Due to the structure of Lisp syntax it's very rare for the programmer to
3507 want to insert characters right before \"(\" or right after \")\". Thus
3508 unprefixed printable characters can be used to call commands when the point is
3509 at one of these special locations. Lispy provides unprefixed keybindings for
3510 S-expression editing when point is at the beginning or end of an
3511 S-expression.")
3512 (license license:gpl3+)))
3513
3514 (define-public emacs-clojure-mode
3515 (package
3516 (name "emacs-clojure-mode")
3517 (version "5.4.0")
3518 (source (origin
3519 (method url-fetch)
3520 (uri (string-append
3521 "https://github.com/clojure-emacs/clojure-mode/archive/"
3522 version ".tar.gz"))
3523 (file-name (string-append name "-" version ".tar.gz"))
3524 (sha256
3525 (base32
3526 "117mvjqh4nm8mvmwmmvy4qmkdg23ldlzk08y91g8b8ac8kxwqg81"))))
3527 (build-system emacs-build-system)
3528 (native-inputs
3529 `(("emacs-dash" ,emacs-dash)
3530 ("emacs-s" ,emacs-s)
3531 ("ert-runner" ,ert-runner)))
3532 (arguments
3533 `(#:phases
3534 (modify-phases %standard-phases
3535 (add-after 'install 'check
3536 (lambda _
3537 (zero? (system* "ert-runner")))))))
3538 (home-page "https://github.com/clojure-emacs/clojure-mode")
3539 (synopsis "Major mode for Clojure code")
3540 (description
3541 "This Emacs package provides font-lock, indentation, navigation and basic
3542 refactoring for the @uref{http://clojure.org, Clojure programming language}.
3543 It is recommended to use @code{clojure-mode} with paredit or smartparens.")
3544 (license license:gpl3+)))
3545
3546 (define-public emacs-epl
3547 (package
3548 (name "emacs-epl")
3549 (version "0.8")
3550 (source (origin
3551 (method url-fetch)
3552 (uri (string-append
3553 "https://github.com/cask/epl/archive/"
3554 version ".tar.gz"))
3555 (file-name (string-append name "-" version ".tar.gz"))
3556 (sha256
3557 (base32
3558 "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
3559 (build-system emacs-build-system)
3560 (home-page "https://github.com/cask/epl")
3561 (synopsis "Emacs Package Library")
3562 (description
3563 "A package management library for Emacs, based on @code{package.el}.
3564
3565 The purpose of this library is to wrap all the quirks and hassle of
3566 @code{package.el} into a sane API.")
3567 (license license:gpl3+)))
3568
3569 (define-public emacs-queue
3570 (package
3571 (name "emacs-queue")
3572 (version "0.2")
3573 (source (origin
3574 (method url-fetch)
3575 (uri (string-append "https://elpa.gnu.org/packages/queue-"
3576 version ".el"))
3577 (sha256
3578 (base32
3579 "0cx2848sqnnkkr4zisvqadzxngjyhmb36mh0q3if7q19yjjhmrkb"))))
3580 (build-system emacs-build-system)
3581 (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
3582 (synopsis "Queue data structure for Emacs")
3583 (description
3584 "This Emacs library provides queue data structure. These queues can be
3585 used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
3586 stack, i.e. elements can be added to the front or back of the queue, and can
3587 be removed from the front. This type of data structure is sometimes called an
3588 \"output-restricted deque\".")
3589 (license license:gpl3+)))
3590
3591 (define-public emacs-pkg-info
3592 (package
3593 (name "emacs-pkg-info")
3594 (version "0.6")
3595 (source (origin
3596 (method url-fetch)
3597 (uri (string-append
3598 "https://github.com/lunaryorn/pkg-info.el/archive/"
3599 version ".tar.gz"))
3600 (file-name (string-append name "-" version ".tar.gz"))
3601 (sha256
3602 (base32
3603 "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
3604 (build-system emacs-build-system)
3605 (propagated-inputs `(("emacs-epl" ,emacs-epl)))
3606 (home-page "https://github.com/lunaryorn/pkg-info.el")
3607 (synopsis "Information about Emacs packages")
3608 (description
3609 "This library extracts information from the installed Emacs packages.")
3610 (license license:gpl3+)))
3611
3612 (define-public emacs-spinner
3613 (package
3614 (name "emacs-spinner")
3615 (version "1.7.3")
3616 (source (origin
3617 (method url-fetch)
3618 (uri (string-append "https://elpa.gnu.org/packages/spinner-"
3619 version ".el"))
3620 (sha256
3621 (base32
3622 "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd"))))
3623 (build-system emacs-build-system)
3624 (home-page "https://github.com/Malabarba/spinner.el")
3625 (synopsis "Emacs mode-line spinner for operations in progress")
3626 (description
3627 "This Emacs package adds spinners and progress-bars to the mode-line for
3628 ongoing operations.")
3629 (license license:gpl3+)))
3630
3631 (define-public emacs-sparql-mode
3632 (package
3633 (name "emacs-sparql-mode")
3634 (version "2.0.1")
3635 (source (origin
3636 (method url-fetch)
3637 (uri (string-append "https://github.com/ljos/sparql-mode/archive/"
3638 "v" version ".tar.gz"))
3639 (file-name (string-append name "-" version ".tar.gz"))
3640 (sha256
3641 (base32
3642 "1s93mkllxnhy7fw616cnnc2danacdlarys0g3cn89drh0llh53cv"))))
3643 (build-system emacs-build-system)
3644 (home-page "https://github.com/ljos/sparql-mode")
3645 (synopsis "SPARQL mode for Emacs")
3646 (description "This package provides a major mode for Emacs that provides
3647 syntax highlighting for SPARQL. It also provides a way to execute queries
3648 against a SPARQL HTTP endpoint, such as is provided by Fuseki. It is also
3649 possible to query other endpoints like DBPedia.")
3650 (license license:gpl3+)))
3651
3652 (define-public emacs-better-defaults
3653 (package
3654 (name "emacs-better-defaults")
3655 (version "0.1.3")
3656 (source
3657 (origin
3658 (method url-fetch)
3659 (uri (string-append "https://github.com/technomancy/better-defaults"
3660 "/archive/" version ".tar.gz"))
3661 (file-name (string-append name "-" version ".tar.gz"))
3662 (sha256
3663 (base32
3664 "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
3665 (build-system emacs-build-system)
3666 (home-page "https://github.com/technomancy/better-defaults")
3667 (synopsis "Better defaults for Emacs")
3668 (description
3669 "Better defaults attempts to address the most obvious deficiencies of the
3670 Emacs default configuration in uncontroversial ways that nearly everyone can
3671 agree upon.")
3672 (license license:gpl3+)))
3673
3674 (define-public emacs-eprime
3675 (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f"))
3676 (package
3677 (name "emacs-eprime")
3678 (version (string-append "20140513-" (string-take commit 7)))
3679 (source (origin
3680 (method url-fetch)
3681 (uri (string-append "https://raw.githubusercontent.com"
3682 "/AndrewHynes/eprime-mode/"
3683 commit "/eprime-mode.el"))
3684 (file-name (string-append "eprime-" version ".el"))
3685 (sha256
3686 (base32
3687 "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d"))))
3688 (build-system emacs-build-system)
3689 (home-page "https://github.com/AndrewHynes/eprime-mode")
3690 (synopsis "E-prime checking mode for Emacs")
3691 (description "This package provides an E-prime checking mode for Emacs
3692 that highlights non-conforming text. The subset of the English language called
3693 E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
3694 (license license:gpl3+))))
3695
3696 (define-public emacs-julia-mode
3697 ;; XXX: Upstream version remained stuck at 0.3. See
3698 ;; <https://github.com/JuliaEditorSupport/julia-emacs/issues/46>.
3699 (let ((commit "115d4dc8a07445301772da8376b232fa8c7168f4")
3700 (revision "1"))
3701 (package
3702 (name "emacs-julia-mode")
3703 (version (string-append "0.3-" revision "." (string-take commit 8)))
3704 (source
3705 (origin
3706 (method git-fetch)
3707 (uri (git-reference
3708 (url "https://github.com/JuliaEditorSupport/julia-emacs.git")
3709 (commit commit)))
3710 (file-name (string-append name "-" version "-checkout"))
3711 (sha256
3712 (base32
3713 "1is4dcv6blslpzbjcg8l2jpxi8xj96q4cm0nxjxsyswpm8bw8ki0"))))
3714 (build-system emacs-build-system)
3715 (arguments
3716 `(#:phases
3717 (modify-phases %standard-phases
3718 (add-before 'install 'check
3719 (lambda _
3720 (zero? (system* "emacs" "-batch"
3721 "-l" "julia-mode.el"
3722 "-l" "julia-mode-tests.el"
3723 "-f" "ert-run-tests-batch-and-exit")))))))
3724 (home-page "https://github.com/JuliaEditorSupport/julia-emacs")
3725 (synopsis "Major mode for Julia")
3726 (description "This Emacs package provides a mode for the Julia
3727 programming language.")
3728 (license license:expat))))
3729
3730 (define-public emacs-ess
3731 (package
3732 (name "emacs-ess")
3733 (version "16.10")
3734 (source (origin
3735 (method url-fetch)
3736 (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
3737 version ".tgz"))
3738 (sha256
3739 (base32
3740 "04m8lwp3ylh2vl7k2bjjs7mxbm64j4sdckqpvnm9k0qhaqf02pjk"))
3741 (modules '((guix build utils)))
3742 (snippet
3743 '(begin
3744 ;; Stop ESS from trying to bundle an external julia-mode.el.
3745 (substitute* "lisp/Makefile"
3746 (("^\tjulia-mode.elc\\\\\n") "")
3747 (("^all: \\$\\(ELC\\) ess-custom.el julia-mode.el")
3748 "all: $(ELC) ess-custom.el"))
3749 #t))))
3750 (build-system gnu-build-system)
3751 (arguments
3752 (let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
3753 `(#:make-flags (list (string-append "PREFIX=" %output)
3754 (string-append "ETCDIR=" %output "/"
3755 ,base-directory "/etc")
3756 (string-append "LISPDIR=" %output "/"
3757 ,base-directory))
3758 #:phases
3759 (modify-phases %standard-phases
3760 (delete 'configure)
3761 (add-before 'build 'more-shebang-patching
3762 (lambda* (#:key inputs #:allow-other-keys)
3763 (substitute* "Makeconf"
3764 (("SHELL = /bin/sh")
3765 (string-append "SHELL = " (which "sh"))))))
3766 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
3767 ;; them in HOME, so it needs to be writeable.
3768 (add-before 'build 'set-HOME
3769 (lambda _ (setenv "HOME" "/tmp") #t))
3770 (replace 'check
3771 (lambda _
3772 (zero? (system* "make" "test"))))))))
3773 (inputs
3774 `(("emacs" ,emacs-minimal)
3775 ("r-minimal" ,r-minimal)))
3776 (native-inputs
3777 `(("perl" ,perl)
3778 ("texinfo" ,texinfo)
3779 ("texlive" ,(texlive-union (list texlive-latex-natbib
3780 texlive-latex-seminar
3781 texlive-latex-hyperref
3782 texlive-tex-texinfo)))))
3783 (home-page "http://ess.r-project.org/")
3784 (synopsis "Emacs mode for statistical analysis programs")
3785 (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
3786 Emacs. It is designed to support editing of scripts and interaction with
3787 various statistical analysis programs such as R and OpenBUGS.")
3788 (license license:gpl2+)))
3789
3790 (define-public emacs-smex
3791 (package
3792 (name "emacs-smex")
3793 (version "3.0")
3794 (source (origin
3795 (method url-fetch)
3796 (uri (string-append "https://raw.githubusercontent.com"
3797 "/nonsequitur/smex/" version "/smex.el"))
3798 (file-name (string-append "smex-" version ".el"))
3799 (sha256
3800 (base32
3801 "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
3802 (build-system emacs-build-system)
3803 (home-page "https://github.com/nonsequitur/smex/")
3804 (synopsis "M-x interface with Ido-style fuzzy matching")
3805 (description
3806 "Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a
3807 convenient interface to your recently and most frequently used commands. And
3808 to all the other commands, too.")
3809 (license license:gpl3+)))
3810
3811 (define-public emacs-js2-mode
3812 (package
3813 (name "emacs-js2-mode")
3814 (version "20150909")
3815 (source (origin
3816 (method url-fetch)
3817 (uri (string-append "https://github.com/mooz/js2-mode/archive/"
3818 version ".tar.gz"))
3819 (file-name (string-append name "-" version ".tar.gz"))
3820 (sha256
3821 (base32
3822 "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
3823 (build-system emacs-build-system)
3824 (home-page "https://github.com/mooz/js2-mode/")
3825 (synopsis "Improved JavaScript editing mode for Emacs")
3826 (description
3827 "Js2-mode provides a JavaScript major mode for Emacs that is more
3828 advanced than the built-in javascript-mode. Features include accurate syntax
3829 highlighting using a recursive-descent parser, on-the-fly reporting of syntax
3830 errors and strict-mode warnings, smart line-wrapping within comments and
3831 strings, and code folding.")
3832 (license license:gpl3+)))
3833
3834 (define-public emacs-markdown-mode
3835 (package
3836 (name "emacs-markdown-mode")
3837 (version "2.3")
3838 (source (origin
3839 (method url-fetch)
3840 (uri (string-append "https://raw.githubusercontent.com/jrblevin"
3841 "/markdown-mode/v" version
3842 "/markdown-mode.el"))
3843 (file-name (string-append "markdown-mode-" version ".el"))
3844 (sha256
3845 (base32
3846 "152whyrq3dqlqy5wv4mdd94kmal19hs5kwaxjcp2gp2r97lsmdmi"))))
3847 (build-system emacs-build-system)
3848 (home-page "http://jblevins.org/projects/markdown-mode/")
3849 (synopsis "Emacs Major mode for Markdown files")
3850 (description
3851 "Markdown-mode is a major mode for editing Markdown-formatted text files
3852 in Emacs.")
3853 (license license:gpl3+)))
3854
3855 (define-public emacs-edit-indirect
3856 (package
3857 (name "emacs-edit-indirect")
3858 (version "0.1.4")
3859 (source
3860 (origin
3861 (method url-fetch)
3862 (uri (string-append "https://github.com/Fanael/edit-indirect/archive/"
3863 version ".tar.gz"))
3864 (file-name (string-append name "-" version ".tar.gz"))
3865 (sha256
3866 (base32
3867 "07kr58rd1p5j764wminsssazr73hy51yw8iqcsv5z2dwgj7msv71"))))
3868 (build-system emacs-build-system)
3869 (home-page "https://github.com/Fanael/edit-indirect")
3870 (synopsis "Edit regions in separate buffers")
3871 (description "This package allows you to edit regions in separate buffers,
3872 like @code{org-edit-src-code} but for arbitrary regions.")
3873 (license license:gpl3+)))
3874
3875 (define-public emacs-projectile
3876 (package
3877 (name "emacs-projectile")
3878 (version "0.14.0")
3879 (source (origin
3880 (method url-fetch)
3881 (uri (string-append "https://raw.githubusercontent.com/bbatsov"
3882 "/projectile/v" version "/projectile.el"))
3883 (file-name (string-append "projectile-" version ".el"))
3884 (sha256
3885 (base32
3886 "1ql1wnzhblbwnv66hf2y0wq45g71hh6s9inc090lmhm1vgylbd1f"))))
3887 (build-system emacs-build-system)
3888 (propagated-inputs
3889 `(("emacs-dash" ,emacs-dash)
3890 ("emacs-pkg-info" ,emacs-pkg-info)))
3891 (home-page "https://github.com/bbatsov/projectile")
3892 (synopsis "Manage and navigate projects in Emacs easily")
3893 (description
3894 "This library provides easy project management and navigation. The
3895 concept of a project is pretty basic - just a folder containing special file.
3896 Currently git, mercurial and bazaar repos are considered projects by default.
3897 If you want to mark a folder manually as a project just create an empty
3898 .projectile file in it.")
3899 (license license:gpl3+)))
3900
3901 (define-public emacs-elfeed
3902 (package
3903 (name "emacs-elfeed")
3904 (version "2.2.0")
3905 (source (origin
3906 (method url-fetch)
3907 (uri (string-append "https://github.com/skeeto/elfeed/archive/"
3908 version ".tar.gz"))
3909 (file-name (string-append name "-" version ".tar.gz"))
3910 (sha256
3911 (base32
3912 "0d7i93l3b0ck3iad9ddqp7sqa8w16hnamrby8bwvl316rqk4lzlf"))))
3913 (build-system emacs-build-system)
3914 (arguments
3915 `(#:phases
3916 (modify-phases %standard-phases
3917 (add-before 'install 'check
3918 (lambda _
3919 (zero? (system* "make" "test")))))))
3920 (home-page "https://github.com/skeeto/elfeed")
3921 (synopsis "Atom/RSS feed reader for Emacs")
3922 (description
3923 "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
3924 and RSS, with a user interface inspired by notmuch.")
3925 (license license:gpl3+)))
3926
3927 (define-public emacs-rainbow-delimiters
3928 (package
3929 (name "emacs-rainbow-delimiters")
3930 (version "2.1.3")
3931 (source (origin
3932 (method url-fetch)
3933 (uri (string-append "https://raw.githubusercontent.com/Fanael"
3934 "/rainbow-delimiters/" version
3935 "/rainbow-delimiters.el"))
3936 (file-name (string-append "rainbow-delimiters-" version ".el"))
3937 (sha256
3938 (base32
3939 "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
3940 (build-system emacs-build-system)
3941 (home-page "https://github.com/Fanael/rainbow-delimiters")
3942 (synopsis "Highlight brackets according to their depth")
3943 (description
3944 "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
3945 highlights parentheses, brackets, and braces according to their depth. Each
3946 successive level is highlighted in a different color, making it easy to spot
3947 matching delimiters, orient yourself in the code, and tell which statements
3948 are at a given level.")
3949 (license license:gpl3+)))
3950
3951 (define-public emacs-rainbow-identifiers
3952 (package
3953 (name "emacs-rainbow-identifiers")
3954 (version "0.2.2")
3955 (source (origin
3956 (method url-fetch)
3957 (uri (string-append "https://raw.githubusercontent.com/Fanael"
3958 "/rainbow-identifiers/" version
3959 "/rainbow-identifiers.el"))
3960 (file-name (string-append "rainbow-identifiers-" version ".el"))
3961 (sha256
3962 (base32
3963 "0325abxj47k0g1i8nqrq70w2wr6060ckhhf92krv1s072b3jzm31"))))
3964 (build-system emacs-build-system)
3965 (home-page "https://github.com/Fanael/rainbow-identifiers")
3966 (synopsis "Highlight identifiers in source code")
3967 (description
3968 "Rainbow identifiers mode is an Emacs minor mode providing highlighting of
3969 identifiers based on their names. Each identifier gets a color based on a hash
3970 of its name.")
3971 (license license:bsd-2)))
3972
3973 (define-public emacs-rainbow-mode
3974 (package
3975 (name "emacs-rainbow-mode")
3976 (version "0.13")
3977 (source (origin
3978 (method url-fetch)
3979 (uri (string-append
3980 "http://elpa.gnu.org/packages/rainbow-mode-" version ".el"))
3981 (sha256
3982 (base32
3983 "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl"))))
3984 (build-system emacs-build-system)
3985 (home-page "http://elpa.gnu.org/packages/rainbow-mode.html")
3986 (synopsis "Colorize color names in buffers")
3987 (description
3988 "This minor mode sets background color to strings that match color
3989 names, e.g. #0000ff is displayed in white with a blue background.")
3990 (license license:gpl3+)))
3991
3992 (define-public emacs-visual-fill-column
3993 (package
3994 (name "emacs-visual-fill-column")
3995 (version "1.11")
3996 (source (origin
3997 (method url-fetch)
3998 (uri (string-append "https://codeload.github.com/joostkremers/"
3999 "visual-fill-column/tar.gz/" version))
4000 (file-name (string-append name "-" version ".tar.gz"))
4001 (sha256
4002 (base32
4003 "13jnviakp607zcms7f8ams56mr8wffnq1pghlc6fvqs39663pgwh"))))
4004 (build-system emacs-build-system)
4005 (home-page "https://github.com/joostkremers/visual-fill-column")
4006 (synopsis "Fill-column for visual-line-mode")
4007 (description
4008 "@code{visual-fill-column-mode} is a small Emacs minor mode that mimics
4009 the effect of @code{fill-column} in @code{visual-line-mode}. Instead of
4010 wrapping lines at the window edge, which is the standard behaviour of
4011 @code{visual-line-mode}, it wraps lines at @code{fill-column}. If
4012 @code{fill-column} is too large for the window, the text is wrapped at the
4013 window edge.")
4014 (license license:gpl3+)))
4015
4016 (define-public emacs-writeroom
4017 (package
4018 (name "emacs-writeroom")
4019 (version "3.7")
4020 (source (origin
4021 (method url-fetch)
4022 (uri (string-append
4023 "https://github.com/joostkremers/writeroom-mode/archive/"
4024 version ".tar.gz"))
4025 (file-name (string-append name "-" version ".tar.gz"))
4026 (sha256
4027 (base32
4028 "0yqgp5h3kvvpgva4azakb2wnjl7gsyh45glf75crspv3xyq57f2r"))))
4029 (build-system emacs-build-system)
4030 (propagated-inputs
4031 `(("emacs-visual-fill-column" ,emacs-visual-fill-column)))
4032 (home-page "https://github.com/joostkremers/writeroom-mode")
4033 (synopsis "Distraction-free writing for Emacs")
4034 (description
4035 "This package defines a minor mode for distraction-free writing. Some of
4036 the default effects include entering fullscreen, deleting other windows of the
4037 current frame, disabling the mode line, and adding margins to the buffer that
4038 restrict the text width to 80 characters.")
4039 (license license:bsd-3)))
4040
4041 (define-public emacs-ido-completing-read+
4042 (package
4043 (name "emacs-ido-completing-read+")
4044 (version "3.12")
4045 (source (origin
4046 (method url-fetch)
4047 (uri (string-append "https://raw.githubusercontent.com"
4048 "/DarwinAwardWinner/ido-ubiquitous/v"
4049 version "/ido-completing-read+.el"))
4050 (file-name (string-append "ido-completing-read+-" version ".el"))
4051 (sha256
4052 (base32
4053 "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
4054 (build-system emacs-build-system)
4055 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
4056 (synopsis "Replacement for completing-read using ido")
4057 (description
4058 "The ido-completing-read+ function is a wrapper for ido-completing-read.
4059 Importantly, it detects edge cases that ordinary ido cannot handle and either
4060 adjusts them so ido can handle them, or else simply falls back to the standard
4061 Emacs completion function instead.")
4062 (license license:gpl3+)))
4063
4064 (define-public emacs-ido-ubiquitous
4065 (package
4066 (name "emacs-ido-ubiquitous")
4067 (version "3.12")
4068 (source (origin
4069 (method url-fetch)
4070 (uri (string-append "https://raw.githubusercontent.com"
4071 "/DarwinAwardWinner/ido-ubiquitous/v"
4072 version "/ido-ubiquitous.el"))
4073 (file-name (string-append "ido-ubiquitous-" version ".el"))
4074 (sha256
4075 (base32
4076 "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
4077 (build-system emacs-build-system)
4078 (propagated-inputs
4079 `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
4080 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
4081 (synopsis "Use ido (nearly) everywhere")
4082 (description
4083 "Ido-ubiquitous enables ido-style completion for almost every function
4084 that uses the standard completion function completing-read.")
4085 (license license:gpl3+)))
4086
4087 (define-public emacs-yaml-mode
4088 (package
4089 (name "emacs-yaml-mode")
4090 (version "0.0.13")
4091 (source (origin
4092 (method url-fetch)
4093 (uri (string-append "https://raw.githubusercontent.com/yoshiki"
4094 "/yaml-mode/v" version "/yaml-mode.el"))
4095 (file-name (string-append "yaml-mode-" version ".el"))
4096 (sha256
4097 (base32
4098 "0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
4099 (build-system emacs-build-system)
4100 (home-page "https://github.com/yoshiki/yaml-mode")
4101 (synopsis "Major mode for editing YAML files")
4102 (description
4103 "Yaml-mode is an Emacs major mode for editing files in the YAML data
4104 serialization format. It was initially developed by Yoshiki Kurihara and many
4105 features were added by Marshall Vandegrift. As YAML and Python share the fact
4106 that indentation determines structure, this mode provides indentation and
4107 indentation command behavior very similar to that of python-mode.")
4108 (license license:gpl3+)))
4109
4110 (define-public emacs-web-mode
4111 (package
4112 (name "emacs-web-mode")
4113 (version "14")
4114 (source (origin
4115 (method url-fetch)
4116 (uri (string-append "https://raw.githubusercontent.com/fxbois"
4117 "/web-mode/v" version "/web-mode.el"))
4118 (file-name (string-append "web-mode-" version ".el"))
4119 (sha256
4120 (base32
4121 "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
4122 (build-system emacs-build-system)
4123 (synopsis "Major mode for editing web templates")
4124 (description "Web-mode is an Emacs major mode for editing web templates
4125 aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
4126 client/server side engines). Web-mode is compatible with many template
4127 engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
4128 Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
4129 Dust.js, React/JSX, Angularjs, ejs, etc.")
4130 (home-page "http://web-mode.org/")
4131 (license license:gpl3+)))
4132
4133 (define-public emacs-wgrep
4134 (package
4135 (name "emacs-wgrep")
4136 (version "2.1.10")
4137 (source (origin
4138 (method url-fetch)
4139 (uri (string-append
4140 "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
4141 version ".tar.gz"))
4142 (file-name (string-append name "-" version ".tar.gz"))
4143 (sha256
4144 (base32
4145 "1r2bpypar70xg6dsx12x1k74f39ww930rday7rgqpyknzsx1k4l1"))))
4146 (build-system emacs-build-system)
4147 (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
4148 (synopsis "Edit a grep buffer and apply those changes to the files")
4149 (description
4150 "Emacs wgrep allows you to edit a grep buffer and apply those changes to
4151 the file buffer.")
4152 (license license:gpl3+)))
4153
4154 (define-public emacs-helm
4155 (package
4156 (name "emacs-helm")
4157 (version "2.8.5")
4158 (source (origin
4159 (method url-fetch)
4160 (uri (string-append
4161 "https://github.com/" name "/helm/archive/v"
4162 version ".tar.gz"))
4163 (file-name (string-append name "-" version ".tar.gz"))
4164 (sha256
4165 (base32
4166 "15xlnjm9rsbn0xq7xc09y52h2kn41zwn7ldryammf6i46wl02kq3"))))
4167 (build-system emacs-build-system)
4168 (propagated-inputs
4169 `(("emacs-async" ,emacs-async)
4170 ("emacs-popup" ,emacs-popup)))
4171 (home-page "https://emacs-helm.github.io/helm/")
4172 (synopsis "Incremental completion and selection narrowing
4173 framework for Emacs")
4174 (description "Helm is incremental completion and selection narrowing
4175 framework for Emacs. It will help steer you in the right direction when
4176 you're looking for stuff in Emacs (like buffers, files, etc). Helm is a fork
4177 of @code{anything.el} originally written by Tamas Patrovic and can be
4178 considered to be its successor. Helm sets out to clean up the legacy code in
4179 @code{anything.el} and provide a cleaner, leaner and more modular tool, that's
4180 not tied in the trap of backward compatibility.")
4181 (license license:gpl3+)))
4182
4183 (define-public emacs-helm-swoop
4184 (package
4185 (name "emacs-helm-swoop")
4186 (version "1.7.2")
4187 (source (origin
4188 (method url-fetch)
4189 (uri (string-append
4190 "https://github.com/ShingoFukuyama/helm-swoop/archive/"
4191 version
4192 ".tar.gz"))
4193 (file-name (string-append name "-" version ".tar.gz"))
4194 (sha256
4195 (base32
4196 "1z34pfi0gsk054pxr906ilaalaw0xz3s536163gf9ykkwmc2356d"))))
4197 (build-system emacs-build-system)
4198 (propagated-inputs
4199 `(("emacs-helm" ,emacs-helm)))
4200 (home-page "https://github.com/ShingoFukuyama/helm-swoop")
4201 (synopsis "Filter and jump to lines in an Emacs buffer using Helm")
4202 (description
4203 "This package builds on the Helm interface to provide several commands
4204 for search-based navigation of buffers.")
4205 (license license:gpl2+)))
4206
4207 (define-public emacs-helm-projectile
4208 (package
4209 (name "emacs-helm-projectile")
4210 (version "0.14.0")
4211 (source (origin
4212 (method url-fetch)
4213 (uri (string-append
4214 "https://github.com/bbatsov/helm-projectile/archive/v"
4215 version
4216 ".tar.gz"))
4217 (file-name (string-append name "-" version ".tar.gz"))
4218 (sha256
4219 (base32
4220 "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5"))))
4221 (build-system emacs-build-system)
4222 (propagated-inputs
4223 `(("emacs-dash" ,emacs-dash)
4224 ("emacs-helm" ,emacs-helm)
4225 ("emacs-projectile" ,emacs-projectile)))
4226 (home-page "https://github.com/bbatsov/helm-projectile")
4227 (synopsis "Helm integration for Projectile")
4228 (description
4229 "This Emacs library provides a Helm interface for Projectile.")
4230 (license license:gpl3+)))
4231
4232 (define-public emacs-helm-make
4233 (let ((commit "feae8df22bc4b20705ea08ac9adfc2b43bb348d0")
4234 (revision "1"))
4235 (package
4236 (name "emacs-helm-make")
4237 (version (string-append "0.1.0-" revision "." (string-take commit 7)))
4238 (source
4239 (origin
4240 (method git-fetch)
4241 (uri (git-reference
4242 (url "https://github.com/abo-abo/helm-make.git")
4243 (commit commit)))
4244 (file-name (string-append name "-" version "-checkout"))
4245 (sha256
4246 (base32
4247 "1y2v77mmd1bfkkz51cnk1l0dg3lvvxc39wlamnm7wjns66dbvlam"))))
4248 (build-system emacs-build-system)
4249 (propagated-inputs
4250 `(("emacs-helm" ,emacs-helm)
4251 ("emacs-projectile" ,emacs-projectile)))
4252 (home-page "https://github.com/abo-abo/helm-make")
4253 (synopsis "Select a Makefile target with helm")
4254 (description "@code{helm-make} or @code{helm-make-projectile} will give
4255 you a @code{helm} selection of directory Makefile's targets. Selecting a
4256 target will call @code{compile} on it.")
4257 (license license:gpl3+))))
4258
4259 (define-public emacs-cider
4260 (package
4261 (name "emacs-cider")
4262 (version "0.15.1")
4263 (source (origin
4264 (method url-fetch)
4265 (uri (string-append
4266 "https://github.com/clojure-emacs/cider/archive/v"
4267 version ".tar.gz"))
4268 (file-name (string-append name "-" version ".tar.gz"))
4269 (sha256
4270 (base32
4271 "1j5hlmi14ypszv1f9nvq0jjlz7i742flg0ny3055l7i4x089xx6g"))))
4272 (build-system emacs-build-system)
4273 (arguments
4274 '(#:exclude ; Don't exclude 'cider-test.el'.
4275 '("^\\.dir-locals\\.el$" "^test/")))
4276 (propagated-inputs
4277 `(("emacs-clojure-mode" ,emacs-clojure-mode)
4278 ("emacs-spinner" ,emacs-spinner)
4279 ("emacs-pkg-info" ,emacs-pkg-info)
4280 ("emacs-queue" ,emacs-queue)))
4281 (home-page "https://cider.readthedocs.org/")
4282 (synopsis "Clojure development environment for Emacs")
4283 (description
4284 "CIDER (Clojure Interactive Development Environment that Rocks) aims to
4285 provide an interactive development experience similar to the one you'd get
4286 when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
4287 Geiser) and Smalltalk.
4288
4289 CIDER is the successor to the now deprecated combination of using SLIME +
4290 swank-clojure for Clojure development.
4291
4292 There are plenty of differences between CIDER and SLIME, but the core ideas
4293 are pretty much the same (and SLIME served as the principle inspiration for
4294 CIDER).")
4295 (license license:gpl3+)))
4296
4297 ;; There hasn't been a tag or release since 2015, so we take the latest
4298 ;; commit.
4299 (define-public emacs-sly
4300 (let ((commit "486bfbe95612bcdc0960c490207970a188e0fbb9")
4301 (revision "1"))
4302 (package
4303 (name "emacs-sly")
4304 (version (string-append "1.0.0-" revision "." (string-take commit 9)))
4305 (source
4306 (origin
4307 (method git-fetch)
4308 (uri (git-reference
4309 (url "https://github.com/joaotavora/sly.git")
4310 (commit commit)))
4311 (file-name (git-file-name name version))
4312 (sha256
4313 (base32
4314 "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l"))))
4315 (build-system emacs-build-system)
4316 (arguments
4317 `(#:include (cons "^lib\\/" %default-include)
4318 #:phases
4319 ;; The package provides autoloads.
4320 (modify-phases %standard-phases
4321 (delete 'make-autoloads))))
4322 (home-page "https://github.com/joaotavora/sly")
4323 (synopsis "Sylvester the Cat's Common Lisp IDE")
4324 (description
4325 "SLY is Sylvester the Cat's Common Lisp IDE. SLY is a fork of SLIME, and
4326 contains the following improvements over it:
4327
4328 @enumerate
4329 @item Completely redesigned REPL based on Emacs's own full-featured
4330 @code{comint.el}
4331 @item Live code annotations via a new @code{sly-stickers} contrib
4332 @item Consistent interactive button interface. Everything can be copied to
4333 the REPL.
4334 @item Multiple inspectors with independent history
4335 @item Regexp-capable @code{M-x sly-apropos}
4336 @item Contribs are first class SLY citizens and enabled by default
4337 @item Use ASDF to loads contribs on demand.
4338 @end enumerate
4339
4340 SLY tracks SLIME's bugfixes and all its familar features (debugger, inspector,
4341 xref, etc...) are still available, but with better integration.")
4342 (license license:gpl3+))))
4343
4344 (define-public emacs-lua-mode
4345 (let ((commit "652e299cb967fccca827dda381d61a9c144d97de")
4346 (revision "1"))
4347 (package
4348 (name "emacs-lua-mode")
4349 (version (string-append "20151025." revision "-" (string-take commit 9)))
4350 (home-page "https://github.com/immerrr/lua-mode/")
4351 (source (origin
4352 (method git-fetch)
4353 (uri (git-reference
4354 (url home-page)
4355 (commit commit)))
4356 (file-name (string-append name "-" version ".checkout"))
4357 (sha256
4358 (base32
4359 "053025k930wh0lak6rc1973ynfrmm8zsyzfqhhd39x7abkl41hc9"))))
4360 (build-system emacs-build-system)
4361 (synopsis "Major mode for lua")
4362 (description
4363 "This Emacs package provides a mode for @uref{https://www.lua.org/,
4364 Lua programing language}.")
4365 (license license:gpl2+))))
4366
4367 (define-public emacs-ebuild-mode
4368 (package
4369 (name "emacs-ebuild-mode")
4370 (version "1.37")
4371 (source (origin
4372 (method url-fetch)
4373 (uri (string-append
4374 "https://dev.gentoo.org/~ulm/emacs/ebuild-mode"
4375 "-" version ".tar.xz"))
4376 (file-name (string-append name "-" version ".tar.xz"))
4377 (sha256
4378 (base32
4379 "07dzrdjjczkxdfdgi60h4jjkvzi4p0k9rij2wpfp8s03ay3qldpp"))))
4380 (build-system emacs-build-system)
4381 (home-page "https://devmanual.gentoo.org")
4382 (synopsis "Major modes for Gentoo package files")
4383 (description
4384 "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42
4385 news items, openrc and runscripts.")
4386 (license license:gpl2+)))
4387
4388 (define-public emacs-evil
4389 (package
4390 (name "emacs-evil")
4391 (version "1.2.13")
4392 (source
4393 (origin
4394 (method url-fetch)
4395 (uri (string-append "https://github.com/emacs-evil/evil/archive/"
4396 version ".tar.gz"))
4397 (file-name (string-append name "-" version ".tar.gz"))
4398 (sha256
4399 (base32
4400 "1z63zsxmsc6mh74wv6065carwqmgs7b7lz5044s12xvgsjfbwi8h"))))
4401 (build-system emacs-build-system)
4402 (propagated-inputs
4403 `(("emacs-undo-tree" ,emacs-undo-tree)
4404 ("emacs-goto-chg" ,emacs-goto-chg)))
4405 (home-page "https://github.com/emacs-evil/evil")
4406 (synopsis "Extensible Vi layer for Emacs")
4407 (description
4408 "Evil is an extensible vi layer for Emacs. It emulates the
4409 main features of Vim, and provides facilities for writing custom
4410 extensions.")
4411 (license license:gpl3+)))
4412
4413 (define-public emacs-goto-chg
4414 (package
4415 (name "emacs-goto-chg")
4416 (version "1.6")
4417 (source
4418 (origin
4419 (method url-fetch)
4420 ;; There is no versioned source.
4421 (uri "https://www.emacswiki.org/emacs/download/goto-chg.el")
4422 (file-name (string-append "goto-chg-" version ".el"))
4423 (sha256
4424 (base32
4425 "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"))))
4426 (build-system emacs-build-system)
4427 ;; There is no other home page.
4428 (home-page "https://www.emacswiki.org/emacs/goto-chg.el")
4429 (synopsis "Go to the last change in the Emacs buffer")
4430 (description
4431 "This package provides @code{M-x goto-last-change} command that goes to
4432 the point of the most recent edit in the current Emacs buffer. When repeated,
4433 go to the second most recent edit, etc. Negative argument, @kbd{C-u -}, is
4434 used for reverse direction.")
4435 (license license:gpl2+)))
4436
4437 (define-public emacs-monroe
4438 (package
4439 (name "emacs-monroe")
4440 (version "0.3.1")
4441 (source
4442 (origin
4443 (method url-fetch)
4444 (uri (string-append "https://github.com/sanel/monroe/archive/"
4445 version ".tar.gz"))
4446 (file-name (string-append name "-" version ".tar.gz"))
4447 (sha256
4448 (base32
4449 "0icdx8shkd951phlnmcq1vqaxp1l667q5rjscskc5r22aylakh4w"))))
4450 (build-system emacs-build-system)
4451 (home-page "https://github.com/sanel/monroe")
4452 (synopsis "Clojure nREPL client for Emacs")
4453 (description
4454 "Monroe is a nREPL client for Emacs, focused on simplicity and easy
4455 distribution, primarily targeting Clojure users")
4456 (license license:gpl3+)))
4457
4458 (define-public emacs-writegood-mode
4459 (package
4460 (name "emacs-writegood-mode")
4461 (version "2.0.2")
4462 (home-page "https://github.com/bnbeckwith/writegood-mode")
4463 (source (origin
4464 (method git-fetch)
4465 (uri (git-reference
4466 (url home-page)
4467 (commit (string-append "v" version))))
4468 (sha256
4469 (base32
4470 "1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b"))
4471 (file-name (string-append name "-checkout"))))
4472 (build-system emacs-build-system)
4473 (synopsis "Polish up poor writing on the fly")
4474 (description
4475 "This minor mode tries to find and highlight problems with your writing
4476 in English as you type. It primarily detects \"weasel words\" and abuse of
4477 passive voice.")
4478 (license license:gpl3+)))
4479
4480 (define-public emacs-neotree
4481 (package
4482 (name "emacs-neotree")
4483 (version "0.5.2")
4484 (home-page "https://github.com/jaypei/emacs-neotree")
4485 (source (origin
4486 (method url-fetch)
4487 (uri (string-append
4488 "https://github.com/jaypei/" name
4489 "/archive/" version ".tar.gz"))
4490 (sha256
4491 (base32
4492 "1zd6dchwyijnf7kgchfcp51gs938l204dk9z6mljrfqf2zy0gp12"))
4493 (file-name (string-append name "-" version ".tar.gz"))))
4494 (build-system emacs-build-system)
4495 (synopsis "Folder tree view for Emacs")
4496 (description "This Emacs package provides a folder tree view.")
4497 (license license:gpl3+)))
4498
4499 (define-public emacs-org
4500 (package
4501 (name "emacs-org")
4502 ;; emacs-org-contrib inherits from this package. Please update its sha256
4503 ;; checksum as well.
4504 (version "20180226")
4505 (source (origin
4506 (method url-fetch)
4507 (uri (string-append "https://orgmode.org/elpa/org-"
4508 version ".tar"))
4509 (sha256
4510 (base32
4511 "0jqvry6gah1bwnryha4asynj13jyds3qim0xcy7s01rxk99m2ziy"))))
4512 (build-system emacs-build-system)
4513 (home-page "https://orgmode.org/")
4514 (synopsis "Outline-based notes management and organizer")
4515 (description "Org is an Emacs mode for keeping notes, maintaining TODO
4516 lists, and project planning with a fast and effective plain-text system. It
4517 also is an authoring system with unique support for literate programming and
4518 reproducible research.")
4519 (license license:gpl3+)))
4520
4521 (define-public emacs-org-contrib
4522 (package
4523 (inherit emacs-org)
4524 (name "emacs-org-contrib")
4525 (source (origin
4526 (method url-fetch)
4527 (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
4528 (package-version emacs-org) ".tar"))
4529 (sha256
4530 (base32
4531 "034wp70hcqnpidji5k1k80mj35iyyy098nbvc2sl7i2aca4m03zc"))))
4532 (arguments
4533 `(#:modules ((guix build emacs-build-system)
4534 (guix build utils)
4535 (guix build emacs-utils)
4536 (ice-9 ftw)
4537 (srfi srfi-1))
4538 #:phases
4539 (modify-phases %standard-phases
4540 (add-after 'install 'delete-org-files
4541 (lambda* (#:key inputs outputs #:allow-other-keys)
4542 (let* ((out (assoc-ref outputs "out"))
4543 (org (assoc-ref inputs "emacs-org"))
4544 (contrib-files
4545 (map basename (find-files out)))
4546 (org+contrib-files
4547 (map basename (find-files org)))
4548 (duplicates (lset-intersection
4549 string=? contrib-files org+contrib-files)))
4550 (with-directory-excursion
4551 (string-append
4552 out "/share/emacs/site-lisp/guix.d/org-contrib-"
4553 ,(package-version emacs-org))
4554 (for-each delete-file duplicates))
4555 #t))))))
4556 (propagated-inputs
4557 `(("emacs-org" ,emacs-org)))
4558 (synopsis "Contributed packages to Org mode")
4559 (description "Org is an Emacs mode for keeping notes, maintaining TODO
4560 lists, and project planning with a fast and effective plain-text system.
4561
4562 This package is equivalent to org-plus-contrib, but only includes additional
4563 files that you would find in @file{contrib/} from the git repository.")))
4564
4565 (define-public emacs-flx
4566 (package
4567 (name "emacs-flx")
4568 (version "0.6.1")
4569 (source
4570 (origin
4571 (method url-fetch)
4572 (uri (string-append "https://github.com/lewang/"
4573 "flx/archive/v" version ".tar.gz"))
4574 (sha256
4575 (base32
4576 "0bkcpnf1j4i2fcc2rllwbz62l00sw2mcia6rm5amgwvlkqavmkv6"))
4577 (file-name (string-append name "-" version ".tar.gz"))))
4578 (build-system emacs-build-system)
4579 (home-page "https://github.com/lewang/flx")
4580 (synopsis "Fuzzy matching for Emacs")
4581 (description
4582 "Flx provides fuzzy matching for emacs a la sublime text.
4583 The sorting algorithm is a balance between word beginnings (abbreviation)
4584 and contiguous matches (substring). The longer the substring match,
4585 the higher it scores. This maps well to how we think about matching.
4586 Flx has support for ido (interactively do things) through flx-ido.")
4587 (license license:gpl3+)))
4588
4589 (define-public emacs-cyberpunk-theme
4590 (package
4591 (name "emacs-cyberpunk-theme")
4592 (version "1.19")
4593 (source
4594 (origin
4595 (method url-fetch)
4596 (uri (string-append "https://github.com/n3mo/cyberpunk-theme.el/"
4597 "archive/" version ".tar.gz"))
4598 (sha256
4599 (base32
4600 "05l5fxw1mn5py6mfhxrzyqjq0d8m5m1akfi46vrgh13r414jffvv"))
4601 (file-name (string-append name "-" version ".tar.gz"))))
4602 (build-system emacs-build-system)
4603 (home-page "https://github.com/n3mo/cyberpunk-theme.el")
4604 (synopsis "Cyberpunk theme for emacs built-in color theme support")
4605 (description
4606 "Cyberpunk color theme for the emacs 24+ built-in color theme support
4607 known loosely as deftheme. Many mode-specific customizations are included.")
4608 (license license:gpl3+)))
4609
4610 (define-public emacs-danneskjold-theme
4611 (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57")
4612 (revision "1"))
4613 (package
4614 (name "emacs-danneskjold-theme")
4615 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
4616 (home-page "https://github.com/rails-to-cosmos/danneskjold-theme")
4617 (source
4618 (origin
4619 (method git-fetch)
4620 (uri (git-reference
4621 (url home-page)
4622 (commit commit)))
4623 (file-name (string-append name "-" version "-checkout"))
4624 (sha256
4625 (base32
4626 "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
4627 (build-system emacs-build-system)
4628 (arguments
4629 `(#:phases
4630 (modify-phases %standard-phases
4631 (add-after 'unpack 'delete-screenshots
4632 (lambda _
4633 (delete-file-recursively "screenshots") #t)))))
4634 (synopsis "High-contrast Emacs theme")
4635 (description
4636 "@code{danneskjold-theme} is a high-contrast theme for Emacs.")
4637 (license license:gpl3+))))
4638
4639 (define-public emacs-dream-theme
4640 (let* ((commit "107a11d74365046f28a1802a2bdb5e69e4a7488b")
4641 (revision "1"))
4642 (package
4643 (name "emacs-dream-theme")
4644 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
4645 (source
4646 (origin
4647 (method git-fetch)
4648 (uri (git-reference
4649 (url "https://github.com/djcb/dream-theme")
4650 (commit commit)))
4651 (file-name (string-append name "-" version "-checkout"))
4652 (sha256
4653 (base32
4654 "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk"))))
4655 (build-system emacs-build-system)
4656 (home-page "https://github.com/djcb/dream-theme")
4657 (synopsis "High-contrast Emacs theme")
4658 (description
4659 "@code{dream-theme} is a dark, clean theme for Emacs. It is inspired
4660 by zenburn, sinburn and similar themes, but slowly diverging from them.")
4661 (license license:gpl3+))))
4662
4663 (define-public emacs-auto-complete
4664 (package
4665 (name "emacs-auto-complete")
4666 (version "1.5.1")
4667 (source
4668 (origin
4669 (method url-fetch)
4670 (uri (string-append "https://github.com/auto-complete/"
4671 "auto-complete/archive/v" version ".tar.gz"))
4672 (sha256
4673 (base32
4674 "1jvq4lj00hwml75lpmlciazy8f3bbg13gffsfnl835p4qd8l7yqv"))
4675 (file-name (string-append name "-" version ".tar.gz"))))
4676 (build-system emacs-build-system)
4677 (propagated-inputs
4678 `(("emacs-popup" ,emacs-popup)))
4679 (home-page "https://github.com/auto-complete/auto-complete")
4680 (synopsis "Intelligent auto-completion extension for Emacs")
4681 (description
4682 "Auto-Complete is an intelligent auto-completion extension for Emacs.
4683 It extends the standard Emacs completion interface and provides an environment
4684 that allows users to concentrate more on their own work. Its features are:
4685 a visual interface, reduce overhead of completion by using statistic method,
4686 extensibility.")
4687 (license license:gpl3+)))
4688
4689 (define-public m17n-db
4690 (package
4691 (name "m17n-db")
4692 (version "1.7.0")
4693 (source
4694 (origin
4695 (method url-fetch)
4696 (uri (string-append "mirror://savannah/m17n/m17n-db-"
4697 version ".tar.gz"))
4698 (sha256
4699 (base32 "1w08hnsbknrcjlzp42c99bgwc9hzsnf5m4apdv0dacql2s09zfm2"))))
4700 (build-system gnu-build-system)
4701 (inputs
4702 `(("gettext" ,gettext-minimal)))
4703 (arguments
4704 `(#:configure-flags
4705 (list (string-append "--with-charmaps="
4706 (assoc-ref %build-inputs "libc")
4707 "/share/i18n/charmaps"))))
4708 ;; With `guix lint' the home-page URI returns a small page saying
4709 ;; that your browser does not handle frames. This triggers the "URI
4710 ;; returns suspiciously small file" warning.
4711 (home-page "https://www.nongnu.org/m17n/")
4712 (synopsis "Multilingual text processing library (database)")
4713 (description "The m17n library realizes multilingualization of
4714 many aspects of applications. The m17n library represents
4715 multilingual text as an object named M-text. M-text is a string with
4716 attributes called text properties, and designed to substitute for
4717 string in C. Text properties carry any information required to input,
4718 display and edit the text.
4719
4720 This package contains the library database.")
4721 (license license:lgpl2.1+)))
4722
4723 (define-public m17n-lib
4724 (package
4725 (name "m17n-lib")
4726 (version "1.7.0")
4727 (source
4728 (origin
4729 (method url-fetch)
4730 (uri (string-append "mirror://savannah/m17n/m17n-lib-"
4731 version ".tar.gz"))
4732 (sha256
4733 (base32 "10yv730i25g1rpzv6q49m6xn4p8fjm7jdwvik2h70sn8w3hm7f4f"))))
4734 (build-system gnu-build-system)
4735 (inputs
4736 `(("fribidi" ,fribidi)
4737 ("gd" ,gd)
4738 ("libotf" ,libotf)
4739 ("libxft" ,libxft)
4740 ("libxml2" ,libxml2)
4741 ("m17n-db" ,m17n-db)))
4742 (arguments
4743 `(#:parallel-build? #f))
4744 ;; With `guix lint' the home-page URI returns a small page saying
4745 ;; that your browser does not handle frames. This triggers the "URI
4746 ;; returns suspiciously small file" warning.
4747 (home-page "https://www.nongnu.org/m17n/")
4748 (synopsis "Multilingual text processing library (runtime)")
4749 (description "The m17n library realizes multilingualization of
4750 many aspects of applications. The m17n library represents
4751 multilingual text as an object named M-text. M-text is a string with
4752 attributes called text properties, and designed to substitute for
4753 string in C. Text properties carry any information required to input,
4754 display and edit the text.
4755
4756 This package contains the library runtime.")
4757 (license license:lgpl2.1+)))
4758
4759 (define-public emacs-nginx-mode
4760 (package
4761 (name "emacs-nginx-mode")
4762 (version "1.1.4")
4763 (source
4764 (origin
4765 (method url-fetch)
4766 (uri (string-append
4767 "https://github.com/ajc/nginx-mode/archive/v"
4768 version ".tar.gz"))
4769 (file-name (string-append name "-" version ".tar.gz"))
4770 (sha256
4771 (base32
4772 "1lvkj07kq0jkskr2f61vqb5rlrbnaz9a76ikq40w6925i2r970rr"))))
4773 (build-system emacs-build-system)
4774 (home-page "https://github.com/ajc/nginx-mode")
4775 (synopsis "Emacs major mode for editing nginx config files")
4776 (description "This package provides an Emacs major mode for
4777 editing nginx config files.")
4778 (license license:gpl2+)))
4779
4780 (define-public emacs-stream
4781 (package
4782 (name "emacs-stream")
4783 (version "2.2.0")
4784 (home-page "https://github.com/NicolasPetton/stream")
4785 (source
4786 (origin
4787 (method url-fetch)
4788 (file-name (string-append name "-" version ".tar.gz"))
4789 (uri (string-append home-page "/archive/"version ".tar.gz"))
4790 (sha256
4791 (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
4792 (build-system emacs-build-system)
4793 (synopsis "Implementation of streams for Emacs")
4794 (description "This library provides an implementation of streams for Emacs.
4795 Streams are implemented as delayed evaluation of cons cells.")
4796 (license license:gpl3+)))
4797
4798 (define-public emacs-el-search
4799 (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
4800 (revision "1"))
4801 (package
4802 (name "emacs-el-search")
4803 ;; No ufficial release.
4804 (version (string-append "0.0-" revision "." (string-take commit 7)))
4805 (home-page "https://github.com/emacsmirror/el-search")
4806 (source
4807 (origin
4808 (method git-fetch)
4809 (file-name (string-append name "-" version ".tar.gz"))
4810 (uri (git-reference
4811 (commit commit)
4812 (url (string-append home-page ".git"))))
4813 (sha256
4814 (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
4815 (build-system emacs-build-system)
4816 (inputs `(("emacs-stream" ,emacs-stream)))
4817 (synopsis "Expression based interactive search for emacs-lisp-mode")
4818 (description "This package provides expression based interactive search
4819 procedures for emacs-lisp-mode.")
4820 (license license:gpl3+))))
4821
4822 (define-public emacs-ht
4823 (package
4824 (name "emacs-ht")
4825 (version "2.1")
4826 (source
4827 (origin
4828 (method url-fetch)
4829 (uri (string-append
4830 "https://github.com/Wilfred/ht.el/archive/"
4831 version ".tar.gz"))
4832 (file-name (string-append name "-" version ".tar.gz"))
4833 (sha256
4834 (base32
4835 "1lpba36kzxcc966fvsbrfpy8ah9gnvay0yk26gbyjil0rggrbqzj"))))
4836 (build-system emacs-build-system)
4837 (propagated-inputs `(("emacs-dash" ,emacs-dash)))
4838 (home-page "https://github.com/Wilfred/ht.el")
4839 (synopsis "Hash table library for Emacs")
4840 (description
4841 "This package simplifies the use of hash tables in elisp. It also
4842 provides functions to convert hash tables from and to alists and plists.")
4843 (license license:gpl3+)))
4844
4845 (define-public emacs-log4e
4846 (package
4847 (name "emacs-log4e")
4848 (version "0.3.0")
4849 (source
4850 (origin
4851 (method url-fetch)
4852 (uri (string-append
4853 "https://github.com/aki2o/log4e/archive/v"
4854 version ".tar.gz"))
4855 (file-name (string-append name "-" version ".tar.gz"))
4856 (sha256
4857 (base32
4858 "0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
4859 (build-system emacs-build-system)
4860 (arguments
4861 `(#:phases
4862 (modify-phases %standard-phases
4863 (add-after 'unpack 'remove-tests
4864 ;; Guile builder complains about null characters in some
4865 ;; strings of test files. Remove "test" directory (it is not
4866 ;; needed anyway).
4867 (lambda _
4868 (delete-file-recursively "test"))))))
4869 (home-page "https://github.com/aki2o/log4e")
4870 (synopsis "Logging framework for elisp")
4871 (description
4872 "This package provides a logging framework for elisp. It allows
4873 you to deal with multiple log levels.")
4874 (license license:gpl3+)))
4875
4876 (define-public emacs-gntp
4877 (package
4878 (name "emacs-gntp")
4879 (version "0.1")
4880 (source
4881 (origin
4882 (method url-fetch)
4883 (uri (string-append
4884 "https://github.com/tekai/gntp.el/archive/v"
4885 version ".tar.gz"))
4886 (file-name (string-append name "-" version ".tar.gz"))
4887 (sha256
4888 (base32
4889 "16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
4890 (build-system emacs-build-system)
4891 (home-page "https://github.com/tekai/gntp.el")
4892 (synopsis "Growl Notification Protocol for Emacs")
4893 (description
4894 "This package implements the Growl Notification Protocol GNTP
4895 described at @uref{http://www.growlforwindows.com/gfw/help/gntp.aspx}.
4896 It is incomplete as it only lets you send but not receive
4897 notifications.")
4898 (license license:bsd-3)))
4899
4900 (define-public emacs-alert
4901 (package
4902 (name "emacs-alert")
4903 (version "1.2")
4904 (source
4905 (origin
4906 (method url-fetch)
4907 (uri (string-append
4908 "https://github.com/jwiegley/alert/archive/v"
4909 version ".tar.gz"))
4910 (file-name (string-append name "-" version ".tar.gz"))
4911 (sha256
4912 (base32
4913 "1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
4914 (build-system emacs-build-system)
4915 (propagated-inputs
4916 `(("emacs-gntp" ,emacs-gntp)
4917 ("emacs-log4e" ,emacs-log4e)))
4918 (home-page "https://github.com/jwiegley/alert")
4919 (synopsis "Growl-style notification system for Emacs")
4920 (description
4921 "Alert is a Growl-workalike for Emacs which uses a common notification
4922 interface and multiple, selectable \"styles\", whose use is fully
4923 customizable by the user.")
4924 (license license:gpl2+)))
4925
4926 (define-public emacs-mu4e-alert
4927 (package
4928 (name "emacs-mu4e-alert")
4929 (version "1.0")
4930 (source
4931 (origin
4932 (method url-fetch)
4933 (uri (string-append
4934 "https://github.com/iqbalansari/mu4e-alert/archive/v"
4935 version ".tar.gz"))
4936 (file-name (string-append name "-" version ".tar.gz"))
4937 (sha256
4938 (base32
4939 "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj"))))
4940 (build-system emacs-build-system)
4941 (propagated-inputs
4942 `(("emacs-alert" ,emacs-alert)
4943 ("emacs-s" ,emacs-s)
4944 ("emacs-ht" ,emacs-ht)))
4945 (home-page "https://github.com/iqbalansari/mu4e-alert")
4946 (synopsis "Desktop notification for mu4e")
4947 (description
4948 "This package provides desktop notifications for mu4e.
4949 Additionally it can display the number of unread emails in the
4950 mode-line.")
4951 (license license:gpl3+)))
4952
4953 (define-public emacs-pretty-mode
4954 (package
4955 (name "emacs-pretty-mode")
4956 (version "2.0.3")
4957 (source
4958 (origin
4959 (method url-fetch)
4960 (uri (string-append "https://github.com/akatov/pretty-mode/"
4961 "archive/" version ".tar.gz"))
4962 (file-name (string-append name "-" version ".tar.gz"))
4963 (sha256
4964 (base32
4965 "1fan7m4vnqs8kpg7r54kx3g7faadkpkf9kzarfv8n57kq8w157pl"))))
4966 (build-system emacs-build-system)
4967 (home-page "https://github.com/akatov/pretty-mode")
4968 (synopsis "Redisplay parts of the buffer as Unicode symbols")
4969 (description
4970 "Emacs minor mode for redisplaying parts of the buffer as pretty symbols.")
4971 (license license:gpl3+)))
4972
4973 (define-public emacs-yasnippet
4974 (package
4975 (name "emacs-yasnippet")
4976 (version "0.12.2")
4977 (source (origin
4978 (method url-fetch)
4979 (uri (string-append "https://github.com/joaotavora/yasnippet/"
4980 "archive/" version ".tar.gz"))
4981 (file-name (string-append name "-" version ".tar.gz"))
4982 (sha256
4983 (base32
4984 "01jabaz0g67bsziayrxgv74px55fx4nlrcl0csl8f1by2102pwc5"))
4985 (modules '((guix build utils)))
4986 (snippet
4987 '(begin
4988 ;; YASnippet expects a "snippets" subdirectory in the same
4989 ;; directory as yasnippet.el, but we don't install it
4990 ;; because it's a git submodule pointing to an external
4991 ;; repository. Adjust `yas-snippet-dirs' to prevent
4992 ;; warnings about a missing directory.
4993 (substitute* "yasnippet.el"
4994 (("^ +'yas-installed-snippets-dir\\)\\)\n")
4995 "))\n"))
4996 #t))))
4997 (build-system emacs-build-system)
4998 (home-page "https://github.com/joaotavora/yasnippet")
4999 (synopsis "Yet another snippet extension for Emacs")
5000 (description
5001 "YASnippet is a template system for Emacs. It allows you to type an
5002 abbreviation and automatically expand it into function templates.")
5003 (license license:gpl3+)))
5004
5005 (define-public emacs-yasnippet-snippets
5006 (let ((commit "885050d34737e2fb36a3e7759d60c09347bd4ce0")
5007 (revision "1"))
5008 (package
5009 (name "emacs-yasnippet-snippets")
5010 (version (string-append "1-" revision "." (string-take commit 8)))
5011 (source
5012 (origin
5013 (method git-fetch)
5014 (uri (git-reference
5015 (url "https://github.com/AndreaCrotti/yasnippet-snippets")
5016 (commit commit)))
5017 (file-name (string-append name "-" version "-checkout"))
5018 (sha256
5019 (base32
5020 "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9"))))
5021 (build-system trivial-build-system)
5022 (arguments
5023 `(#:modules ((ice-9 ftw)
5024 (ice-9 regex)
5025 (guix build utils))
5026 #:builder
5027 (begin
5028 (use-modules (ice-9 ftw)
5029 (ice-9 regex)
5030 (guix build utils))
5031 (with-directory-excursion (assoc-ref %build-inputs "source")
5032 (for-each (lambda (dir)
5033 (copy-recursively
5034 dir
5035 (string-append %output
5036 "/share/emacs/yasnippet-snippets/"
5037 dir)))
5038 (scandir "." (lambda (fname)
5039 (and (string-match "-mode$" fname)
5040 (directory-exists? fname)))))))))
5041 (home-page "https://github.com/AndreaCrotti/yasnippet-snippets")
5042 (synopsis "Collection of YASnippet snippets for many languages")
5043 (description
5044 "Provides Andrea Crotti's collection of YASnippet snippets. After installation,
5045 the snippets will be in \"~/.guix-profile/share/emacs/yasnippet-snippets/\".
5046 To make YASnippet aware of these snippets, add the above directory to
5047 @code{yas-snippet-dirs}.")
5048 (license license:expat))))
5049
5050 (define-public emacs-helm-c-yasnippet
5051 (let ((commit "65ca732b510bfc31636708aebcfe4d2d845b59b0")
5052 (revision "1"))
5053 (package
5054 (name "emacs-helm-c-yasnippet")
5055 (version (string-append "0.6.7" "-" revision "."
5056 (string-take commit 7)))
5057 (source (origin
5058 (method git-fetch)
5059 (uri (git-reference
5060 (url "https://github.com/emacs-jp/helm-c-yasnippet")
5061 (commit commit)))
5062 (file-name (string-append name "-" version "-checkout"))
5063 (sha256
5064 (base32
5065 "1cbafjqlzxbg19xfdqsinsh7afq58gkf44rsg1qxfgm8g6zhr7f8"))))
5066 (build-system emacs-build-system)
5067 (propagated-inputs
5068 `(("emacs-helm" ,emacs-helm)
5069 ("emacs-yasnippet" ,emacs-yasnippet)))
5070 (home-page "https://github.com/emacs-jp/helm-c-yasnippet")
5071 (synopsis "Helm integration for Yasnippet")
5072 (description "This Emacs library provides Helm interface for
5073 Yasnippet.")
5074 (license license:gpl2+))))
5075
5076 (define-public emacs-memoize
5077 (package
5078 (name "emacs-memoize")
5079 (version "20130421.b55eab0")
5080 (source
5081 (origin
5082 (method git-fetch)
5083 (uri (git-reference
5084 (url "https://github.com/skeeto/emacs-memoize")
5085 (commit "b55eab0cb6ab05d941e07b8c01f1655c0cf1dd75")))
5086 (file-name (string-append name "-" version ".tar.gz"))
5087 (sha256
5088 (base32
5089 "0fjwlrdm270qcrqffvarw5yhijk656q4lam79ybhaznzj0dq3xpw"))))
5090 (build-system emacs-build-system)
5091 (arguments
5092 `(#:phases
5093 (modify-phases %standard-phases
5094 (add-before 'install 'check
5095 (lambda _
5096 (zero? (system* "emacs" "-batch" "-l" "memoize.el"
5097 "-l" "memoize-test.el"
5098 "-f" "ert-run-tests-batch-and-exit")))))))
5099 (home-page "https://github.com/skeeto/emacs-memoize")
5100 (synopsis "Emacs lisp memoization library")
5101 (description "@code{emacs-memoize} is an Emacs library for
5102 memoizing functions.")
5103 (license license:unlicense)))
5104
5105 (define-public emacs-linum-relative
5106 (package
5107 (name "emacs-linum-relative")
5108 (version "0.5")
5109 (source
5110 (origin
5111 (method url-fetch)
5112 (uri (string-append
5113 "https://github.com/coldnew/linum-relative/archive/"
5114 version ".tar.gz"))
5115 (file-name (string-append name "-" version ".tar.gz"))
5116 (sha256
5117 (base32
5118 "0s4frvr27866lw1rn3jal9wj5rkz9fx4yiszqv7w06azsdgsqksv"))))
5119 (build-system emacs-build-system)
5120 (home-page "https://github.com/coldnew/linum-relative")
5121 (synopsis "Relative line numbering for Emacs")
5122 (description "@code{emacs-linum-relative} displays the relative line
5123 number on the left margin in Emacs.")
5124 (license license:gpl2+)))
5125
5126 (define-public emacs-idle-highlight
5127 (package
5128 (name "emacs-idle-highlight")
5129 (version "1.1.3")
5130 (source
5131 (origin
5132 (method url-fetch)
5133 (uri (string-append
5134 "https://github.com/nonsequitur/idle-highlight-mode/archive/"
5135 version ".tar.gz"))
5136 (file-name (string-append name "-" version ".tar.gz"))
5137 (sha256
5138 (base32
5139 "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl"))))
5140 (build-system emacs-build-system)
5141 (home-page "https://www.emacswiki.org/emacs/IdleHighlight")
5142 (synopsis "Highlights all occurrences of the word the point is on")
5143 (description
5144 "This Emacs package provides @code{idle-highlight-mode} that sets
5145 an idle timer to highlight all occurrences in the buffer of the word under
5146 the point.")
5147 (license license:gpl3+)))
5148
5149 (define-public emacs-ox-twbs
5150 (package
5151 (name "emacs-ox-twbs")
5152 (version "1.1.1")
5153 (source
5154 (origin
5155 (method url-fetch)
5156 (uri (string-append
5157 "https://github.com/marsmining/ox-twbs/archive/v"
5158 version ".tar.gz"))
5159 (file-name (string-append name "-" version ".tar.gz"))
5160 (sha256
5161 (base32
5162 "1zaq8dczq5wijjk36114k2x3hfrqig3lyx6djril6wyk67vczyqs"))))
5163 (build-system emacs-build-system)
5164 (home-page "https://github.com/marsmining/ox-twbs")
5165 (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap")
5166 (description
5167 "This Emacs package outputs your org-mode docs with a simple, clean and
5168 modern look. It implements a new HTML back-end for exporting org-mode docs as
5169 HTML compatible with Twitter Bootstrap. By default, HTML is exported with
5170 jQuery and Bootstrap resources included via osscdn.")
5171 (license license:gpl3+)))
5172
5173 (define-public emacs-highlight-sexp
5174 (package
5175 (name "emacs-highlight-sexp")
5176 (version "1.0")
5177 (source
5178 (origin
5179 (method url-fetch)
5180 (uri (string-append
5181 "https://github.com/daimrod/highlight-sexp/archive/v"
5182 version ".tar.gz"))
5183 (file-name (string-append name "-" version ".tar.gz"))
5184 (sha256
5185 (base32
5186 "0jwx87qkln1rg9wmv4qkgkml935fh2pkgrg5x4ca6n5dgb4q6rj1"))))
5187 (build-system emacs-build-system)
5188 (home-page "https://github.com/daimrod/highlight-sexp")
5189 (synopsis "Minor mode that highlights the s-exp at the current position")
5190 (description
5191 "This Emacs package highlights the s-exp at the current position.")
5192 (license license:gpl3+)))
5193
5194 (define-public emacs-highlight-stages
5195 (let ((commit "29cbc5b78261916da042ddb107420083da49b271")
5196 (revision "1"))
5197 (package
5198 (name "emacs-highlight-stages")
5199 (version (string-append "1.1.0" "-" revision "." (string-take commit 7)))
5200 (source
5201 (origin
5202 (method git-fetch)
5203 (uri (git-reference
5204 (url "https://github.com/zk-phi/highlight-stages.git")
5205 (commit commit)))
5206 (file-name (string-append name "-" version "-checkout"))
5207 (sha256
5208 (base32
5209 "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"))
5210 (patches
5211 (search-patches "emacs-highlight-stages-add-gexp.patch"))))
5212 (build-system emacs-build-system)
5213 (home-page "https://github.com/wigust/highlight-stages")
5214 (synopsis "Minor mode that highlights (quasi-quoted) expressions")
5215 (description "@code{highlight-stages} provides an Emacs minor mode that
5216 highlights quasi-quoted expressions.")
5217 (license license:gpl3+))))
5218
5219 (define-public emacspeak
5220 (package
5221 (name "emacspeak")
5222 (version "47.0")
5223 (source
5224 (origin
5225 (method url-fetch)
5226 (uri (string-append
5227 "https://github.com/tvraman/emacspeak/releases/download/"
5228 version "/emacspeak-" version ".tar.bz2"))
5229 (sha256
5230 (base32
5231 "0xbcc266x752y68s3g096m161irzvsqym3axzqn8rb276a8x55n7"))))
5232 (build-system gnu-build-system)
5233 (arguments
5234 '(#:make-flags (list (string-append "prefix="
5235 (assoc-ref %outputs "out")))
5236 #:phases
5237 (modify-phases %standard-phases
5238 (replace 'configure
5239 (lambda _
5240 ;; Configure Emacspeak according to etc/install.org.
5241 (setenv "SHELL" (which "sh"))
5242 (zero? (system* "make" "config"))))
5243 (add-after 'build 'build-espeak
5244 (lambda _
5245 (zero? (system* "make" "espeak"))))
5246 (replace 'install
5247 (lambda* (#:key outputs #:allow-other-keys)
5248 (let* ((out (assoc-ref outputs "out"))
5249 (bin (string-append out "/bin"))
5250 (lisp (string-append out "/share/emacs/site-lisp/emacspeak"))
5251 (info (string-append out "/share/info")))
5252 ;; According to etc/install.org, the Emacspeak directory should
5253 ;; be copied to its installation destination.
5254 (for-each
5255 (lambda (file)
5256 (copy-recursively file (string-append lisp "/" file)))
5257 '("etc" "info" "lisp" "media" "servers" "sounds" "stumpwm"
5258 "xsl"))
5259 ;; Make sure emacspeak is loaded from the correct directory.
5260 (substitute* "etc/emacspeak.sh"
5261 (("exec emacs.*$")
5262 (string-append "exec emacs -l " lisp
5263 "/lisp/emacspeak-setup.el $CL_ALL")))
5264 ;; Install the convenient startup script.
5265 (mkdir-p bin)
5266 (copy-file "etc/emacspeak.sh" (string-append bin "/emacspeak")))
5267 #t))
5268 (add-after 'install 'wrap-program
5269 (lambda* (#:key inputs outputs #:allow-other-keys)
5270 (let* ((out (assoc-ref outputs "out"))
5271 (emacspeak (string-append out "/bin/emacspeak"))
5272 (espeak (string-append (assoc-ref inputs "espeak")
5273 "/bin/espeak")))
5274 ;; The environment variable DTK_PROGRAM tells emacspeak what
5275 ;; program to use for speech.
5276 (wrap-program emacspeak
5277 `("DTK_PROGRAM" ":" prefix (,espeak)))
5278 #t))))
5279 #:tests? #f)) ; no check target
5280 (inputs
5281 `(("espeak" ,espeak)
5282 ("tcl" ,tcl)
5283 ("tclx" ,tclx)))
5284 (native-inputs `(("emacs" ,emacs-minimal)))
5285 (home-page "http://emacspeak.sourceforge.net")
5286 (synopsis "Audio desktop interface for Emacs")
5287 (description
5288 "Emacspeak is a speech interface that allows visually impaired users to
5289 interact independently and efficiently with the computer. Audio formatting
5290 --a technique pioneered by AsTeR-- and full support for W3C's Aural CSS (ACSS)
5291 allows Emacspeak to produce rich aural presentations of electronic information.
5292 By seamlessly blending all aspects of the Internet such as Web-surfing and
5293 messaging, Emacspeak speech-enables local and remote information via a
5294 consistent and well-integrated user interface.")
5295 (license license:gpl2+)))
5296
5297 (define-public emacs-adaptive-wrap
5298 (package
5299 (name "emacs-adaptive-wrap")
5300 (version "0.5.1")
5301 (source (origin
5302 (method url-fetch)
5303 (uri (string-append
5304 "http://elpa.gnu.org/packages/adaptive-wrap-"
5305 version ".el"))
5306 (sha256
5307 (base32
5308 "0qi7gjprcpywk2daivnlavwsx53hl5wcqvpxbwinvigg42vxh3ll"))))
5309 (build-system emacs-build-system)
5310 (home-page "http://elpa.gnu.org/packages/adaptive-wrap.html")
5311 (synopsis "Smart line-wrapping with wrap-prefix")
5312 (description
5313 "This Emacs package provides the @code{adaptive-wrap-prefix-mode}
5314 minor mode which sets the wrap-prefix property on the fly so that
5315 single-long-line paragraphs get word-wrapped in a way similar to what
5316 you'd get with @kbd{M-q} using @code{adaptive-fill-mode}, but without
5317 actually changing the buffer's text.")
5318 (license license:gpl3+)))
5319
5320 (define-public emacs-diff-hl
5321 (package
5322 (name "emacs-diff-hl")
5323 (version "1.8.4")
5324 (source
5325 (origin
5326 (method url-fetch)
5327 (uri (string-append "http://elpa.gnu.org/packages/diff-hl-"
5328 version ".tar"))
5329 (sha256
5330 (base32
5331 "0axhidc3cym7a2x4rpxf4745qss9s9ajyg4s9h5b4zn7v7fyp71n"))))
5332 (build-system emacs-build-system)
5333 (home-page "https://github.com/dgutov/diff-hl")
5334 (synopsis
5335 "Highlight uncommitted changes using VC")
5336 (description
5337 "@code{diff-hl-mode} highlights uncommitted changes on the side of the
5338 window (using the fringe, by default), allows you to jump between
5339 the hunks and revert them selectively.")
5340 (license license:gpl3+)))
5341
5342 (define-public emacs-diminish
5343 (package
5344 (name "emacs-diminish")
5345 (version "0.45")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (string-append
5350 "https://github.com/myrjola/diminish.el/archive/v"
5351 version ".tar.gz"))
5352 (file-name (string-append name "-" version ".tar.gz"))
5353 (sha256
5354 (base32
5355 "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9"))))
5356 (build-system emacs-build-system)
5357 (home-page "https://github.com/myrjola/diminish.el")
5358 (synopsis "Diminish minor modes with no modeline display")
5359 (description "@code{emacs-diminish} implements hiding or
5360 abbreviation of the mode line displays (lighters) of minor modes.")
5361 (license license:gpl2+)))
5362
5363 (define-public emacs-use-package
5364 (package
5365 (name "emacs-use-package")
5366 (version "2.3")
5367 (source
5368 (origin
5369 (method url-fetch)
5370 (uri (string-append
5371 "https://github.com/jwiegley/use-package/archive/"
5372 version ".tar.gz"))
5373 (file-name (string-append name "-" version ".tar.gz"))
5374 (sha256
5375 (base32
5376 "0x4h136jb3imyli6zsh7dyzjrra6pv0v6b0yk94jdng3rdfcmsf5"))))
5377 (build-system emacs-build-system)
5378 (propagated-inputs
5379 `(("emacs-diminish" ,emacs-diminish)))
5380 (arguments
5381 `(#:phases
5382 (modify-phases %standard-phases
5383 (add-before 'install 'check
5384 (lambda _
5385 (zero? (system* "emacs" "--batch" "-L" "."
5386 "-l" "use-package-tests.el"
5387 "-f" "ert-run-tests-batch-and-exit"))
5388 ;; Tests fail in this release, but have been fixed in
5389 ;; upstream commit 7956d40eed57d6c06bef36ebc174cf57d934e30d
5390 #t)))))
5391 (home-page "https://github.com/jwiegley/use-package")
5392 (synopsis "Declaration for simplifying your .emacs")
5393 (description "The use-package macro allows you to isolate package
5394 configuration in your @file{.emacs} file in a way that is both
5395 performance-oriented and tidy.")
5396 (license license:gpl2+)))
5397
5398 (define-public emacs-strace-mode
5399 (let* ((commit "6a69b4b06db6797af56f33eda5cb28af94e59f11")
5400 (revision "1"))
5401 (package
5402 (name "emacs-strace-mode")
5403 (version (string-append "0.0.2-" revision "." (string-take commit 7)))
5404 (source (origin
5405 (method git-fetch)
5406 (uri (git-reference
5407 (url "https://github.com/pkmoore/strace-mode")
5408 (commit commit)))
5409 (file-name (string-append name "-" version "-checkout"))
5410 (sha256
5411 (base32
5412 "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f"))))
5413 (build-system emacs-build-system)
5414 (home-page "https://github.com/pkmoore/strace-mode")
5415 (synopsis "Emacs major mode to highlight strace outputs")
5416 (description "@code{emacs-strace-mode} provides an Emacs major mode
5417 highlighting strace outputs.")
5418 (license license:gpl3+))))
5419
5420 (define-public emacs-default-encrypt
5421 (package
5422 (name "emacs-default-encrypt")
5423 (version "4.3")
5424 (source
5425 (origin
5426 (method url-fetch)
5427 (uri (string-append
5428 "https://www.informationelle-selbstbestimmung-im-internet.de"
5429 "/emacs/jl-encrypt" version "/jl-encrypt.el"))
5430 (file-name (string-append "jl-encrypt-" version ".el"))
5431 (sha256
5432 (base32
5433 "16i3rlfp3jxlqvndn8idylhmczync3gwmy8a019v29vyr48rnnr0"))))
5434 (build-system emacs-build-system)
5435 (home-page "https://www.informationelle-selbstbestimmung-im-internet.de/Emacs.html")
5436 (synopsis "Automatically encrypt or sign Gnus messages in Emacs")
5437 (description
5438 "DefaultEncrypt is designed to be used with Gnus in Emacs. It
5439 automatically encrypts messages that you send (e.g., email) when public keys
5440 for all recipients are available, and it protects you from accidentally
5441 sending un-encrypted messages. It can also be configured to automatically
5442 sign messages that you send. For details and instructions on how to use
5443 DefaultEncrypt, please refer to the home page or read the comments in the
5444 source file, @file{jl-encrypt.el}.")
5445 (license license:gpl3+)))
5446
5447 (define-public emacs-htmlize
5448 (package
5449 (name "emacs-htmlize")
5450 (version "1.51")
5451 (source
5452 (origin
5453 (method url-fetch)
5454 (uri (string-append
5455 "https://github.com/hniksic/emacs-htmlize/archive/release/"
5456 version ".tar.gz"))
5457 (file-name (string-append name "-" version ".tar.gz"))
5458 (sha256
5459 (base32
5460 "1fy1lybzrxl8a8r88f6p19nz8ygmvcxhxbnymkxh7jqaz25viwld"))))
5461 (build-system emacs-build-system)
5462 (home-page "https://github.com/hniksic/emacs-htmlize")
5463 (synopsis "Convert buffer text and decorations to HTML")
5464 (description "@code{emacs-htmlize} converts the buffer text and
5465 the associated decorations to HTML. Output to CSS, inline CSS and
5466 fonts is supported.")
5467 (license license:gpl2+)))
5468
5469 (define-public emacs-xmlgen
5470 (package
5471 (name "emacs-xmlgen")
5472 (version "0.5")
5473 (source
5474 (origin
5475 (method url-fetch)
5476 (uri (string-append
5477 "https://github.com/philjackson/xmlgen/archive/"
5478 version ".tar.gz"))
5479 (file-name (string-append name "-" version ".tar.gz"))
5480 (sha256
5481 (base32
5482 "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r"))))
5483 (build-system emacs-build-system)
5484 (arguments
5485 `(#:phases
5486 (modify-phases %standard-phases
5487 (add-before 'install 'check
5488 (lambda _
5489 (zero? (system* "emacs" "--batch" "-L" "."
5490 "-l" "xmlgen-test.el"
5491 "-f" "ert-run-tests-batch-and-exit")))))))
5492 (home-page "https://github.com/philjackson/xmlgen")
5493 (synopsis "S-expression to XML domain specific language (DSL) in
5494 Emacs Lisp")
5495 (description "@code{emacs-xmlgen} provides S-expression to XML
5496 conversion for Emacs Lisp.")
5497 (license license:gpl2+)))
5498
5499 (define-public emacs-cdlatex
5500 (package
5501 (name "emacs-cdlatex")
5502 (version "4.7")
5503 (source
5504 (origin
5505 (method url-fetch)
5506 (uri (string-append
5507 "https://github.com/cdominik/cdlatex/archive/"
5508 version ".tar.gz"))
5509 (file-name (string-append name "-" version ".tar.gz"))
5510 (sha256
5511 (base32
5512 "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp"))))
5513 (build-system emacs-build-system)
5514 (home-page "https://github.com/cdominik/cdlatex")
5515 (synopsis "Fast Emacs input methods for LaTeX environments and
5516 math")
5517 (description "CDLaTeX is an Emacs minor mode supporting fast
5518 insertion of environment templates and math in LaTeX. Similar
5519 commands are also offered as part of the AUCTeX package, but it is not
5520 the same - CDLaTeX focuses on speediness for inserting LaTeX
5521 constructs.")
5522 (license license:gpl3+)))
5523
5524 (define-public emacs-cnfonts
5525 (package
5526 (name "emacs-cnfonts")
5527 (version "0.9.1")
5528 (source (origin
5529 (method url-fetch)
5530 (uri (string-append
5531 "https://github.com/tumashu/cnfonts/archive/v"
5532 version ".tar.gz"))
5533 (file-name (string-append name "-" version ".tar.gz"))
5534 (sha256
5535 (base32
5536 "1l6cgcvc6md1zq97ccczankpyi0k4vjx6apflny6kjq3p33lyhf4"))))
5537 (build-system emacs-build-system)
5538 (home-page "https://github.com/tumashu/cnfonts")
5539 (synopsis "Emacs Chinese fonts setup tool")
5540 (description "cnfonts is a Chinese fonts setup tool, allowing for easy
5541 configuration of Chinese fonts.")
5542 (license license:gpl2+)))
5543
5544 (define-public emacs-php-mode
5545 (package
5546 (name "emacs-php-mode")
5547 (version "20171225.342")
5548 (source (origin
5549 (method url-fetch)
5550 (uri (string-append
5551 "https://melpa.org/packages/php-mode-"
5552 version ".tar"))
5553 (sha256
5554 (base32
5555 "1zz682f34v4wsm2dyj1gnrnvsrqdq1cy7j8p6cvc398w2fziyg3q"))))
5556 (build-system emacs-build-system)
5557 (home-page "https://github.com/ejmr/php-mode")
5558 (synopsis "Major mode for editing PHP code")
5559 (description "@code{php-mode} is a major mode for editing PHP source
5560 code. It's an extension of C mode; thus it inherits all C mode's navigation
5561 functionality. But it colors according to the PHP grammar and indents
5562 according to the PEAR coding guidelines. It also includes a couple handy
5563 IDE-type features such as documentation search and a source and class
5564 browser.")
5565 (license license:gpl3+)))
5566
5567 (define-public emacs-pos-tip
5568 (package
5569 (name "emacs-pos-tip")
5570 (version "0.4.6")
5571 (source (origin
5572 (method url-fetch)
5573 (uri (string-append
5574 "https://github.com/pitkali/pos-tip/archive/"
5575 version ".tar.gz"))
5576 (file-name (string-append name "-" version ".tar.gz"))
5577 (sha256
5578 (base32
5579 "12jqfy26vjk7lq0aa8yn8zqj8c85fkvx7y9prj0pcn4wqiz2ad2r"))))
5580 (build-system emacs-build-system)
5581 ;; The following functions and variables needed by emacs-pos-tip are
5582 ;; not included in emacs-minimal:
5583 ;; x-display-pixel-width, x-display-pixel-height, x-show-tip
5584 (arguments `(#:emacs ,emacs))
5585 (home-page "https://github.com/pitkali/pos-tip")
5586 (synopsis "Show tooltip at point")
5587 (description "The standard library tooltip.el provides a function for
5588 displaying a tooltip at the mouse position. However, locating a tooltip at an
5589 arbitrary buffer position in a window is not easy. Pos-tip provides such a
5590 function to be used by other frontend programs.")
5591 (license license:gpl2+)))
5592
5593 (define-public emacs-pyim-basedict
5594 (package
5595 (name "emacs-pyim-basedict")
5596 (version "0.3.1")
5597 (source (origin
5598 (method url-fetch)
5599 (uri (string-append
5600 "https://github.com/tumashu/pyim-basedict/archive/v"
5601 version ".tar.gz"))
5602 (file-name (string-append name "-" version ".tar.gz"))
5603 (sha256
5604 (base32
5605 "0nfgxviavkgrpyfsw60xsws4fk51fcmgl8fp6zf4ibqjjbp53n3n"))))
5606 (build-system emacs-build-system)
5607 (home-page "https://github.com/tumashu/pyim-basedict")
5608 (synopsis "Input method dictionary of pyim")
5609 (description "Pyim-basedict is the default pinyin input method dictionary,
5610 containing words from the rime project.")
5611 (license license:gpl2+)))
5612
5613 (define-public emacs-pyim
5614 (package
5615 (name "emacs-pyim")
5616 (version "1.6.4")
5617 (source (origin
5618 (method url-fetch)
5619 (uri (string-append
5620 "https://github.com/tumashu/pyim/archive/v"
5621 version ".tar.gz"))
5622 (file-name (string-append name "-" version ".tar.gz"))
5623 (sha256
5624 (base32
5625 "0hfg8q9hcjifvnlghw2g94dfxfirms2psq2ghqb28fhkf0lks13r"))))
5626 (build-system emacs-build-system)
5627 (propagated-inputs
5628 `(("emacs-async" ,emacs-async)
5629 ("emacs-pyim-basedict" ,emacs-pyim-basedict)
5630 ("emacs-popup" ,emacs-popup)
5631 ("emacs-pos-tip" ,emacs-pos-tip)))
5632 (home-page "https://github.com/tumashu/pyim")
5633 (synopsis "Chinese input method")
5634 (description "Chinese input method which supports quanpin, shuangpin, wubi
5635 and cangjie.")
5636 (license license:gpl2+)))
5637
5638 (define-public emacs-el2org
5639 (package
5640 (name "emacs-el2org")
5641 (version "0.6.0")
5642 (source (origin
5643 (method url-fetch)
5644 (uri (string-append
5645 "https://github.com/tumashu/el2org/archive/v"
5646 version ".tar.gz"))
5647 (file-name (string-append name "-" version ".tar.gz"))
5648 (sha256
5649 (base32
5650 "0gd3km1swwvg2w0kdi7370f54wgrflxn63gjgssfjc1iyc9sbqwq"))))
5651 (build-system emacs-build-system)
5652 (home-page "https://github.com/tumashu/el2org")
5653 (synopsis "Convert Emacs-lisp file to org file")
5654 (description "El2org is a simple tool, which can convert Emacs-lisp file
5655 to org file, you can use this tool to write orgify commentary.")
5656 (license license:gpl2+)))
5657
5658 (define-public emacs-mustache
5659 (package
5660 (name "emacs-mustache")
5661 (version "0.23")
5662 (source (origin
5663 (method url-fetch)
5664 (uri (string-append
5665 "https://github.com/Wilfred/mustache.el/archive/"
5666 version ".tar.gz"))
5667 (file-name (string-append name "-" version ".tar.gz"))
5668 (sha256
5669 (base32
5670 "0k9lcgil7kykkv1ylrgwy1g13ldjjmgi2cwmysgyb2vlj3jbwpdj"))))
5671 (build-system emacs-build-system)
5672 (propagated-inputs
5673 `(("emacs-dash" ,emacs-dash)
5674 ("emacs-ht" ,emacs-ht)
5675 ("emacs-s" ,emacs-s)))
5676 (home-page "https://github.com/Wilfred/mustache.el")
5677 (synopsis "Mustache templating library for Emacs")
5678 (description "Mustache templating library for Emacs, mustache is
5679 a simple web template system, which is described as a logic-less system
5680 because it lacks any explicit control flow statements, both looping and
5681 conditional evaluation can be achieved using section tags processing lists
5682 and lambdas.")
5683 (license license:gpl3+)))
5684
5685 (define-public emacs-org2web
5686 (package
5687 (name "emacs-org2web")
5688 (version "0.9.1")
5689 (source (origin
5690 (method url-fetch)
5691 (uri (string-append
5692 "https://github.com/tumashu/org2web/archive/v"
5693 version ".tar.gz"))
5694 (file-name (string-append name "-" version ".tar.gz"))
5695 (sha256
5696 (base32
5697 "1c0ixcphlhp4c4qdiwq40bc3yp1gp1llp8pxrk4s7ny9n68s52zp"))))
5698 (build-system emacs-build-system)
5699 (propagated-inputs
5700 `(("emacs-dash" ,emacs-dash)
5701 ("emacs-el2org" ,emacs-el2org)
5702 ("emacs-ht" ,emacs-ht)
5703 ("emacs-mustache" ,emacs-mustache)
5704 ("emacs-simple-httpd" ,emacs-simple-httpd)))
5705 (home-page "https://github.com/tumashu/org2web")
5706 (synopsis "Static site generator based on org-mode ")
5707 (description "Org2web is a static site generator based on org-mode,
5708 which code derived from Kelvin H's org-page.")
5709 (license license:gpl2+)))
5710
5711 (define-public emacs-xelb
5712 (package
5713 (name "emacs-xelb")
5714 (version "0.12")
5715 (source (origin
5716 (method url-fetch)
5717 (uri (string-append "https://elpa.gnu.org/packages/xelb-"
5718 version ".tar"))
5719 (sha256
5720 (base32
5721 "0i9n0f3ibj4a5pwcsvwrah9m0fz32m0x6a9wsmjn3li20v8pcb81"))))
5722 (build-system emacs-build-system)
5723 ;; The following functions and variables needed by emacs-xelb are
5724 ;; not included in emacs-minimal:
5725 ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
5726 ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
5727 ;; x-display-pixel-width, x-display-pixel-height
5728 (arguments
5729 `(#:emacs ,emacs
5730 #:phases
5731 (modify-phases %standard-phases
5732 (add-after 'unpack 'regenerate-el-files
5733 (lambda* (#:key inputs #:allow-other-keys)
5734 (zero? (system* "make"
5735 (string-append "PROTO_PATH="
5736 (assoc-ref inputs "xcb-proto")
5737 "/share/xcb")
5738 (string-append "EMACS_BIN="
5739 (assoc-ref inputs "emacs")
5740 "/bin/emacs -Q"))))))))
5741 (native-inputs `(("xcb-proto" ,xcb-proto)))
5742 (home-page "https://github.com/ch11ng/xelb")
5743 (synopsis "X protocol Emacs Lisp binding")
5744 (description "@code{emacs-xelb} is a pure Emacs Lisp implementation of the
5745 X11 protocol based on the XML description files from the XCB project. It
5746 features an object-oriented API and permits a certain degree of concurrency.
5747 It should enable you to implement low-level X11 applications.")
5748 (license license:gpl3+)))
5749
5750 (define-public emacs-exwm
5751 (package
5752 (name "emacs-exwm")
5753 (version "0.16")
5754 (synopsis "Emacs X window manager")
5755 (source (origin
5756 (method url-fetch)
5757 (uri (string-append "https://elpa.gnu.org/packages/exwm-"
5758 version ".tar"))
5759 (sha256
5760 (base32
5761 "0c4w5k9lzqj8yzhdqipdb4fs7ld2qklc6s137104jnfdvmrwcv2i"))))
5762 (build-system emacs-build-system)
5763 (propagated-inputs
5764 `(("emacs-xelb" ,emacs-xelb)))
5765 (inputs
5766 `(("xhost" ,xhost)
5767 ("dbus" ,dbus)))
5768 ;; The following functions and variables needed by emacs-exwm are
5769 ;; not included in emacs-minimal:
5770 ;; scroll-bar-mode, fringe-mode
5771 ;; x-display-pixel-width, x-display-pixel-height
5772 (arguments
5773 `(#:emacs ,emacs
5774 #:phases
5775 (modify-phases %standard-phases
5776 (add-after 'build 'install-xsession
5777 (lambda* (#:key inputs outputs #:allow-other-keys)
5778 (let* ((out (assoc-ref outputs "out"))
5779 (xsessions (string-append out "/share/xsessions"))
5780 (bin (string-append out "/bin"))
5781 (exwm-executable (string-append bin "/exwm")))
5782 ;; Add a .desktop file to xsessions
5783 (mkdir-p xsessions)
5784 (mkdir-p bin)
5785 (with-output-to-file
5786 (string-append xsessions "/exwm.desktop")
5787 (lambda _
5788 (format #t "[Desktop Entry]~@
5789 Name=~a~@
5790 Comment=~a~@
5791 Exec=~a~@
5792 TryExec=~@*~a~@
5793 Type=Application~%" ,name ,synopsis exwm-executable)))
5794 ;; Add a shell wrapper to bin
5795 (with-output-to-file exwm-executable
5796 (lambda _
5797 (format #t "#!~a ~@
5798 ~a +SI:localuser:$USER ~@
5799 exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
5800 (string-append (assoc-ref inputs "bash") "/bin/sh")
5801 (string-append (assoc-ref inputs "xhost") "/bin/xhost")
5802 (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
5803 (string-append (assoc-ref inputs "emacs") "/bin/emacs")
5804 '(cond
5805 ((file-exists-p "~/.exwm")
5806 (load-file "~/.exwm"))
5807 ((not (featurep 'exwm))
5808 (require 'exwm)
5809 (require 'exwm-config)
5810 (exwm-config-default)
5811 (message (concat "exwm configuration not found. "
5812 "Falling back to default configuration...")))))))
5813 (chmod exwm-executable #o555)
5814 #t))))))
5815 (home-page "https://github.com/ch11ng/exwm")
5816 (description "EXWM is a full-featured tiling X window manager for Emacs
5817 built on top of XELB.")
5818 (license license:gpl3+)))
5819
5820 (define-public emacs-switch-window
5821 (package
5822 (name "emacs-switch-window")
5823 (version "1.5.1")
5824 (source (origin
5825 (method url-fetch)
5826 (uri (string-append
5827 "https://github.com/dimitri/switch-window/archive/v"
5828 version ".tar.gz"))
5829 (file-name (string-append name "-" version ".tar.gz"))
5830 (sha256
5831 (base32
5832 "07f99apxscwvsp2bjxsbi462c433kcglrjh6xl0gyafs1nvvvnd8"))))
5833 (build-system emacs-build-system)
5834 (home-page "https://github.com/dimitri/switch-window")
5835 (synopsis "Emacs window switch tool")
5836 (description "Switch-window is an emacs window switch tool, which
5837 offer a visual way to choose a window to switch to, delete, split or
5838 other operations.")
5839 (license license:wtfpl2)))
5840
5841 (define-public emacs-exwm-x
5842 (package
5843 (name "emacs-exwm-x")
5844 (version "1.7.2")
5845 (synopsis "Derivative window manager based on EXWM")
5846 (source (origin
5847 (method url-fetch)
5848 (uri (string-append
5849 "https://github.com/tumashu/exwm-x/archive/v"
5850 version ".tar.gz"))
5851 (file-name (string-append name "-" version ".tar.gz"))
5852 (sha256
5853 (base32
5854 "1ny13i82fb72917jgl0ndwjg1x6l9f8gfhcx7cwlwhh5saq23mvy"))))
5855 (build-system emacs-build-system)
5856 (propagated-inputs
5857 `(("emacs-exwm" ,emacs-exwm)
5858 ("emacs-switch-window" ,emacs-switch-window)
5859 ("emacs-ivy" ,emacs-ivy)
5860 ("emacs-use-package" ,emacs-use-package)))
5861 (inputs
5862 `(("xhost" ,xhost)
5863 ("dbus" ,dbus)))
5864 ;; Need emacs instead of emacs-minimal,
5865 ;; for emacs's bin path will be inserted into bin/exwm-x file.
5866 (arguments
5867 `(#:emacs ,emacs
5868 #:phases
5869 (modify-phases %standard-phases
5870 (add-after 'build 'install-xsession
5871 (lambda* (#:key inputs outputs #:allow-other-keys)
5872 (let* ((out (assoc-ref outputs "out"))
5873 (xsessions (string-append out "/share/xsessions"))
5874 (bin (string-append out "/bin"))
5875 (exwm-executable (string-append bin "/exwm-x")))
5876 ;; Add a .desktop file to xsessions
5877 (mkdir-p xsessions)
5878 (mkdir-p bin)
5879 (with-output-to-file
5880 (string-append xsessions "/exwm-x.desktop")
5881 (lambda _
5882 (format #t "[Desktop Entry]~@
5883 Name=~a~@
5884 Comment=~a~@
5885 Exec=~a~@
5886 TryExec=~@*~a~@
5887 Type=Application~%" ,name ,synopsis exwm-executable)))
5888 ;; Add a shell wrapper to bin
5889 (with-output-to-file exwm-executable
5890 (lambda _
5891 (format #t "#!~a ~@
5892 ~a +SI:localuser:$USER ~@
5893 exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
5894 (string-append (assoc-ref inputs "bash") "/bin/sh")
5895 (string-append (assoc-ref inputs "xhost") "/bin/xhost")
5896 (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
5897 (string-append (assoc-ref inputs "emacs") "/bin/emacs")
5898 '(require 'exwmx-loader))))
5899 (chmod exwm-executable #o555)
5900 #t))))))
5901 (home-page "https://github.com/tumashu/exwm-x")
5902 (description "EXWM-X is a derivative window manager based on EXWM, with focus
5903 on mouse-control.")
5904 (license license:gpl3+)))
5905
5906 (define-public emacs-gnuplot
5907 (package
5908 (name "emacs-gnuplot")
5909 (version "0.7.0")
5910 (source
5911 (origin
5912 (method url-fetch)
5913 (uri (string-append
5914 "https://github.com/bruceravel/gnuplot-mode/archive/"
5915 version ".tar.gz"))
5916 (file-name (string-append name "-" version ".tar.gz"))
5917 (sha256
5918 (base32
5919 "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i"))))
5920 (build-system gnu-build-system)
5921 (native-inputs `(("emacs" ,emacs-minimal)))
5922 (arguments
5923 (let ((elisp-dir (string-append "/share/emacs/site-lisp/guix.d"
5924 "/gnuplot-" version)))
5925 `(#:modules ((guix build gnu-build-system)
5926 (guix build utils)
5927 (guix build emacs-utils))
5928 #:imported-modules (,@%gnu-build-system-modules
5929 (guix build emacs-utils))
5930 #:configure-flags
5931 (list (string-append "EMACS=" (assoc-ref %build-inputs "emacs")
5932 "/bin/emacs")
5933 (string-append "--with-lispdir=" %output ,elisp-dir))
5934 #:phases
5935 (modify-phases %standard-phases
5936 (add-after 'install 'generate-autoloads
5937 (lambda* (#:key outputs #:allow-other-keys)
5938 (emacs-generate-autoloads
5939 "gnuplot"
5940 (string-append (assoc-ref outputs "out") ,elisp-dir))
5941 #t))))))
5942 (home-page "https://github.com/bruceravel/gnuplot-mode")
5943 (synopsis "Emacs major mode for interacting with gnuplot")
5944 (description "@code{emacs-gnuplot} is an emacs major mode for interacting
5945 with gnuplot.")
5946 (license license:gpl2+)))
5947
5948 (define-public emacs-transpose-frame
5949 (package
5950 (name "emacs-transpose-frame")
5951 (version "0.1.0")
5952 (source
5953 (origin
5954 (method url-fetch)
5955 (uri "http://www.emacswiki.org/emacs/download/transpose-frame.el")
5956 (file-name (string-append "transpose-frame-" version ".el"))
5957 (sha256
5958 (base32
5959 "1f67yksgw9s6j0033hmqzaxx2a93jm11sd5ys7cc3li5gfh680m4"))))
5960 (build-system emacs-build-system)
5961 (home-page "https://www.emacswiki.org/emacs/TransposeFrame")
5962 (synopsis "Transpose window arrangement in current frame")
5963 (description "@code{emacs-transpose-frame} provides some interactive
5964 functions which allows users to transpose windows arrangement in currently
5965 selected frame.")
5966 (license license:bsd-2)))
5967
5968 (define-public emacs-key-chord
5969 (package
5970 (name "emacs-key-chord")
5971 (version "0.6")
5972 (source
5973 (origin
5974 (method url-fetch)
5975 (uri "https://www.emacswiki.org/emacs/download/key-chord.el")
5976 (file-name (string-append "key-chord-" version ".el"))
5977 (sha256
5978 (base32
5979 "03m44pqggfrd53nh9dvpdjgm0rvca34qxmd30hr33hzprzjambxg"))))
5980 (build-system emacs-build-system)
5981 (home-page "https://www.emacswiki.org/emacs/key-chord.el")
5982 (synopsis "Map pairs of simultaneously pressed keys to Emacs commands")
5983 (description "@code{emacs-key-chord} provides @code{key-chord-mode}, a
5984 mode for binding key chords to commands. A key chord is defined as two keys
5985 pressed simultaneously or a single key quickly pressed twice.")
5986 (license license:gpl2+)))
5987
5988 (define-public emacs-evil-surround
5989 (package
5990 (name "emacs-evil-surround")
5991 (version "1.0.0")
5992 (source
5993 (origin
5994 (method url-fetch)
5995 (uri (string-append
5996 "https://github.com/timcharper/evil-surround/archive/v"
5997 version ".tar.gz"))
5998 (file-name (string-append name "-" version ".tar.gz"))
5999 (sha256
6000 (base32
6001 "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r"))))
6002 (build-system emacs-build-system)
6003 (propagated-inputs
6004 `(("emacs-evil" ,emacs-evil)))
6005 (home-page "https://github.com/timcharper/evil-surround")
6006 (synopsis "Easily modify surrounding parantheses and quotes")
6007 (description "@code{emacs-evil-surround} allows easy deletion, change and
6008 addition of surrounding pairs, such as parantheses and quotes, in evil mode.")
6009 (license license:gpl3+)))
6010
6011 (define-public emacs-evil-commentary
6012 (package
6013 (name "emacs-evil-commentary")
6014 (version "2.1.1")
6015 (source
6016 (origin
6017 (method url-fetch)
6018 (uri (string-append
6019 "https://github.com/linktohack/evil-commentary/archive/v"
6020 version ".tar.gz"))
6021 (file-name (string-append name "-" version ".tar.gz"))
6022 (sha256
6023 (base32
6024 "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230"))))
6025 (build-system emacs-build-system)
6026 (propagated-inputs
6027 `(("emacs-evil" ,emacs-evil)))
6028 (home-page "https://github.com/linktohack/evil-commentary")
6029 (synopsis "Comment out code in evil mode")
6030 (description "@code{emacs-evil-commentary} adds keybindings to easily
6031 comment out lines of code in evil mode. It provides @code{gcc} to comment out
6032 lines, and @code{gc} to comment out the target of a motion.")
6033 (license license:gpl3+)))
6034
6035 ;; Tests for emacs-ansi have a circular dependency with ert-runner, and
6036 ;; therefore cannot be run
6037 (define-public emacs-ansi
6038 (package
6039 (name "emacs-ansi")
6040 (version "0.4.1")
6041 (source
6042 (origin
6043 (method url-fetch)
6044 (uri (string-append "https://github.com/rejeep/ansi.el/archive/v"
6045 version ".tar.gz"))
6046 (file-name (string-append name "-" version ".tar.gz"))
6047 (sha256
6048 (base32
6049 "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8"))))
6050 (build-system emacs-build-system)
6051 (propagated-inputs
6052 `(("emacs-dash" ,emacs-dash)
6053 ("emacs-s" ,emacs-s)))
6054 (home-page "https://github.com/rejeep/ansi.el")
6055 (synopsis "Convert strings to ANSI")
6056 (description "@code{emacs-ansi} defines functions that turns simple
6057 strings to ANSI strings. Turning a string into an ANSI string can be to add
6058 color to a text, add color in the background of a text or adding a style, such
6059 as bold, underscore or italic.")
6060 (license license:gpl3+)))
6061
6062 ;; Tests for emacs-commander have a circular dependency with ert-runner, and
6063 ;; therefore cannot be run
6064 (define-public emacs-commander
6065 (package
6066 (name "emacs-commander")
6067 (version "0.7.0")
6068 (source
6069 (origin
6070 (method url-fetch)
6071 (uri (string-append "https://github.com/rejeep/commander.el/archive/v"
6072 version ".tar.gz"))
6073 (file-name (string-append name "-" version ".tar.gz"))
6074 (sha256
6075 (base32
6076 "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y"))))
6077 (build-system emacs-build-system)
6078 (propagated-inputs
6079 `(("emacs-dash" ,emacs-dash)
6080 ("emacs-f" ,emacs-f)
6081 ("emacs-s" ,emacs-s)))
6082 (home-page "https://github.com/rejeep/commander.el")
6083 (synopsis "Emacs command line parser")
6084 (description "@code{emacs-commander} provides command line parsing for
6085 Emacs.")
6086 (license license:gpl3+)))
6087
6088 ;; Tests for ert-runner have a circular dependency with ecukes, and therefore
6089 ;; cannot be run
6090 (define-public ert-runner
6091 (let ((dependencies
6092 `(("emacs-ansi" ,emacs-ansi)
6093 ("emacs-commander" ,emacs-commander)
6094 ("emacs-dash" ,emacs-dash)
6095 ("emacs-f" ,emacs-f)
6096 ("emacs-s" ,emacs-s)
6097 ("emacs-shut-up" ,emacs-shut-up))))
6098 (package
6099 (name "ert-runner")
6100 (version "0.7.0")
6101 (source
6102 (origin
6103 (method url-fetch)
6104 (uri (string-append "https://github.com/rejeep/ert-runner.el/archive/v"
6105 version ".tar.gz"))
6106 (file-name (string-append name "-" version ".tar.gz"))
6107 (sha256
6108 (base32
6109 "1657nck9i96a4xgl8crfqq0s8gflzp21pkkzwg6m3z5npjxklgwp"))))
6110 (build-system emacs-build-system)
6111 (inputs dependencies)
6112 (arguments
6113 `(#:phases
6114 (modify-phases %standard-phases
6115 (add-after 'install 'install-executable
6116 (lambda* (#:key inputs outputs #:allow-other-keys)
6117 (let ((out (assoc-ref outputs "out")))
6118 (substitute* "bin/ert-runner"
6119 (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)")
6120 (string-append "ERT_RUNNER=\"" out
6121 "/share/emacs/site-lisp/guix.d/"
6122 ,name "-" ,version)))
6123 (install-file "bin/ert-runner" (string-append out "/bin"))
6124 (wrap-program (string-append out "/bin/ert-runner")
6125 (list "EMACSLOADPATH" ":" '=
6126 (append
6127 ,(match dependencies
6128 (((labels packages) ...)
6129 `(map (lambda (label package version)
6130 (string-append (assoc-ref inputs label)
6131 "/share/emacs/site-lisp/guix.d/"
6132 (string-drop package 6)
6133 "-" version))
6134 ',labels
6135 ',(map package-name packages)
6136 ',(map package-version packages))))
6137 ;; empty element to include the default load path as
6138 ;; determined by emacs' standard initialization
6139 ;; procedure
6140 (list ""))))
6141 #t))))
6142 #:include (cons* "^reporters/.*\\.el$" %default-include)))
6143 (home-page "https://github.com/rejeep/ert-runner.el")
6144 (synopsis "Opinionated Ert testing workflow")
6145 (description "@code{ert-runner} is a tool for Emacs projects tested
6146 using ERT. It assumes a certain test structure setup and can therefore make
6147 running tests easier.")
6148 (license license:gpl3+))))
6149
6150 (define-public emacs-disable-mouse
6151 (package
6152 (name "emacs-disable-mouse")
6153 (version "0.2")
6154 (source
6155 (origin
6156 (method url-fetch)
6157 (uri (string-append
6158 "https://github.com/purcell/disable-mouse/archive/"
6159 version ".tar.gz"))
6160 (file-name (string-append name "-" version ".tar.gz"))
6161 (sha256
6162 (base32
6163 "0haqpq23r1wx04lsqrrg3p5visg9hx5i36dg55ab003wfsrlrzbc"))))
6164 (build-system emacs-build-system)
6165 (home-page "https://github.com/purcell/disable-mouse")
6166 (synopsis "Disable mouse commands globally")
6167 (description
6168 "Provides @code{disable-mouse-mode} and @code{global-disable-mouse-mode},
6169 pair of minor modes which suppress all mouse events by intercepting them and
6170 running a customisable handler command (@code{ignore} by default). ")
6171 (license license:gpl3+)))
6172
6173 (define-public emacs-json-reformat
6174 (package
6175 (name "emacs-json-reformat")
6176 (version "0.0.6")
6177 (source
6178 (origin
6179 (method url-fetch)
6180 (uri (string-append "https://github.com/gongo/json-reformat/archive/"
6181 version ".tar.gz"))
6182 (file-name (string-append name "-" version ".tar.gz"))
6183 (sha256
6184 (base32
6185 "11fbq4scrgr7m0iwnzcrn2g7xvqwm2gf82sa7zy1l0nil7265p28"))
6186 (patches (search-patches "emacs-json-reformat-fix-tests.patch"))))
6187 (build-system emacs-build-system)
6188 (propagated-inputs `(("emacs-undercover" ,emacs-undercover)))
6189 (inputs
6190 `(("emacs-dash" ,emacs-dash) ; for tests
6191 ("emacs-shut-up" ,emacs-shut-up))) ; for tests
6192 (arguments
6193 `(#:phases
6194 (modify-phases %standard-phases
6195 (add-before 'install 'check
6196 (lambda* (#:key inputs #:allow-other-keys)
6197 (zero? (system* "emacs" "--batch" "-L" "."
6198 "-L" (string-append
6199 (assoc-ref inputs "emacs-undercover")
6200 "/share/emacs/site-lisp/guix.d/undercover-"
6201 ,(package-version emacs-undercover))
6202 "-L" (string-append
6203 (assoc-ref inputs "emacs-dash")
6204 "/share/emacs/site-lisp/guix.d/dash-"
6205 ,(package-version emacs-dash))
6206 "-L" (string-append
6207 (assoc-ref inputs "emacs-shut-up")
6208 "/share/emacs/site-lisp/guix.d/shut-up-"
6209 ,(package-version emacs-shut-up))
6210 "-l" "test/test-helper.el"
6211 "-l" "test/json-reformat-test.el"
6212 "-f" "ert-run-tests-batch-and-exit"))
6213 #t)))))
6214 (home-page "https://github.com/gongo/json-reformat")
6215 (synopsis "Reformatting tool for JSON")
6216 (description "@code{json-reformat} provides a reformatting tool for
6217 @url{http://json.org/, JSON}.")
6218 (license license:gpl3+)))
6219
6220 (define-public emacs-json-snatcher
6221 (package
6222 (name "emacs-json-snatcher")
6223 (version "1.0.0")
6224 (source
6225 (origin
6226 (method url-fetch)
6227 (uri (string-append "https://github.com/Sterlingg/json-snatcher/archive/"
6228 version ".tar.gz"))
6229 (file-name (string-append name "-" version ".tar.gz"))
6230 (sha256
6231 (base32
6232 "1nfiwsifpdiz0lbrqa77nl0crnfrv5h85ans9b0g5rggnmyshcfb"))))
6233 (build-system emacs-build-system)
6234 (home-page "https://github.com/sterlingg/json-snatcher")
6235 (synopsis "Grabs the path to JSON values in a JSON file")
6236 (description "@code{emacs-json-snatcher} grabs the path to JSON values in
6237 a @url{http://json.org/, JSON} file.")
6238 (license license:gpl3+)))
6239
6240 (define-public emacs-json-mode
6241 (package
6242 (name "emacs-json-mode")
6243 (version "1.7.0")
6244 (source
6245 (origin
6246 (method url-fetch)
6247 (uri (string-append "https://github.com/joshwnj/json-mode/archive/"
6248 "v" version ".tar.gz"))
6249 (file-name (string-append name "-" version ".tar.gz"))
6250 (sha256
6251 (base32
6252 "06h45p4cn767pk9sqi2zb1c65wy5gyyijqxzpglp80zwxhvajdz5"))))
6253 (build-system emacs-build-system)
6254 (propagated-inputs
6255 `(("emacs-json-reformat" ,emacs-json-reformat)
6256 ("emacs-json-snatcher" ,emacs-json-snatcher)))
6257 (home-page "https://github.com/joshwnj/json-mode")
6258 (synopsis "Major mode for editing JSON files")
6259 (description "@code{json-mode} extends the builtin js-mode syntax
6260 highlighting.")
6261 (license license:gpl3+)))
6262
6263 (define-public emacs-restclient
6264 (let ((commit "07a3888bb36d0e29608142ebe743b4362b800f40")
6265 (revision "1")) ;Guix package revision,
6266 ;upstream doesn't have official releases
6267 (package
6268 (name "emacs-restclient")
6269 (version (string-append revision "."
6270 (string-take commit 7)))
6271 (source (origin
6272 (method git-fetch)
6273 (uri (git-reference
6274 (url "https://github.com/pashky/restclient.el.git")
6275 (commit commit)))
6276 (sha256
6277 (base32
6278 "00lmjhb5im1kgrp54yipf1h9pshxzgjlg71yf2rq5n973gvb0w0q"))
6279 (file-name (git-file-name name version))))
6280 (build-system emacs-build-system)
6281 (propagated-inputs
6282 `(("emacs-helm" ,emacs-helm)))
6283 (home-page "https://github.com/pashky/restclient.el")
6284 (synopsis "Explore and test HTTP REST webservices")
6285 (description
6286 "This tool allows for testing and exploration of HTTP REST Web services
6287 from within Emacs. Restclient runs queries from a plan-text query sheet,
6288 displays results pretty-printed in XML or JSON with @code{restclient-mode}")
6289 (license license:public-domain))))
6290
6291 (define-public emacs-dired-hacks
6292 (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36")
6293 (revision "1"))
6294 (package
6295 (name "emacs-dired-hacks")
6296 (version (string-append "0.0.1-" revision "."
6297 (string-take commit 7)))
6298 (source (origin
6299 (method git-fetch)
6300 (uri (git-reference
6301 (url "https://github.com/Fuco1/dired-hacks.git")
6302 (commit commit)))
6303 (file-name (string-append name "-" version "-checkout"))
6304 (sha256
6305 (base32
6306 "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx"))))
6307 (build-system emacs-build-system)
6308 (propagated-inputs
6309 `(("emacs-dash" ,emacs-dash)
6310 ("emacs-f" ,emacs-f)
6311 ("emacs-s" ,emacs-s)))
6312 (home-page "https://github.com/Fuco1/dired-hacks")
6313 (synopsis
6314 "Collection of useful dired additions")
6315 (description
6316 "Collection of Emacs dired mode additions:
6317 @itemize
6318 @item dired-avfs
6319 @item dired-columns
6320 @item dired-filter
6321 @item dired-hacks-utils
6322 @item dired-images
6323 @item dired-list
6324 @item dired-narrow
6325 @item dired-open
6326 @item dired-rainbow
6327 @item dired-ranger
6328 @item dired-subtree
6329 @item dired-tagsistant
6330 @end itemize\n")
6331 (license license:gpl3+))))
6332
6333 (define-public emacs-which-key
6334 (package
6335 (name "emacs-which-key")
6336 (version "3.0.2")
6337 (source
6338 (origin
6339 (method url-fetch)
6340 (uri (string-append
6341 "https://github.com/justbur/emacs-which-key/archive/v"
6342 version ".tar.gz"))
6343 (sha256
6344 (base32
6345 "1xvd70cwq9n31f28viyjxmr3nn8l153gsy6scpszvgvjxkiikv24"))
6346 (file-name (string-append name "-" version ".tar.gz"))))
6347 (build-system emacs-build-system)
6348 (arguments
6349 `(#:phases
6350 (modify-phases %standard-phases
6351 (add-before 'install 'check
6352 (lambda _
6353 (zero? (system* "emacs" "--batch" "-L" "."
6354 "-l" "which-key-tests.el"
6355 "-f" "ert-run-tests-batch-and-exit")))))))
6356 (home-page "https://github.com/justbur/emacs-which-key")
6357 (synopsis "Display available key bindings in popup")
6358 (description
6359 "@code{emacs-which-key} is a minor mode for Emacs that displays the key
6360 bindings following your currently entered incomplete command (a prefix) in a
6361 popup. For example, after enabling the minor mode if you enter C-x and wait
6362 for the default of 1 second, the minibuffer will expand with all of the
6363 available key bindings that follow C-x (or as many as space allows given your
6364 settings).")
6365 (license license:gpl3+)))
6366
6367 (define-public emacs-ws-butler
6368 (package
6369 (name "emacs-ws-butler")
6370 (version "0.6")
6371 (source (origin
6372 (method git-fetch)
6373 (uri (git-reference
6374 (url "https://github.com/lewang/ws-butler.git")
6375 (commit "323b651dd70ee40a25accc940b8f80c3a3185205")))
6376 (file-name (string-append name "-" version "-checkout"))
6377 (sha256
6378 (base32
6379 "1a4b0lsmwq84qfx51c5xy4fryhb1ysld4fhgw2vr37izf53379sb"))))
6380 (build-system emacs-build-system)
6381 (native-inputs
6382 `(("ert-runner" ,ert-runner)))
6383 (arguments
6384 `(#:phases
6385 (modify-phases %standard-phases
6386 (add-before 'install 'check
6387 (lambda _
6388 (zero? (system* "ert-runner" "tests")))))))
6389 (home-page "https://github.com/lewang/ws-butler")
6390 (synopsis "Trim spaces from end of lines")
6391 (description
6392 "This Emacs package automatically and unobtrusively trims whitespace
6393 characters from end of lines.")
6394 (license license:gpl3+)))
6395
6396 (define-public emacs-org-edit-latex
6397 (package
6398 (name "emacs-org-edit-latex")
6399 (version "0.8.0")
6400 (source
6401 (origin
6402 (method url-fetch)
6403 (uri (string-append
6404 "https://github.com/et2010/org-edit-latex/archive/v"
6405 version ".tar.gz"))
6406 (file-name (string-append name "-" version ".tar.gz"))
6407 (sha256
6408 (base32
6409 "1y4h6wrs8286h9pbsv4d8fr67a885vz8b2k80qgv5qddipi2i78p"))))
6410 (build-system emacs-build-system)
6411 (propagated-inputs
6412 `(("emacs-auctex" ,emacs-auctex)
6413 ;; The version of org in Emacs 25.2 is not sufficient, because the
6414 ;; `org-latex-make-preamble' function is required.
6415 ("emacs-org" ,emacs-org)))
6416 (home-page "https://github.com/et2010/org-edit-latex")
6417 (synopsis "Edit a latex fragment just like editing a src block")
6418 (description "@code{emacs-org-edit-latex} is an extension for org-mode.
6419 It lets you edit a latex fragment in a dedicated buffer just like editing a
6420 src block.")
6421 (license license:gpl3+)))
6422
6423 (define-public emacs-emamux
6424 (package
6425 (name "emacs-emamux")
6426 (version "0.14")
6427 (source (origin
6428 (method url-fetch)
6429 (uri (string-append
6430 "https://github.com/syohex/emacs-emamux/archive/"
6431 version ".tar.gz"))
6432 (file-name (string-append name "-" version ".tar.gz"))
6433 (sha256
6434 (base32
6435 "0wlqg4icy037bj70b0qmhvwvmiwhagpnx6pnxhq6gzy1hvwlilkx"))))
6436 (build-system emacs-build-system)
6437 (home-page "https://github.com/syohex/emacs-emamux")
6438 (synopsis "Manipulate Tmux from Emacs")
6439 (description
6440 "@code{emacs-emamux} lets Emacs interact with the @code{tmux} terminal
6441 multiplexer.")
6442 (license license:gpl3+)))
6443
6444 (define-public emacs-rpm-spec-mode
6445 (package
6446 (name "emacs-rpm-spec-mode")
6447 (version "0.16")
6448 (source
6449 (origin
6450 (method url-fetch)
6451 ;; URI has the Fedora release number instead of the version
6452 ;; number. This will have to updated manually every new release.
6453 (uri (string-append
6454 "https://src.fedoraproject.org/cgit/rpms"
6455 "/emacs-rpm-spec-mode.git/snapshot"
6456 "/emacs-rpm-spec-mode-f26.tar.gz"))
6457 (sha256
6458 (base32
6459 "17dz80lhjrc89fj17pysl8slahzrqdkxgcjdk55zls6jizkr6kz3"))))
6460 (build-system emacs-build-system)
6461 (home-page "http://pkgs.fedoraproject.org/cgit/rpms/emacs-rpm-spec-mode.git")
6462 (synopsis "Emacs major mode for editing RPM spec files")
6463 (description "@code{emacs-rpm-spec-mode} provides an Emacs major mode for
6464 editing RPM spec files.")
6465 (license license:gpl2+)))
6466
6467 (define-public emacs-git-messenger
6468 (package
6469 (name "emacs-git-messenger")
6470 (version "0.18")
6471 (source
6472 (origin
6473 (method url-fetch)
6474 (uri (string-append
6475 "https://github.com/syohex/emacs-git-messenger/archive/"
6476 version ".tar.gz"))
6477 (file-name (string-append name "-" version ".tar.gz"))
6478 (sha256
6479 (base32
6480 "17mqki6g0wx46fn7dcbcc2pjxik7vvrcb1j9jzxim8b9psbsbnp9"))))
6481 (build-system emacs-build-system)
6482 (propagated-inputs
6483 `(("emacs-popup" ,emacs-popup)))
6484 (arguments
6485 `(#:phases
6486 (modify-phases %standard-phases
6487 (add-before 'install 'check
6488 (lambda* (#:key inputs #:allow-other-keys)
6489 (zero? (system* "emacs" "--batch" "-L" "."
6490 "-L" (string-append
6491 (assoc-ref inputs "emacs-popup")
6492 "/share/emacs/site-lisp/guix.d/popup-"
6493 ,(package-version emacs-popup))
6494 "-l" "test/test.el"
6495 "-f" "ert-run-tests-batch-and-exit")))))))
6496 (home-page "https://github.com/syohex/emacs-git-messenger")
6497 (synopsis "Popup commit message at current line")
6498 (description "@code{emacs-git-messenger} provides
6499 @code{git-messenger:popup-message}, a function that when called, will popup
6500 the last git commit message for the current line. This uses git-blame
6501 internally.")
6502 (license license:gpl3+)))
6503
6504 (define-public emacs-gitpatch
6505 (package
6506 (name "emacs-gitpatch")
6507 (version "0.5.0")
6508 (source
6509 (origin
6510 (method url-fetch)
6511 (uri (string-append "https://github.com/tumashu/gitpatch/archive/"
6512 "v" version ".tar.gz"))
6513 (file-name (string-append name "-" version ".tar.gz"))
6514 (sha256
6515 (base32
6516 "1yj6pmic541lcnscjin300k380qp9xdfprs55xg1q57jrkq6f6k7"))))
6517 (build-system emacs-build-system)
6518 (home-page "https://github.com/tumashu/gitpatch")
6519 (synopsis "Mail git patch from Emacs")
6520 (description "@code{emacs-gitpatch} lets users easily send git patches,
6521 created by @code{git format-patch}, from @code{magit}, @code{dired} and
6522 @code{ibuffer} buffers.")
6523 (license license:gpl3+)))
6524
6525 (define-public emacs-erc-hl-nicks
6526 (package
6527 (name "emacs-erc-hl-nicks")
6528 (version "1.3.2")
6529 (source
6530 (origin
6531 (method url-fetch)
6532 (uri (string-append "https://github.com/leathekd/erc-hl-nicks"
6533 "/archive/" version ".tar.gz"))
6534 (file-name (string-append name "-" version ".tar.gz"))
6535 (sha256
6536 (base32
6537 "01svpl9bps5kx4y1wnymakxya2cznqmlynvqv2r500wpnbxczrbs"))))
6538 (build-system emacs-build-system)
6539 (synopsis "Nickname highlighting for Emacs ERC")
6540 (description "@code{erc-hl-nicks} highlights nicknames in ERC, an IRC
6541 client for Emacs. The main features are:
6542 @itemize
6543 @item Auto-colorizes nicknames without having to specify colors
6544 @item Ignores certain characters that IRC clients add to nicknames to avoid
6545 duplicates (nickname, nickname’, nickname\", etc.)
6546 @item Attempts to produce colors with a sufficient amount of contrast between
6547 the nick color and the background color
6548 @end itemize\n")
6549 (home-page "https://github.com/leathekd/erc-hl-nicks")
6550 (license license:gpl3+)))
6551
6552 (define-public emacs-engine-mode
6553 (package
6554 (name "emacs-engine-mode")
6555 (version "2.0.0")
6556 (source
6557 (origin
6558 (method url-fetch)
6559 (uri (string-append "https://github.com/hrs/engine-mode/archive/"
6560 "v" version ".tar.gz"))
6561 (file-name (string-append name "-" version ".tar.gz"))
6562 (sha256
6563 (base32
6564 "1vm4p7pcp1vnwwxvps1bhm7i7hkabqqxl898knxf2hqvxys76684"))))
6565 (build-system emacs-build-system)
6566 (synopsis "Minor mode for defining and querying search engines")
6567 (description "@code{engine-mode} is a global minor mode for Emacs. It
6568 enables you to easily define search engines, bind them to keybindings, and
6569 query them from the comfort of your editor.")
6570 (home-page "https://github.com/hrs/engine-mode")
6571 (license license:gpl3+)))
6572
6573 (define-public emacs-prop-menu
6574 (package
6575 (name "emacs-prop-menu")
6576 (version "0.1.2")
6577 (source
6578 (origin
6579 (method url-fetch)
6580 (uri (string-append
6581 "http://stable.melpa.org/packages/prop-menu-"
6582 version ".el"))
6583 (sha256
6584 (base32
6585 "01bk4sjafzz7gqrkv9jg0pa85qr34vbk3q8ga2b0m61bndywzgpr"))))
6586 (build-system emacs-build-system)
6587 (home-page
6588 "https://github.com/david-christiansen/prop-menu-el")
6589 (synopsis
6590 "Create and display a context menu based on text and overlay properties")
6591 (description
6592 "This is a library for computing context menus based on text
6593 properties and overlays. The intended use is to have tools that
6594 annotate source code and others that use these annotations, without
6595 requiring a direct coupling between them, but maintaining
6596 discoverability.
6597
6598 Major modes that wish to use this library should first define an
6599 appropriate value for @code{prop-menu-item-functions}. Then, they should
6600 bind @code{prop-menu-by-completing-read} to an appropriate
6601 key. Optionally, a mouse pop-up can be added by binding
6602 @code{prop-menu-show-menu} to a mouse event.")
6603 (license license:gpl3+)))
6604
6605 (define-public emacs-idris-mode
6606 (package
6607 (name "emacs-idris-mode")
6608 (version "0.9.19")
6609 (source
6610 (origin
6611 (method url-fetch)
6612 (uri (string-append
6613 "http://stable.melpa.org/packages/idris-mode-"
6614 version ".tar"))
6615 (sha256
6616 (base32
6617 "0ld4kfwnyyhlsnj5f6cbn4is4mpxdqalk2aifkw02r00mbr9n294"))))
6618 (build-system emacs-build-system)
6619 (propagated-inputs
6620 `(("emacs-prop-menu" ,emacs-prop-menu)))
6621 (home-page
6622 "https://github.com/idris-hackers/idris-mode")
6623 (synopsis "Major mode for editing Idris code")
6624 (description
6625 "This is an Emacs mode for editing Idris code. It requires the latest
6626 version of Idris, and some features may rely on the latest Git version of
6627 Idris.")
6628 (license license:gpl3+)))
6629
6630 (define-public emacs-browse-at-remote
6631 (let ((commit "31dcf77d7c89a12f230e2b2332585db2c44530ef")
6632 (revision "1"))
6633 (package
6634 (name "emacs-browse-at-remote")
6635 (version (string-append "0.9.0-" revision "."
6636 (string-take commit 7)))
6637 (source (origin
6638 (method git-fetch)
6639 (uri (git-reference
6640 (url "https://github.com/rmuslimov/browse-at-remote.git")
6641 (commit commit)))
6642 (file-name (string-append name "-" version "-checkout"))
6643 (patches
6644 (search-patches "emacs-browse-at-remote-cgit-gnu.patch"))
6645 (sha256
6646 (base32
6647 "017cb8lf7zbg0jmr7zxzd7d5kz2jy35cvw5vcpdmq1fdr3wqwkgj"))))
6648 (build-system emacs-build-system)
6649 (propagated-inputs
6650 `(("emacs-f" ,emacs-f)
6651 ("emacs-s" ,emacs-s)))
6652 (native-inputs
6653 `(("ert-runner" ,ert-runner)))
6654 (arguments
6655 `(#:phases
6656 (modify-phases %standard-phases
6657 (add-before 'install 'check
6658 (lambda _
6659 (zero? (system* "ert-runner")))))))
6660 (home-page "https://github.com/rmuslimov/browse-at-remote")
6661 (synopsis "Open github/gitlab/bitbucket/stash page from Emacs")
6662 (description
6663 "This Emacs package allows you to open a target page on
6664 github/gitlab (or bitbucket) by calling @code{browse-at-remote} command.
6665 It supports dired buffers and opens them in tree mode at destination.")
6666 (license license:gpl3+))))
6667
6668 (define-public emacs-tiny
6669 (package
6670 (name "emacs-tiny")
6671 (version "0.2.1")
6672 (source
6673 (origin
6674 (method url-fetch)
6675 (uri (string-append "http://elpa.gnu.org/packages/tiny-" version ".tar"))
6676 (sha256
6677 (base32
6678 "1cr73a8gba549ja55x0c2s554f3zywf69zbnd7v82jz5q1k9wd2v"))))
6679 (build-system emacs-build-system)
6680 (home-page "https://github.com/abo-abo/tiny")
6681 (synopsis "Quickly generate linear ranges in Emacs")
6682 (description
6683 "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}.
6684 It is meant to quickly generate linear ranges, e.g. 5, 6, 7, 8. Some elisp
6685 proficiency is an advantage, since you can transform your numeric range with
6686 an elisp expression.")
6687 (license license:gpl3+)))
6688
6689 (define-public emacs-emojify
6690 (package
6691 (name "emacs-emojify")
6692 (version "0.4")
6693 (source
6694 (origin
6695 (method url-fetch)
6696 (uri (string-append "https://github.com/iqbalansari/emacs-emojify/"
6697 "releases/download/v" version "/emojify-"
6698 version ".tar"))
6699 (sha256
6700 (base32
6701 "0k84v2d2bkiwcky9fi1yyprgkj46g7wh6pyl9gzmcd7sqv051d5n"))))
6702 (build-system emacs-build-system)
6703 (arguments
6704 `(#:phases
6705 (modify-phases %standard-phases
6706 (add-after 'install 'install-data
6707 (lambda* (#:key outputs #:allow-other-keys)
6708 (copy-recursively "data"
6709 (string-append (assoc-ref outputs "out")
6710 "/share/emacs/site-lisp/guix.d/"
6711 "emojify-" ,version "/data"))
6712 #t)))))
6713 (propagated-inputs
6714 `(("emacs-ht" ,emacs-ht)))
6715 (home-page "https://github.com/iqbalansari/emacs-emojify")
6716 (synopsis "Display emojis in Emacs")
6717 (description "This package displays emojis in Emacs similar to how Github,
6718 Slack, and other websites do. It can display plain ASCII like @code{:)} as
6719 well as Github-style emojis like @code{:smile:}. It provides a minor mode
6720 @code{emojify-mode} to enable the display of emojis in a buffer.")
6721 (license license:gpl3+)))
6722
6723 (define-public emacs-websocket
6724 (package
6725 (name "emacs-websocket")
6726 (version "1.8")
6727 (source
6728 (origin
6729 (method url-fetch)
6730 (uri (string-append "https://elpa.gnu.org/packages/websocket-"
6731 version ".tar"))
6732 (sha256
6733 (base32
6734 "0dcxmnnm8z7cvsc7nkb822a1g6w03klp7cijjnfq0pz84p3w9cd9"))))
6735 (build-system emacs-build-system)
6736 (home-page "http://elpa.gnu.org/packages/websocket.html")
6737 (synopsis "Emacs WebSocket client and server")
6738 (description "This is an Elisp library for WebSocket clients to talk to
6739 WebSocket servers, and for WebSocket servers to accept connections from
6740 WebSocket clients. This library is designed to be used by other library
6741 writers, to write applications that use WebSockets, and is not useful by
6742 itself.")
6743 (license license:gpl3+)))
6744
6745 (define-public emacs-oauth2
6746 (package
6747 (name "emacs-oauth2")
6748 (version "0.11")
6749 (source
6750 (origin
6751 (method url-fetch)
6752 (uri (string-append "https://elpa.gnu.org/packages/oauth2-"
6753 version ".el"))
6754 (sha256
6755 (base32
6756 "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp"))))
6757 (build-system emacs-build-system)
6758 (home-page "http://elpa.gnu.org/packages/oauth2.html")
6759 (synopsis "OAuth 2.0 authorization protocol implementation")
6760 (description
6761 "This package provides an Elisp implementation of the OAuth 2.0 draft.
6762 The main entry point is @code{oauth2-auth-and-store} which will return a token
6763 structure. This token structure can be then used with
6764 @code{oauth2-url-retrieve-synchronously} or @code{oauth2-url-retrieve} to
6765 retrieve any data that need OAuth authentication to be accessed. If the token
6766 needs to be refreshed, the code handles it automatically and stores the new
6767 value of the access token.")
6768 (license license:gpl3+)))
6769
6770 (define-public emacs-circe
6771 (package
6772 (name "emacs-circe")
6773 (version "2.6")
6774 (source
6775 (origin
6776 (method git-fetch)
6777 (uri (git-reference
6778 (url "https://github.com/jorgenschaefer/circe.git")
6779 (commit (string-append "v" version))))
6780 (file-name (string-append name "-" version "-checkout"))
6781 (sha256
6782 (base32
6783 "19h3983zy3f15cgs86irvbdzz55qyjm48qd7gjlzcxplr7vnnh0j"))))
6784 (build-system emacs-build-system)
6785 ;; In order to securely connect to an IRC server using TLS, Circe requires
6786 ;; the GnuTLS binary.
6787 (propagated-inputs
6788 `(("gnutls" ,gnutls)))
6789 (home-page "https://github.com/jorgenschaefer/circe")
6790 (synopsis "Client for IRC in Emacs")
6791 (description "Circe is a Client for IRC in Emacs. It integrates well with
6792 the rest of the editor, using standard Emacs key bindings and indicating
6793 activity in channels in the status bar so it stays out of your way unless you
6794 want to use it.")
6795 (license license:gpl3+)))
6796
6797 (define-public emacs-slack
6798 (let ((commit "92724604879149cf331fa8778d089813a9d4ce1a")
6799 (revision "3"))
6800 (package
6801 (name "emacs-slack")
6802 (version (string-append "0-" revision "." (string-take commit 7)))
6803 (source (origin
6804 (method git-fetch)
6805 (uri (git-reference
6806 (url "https://github.com/yuya373/emacs-slack.git")
6807 (commit commit)))
6808 (file-name (string-append name "-" version "-checkout"))
6809 (sha256
6810 (base32
6811 "1fdf8s3ca356k7m7f5kqzfamfl2nrqjj2pynjv3kkrr0ad15nxmw"))))
6812 (build-system emacs-build-system)
6813 (propagated-inputs
6814 `(("emacs-alert" ,emacs-alert)
6815 ("emacs-emojify" ,emacs-emojify)
6816 ("emacs-request" ,emacs-request)
6817 ("emacs-websocket" ,emacs-websocket)
6818 ("emacs-oauth2" ,emacs-oauth2)
6819 ("emacs-circe" ,emacs-circe)))
6820 (home-page "https://github.com/yuya373/emacs-slack")
6821 (synopsis "Slack client for Emacs")
6822 (description "This package provides an Emacs client for the Slack
6823 messaging service.")
6824 (license license:gpl3+))))
6825
6826 (define-public emacs-bash-completion
6827 (package
6828 (name "emacs-bash-completion")
6829 (version "2.0.0")
6830 (source
6831 (origin
6832 (method url-fetch)
6833 (uri (string-append
6834 "https://github.com/szermatt/emacs-bash-completion/archive/v"
6835 version ".tar.gz"))
6836 (file-name (string-append name "-" version ".tar.gz"))
6837 (sha256
6838 (base32
6839 "0mkci4a1fy8z4cmry8mx5vsx4f16a8r454slnh7lqzidnhfi63hj"))))
6840 (inputs `(("bash" ,bash)))
6841 (build-system emacs-build-system)
6842 (arguments
6843 `(#:phases
6844 (modify-phases %standard-phases
6845 (add-before 'install 'configure
6846 (lambda* (#:key inputs #:allow-other-keys)
6847 (let ((bash (assoc-ref inputs "bash")))
6848 (emacs-substitute-variables "bash-completion.el"
6849 ("bash-completion-prog" (string-append bash "/bin/bash"))))
6850 #t)))))
6851 (home-page "https://github.com/szermatt/emacs-bash-completion")
6852 (synopsis "BASH completion for the shell buffer")
6853 (description
6854 "@code{bash-completion} defines dynamic completion hooks for shell-mode
6855 and shell-command prompts that are based on bash completion.")
6856 (license license:gpl2+)))
6857
6858 (define-public emacs-easy-kill
6859 (package
6860 (name "emacs-easy-kill")
6861 (version "0.9.3")
6862 (source (origin
6863 (method url-fetch)
6864 (uri (string-append "https://elpa.gnu.org/packages/easy-kill-"
6865 version ".tar"))
6866 (sha256
6867 (base32
6868 "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb"))))
6869 (build-system emacs-build-system)
6870 (home-page "https://github.com/leoliu/easy-kill")
6871 (synopsis "Kill and mark things easily in Emacs")
6872 (description
6873 "This package provides commands @code{easy-kill} and @code{easy-mark} to
6874 let users kill or mark things easily.")
6875 (license license:gpl3+)))
6876
6877 (define-public emacs-csv-mode
6878 (package
6879 (name "emacs-csv-mode")
6880 (version "1.7")
6881 (source
6882 (origin
6883 (method url-fetch)
6884 (uri (string-append "http://elpa.gnu.org/packages/csv-mode-"
6885 version ".el"))
6886 (sha256
6887 (base32
6888 "0r4bip0w3h55i8h6sxh06czf294mrhavybz0zypzrjw91m1bi7z6"))))
6889 (build-system emacs-build-system)
6890 (home-page
6891 "http://elpa.gnu.org/packages/csv-mode.html")
6892 (synopsis
6893 "Major mode for editing comma/char separated values")
6894 (description
6895 "This Emacs package implements CSV mode, a major mode for editing records
6896 in a generalized CSV (character-separated values) format.")
6897 (license license:gpl3+)))
6898
6899 (define-public emacs-transmission
6900 (package
6901 (name "emacs-transmission")
6902 (version "0.12.1")
6903 (source (origin
6904 (method url-fetch)
6905 (uri (string-append
6906 "https://github.com/holomorph/transmission/archive/"
6907 version ".tar.gz"))
6908 (file-name (string-append name "-" version ".tar.gz"))
6909 (sha256
6910 (base32
6911 "1rrlgn96gi1ljfwbwvlyyxbq75xzamlbdhq1bpyadxxmxcvlmk3n"))))
6912 (build-system emacs-build-system)
6913 (home-page "https://github.com/holomorph/transmission")
6914 (synopsis "Emacs interface to a Transmission session")
6915 (description "This package provides an Emacs interface to interact with a
6916 running session of the Transmission Bittorrent client.
6917
6918 Features:
6919
6920 @itemize
6921 @item List, add, start/stop, verify, remove torrents.
6922 @item Set speed limits, ratio limits, bandwidth priorities, trackers.
6923 @item Navigate to the corresponding file list, torrent info, peer info
6924 contexts.
6925 @item Toggle downloading and set priorities for individual files.
6926 @end itemize\n")
6927 (license license:gpl3+)))
6928
6929 (define-public emacs-polymode
6930 ;; There hasn't been a proper release.
6931 (let ((commit "0340f5e7e55235832e59673f027cc79a23cbdcd6")
6932 (revision "1"))
6933 (package
6934 (name "emacs-polymode")
6935 (version (string-append "1.0-" revision "." (string-take commit 7)))
6936 (source (origin
6937 (method git-fetch)
6938 (uri (git-reference
6939 (url "https://github.com/vspinu/polymode.git")
6940 (commit commit)))
6941 (file-name (string-append name "-" version "-checkout"))
6942 (sha256
6943 (base32
6944 "057cybkq3cy07n5s332k071sjiky3mziy003lza4rh75mgqkwhmh"))))
6945 (build-system emacs-build-system)
6946 (home-page "https://github.com/vspinu/polymode")
6947 (synopsis "Framework for multiple Emacs modes based on indirect buffers")
6948 (description "Polymode is an Emacs package that offers generic support
6949 for multiple major modes inside a single Emacs buffer. It is lightweight,
6950 object oriented and highly extensible. Creating a new polymode typically
6951 takes only a few lines of code. Polymode also provides extensible facilities
6952 for external literate programming tools for exporting, weaving and tangling.")
6953 (license license:gpl3+))))
6954
6955 (define-public eless
6956 (package
6957 (name "eless")
6958 (version "0.3")
6959 (source (origin
6960 (method url-fetch)
6961 (uri (string-append
6962 "https://github.com/kaushalmodi/eless/archive/"
6963 "v" version ".tar.gz"))
6964 (file-name (string-append name "-" version ".tar.gz"))
6965 (sha256
6966 (base32
6967 "0gjnnhgw5xs1w3qfnkvwa2nv44gnxr8pkhx3c7qig45p8nh1461h"))))
6968 (build-system trivial-build-system)
6969 (inputs
6970 `(("bash" ,bash)))
6971 (native-inputs
6972 `(("tar" ,tar)
6973 ("gzip" ,gzip)))
6974 (arguments
6975 `(#:modules ((guix build utils))
6976 #:builder
6977 (begin
6978 (use-modules (guix build utils))
6979 (setenv "PATH" (string-append
6980 (assoc-ref %build-inputs "tar") "/bin" ":"
6981 (assoc-ref %build-inputs "gzip") "/bin"))
6982 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
6983 (chdir (string-append "eless" "-" ,version))
6984 (substitute* "eless" (("/usr/bin/env bash")
6985 (string-append (assoc-ref %build-inputs "bash")
6986 "/bin/bash")))
6987 (install-file "eless" (string-append %output "/bin"))
6988 (install-file "doc/eless.info" (string-append %output "/share/info"))
6989 #t)))
6990 (home-page "https://github.com/kaushalmodi/eless")
6991 (synopsis "Use Emacs as a paginator")
6992 (description "@code{eless} provides a combination of Bash script
6993 and a minimal Emacs view-mode.
6994
6995 Feautures:
6996
6997 @itemize
6998 @item Independent of a user’s Emacs config.
6999 @item Customizable via the @code{(locate-user-emacs-file \"elesscfg\")} config.
7000 @item Not require an Emacs server to be already running.
7001 @item Syntax highlighting.
7002 @item Org-mode file rendering.
7003 @item @code{man} page viewer.
7004 @item Info viewer.
7005 @item Dired, wdired, (batch edit symbolic links).
7006 @item Colored diffs, git diff, git log, ls with auto ANSI detection.
7007 @item Filter log files lines matching a regexp.
7008 @item Auto-revert log files similar to @code{tail -f}.
7009 @item Quickly change frame and font sizes.
7010 @end itemize\n")
7011 (license license:expat)))
7012
7013 (define-public emacs-evil-matchit
7014 (package
7015 (name "emacs-evil-matchit")
7016 (version "2.2.5")
7017 (source
7018 (origin
7019 (method url-fetch)
7020 (uri (string-append
7021 "https://github.com/redguardtoo/evil-matchit/archive/"
7022 version ".tar.gz"))
7023 (file-name (string-append name "-" version ".tar.gz"))
7024 (sha256
7025 (base32
7026 "1hm0k53m7d8zv2pk4p93k5mmilsv1mz7y2z6dqf7r6f0zmncs31a"))))
7027 (build-system emacs-build-system)
7028 (home-page "https://github.com/redguardtoo/evil-matchit")
7029 (synopsis "Vim matchit ported into Emacs")
7030 (description
7031 "@code{evil-matchit} is a minor mode for jumping between matching tags in
7032 evil mode using @kbd{%}. It is a port of @code{matchit} for Vim.")
7033 (license license:gpl3+)))
7034
7035 (define-public emacs-evil-smartparens
7036 (package
7037 (name "emacs-evil-smartparens")
7038 (version "0.4.0")
7039 (source
7040 (origin
7041 (method url-fetch)
7042 (uri (string-append
7043 "https://github.com/expez/evil-smartparens/archive/"
7044 version ".tar.gz"))
7045 (file-name (string-append name "-" version ".tar.gz"))
7046 (sha256
7047 (base32
7048 "1bwzdd3054d407d5j4m3njsbvmc9r8zzp33m32pj3b3irxrl68q0"))))
7049 (build-system emacs-build-system)
7050 (propagated-inputs
7051 `(("emacs-evil" ,emacs-evil)
7052 ("emacs-smartparens" ,emacs-smartparens)))
7053 (home-page "https://github.com/expez/evil-smartparens")
7054 (synopsis "Emacs Evil integration for Smartparens")
7055 (description "@code{emacs-evil-smartparens} is an Emacs minor mode which
7056 makes Evil play nice with Smartparens. Evil is an Emacs minor mode that
7057 emulates Vim features and provides Vim-like key bindings.")
7058 (license license:gpl3+)))
7059
7060 (define-public emacs-evil-quickscope
7061 (package
7062 (name "emacs-evil-quickscope")
7063 (version "0.1.4")
7064 (source
7065 (origin
7066 (method url-fetch)
7067 (uri (string-append "https://github.com/blorbx/evil-quickscope/archive/v"
7068 version ".tar.gz"))
7069 (file-name (string-append name "-" version ".tar.gz"))
7070 (sha256
7071 (base32
7072 "1r26a412mmar7vbf89zcifswiwpdg30mjzj32xdyqss57aqi83ma"))))
7073 (build-system emacs-build-system)
7074 (propagated-inputs
7075 `(("emacs-evil" ,emacs-evil)))
7076 (arguments
7077 `(#:phases
7078 (modify-phases %standard-phases
7079 (add-before 'install 'check
7080 (lambda* (#:key inputs #:allow-other-keys)
7081 (invoke "emacs" "--batch" "-L"
7082 (string-append (assoc-ref inputs "emacs-evil")
7083 "/share/emacs/site-lisp/guix.d/evil-"
7084 ,(package-version emacs-evil))
7085 "-l" "evil-quickscope-tests.el"
7086 "-f" "ert-run-tests-batch-and-exit"))))))
7087 (home-page "https://github.com/blorbx/evil-quickscope")
7088 (synopsis "Target highlighting for emacs evil-mode f,F,t and T commands")
7089 (description "@code{emacs-evil-quickscope} highlights targets for Evil
7090 mode’s f,F,t,T keys, allowing for quick navigation within a line. It is a
7091 port of quick-scope for Vim. Evil is an Emacs minor mode that emulates Vim
7092 features and provides Vim-like key bindings.")
7093 (license license:gpl3+)))
7094
7095 (define-public emacs-bongo
7096 (package
7097 (name "emacs-bongo")
7098 (version "1.0")
7099 (source
7100 (origin
7101 (method url-fetch)
7102 (uri (string-append
7103 "https://github.com/dbrock/bongo/archive/"
7104 version ".tar.gz"))
7105 (file-name (string-append name "-" version ".tar.gz"))
7106 (sha256
7107 (base32
7108 "1pcsyyrvj7djjjwpaswd1i782hvqvlvs39cy9ns0k795si6xd64d"))))
7109 (build-system emacs-build-system)
7110 (home-page "https://github.com/dbrock/bongo")
7111 (synopsis "Media player for Emacs")
7112 (description
7113 "This package provides a flexible media player for Emacs. @code{Bongo}
7114 supports multiple backends such as @code{vlc}, @code{mpg123},
7115 @code{ogg123}, @code{speexdec}, @code{timidity}, @code{mikmod} and
7116 @code{afplay}.")
7117 (license license:gpl2+)))
7118
7119 (define-public groovy-emacs-modes
7120 (package
7121 (name "groovy-emacs-modes")
7122 (version "2.0")
7123 (source (origin
7124 (method url-fetch)
7125 (uri (string-append
7126 "https://github.com/Groovy-Emacs-Modes/" name
7127 "/archive/" version ".tar.gz"))
7128 (file-name (string-append name "-" version ".tar.gz"))
7129 (sha256
7130 (base32
7131 "15j0hnkx9nppjzda5cqsxxz5f3bq9hc4xfyjcdypzqiypcvmpa39"))))
7132 (build-system emacs-build-system)
7133 (propagated-inputs
7134 `(("emacs-s" ,emacs-s)))
7135 (home-page "https://github.com/Groovy-Emacs-Modes/groovy-emacs-modes")
7136 (synopsis "Groovy related modes for Emacs")
7137 (description
7138 "This package provides @code{groovy-mode} for syntax highlighing in
7139 Groovy source files, REPL integration with run-groovy and Grails project
7140 navigation with the grails mode.")
7141 (license license:gpl3+)))
7142
7143 (define-public org-tree-slide
7144 (let ((commit "dff8f1a4a64c8dd0a1fde0b0131e2fe186747134")
7145 (revision "0"))
7146 (package
7147 (name "emacs-org-tree-slide")
7148 (version (git-version "0.1" revision commit))
7149 (home-page "https://github.com/takaxp/org-tree-slide")
7150 (source (origin
7151 (method git-fetch)
7152 (uri (git-reference (url home-page) (commit commit)))
7153 (sha256
7154 (base32
7155 "153bg0x7ypla11pq51jmsgzfjklwwnrq56xgpbfhk1j16xwz9hyf"))
7156 (file-name (git-file-name name version))))
7157 (build-system emacs-build-system)
7158 (synopsis "Presentation tool for org-mode")
7159 (description
7160 "Org-tree-slide provides a slideshow mode to view org-mode files. Use
7161 @code{org-tree-slide-mode} to enter the slideshow mode, and then @kbd{C->} and
7162 @kbd{C-<} to jump to the next and previous slide.")
7163 (license license:gpl3+))))
7164
7165 (define-public emacs-scratch-el
7166 (let ((commit "2cdf2b841ce7a0987093f65b0cc431947549f897")
7167 (revision "1"))
7168 (package
7169 (name "emacs-scratch-el")
7170 (version (git-version "1.2" revision commit))
7171 (source (origin
7172 (method git-fetch)
7173 (uri (git-reference
7174 (url "https://github.com/ieure/scratch-el.git")
7175 (commit commit)))
7176 (file-name (git-file-name name version))
7177 (sha256
7178 (base32
7179 "0wscsndynjmnliajqaz28r1ww81j8wh84zwaaswx51abhwgl0idf"))))
7180 (build-system emacs-build-system)
7181 (native-inputs
7182 `(("texinfo" ,texinfo)))
7183 (arguments
7184 '(#:phases
7185 (modify-phases %standard-phases
7186 (add-after 'install 'install-doc
7187 (lambda* (#:key outputs #:allow-other-keys)
7188 (unless (invoke "makeinfo" "scratch.texi")
7189 (error "makeinfo failed"))
7190 (install-file "scratch.info"
7191 (string-append (assoc-ref outputs "out")
7192 "/share/info"))
7193 #t)))))
7194 (home-page "https://github.com/ieure/scratch-el/")
7195 (synopsis "Create scratch buffers with the same mode as current buffer")
7196 (description "Scratch is an extension to Emacs that enables one to create
7197 scratch buffers that are in the same mode as the current buffer. This is
7198 notably useful when working on code in some language; you may grab code into a
7199 scratch buffer, and, by virtue of this extension, do so using the Emacs
7200 formatting rules for that language.")
7201 (license license:bsd-2))))
7202
7203 (define-public emacs-esxml
7204 (package
7205 (name "emacs-esxml")
7206 (version "0.3.4")
7207 (source (origin
7208 (method git-fetch)
7209 (uri (git-reference
7210 (url "https://github.com/tali713/esxml.git")
7211 (commit version)))
7212 (file-name (git-file-name name version))
7213 (sha256
7214 (base32
7215 "00vv8a75wdklygdyr4km9mc2ismxak69c45jmcny41xl44rp9x8m"))))
7216 (build-system emacs-build-system)
7217 (home-page "https://github.com/tali713/esxml/")
7218 (synopsis "SXML for EmacsLisp")
7219 (description "This is XML/XHTML done with S-Expressions in EmacsLisp.
7220 Simply, this is the easiest way to write HTML or XML in Lisp. This library
7221 uses the native form of XML representation as used by many libraries already
7222 included within Emacs. See @code{esxml-to-xml} for a concise description of
7223 the format.")
7224 (license license:gpl3+)))
7225
7226 (define-public emacs-nov-el
7227 (package
7228 (name "emacs-nov-el")
7229 (version "0.2.2")
7230 (source (origin
7231 (method git-fetch)
7232 (uri (git-reference
7233 (url "https://github.com/wasamasa/nov.el.git")
7234 (commit version)))
7235 (file-name (git-file-name name version))
7236 (sha256
7237 (base32
7238 "03s0qjvwk1f7y3i4wh2p5y3z4hdv00adgz8za3vphzc0q8i1kjzb"))))
7239 (build-system emacs-build-system)
7240 (arguments
7241 `(#:phases
7242 (modify-phases %standard-phases
7243 (add-after 'unpack 'embed-path-to-unzip
7244 (lambda _
7245 (substitute* "nov.el"
7246 (("\\(executable-find \"unzip\"\\)")
7247 (string-append "\"" (which "unzip") "\"")))
7248 #t)))))
7249 (propagated-inputs
7250 `(("emacs-dash" ,emacs-dash)
7251 ("emacs-esxml" ,emacs-esxml)))
7252 (inputs
7253 `(("unzip" ,unzip)))
7254 (home-page "https://github.com/wasamasa/nov.el/")
7255 (synopsis "Major mode for reading EPUBs in Emacs")
7256 (description "@code{nov.el} provides a major mode for reading EPUB
7257 documents.
7258
7259 Features:
7260
7261 @itemize
7262 @item Basic navigation (jump to TOC, previous/next chapter)
7263 @item Remembering and restoring the last read position
7264 @item Jump to next chapter when scrolling beyond end
7265 @item Renders EPUB2 (@code{.ncx}) and EPUB3 (@code{<nav>}) TOCs
7266 @item Hyperlinks to internal and external targets
7267 @item Supports textual and image documents
7268 @item View source of document files
7269 @item Metadata display
7270 @item Image rescaling
7271 @end itemize
7272 ")
7273 (license license:gpl3+)))
7274
7275 (define-public epipe
7276 (package
7277 (name "epipe")
7278 (version "0.1.0")
7279 (source
7280 (origin
7281 (method url-fetch)
7282 (uri (string-append "https://github.com/cute-jumper/epipe/archive/"
7283 version ".tar.gz"))
7284 (file-name (string-append name "-" version ".tar.gz"))
7285 (sha256
7286 (base32
7287 "05a036852g4j63k1mhvyfrcsgkl9lczayi7x61570ysw3cli5wp5"))))
7288 (build-system trivial-build-system)
7289 (inputs
7290 `(("bash" ,bash)
7291 ("perl" ,perl)))
7292 (native-inputs
7293 `(("tar" ,tar)
7294 ("gzip" ,gzip)))
7295 (arguments
7296 `(#:modules
7297 ((guix build utils))
7298 #:builder
7299 (begin
7300 (use-modules (guix build utils))
7301 ;; Extract source
7302 (setenv "PATH" (string-append
7303 (assoc-ref %build-inputs "tar") "/bin" ":"
7304 (assoc-ref %build-inputs "gzip") "/bin"))
7305 (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
7306 (chdir (string-append ,name "-" ,version))
7307 ;; Patch shebangs
7308 (substitute* "epipe"
7309 (("/usr/bin/env bash")
7310 (string-append (assoc-ref %build-inputs "bash") "/bin/bash")))
7311 (patch-shebang "epipe.pl"
7312 (list (string-append (assoc-ref %build-inputs "perl")
7313 "/bin")))
7314 ;; Installation
7315 (for-each (lambda (file)
7316 (install-file file (string-append %output "/bin")))
7317 '("epipe" "epipe.pl"))
7318 #t)))
7319 (home-page "https://github.com/cute-jumper/epipe")
7320 (synopsis "Pipe to the @code{emacsclient}")
7321 (description "@code{epipe} provides an utility to use your editor in
7322 the pipeline, featuring the support for running @code{emacsclient}.")
7323 (license license:gpl3+)))
7324
7325 (define-public emacs-hcl-mode
7326 (package
7327 (name "emacs-hcl-mode")
7328 (version "0.03")
7329 (source
7330 (origin
7331 (method url-fetch)
7332 (uri (string-append
7333 "https://github.com/syohex/emacs-hcl-mode/archive/"
7334 version ".tar.gz"))
7335 (file-name (string-append name "-" version ".tar.gz"))
7336 (sha256
7337 (base32
7338 "0pvw74qpwh0znqzp6syp4wxjqs7dp1hbn5h7xfk97mff9l5d8k6x"))))
7339 (build-system emacs-build-system)
7340 (home-page "https://github.com/syohex/emacs-hcl-mode")
7341 (synopsis "Major mode for the Hashicorp Configuration Language")
7342 (description
7343 "@code{emacs-hcl-mode} provides an Emacs major mode for working with
7344 @acronym{HCL, Hashicorp Configuration Language}. It provides syntax
7345 highlighting and indentation support.")
7346 (license license:gpl3+)))
7347
7348 (define-public emacs-terraform-mode
7349 (package
7350 (name "emacs-terraform-mode")
7351 (version "0.06")
7352 (source
7353 (origin
7354 (method url-fetch)
7355 (uri (string-append
7356 "https://github.com/syohex/emacs-terraform-mode/archive/"
7357 version ".tar.gz"))
7358 (file-name (string-append name "-" version ".tar.gz"))
7359 (sha256
7360 (base32
7361 "0h9267ifdjmcin4sj8slxydbacx4bqicbvg8pa1qq2l72h9m5381"))))
7362 (build-system emacs-build-system)
7363 (propagated-inputs
7364 `(("emacs-hcl-mode" ,emacs-hcl-mode)))
7365 (home-page "https://github.com/syohex/emacs-terraform-mode")
7366 (synopsis "Major mode for Terraform")
7367 (description
7368 "@code{emacs-terraform-mode} provides a major mode for working with
7369 @uref{https://www.terraform.io/, Terraform} configuration files. Most of the
7370 functionality is inherited from @code{hcl-mode}.")
7371 (license license:gpl3+)))