Merge branch 'master' into staging
[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 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015, 2016 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 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 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 Nicolas Goaziou <mail@nicolasgoaziou.fr>
18 ;;; Copyright © 2016 Alex Vong <alexvong1995@gmail.com>
19 ;;; Copyright © 2016, 2017 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 Oleg Pykhalov <go.wigust@gmail.com>
30 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
31 ;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
32 ;;;
33 ;;; This file is part of GNU Guix.
34 ;;;
35 ;;; GNU Guix is free software; you can redistribute it and/or modify it
36 ;;; under the terms of the GNU General Public License as published by
37 ;;; the Free Software Foundation; either version 3 of the License, or (at
38 ;;; your option) any later version.
39 ;;;
40 ;;; GNU Guix is distributed in the hope that it will be useful, but
41 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
42 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43 ;;; GNU General Public License for more details.
44 ;;;
45 ;;; You should have received a copy of the GNU General Public License
46 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
47
48 (define-module (gnu packages emacs)
49 #:use-module ((guix licenses) #:prefix license:)
50 #:use-module (guix packages)
51 #:use-module (guix download)
52 #:use-module (guix git-download)
53 #:use-module (guix gexp)
54 #:use-module (guix monads)
55 #:use-module (guix store)
56 #:use-module (guix build-system gnu)
57 #:use-module (guix build-system emacs)
58 #:use-module (guix build-system glib-or-gtk)
59 #:use-module (guix build-system trivial)
60 #:use-module (gnu packages)
61 #:use-module (gnu packages audio)
62 #:use-module (gnu packages bash)
63 #:use-module (gnu packages code)
64 #:use-module (gnu packages guile)
65 #:use-module (gnu packages gtk)
66 #:use-module (gnu packages gnome)
67 #:use-module (gnu packages ncurses)
68 #:use-module (gnu packages python)
69 #:use-module (gnu packages tex)
70 #:use-module (gnu packages texinfo)
71 #:use-module (gnu packages tcl)
72 #:use-module (gnu packages tls)
73 #:use-module (gnu packages pkg-config)
74 #:use-module (gnu packages xorg)
75 #:use-module (gnu packages lesstif)
76 #:use-module (gnu packages image)
77 #:use-module (gnu packages linux)
78 #:use-module (gnu packages version-control)
79 #:use-module (gnu packages imagemagick)
80 #:use-module (gnu packages w3m)
81 #:use-module (gnu packages wget)
82 #:use-module (gnu packages autotools)
83 #:use-module (gnu packages base)
84 #:use-module (gnu packages compression)
85 #:use-module (gnu packages xml)
86 #:use-module (gnu packages glib)
87 #:use-module (gnu packages acl)
88 #:use-module (gnu packages package-management)
89 #:use-module (gnu packages perl)
90 #:use-module (gnu packages pdf)
91 #:use-module (gnu packages scheme)
92 #:use-module (gnu packages statistics)
93 #:use-module (gnu packages xiph)
94 #:use-module (gnu packages mp3)
95 #:use-module (gnu packages gettext)
96 #:use-module (gnu packages fribidi)
97 #:use-module (gnu packages gd)
98 #:use-module (gnu packages fontutils)
99 #:use-module (guix utils)
100 #:use-module (srfi srfi-1)
101 #:use-module (ice-9 match))
102
103 (define-public emacs
104 (package
105 (name "emacs")
106 (version "25.3")
107 (source (origin
108 (method url-fetch)
109 (uri (string-append "mirror://gnu/emacs/emacs-"
110 version ".tar.xz"))
111 (sha256
112 (base32
113 "02y00y9q42g1iqgz5qhmsja75hwxd88yrn9zp14lanay0zkwafi5"))
114 (patches (search-patches "emacs-exec-path.patch"
115 "emacs-fix-scheme-indent-function.patch"
116 "emacs-source-date-epoch.patch"))
117 (modules '((guix build utils)))
118 (snippet
119 ;; Delete the bundled byte-compiled elisp files and
120 ;; generated autoloads.
121 '(with-directory-excursion "lisp"
122 (for-each delete-file
123 (append (find-files "." "\\.elc$")
124 (find-files "." "loaddefs\\.el$")
125 ;; This is the only "autoloads" file that
126 ;; does not have "*loaddefs.el" name.
127 '("eshell/esh-groups.el")))
128
129 ;; Make sure Tramp looks for binaries in the right places on
130 ;; remote GuixSD machines, where 'getconf PATH' returns
131 ;; something bogus.
132 (substitute* "net/tramp-sh.el"
133 ;; Patch the line after "(defcustom tramp-remote-path".
134 (("\\(tramp-default-remote-path")
135 (format #f "(tramp-default-remote-path ~s ~s ~s ~s "
136 "~/.guix-profile/bin" "~/.guix-profile/sbin"
137 "/run/current-system/profile/bin"
138 "/run/current-system/profile/sbin")))))))
139 (build-system glib-or-gtk-build-system)
140 (arguments
141 `(#:phases
142 (modify-phases %standard-phases
143 (add-before 'configure 'fix-/bin/pwd
144 (lambda _
145 ;; Use `pwd', not `/bin/pwd'.
146 (substitute* (find-files "." "^Makefile\\.in$")
147 (("/bin/pwd")
148 "pwd"))))
149 (add-after 'install 'install-site-start
150 ;; Use 'guix-emacs' in "site-start.el". This way, Emacs packages
151 ;; provided by Guix and installed in
152 ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
153 ;; automatically found.
154 (lambda* (#:key inputs outputs #:allow-other-keys)
155 (let* ((out (assoc-ref outputs "out"))
156 (lisp-dir (string-append out "/share/emacs/site-lisp")))
157 (copy-file (assoc-ref inputs "guix-emacs.el")
158 (string-append lisp-dir "/guix-emacs.el"))
159 (with-output-to-file (string-append lisp-dir "/site-start.el")
160 (lambda ()
161 (display
162 (string-append "(when (require 'guix-emacs nil t)\n"
163 " (guix-emacs-autoload-packages))\n"))))
164 #t))))))
165 (inputs
166 `(("gnutls" ,gnutls)
167 ("ncurses" ,ncurses)
168
169 ;; TODO: Add the optional dependencies.
170 ("libx11" ,libx11)
171 ("gtk+" ,gtk+)
172 ("libxft" ,libxft)
173 ("libtiff" ,libtiff)
174 ("giflib" ,giflib)
175 ("libjpeg" ,libjpeg-8)
176 ("imagemagick" ,imagemagick)
177 ("acl" ,acl)
178
179 ;; When looking for libpng `configure' links with `-lpng -lz', so we
180 ;; must also provide zlib as an input.
181 ("libpng" ,libpng)
182 ("zlib" ,zlib)
183
184 ("librsvg" ,librsvg)
185 ("libxpm" ,libxpm)
186 ("libxml2" ,libxml2)
187 ("libice" ,libice)
188 ("libsm" ,libsm)
189 ("alsa-lib" ,alsa-lib)
190 ("dbus" ,dbus)
191
192 ;; multilingualization support
193 ("libotf" ,libotf)
194 ("m17n-lib" ,m17n-lib)))
195 (native-inputs
196 `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
197 ("pkg-config" ,pkg-config)
198 ("texinfo" ,texinfo)))
199
200 (native-search-paths
201 (list (search-path-specification
202 (variable "INFOPATH")
203 (files '("share/info")))))
204
205 (home-page "https://www.gnu.org/software/emacs/")
206 (synopsis "The extensible, customizable, self-documenting text editor")
207 (description
208 "GNU Emacs is an extensible and highly customizable text editor. It is
209 based on an Emacs Lisp interpreter with extensions for text editing. Emacs
210 has been extended in essentially all areas of computing, giving rise to a
211 vast array of packages supporting, e.g., email, IRC and XMPP messaging,
212 spreadsheets, remote server editing, and much more. Emacs includes extensive
213 documentation on all aspects of the system, from basic editing to writing
214 large Lisp programs. It has full Unicode support for nearly all human
215 languages.")
216 (license license:gpl3+)))
217
218 (define-public emacs-minimal
219 ;; This is the version that you should use as an input to packages that just
220 ;; need to byte-compile .el files.
221 (package (inherit emacs)
222 (name "emacs-minimal")
223 (synopsis "The extensible text editor (used only for byte-compilation)")
224 (build-system gnu-build-system)
225 (arguments
226 (substitute-keyword-arguments (package-arguments emacs)
227 ((#:phases phases)
228 `(modify-phases ,phases
229 (delete 'install-site-start)))))
230 (inputs
231 `(("ncurses" ,ncurses)))
232 (native-inputs
233 `(("pkg-config" ,pkg-config)))))
234
235 (define-public emacs-no-x
236 (package (inherit emacs)
237 (name "emacs-no-x")
238 (synopsis "The extensible, customizable, self-documenting text
239 editor (console only)")
240 (build-system gnu-build-system)
241 (inputs (fold alist-delete
242 (package-inputs emacs)
243 '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
244 "libpng" "librsvg" "libxpm" "libice" "libsm"
245
246 ;; D-Bus depends on libx11, so remove it as well.
247 "dbus")))))
248
249 (define-public emacs-no-x-toolkit
250 (package (inherit emacs)
251 (name "emacs-no-x-toolkit")
252 (synopsis "The extensible, customizable, self-documenting text
253 editor (without an X toolkit)" )
254 (build-system gnu-build-system)
255 (inputs (append `(("inotify-tools" ,inotify-tools))
256 (alist-delete "gtk+" (package-inputs emacs))))
257 (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
258 (package-arguments emacs)))))
259
260 (define-public guile-emacs
261 (package (inherit emacs)
262 (name "guile-emacs")
263 (version "20150512.41120e0")
264 (source (origin
265 (method git-fetch)
266 (uri (git-reference
267 (url "git://git.hcoop.net/git/bpt/emacs.git")
268 (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
269 (sha256
270 (base32
271 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
272 (native-inputs
273 `(("autoconf" ,autoconf)
274 ("automake" ,automake)
275 ("guile" ,guile-for-guile-emacs)
276 ,@(package-native-inputs emacs)))
277 (arguments
278 (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
279 #:parallel-build? #f
280 ;; Tests aren't passing for now.
281 #:tests? #f
282 ,@(package-arguments emacs))
283 ((#:phases phases)
284 `(modify-phases ,phases
285 (add-after 'unpack 'autogen
286 (lambda _
287 (zero? (system* "sh" "autogen.sh"))))))))))
288
289 \f
290 ;;;
291 ;;; Emacs hacking.
292 ;;;
293
294 (define-public geiser
295 (package
296 (name "geiser")
297 (version "0.9")
298 (source (origin
299 (method url-fetch)
300 (uri (string-append "mirror://savannah/geiser/" version
301 "/geiser-" version ".tar.gz"))
302 (sha256
303 (base32
304 "0phz9d8wjk4p13vqannv0003fwh8qqrp0gfzcs2hgq1mrmv1srss"))))
305 (build-system gnu-build-system)
306 (arguments
307 '(#:phases
308 (modify-phases %standard-phases
309 (add-after 'install 'post-install
310 (lambda* (#:key outputs #:allow-other-keys)
311 (symlink "geiser-install.el"
312 (string-append (assoc-ref outputs "out")
313 "/share/emacs/site-lisp/"
314 "geiser-autoloads.el"))
315 #t)))))
316 (inputs `(("guile" ,guile-2.0)))
317 (native-inputs `(("emacs" ,emacs-minimal)))
318 (home-page "http://nongnu.org/geiser/")
319 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
320 (description
321 "Geiser is a collection of Emacs major and minor modes that conspire with
322 one or more Scheme implementations to keep the Lisp Machine Spirit alive. The
323 continuously running Scheme interpreter takes the center of the stage in
324 Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme
325 implementation, Emacs and, ultimately, the schemer, giving them access to live
326 metadata.")
327 (license license:bsd-3)))
328
329 (define-public geiser-next
330 ;; This has become "geiser".
331 (deprecated-package "geiser-next" geiser))
332
333 (define-public paredit
334 (package
335 (name "emacs-paredit")
336 (version "24")
337 (source (origin
338 (method url-fetch)
339 (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
340 version ".el"))
341 (sha256
342 (base32
343 "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
344 (build-system emacs-build-system)
345 (home-page "http://mumble.net/~campbell/emacs/paredit/")
346 (synopsis "Emacs minor mode for editing parentheses")
347 (description
348 "ParEdit (paredit.el) is a minor mode for performing structured editing
349 of S-expression data. The typical example of this would be Lisp or Scheme
350 source code.
351
352 ParEdit helps **keep parentheses balanced** and adds many keys for moving
353 S-expressions and moving around in S-expressions. Its behavior can be jarring
354 for those who may want transient periods of unbalanced parentheses, such as
355 when typing parentheses directly or commenting out code line by line.")
356 (license license:gpl3+)))
357
358 (define-public paredit/old-name
359 (deprecated-package "paredit" paredit))
360
361 (define-public git-modes
362 (package
363 (name "git-modes")
364 (version "1.2.4")
365 (source (origin
366 (method url-fetch)
367 (uri (string-append
368 "https://github.com/magit/git-modes/archive/"
369 version ".tar.gz"))
370 (file-name (string-append name "-" version ".tar.gz"))
371 (sha256
372 (base32
373 "0xxrmf0jnyljxvllc22qa0v8lgi4k1ldnayjm5hf68m25jsr378l"))))
374 (build-system emacs-build-system)
375 (home-page "https://github.com/magit/git-modes")
376 (synopsis "Emacs major modes for Git configuration files")
377 (description
378 "This package provides Emacs major modes for editing various Git
379 configuration files, such as .gitattributes, .gitignore, and .git/config.")
380 (license license:gpl3+)))
381
382 (define-public emacs-with-editor
383 (package
384 (name "emacs-with-editor")
385 (version "2.5.10")
386 (source (origin
387 (method url-fetch)
388 (uri (string-append
389 "https://github.com/magit/with-editor/archive/v"
390 version ".tar.gz"))
391 (file-name (string-append name "-" version ".tar.gz"))
392 (sha256
393 (base32
394 "0lsxa1hghybkzvqhqvvym3hxbyp9vjcnnpb9j800z0vyhbnlka67"))))
395 (build-system emacs-build-system)
396 (propagated-inputs
397 `(("emacs-dash" ,emacs-dash)))
398 (home-page "https://github.com/magit/with-editor")
399 (synopsis "Emacs library for using Emacsclient as EDITOR")
400 (description
401 "This package provides an Emacs library to use the Emacsclient as
402 @code{$EDITOR} of child processes, making sure they know how to call home.
403 For remote processes a substitute is provided, which communicates with Emacs
404 on stdout instead of using a socket as the Emacsclient does.")
405 (license license:gpl3+)))
406
407 (define-public magit
408 (package
409 (name "magit")
410 (version "2.10.3")
411 (source (origin
412 (method url-fetch)
413 (uri (string-append
414 "https://github.com/magit/magit/releases/download/"
415 version "/" name "-" version ".tar.gz"))
416 (sha256
417 (base32
418 "03ln65ss420gc3h4pi56dayd1p163xfxrxrd9fkb9xnkl8mjglqk"))))
419 (build-system gnu-build-system)
420 (native-inputs `(("texinfo" ,texinfo)
421 ("emacs" ,emacs-minimal)))
422 (inputs
423 `(("git" ,git)
424 ("perl" ,perl)))
425 (propagated-inputs
426 `(("dash" ,emacs-dash)
427 ("with-editor" ,emacs-with-editor)))
428 (arguments
429 `(#:modules ((guix build gnu-build-system)
430 (guix build utils)
431 (guix build emacs-utils))
432 #:imported-modules (,@%gnu-build-system-modules
433 (guix build emacs-utils))
434
435 #:test-target "test"
436 #:tests? #f ; tests are not included in the release
437
438 #:make-flags
439 (list (string-append "PREFIX=" %output)
440 ;; Don't put .el files in a sub-directory.
441 (string-append "lispdir=" %output "/share/emacs/site-lisp")
442 (string-append "DASH_DIR="
443 (assoc-ref %build-inputs "dash")
444 "/share/emacs/site-lisp/guix.d/dash-"
445 ,(package-version emacs-dash))
446 (string-append "WITH_EDITOR_DIR="
447 (assoc-ref %build-inputs "with-editor")
448 "/share/emacs/site-lisp/guix.d/with-editor-"
449 ,(package-version emacs-with-editor)))
450
451 #:phases
452 (modify-phases %standard-phases
453 (delete 'configure)
454 (add-before
455 'build 'patch-exec-paths
456 (lambda* (#:key inputs #:allow-other-keys)
457 (let ((git (assoc-ref inputs "git"))
458 (perl (assoc-ref inputs "perl")))
459 (emacs-substitute-variables "lisp/magit-git.el"
460 ("magit-git-executable" (string-append git "/bin/git")))
461 (substitute* "lisp/magit-sequence.el"
462 (("perl") (string-append perl "/bin/perl")))
463 #t))))))
464 (home-page "http://magit.github.io/")
465 (synopsis "Emacs interface for the Git version control system")
466 (description
467 "With Magit, you can inspect and modify your Git repositories with Emacs.
468 You can review and commit the changes you have made to the tracked files, for
469 example, and you can browse the history of past changes. There is support for
470 cherry picking, reverting, merging, rebasing, and other common Git
471 operations.")
472 (license license:gpl3+)))
473
474 (define-public magit-svn
475 (package
476 (name "magit-svn")
477 (version "2.1.1")
478 (source (origin
479 (method url-fetch)
480 (uri (string-append
481 "https://github.com/magit/magit-svn/archive/"
482 version ".tar.gz"))
483 (file-name (string-append name "-" version ".tar.gz"))
484 (sha256
485 (base32
486 "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
487 (build-system trivial-build-system)
488 (native-inputs `(("emacs" ,emacs-minimal)
489 ("tar" ,tar)
490 ("gzip" ,gzip)))
491 (propagated-inputs `(("dash" ,emacs-dash)
492 ("magit" ,magit)))
493 (arguments
494 `(#:modules ((guix build utils)
495 (guix build emacs-utils))
496
497 #:builder
498 (begin
499 (use-modules (guix build utils)
500 (guix build emacs-utils))
501
502 (let* ((tar (string-append (assoc-ref %build-inputs "tar")
503 "/bin/tar"))
504 (PATH (string-append (assoc-ref %build-inputs "gzip")
505 "/bin"))
506 (emacs (string-append (assoc-ref %build-inputs "emacs")
507 "/bin/emacs"))
508 (magit (string-append (assoc-ref %build-inputs "magit")
509 "/share/emacs/site-lisp"))
510 (dash (string-append (assoc-ref %build-inputs "dash")
511 "/share/emacs/site-lisp/guix.d/dash-"
512 ,(package-version emacs-dash)))
513 (source (assoc-ref %build-inputs "source"))
514 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
515 (setenv "PATH" PATH)
516 (system* tar "xvf" source)
517
518 (install-file (string-append ,name "-" ,version "/magit-svn.el")
519 lisp-dir)
520
521 (with-directory-excursion lisp-dir
522 (parameterize ((%emacs emacs))
523 (emacs-generate-autoloads ,name lisp-dir)
524 (setenv "EMACSLOADPATH"
525 (string-append ":" magit ":" dash))
526 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
527 (home-page "https://github.com/magit/magit-svn")
528 (synopsis "Git-SVN extension to Magit")
529 (description
530 "This package is an extension to Magit, the Git Emacs mode, providing
531 support for Git-SVN.")
532 (license license:gpl3+)))
533
534 (define-public emacs-magit-popup
535 (package
536 (name "emacs-magit-popup")
537 (version (package-version magit))
538 (source (origin
539 (method url-fetch)
540 (uri (string-append
541 "https://raw.githubusercontent.com/magit/magit/"
542 version "/lisp/magit-popup.el"))
543 (file-name (string-append "magit-popup-" version ".el"))
544 (sha256
545 (base32
546 "08b6ypfiq8zavjfq0wcdh26xziwq7rqvvv3lfpib9101146kzx6d"))))
547 (build-system emacs-build-system)
548 (propagated-inputs
549 `(("emacs-dash" ,emacs-dash)))
550 (home-page "https://github.com/magit/magit")
551 (synopsis "Define prefix-infix-suffix command combos")
552 (description
553 "This library implements a generic interface for toggling switches and
554 setting options and then invoking an Emacs command which does something with
555 these arguments. The prototypical use is for the command to call an external
556 process, passing on the arguments as command line arguments.")
557 (license license:gpl3+)))
558
559 (define-public haskell-mode
560 (package
561 (name "haskell-mode")
562 (version "16.1")
563 (source (origin
564 (method url-fetch)
565 (file-name (string-append name "-" version ".tar.gz"))
566 (uri (string-append
567 "https://github.com/haskell/haskell-mode/archive/v"
568 version ".tar.gz"))
569 (sha256
570 (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h"))))
571 (inputs
572 `(("emacs-el-search" ,emacs-el-search) ; for tests
573 ("emacs-stream" ,emacs-stream))) ; for tests
574 (propagated-inputs
575 `(("emacs-dash" ,emacs-dash)))
576 (native-inputs
577 `(("emacs" ,emacs-minimal)
578 ("texinfo" ,texinfo)))
579 (build-system gnu-build-system)
580 (arguments
581 `(#:make-flags (list (string-append "EMACS="
582 (assoc-ref %build-inputs "emacs")
583 "/bin/emacs"))
584 #:modules ((ice-9 match)
585 (srfi srfi-26)
586 ,@%gnu-build-system-modules)
587 #:phases
588 (modify-phases %standard-phases
589 (delete 'configure)
590 (add-before
591 'build 'pre-build
592 (lambda* (#:key inputs #:allow-other-keys)
593 (define (el-dir store-dir)
594 (match (find-files store-dir)
595 ((f1 f2 ...) (dirname f1))
596 (_ "")))
597
598 (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
599 (define emacs-prefix? (cut string-prefix? "emacs-" <>))
600
601 (setenv "SHELL" "sh")
602 (setenv "EMACSLOADPATH"
603 (string-concatenate
604 (map (match-lambda
605 (((? emacs-prefix? name) . dir)
606 (string-append (el-dir dir) ":"))
607 (_ ""))
608 inputs)))
609 (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
610 (substitute* "tests/haskell-code-conventions.el"
611 ;; Function name recently changed in "emacs-el-search".
612 (("el-search--search-pattern") "el-search-forward")
613 ;; Don't contact home.
614 (("\\(when \\(>= emacs-major-version 25\\)")
615 "(require 'el-search) (when nil"))
616 #t)))
617 (replace
618 'install
619 (lambda* (#:key outputs #:allow-other-keys)
620 (let* ((out (assoc-ref outputs "out"))
621 (el-dir (string-append out "/share/emacs/site-lisp"))
622 (doc (string-append
623 out "/share/doc/haskell-mode-" ,version))
624 (info (string-append out "/share/info")))
625 (define (copy-to-dir dir files)
626 (for-each (lambda (f)
627 (install-file f dir))
628 files))
629
630 (with-directory-excursion "doc"
631 (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
632 (error "makeinfo failed"))
633 (install-file "haskell-mode.info" info))
634 (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
635 (copy-to-dir el-dir (find-files "." "\\.elc?"))
636 ;; These are part of other packages.
637 (with-directory-excursion el-dir
638 (for-each delete-file '("dash.el" "ert.el")))
639 #t))))))
640 (home-page "https://github.com/haskell/haskell-mode")
641 (synopsis "Haskell mode for Emacs")
642 (description
643 "This is an Emacs mode for editing, debugging and developing Haskell
644 programs.")
645 (license license:gpl3+)))
646
647 (define-public flycheck
648 (package
649 (name "emacs-flycheck")
650 (version "30")
651 (source (origin
652 (method url-fetch)
653 (uri (string-append
654 "https://github.com/flycheck/flycheck/releases/download/"
655 version "/flycheck-" version ".tar"))
656 (sha256
657 (base32
658 "1rxzkaqsj48z3nska5wsgwafvwkam014dzqd32baycmxjl0jxvy7"))))
659 (build-system emacs-build-system)
660 (propagated-inputs
661 `(("emacs-dash" ,emacs-dash)))
662 (home-page "https://www.flycheck.org")
663 (synopsis "On-the-fly syntax checking")
664 (description
665 "This package provides on-the-fly syntax checking for GNU Emacs. It is a
666 replacement for the older Flymake extension which is part of GNU Emacs, with
667 many improvements and additional features.
668
669 Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
670 checking for over 30 programming and markup languages with more than 70
671 different tools. It highlights errors and warnings inline in the buffer, and
672 provides an optional IDE-like error list.")
673 (license license:gpl3+))) ;+GFDLv1.3+ for the manual
674
675 \f
676 ;;;
677 ;;; Web browsing.
678 ;;;
679
680 (define-public emacs-w3m
681 (package
682 (name "emacs-w3m")
683 (version "1.4.538+0.20141022")
684 (source (origin
685 (method url-fetch)
686 (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
687 version ".orig.tar.gz"))
688 (sha256
689 (base32
690 "0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y"))))
691 (build-system gnu-build-system)
692 (native-inputs `(("autoconf" ,autoconf)
693 ("emacs" ,emacs-minimal)))
694 (inputs `(("w3m" ,w3m)
695 ("imagemagick" ,imagemagick)))
696 (arguments
697 `(#:modules ((guix build gnu-build-system)
698 (guix build utils)
699 (guix build emacs-utils))
700 #:imported-modules (,@%gnu-build-system-modules
701 (guix build emacs-utils))
702 #:configure-flags
703 (let ((out (assoc-ref %outputs "out")))
704 (list (string-append "--with-lispdir="
705 out "/share/emacs/site-lisp")
706 (string-append "--with-icondir="
707 out "/share/images/emacs-w3m")
708 ;; Leave .el files uncompressed, otherwise GC can't
709 ;; identify run-time dependencies. See
710 ;; <http://lists.gnu.org/archive/html/guix-devel/2015-12/msg00208.html>
711 "--without-compress-install"))
712 #:tests? #f ; no check target
713 #:phases
714 (modify-phases %standard-phases
715 (add-after 'unpack 'autoconf
716 (lambda _
717 (zero? (system* "autoconf"))))
718 (add-before 'build 'patch-exec-paths
719 (lambda* (#:key inputs outputs #:allow-other-keys)
720 (let ((out (assoc-ref outputs "out"))
721 (w3m (assoc-ref inputs "w3m"))
722 (imagemagick (assoc-ref inputs "imagemagick"))
723 (coreutils (assoc-ref inputs "coreutils")))
724 (emacs-substitute-variables "w3m.el"
725 ("w3m-command" (string-append w3m "/bin/w3m"))
726 ("w3m-touch-command"
727 (string-append coreutils "/bin/touch"))
728 ("w3m-image-viewer"
729 (string-append imagemagick "/bin/display"))
730 ("w3m-icon-directory"
731 (string-append out "/share/images/emacs-w3m")))
732 (emacs-substitute-variables "w3m-image.el"
733 ("w3m-imagick-convert-program"
734 (string-append imagemagick "/bin/convert"))
735 ("w3m-imagick-identify-program"
736 (string-append imagemagick "/bin/identify")))
737 #t)))
738 (replace 'install
739 (lambda* (#:key outputs #:allow-other-keys)
740 (and (zero? (system* "make" "install" "install-icons"))
741 (with-directory-excursion
742 (string-append (assoc-ref outputs "out")
743 "/share/emacs/site-lisp")
744 (for-each delete-file '("ChangeLog" "ChangeLog.1"))
745 (symlink "w3m-load.el" "w3m-autoloads.el")
746 #t)))))))
747 (home-page "http://emacs-w3m.namazu.org/")
748 (synopsis "Simple Web browser for Emacs based on w3m")
749 (description
750 "Emacs-w3m is an emacs interface for the w3m web browser.")
751 (license license:gpl2+)))
752
753 (define-public emacs-wget
754 (package
755 (name "emacs-wget")
756 (version "0.5.0")
757 (source (origin
758 (method url-fetch)
759 (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
760 version ".orig.tar.gz"))
761 (sha256
762 (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
763 (build-system gnu-build-system)
764 (inputs `(("wget" ,wget)))
765 (native-inputs `(("emacs" ,emacs-minimal)))
766 (arguments
767 `(#:modules ((guix build gnu-build-system)
768 (guix build utils)
769 (guix build emacs-utils))
770 #:imported-modules (,@%gnu-build-system-modules
771 (guix build emacs-utils))
772 #:tests? #f ; no check target
773 #:phases
774 (modify-phases %standard-phases
775 (replace 'configure
776 (lambda* (#:key outputs #:allow-other-keys)
777 (substitute* "Makefile"
778 (("/usr/local") (assoc-ref outputs "out"))
779 (("/site-lisp/emacs-wget") "/site-lisp"))
780 #t))
781 (add-before 'build 'patch-exec-paths
782 (lambda* (#:key inputs outputs #:allow-other-keys)
783 (let ((wget (assoc-ref inputs "wget")))
784 (emacs-substitute-variables "wget.el"
785 ("wget-command" (string-append wget "/bin/wget"))))
786 #t))
787 (add-after 'install 'post-install
788 (lambda* (#:key outputs #:allow-other-keys)
789 (emacs-generate-autoloads
790 "wget" (string-append (assoc-ref outputs "out")
791 "/share/emacs/site-lisp/"))
792 #t)))))
793 (home-page "http://www.emacswiki.org/emacs/EmacsWget")
794 (synopsis "Simple file downloader for Emacs based on wget")
795 (description
796 "Emacs-wget is an emacs interface for the wget file downloader.")
797 (license license:gpl2+)))
798
799 \f
800 ;;;
801 ;;; Multimedia.
802 ;;;
803
804 (define-public emms
805 (package
806 (name "emacs-emms")
807 (version "4.3")
808 (source (origin
809 (method url-fetch)
810 (uri (string-append "mirror://gnu/emms/emms-"
811 version ".tar.gz"))
812 (sha256
813 (base32
814 "0dicgkl8l83n4cah5vk7c242abbwpyzlih451blgw37f3rijs480"))
815 (modules '((guix build utils)))
816 (snippet
817 '(substitute* "Makefile"
818 (("/usr/bin/install-info")
819 ;; No need to use 'install-info' since it would create a
820 ;; useless 'dir' file.
821 "true")
822 (("^INFODIR=.*")
823 ;; Install Info files to $out/share/info, not $out/info.
824 "INFODIR := $(PREFIX)/share/info\n")
825 (("/site-lisp/emms")
826 ;; Install directly in share/emacs/site-lisp, not in a
827 ;; sub-directory.
828 "/site-lisp")
829 (("^all: (.*)\n" _ rest)
830 ;; Build 'emms-print-metadata'.
831 (string-append "all: " rest " emms-print-metadata\n"))))))
832 (build-system gnu-build-system)
833 (arguments
834 `(#:modules ((guix build gnu-build-system)
835 (guix build utils)
836 (guix build emacs-utils))
837 #:imported-modules (,@%gnu-build-system-modules
838 (guix build emacs-utils))
839
840 #:phases
841 (modify-phases %standard-phases
842 (replace 'configure
843 (lambda* (#:key inputs outputs #:allow-other-keys)
844 (let ((out (assoc-ref outputs "out"))
845 (flac (assoc-ref inputs "flac"))
846 (vorbis (assoc-ref inputs "vorbis-tools"))
847 (alsa (assoc-ref inputs "alsa-utils"))
848 (mpg321 (assoc-ref inputs "mpg321"))
849 (mp3info (assoc-ref inputs "mp3info")))
850 ;; Specify the installation directory.
851 (substitute* "Makefile"
852 (("PREFIX=.*$")
853 (string-append "PREFIX := " out "\n")))
854
855 (setenv "SHELL" (which "sh"))
856 (setenv "CC" "gcc")
857
858 ;; Specify the absolute file names of the various
859 ;; programs so that everything works out-of-the-box.
860 (with-directory-excursion "lisp"
861 (emacs-substitute-variables
862 "emms-player-mpg321-remote.el"
863 ("emms-player-mpg321-remote-command"
864 (string-append mpg321 "/bin/mpg321")))
865 (substitute* "emms-player-simple.el"
866 (("\"ogg123\"")
867 (string-append "\"" vorbis "/bin/ogg123\"")))
868 (substitute* "emms-player-simple.el"
869 (("\"mpg321\"")
870 (string-append "\"" mpg321 "/bin/mpg321\"")))
871 (emacs-substitute-variables "emms-info-ogginfo.el"
872 ("emms-info-ogginfo-program-name"
873 (string-append vorbis "/bin/ogginfo")))
874 (emacs-substitute-variables "emms-info-libtag.el"
875 ("emms-info-libtag-program-name"
876 (string-append out "/bin/emms-print-metadata")))
877 (emacs-substitute-variables "emms-info-mp3info.el"
878 ("emms-info-mp3info-program-name"
879 (string-append mp3info "/bin/mp3info")))
880 (emacs-substitute-variables "emms-info-metaflac.el"
881 ("emms-info-metaflac-program-name"
882 (string-append flac "/bin/metaflac")))
883 (emacs-substitute-variables "emms-source-file.el"
884 ("emms-source-file-gnu-find" (which "find")))
885 (substitute* "emms-volume-amixer.el"
886 (("\"amixer\"")
887 (string-append "\"" alsa "/bin/amixer\"")))
888 (substitute* "emms-tag-editor.el"
889 (("\"mp3info\"")
890 (string-append "\"" mp3info "/bin/mp3info\"")))))))
891 (add-before 'install 'pre-install
892 (lambda* (#:key outputs #:allow-other-keys)
893 ;; The 'install' rule expects the target directories to exist.
894 (let* ((out (assoc-ref outputs "out"))
895 (bin (string-append out "/bin"))
896 (man1 (string-append out "/share/man/man1")))
897 (mkdir-p bin)
898 (mkdir-p man1)
899 #t)))
900 (add-after 'install 'post-install
901 (lambda* (#:key outputs #:allow-other-keys)
902 (let ((out (assoc-ref outputs "out")))
903 (symlink "emms-auto.el"
904 (string-append out "/share/emacs/site-lisp/"
905 "emms-autoloads.el"))))))
906 #:tests? #f))
907 (native-inputs `(("emacs" ,emacs-minimal) ;for (guix build emacs-utils)
908 ("texinfo" ,texinfo)))
909 (inputs `(("alsa-utils" ,alsa-utils)
910 ("flac" ,flac) ;for metaflac
911 ("vorbis-tools" ,vorbis-tools)
912 ("mpg321" ,mpg321)
913 ("taglib" ,taglib)
914 ("mp3info" ,mp3info)))
915 (properties '((upstream-name . "emms")))
916 (synopsis "Emacs Multimedia System")
917 (description
918 "EMMS is the Emacs Multimedia System. It is a small front-end which
919 can control one of the supported external players. Thus, it supports
920 whatever formats are supported by your music player. It also
921 supports tagging and playlist management, all behind a clean and
922 light user interface.")
923 (home-page "https://www.gnu.org/software/emms/")
924 (license license:gpl3+)))
925
926 (define-public emacs-emms-player-mpv
927 (package
928 (name "emacs-emms-player-mpv")
929 (version "0.0.10")
930 (source
931 (origin
932 (method url-fetch)
933 (uri (string-append "https://github.com/dochang/emms-player-mpv/archive/"
934 version ".tar.gz"))
935 (file-name (string-append name "-" version ".tar.gz"))
936 (sha256
937 (base32
938 "1q81fpmwr8hpdgq71vbdai2nml4yyqbmk4ffdyl4irlwph8gfjyq"))))
939 (build-system emacs-build-system)
940 (propagated-inputs
941 `(("emms" ,emms)))
942 (home-page "https://github.com/dochang/emms-player-mpv/")
943 (synopsis "Mpv support for EMMS")
944 (description
945 "This package provides an EMMS player that uses mpv. It supports pause
946 and seeking.")
947 (license license:gpl3+)))
948
949 (define-public emacs-emms-mode-line-cycle
950 (package
951 (name "emacs-emms-mode-line-cycle")
952 (version "0.2.5")
953 (source
954 (origin
955 (method url-fetch)
956 (uri (string-append "https://github.com/momomo5717/emms-mode-line-cycle"
957 "/archive/" version ".tar.gz"))
958 (file-name (string-append name "-" version ".tar.gz"))
959 (sha256
960 (base32
961 "0ifszi930pnaxk1x8pcydmvnp06868gc7nfx14q17zbajbx735k6"))))
962 (build-system emacs-build-system)
963 (propagated-inputs
964 `(("emms" ,emms)))
965 (home-page "https://github.com/momomo5717/emms-mode-line-cycle")
966 (synopsis "Display the EMMS mode line as a ticker")
967 (description
968 "This is a minor mode for updating the EMMS mode-line string cyclically
969 within a specified width. It is useful for displaying long track titles.")
970 (license license:gpl3+)))
971
972 \f
973 ;;;
974 ;;; Miscellaneous.
975 ;;;
976
977 (define-public bbdb
978 (package
979 (name "bbdb")
980 (version "3.1.2")
981 (source (origin
982 (method url-fetch)
983 (uri (string-append "mirror://savannah/bbdb/bbdb-"
984 version ".tar.gz"))
985 (sha256
986 (base32
987 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
988 (modules '((guix build utils)))
989 (snippet
990 ;; We don't want to build and install the PDF.
991 '(substitute* "doc/Makefile.in"
992 (("^doc_DATA = .*$")
993 "doc_DATA =\n")))))
994 (build-system gnu-build-system)
995 (arguments
996 '(#:phases
997 (modify-phases %standard-phases
998 (add-after 'install 'post-install
999 (lambda* (#:key outputs #:allow-other-keys)
1000 ;; Add an autoloads file with the right name for guix.el.
1001 (let* ((out (assoc-ref outputs "out"))
1002 (site (string-append out "/share/emacs/site-lisp")))
1003 (with-directory-excursion site
1004 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el")))
1005 #t)))))
1006 (native-inputs `(("emacs" ,emacs-minimal)))
1007 (home-page "http://savannah.nongnu.org/projects/bbdb/")
1008 (synopsis "Contact management utility for Emacs")
1009 (description
1010 "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides
1011 an address book for email and snail mail addresses, phone numbers and the
1012 like. It can be linked with various Emacs mail clients (Message and Mail
1013 mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
1014 (license license:gpl3+)))
1015
1016 (define-public emacs-aggressive-indent
1017 (package
1018 (name "emacs-aggressive-indent")
1019 (version "1.8.3")
1020 (source (origin
1021 (method url-fetch)
1022 (uri (string-append "https://elpa.gnu.org/packages/"
1023 "aggressive-indent-" version ".el"))
1024 (sha256
1025 (base32
1026 "0jnzccl50x0wapprgwxinp99pwwa6j43q6msn4gv437j7swy8wnj"))))
1027 (build-system emacs-build-system)
1028 (home-page "https://elpa.gnu.org/packages/aggressive-indent.html")
1029 (synopsis "Minor mode to aggressively keep your code always indented")
1030 (description
1031 "@code{aggressive-indent-mode} is a minor mode that keeps your code
1032 always indented. It reindents after every change, making it more reliable
1033 than @code{electric-indent-mode}.")
1034 (license license:gpl2+)))
1035
1036 (define-public emacs-ag
1037 (package
1038 (name "emacs-ag")
1039 (version "0.47")
1040 (source (origin
1041 (method url-fetch)
1042 (uri (string-append
1043 "https://github.com/Wilfred/ag.el/archive/"
1044 version ".tar.gz"))
1045 (file-name (string-append name "-" version ".tar.gz"))
1046 (sha256
1047 (base32
1048 "1rlmp6wnyhqfg86dbz17r914msp58favn4kd4yrdwyia265a4lar"))))
1049 (build-system emacs-build-system)
1050 (arguments
1051 `(#:phases
1052 (modify-phases %standard-phases
1053 (add-before 'install 'make-info
1054 (lambda _
1055 (with-directory-excursion "docs"
1056 (zero? (system* "make" "info")))))
1057 (add-after 'install 'install-info
1058 (lambda* (#:key outputs #:allow-other-keys)
1059 (let* ((out (assoc-ref outputs "out"))
1060 (info (string-append out "/share/info")))
1061 (install-file "docs/_build/texinfo/agel.info" info)
1062 #t))))))
1063 (native-inputs
1064 `(("python-sphinx" ,python-sphinx)
1065 ("texinfo" ,texinfo)))
1066 (propagated-inputs
1067 `(("dash" ,emacs-dash)
1068 ("s" ,emacs-s)
1069 ;; We need to use 'ag' as the executable on remote systems.
1070 ("the-silver-searcher" ,the-silver-searcher)))
1071 (home-page "https://github.com/Wilfred/ag.el")
1072 (synopsis "Front-end for ag (the-silver-searcher) for Emacs")
1073 (description "This package provides the ability to use the silver
1074 searcher, a code searching tool, sometimes abbreviated to @code{ag}. Features
1075 include version control system awareness, use of Perl compatible regular
1076 expressions, editing the search results directly and searching file names
1077 rather than the contents of files.")
1078 (license license:gpl3+)))
1079
1080 (define-public emacs-async
1081 (package
1082 (name "emacs-async")
1083 (version "1.9.2")
1084 (source (origin
1085 (method url-fetch)
1086 (uri (string-append "https://elpa.gnu.org/packages/async-"
1087 version ".tar"))
1088 (sha256
1089 (base32
1090 "17fnvrj7jww29sav6a6jpizclg4w2962m6h37akpii71gf0vrffw"))))
1091 (build-system emacs-build-system)
1092 (home-page "https://elpa.gnu.org/packages/async.html")
1093 (synopsis "Asynchronous processing in Emacs")
1094 (description
1095 "This package provides the ability to call asynchronous functions and
1096 processes. For example, it can be used to run dired commands (for copying,
1097 moving, etc.) asynchronously using @code{dired-async-mode}. Also it is used
1098 as a library for other Emacs packages.")
1099 (license license:gpl3+)))
1100
1101 (define-public emacs-auctex
1102 (package
1103 (name "emacs-auctex")
1104 (version "11.91.0")
1105 (source
1106 (origin
1107 (method url-fetch)
1108 (uri (string-append
1109 "https://elpa.gnu.org/packages/auctex-"
1110 version
1111 ".tar"))
1112 (sha256
1113 (base32
1114 "1yh182mxgngjmwpkyv2n9km3vyq95bqfq8mnly3dbv78nwk7f2l3"))))
1115 (build-system emacs-build-system)
1116 ;; We use 'emacs' because AUCTeX requires dbus at compile time
1117 ;; ('emacs-minimal' does not provide dbus).
1118 (arguments
1119 `(#:emacs ,emacs
1120 #:include '("\\.el$" "^images/" "^latex/" "\\.info$")
1121 #:exclude '("^tests/" "^latex/README")))
1122 (native-inputs
1123 `(("perl" ,perl)))
1124 (home-page "https://www.gnu.org/software/auctex/")
1125 (synopsis "Integrated environment for TeX")
1126 (description
1127 "AUCTeX is a comprehensive customizable integrated environment for
1128 writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs
1129 or XEmacs.")
1130 (license license:gpl3+)))
1131
1132 (define-public emacs-autothemer
1133 (package
1134 (name "emacs-autothemer")
1135 (version "0.2.2")
1136 (source
1137 (origin
1138 (method url-fetch)
1139 (uri (string-append "https://github.com/sebastiansturm/autothemer/archive/"
1140 version ".tar.gz"))
1141 (file-name (string-append name "-" version ".tar.gz"))
1142 (sha256
1143 (base32
1144 "0rd28r9wfrbll212am4ih9hrvypx785aff76va2cbfxdwm9kixsa"))))
1145 (build-system emacs-build-system)
1146 (propagated-inputs
1147 `(("emacs-dash" ,emacs-dash)))
1148 (home-page "https://github.com/sebastiansturm/autothemer")
1149 (synopsis "Conveniently create Emacs themes")
1150 (description
1151 "Autothemer provides a thin layer on top of @code{deftheme} and
1152 @code{custom-theme-set-faces} that creates a new custom color theme, based on
1153 a set of simplified face specifications and a user-supplied color palette")
1154 (license license:gpl3+)))
1155
1156 (define-public emacs-calfw
1157 (package
1158 (name "emacs-calfw")
1159 (version "1.5")
1160 (source
1161 (origin
1162 (method url-fetch)
1163 (uri (string-append
1164 "https://github.com/kiwanami/emacs-calfw/archive/v"
1165 version ".tar.gz"))
1166 (file-name (string-append name "-" version ".tar.gz"))
1167 (sha256
1168 (base32
1169 "17ssg8gx66yp63nhygjq2r6kgl4h45cacmrxsxs9f0lrfcx37k0l"))))
1170 (build-system emacs-build-system)
1171 (home-page "https://github.com/kiwanami/emacs-calfw/")
1172 (synopsis "Calendar framework for Emacs")
1173 (description
1174 "This package displays a calendar view with various schedule data in the
1175 Emacs buffer.")
1176 (license license:gpl3+)))
1177
1178 (define-public emacs-direnv
1179 (package
1180 (name "emacs-direnv")
1181 (version "1.2.0")
1182 (source
1183 (origin
1184 (method url-fetch)
1185 (uri (string-append
1186 "https://github.com/wbolster/emacs-direnv/archive/"
1187 version ".tar.gz"))
1188 (file-name (string-append name "-" version ".tar.gz"))
1189 (sha256
1190 (base32
1191 "0m9nxawklhiiysyibzzhh2zkxgq1fskqvaqb06f7r8dnhabfy9fr"))))
1192 (build-system emacs-build-system)
1193 (propagated-inputs
1194 `(("dash" ,emacs-dash)
1195 ("with-editor" ,emacs-with-editor)))
1196 (home-page "https://github.com/wbolster/emacs-direnv")
1197 (synopsis "Direnv integration for Emacs")
1198 (description
1199 "This package provides support for invoking direnv to get the environment
1200 for the current file and updating the environment within Emacs to match.
1201
1202 Direnv can be invoked manually, and a global minor mode is included that will
1203 update the environment when the active buffer changes.
1204
1205 Using emacs-direnv means that programs started from Emacs will use the
1206 environment set through Direnv.")
1207 (license license:gpl3+)))
1208
1209 (define-public emacs-go-mode
1210 (package
1211 (name "emacs-go-mode")
1212 (version "1.5.0")
1213 (source (origin
1214 (method url-fetch)
1215 (uri (string-append "https://github.com/dominikh/go-mode.el/"
1216 "archive/v" version ".tar.gz"))
1217 (file-name (string-append name "-" version ".tar.gz"))
1218 (sha256
1219 (base32
1220 "1adngbjyb8qnwg7n6r2y31djw9j6qf3b9fi63zd85035q7x4ljnm"))))
1221 (build-system emacs-build-system)
1222 (home-page "https://github.com/dominikh/go-mode.el")
1223 (synopsis "Go mode for Emacs")
1224 (description
1225 "This package provides go-mode, an Emacs mode for working with software
1226 written in the Go programming language.")
1227 (license license:bsd-3)))
1228
1229 (define-public emacs-google-maps
1230 (package
1231 (name "emacs-google-maps")
1232 (version "1.0.0")
1233 (source (origin
1234 (method url-fetch)
1235 (uri (string-append "https://github.com/jd/google-maps.el/"
1236 "archive/" version ".tar.gz"))
1237 (file-name (string-append name "-" version ".tar.gz"))
1238 (sha256
1239 (base32
1240 "014bxapm4d8vjxbzrfjdpsavxyfx981mlcb10aq5rmigr6il8ybs"))))
1241 (build-system emacs-build-system)
1242 (home-page "https://github.com/jd/google-maps.el")
1243 (synopsis "Access Google Maps from Emacs")
1244 (description "The @code{google-maps} package allows to display Google
1245 Maps directly inside Emacs.")
1246 (license license:gpl3+)))
1247
1248 (define-public emacs-mmm-mode
1249 (package
1250 (name "emacs-mmm-mode")
1251 (version "0.5.4")
1252 (source
1253 (origin
1254 (method url-fetch)
1255 (uri (string-append
1256 "https://github.com/purcell/mmm-mode/archive/"
1257 version ".tar.gz"))
1258 (file-name (string-append name "-" version ".tar.gz"))
1259 (sha256
1260 (base32
1261 "10kwslnflbjqm62wkrq420crqzdqalzfflp9pqk1i12zm6dm4mfv"))))
1262 (build-system gnu-build-system)
1263 (arguments
1264 '(#:phases
1265 (modify-phases %standard-phases
1266 (add-after 'unpack 'autogen
1267 (lambda _
1268 (zero? (system* "sh" "autogen.sh")))))))
1269 (native-inputs
1270 `(("autoconf" ,autoconf)
1271 ("automake" ,automake)
1272 ("emacs" ,emacs-minimal)
1273 ("texinfo" ,texinfo)))
1274 (home-page "https://github.com/purcell/mmm-mode")
1275 (synopsis "Allow multiple major modes in an Emacs buffer")
1276 (description
1277 "MMM Mode is a minor mode that allows multiple major modes to coexist in a
1278 single buffer.")
1279 (license license:gpl3+)))
1280
1281 (define-public emacs-pdf-tools
1282 (package
1283 (name "emacs-pdf-tools")
1284 (version "0.70")
1285 (source (origin
1286 (method url-fetch)
1287 (uri (string-append
1288 "https://github.com/politza/pdf-tools/archive/v"
1289 version ".tar.gz"))
1290 (file-name (string-append name "-" version ".tar.gz"))
1291 (sha256
1292 (base32
1293 "1m0api6wiawswyk46bdsyk6r5rg3b86a4paar6nassm6x6c6vr77"))))
1294 (build-system gnu-build-system)
1295 (arguments
1296 `(#:tests? #f ; there are no tests
1297 #:modules ((guix build gnu-build-system)
1298 ((guix build emacs-build-system) #:prefix emacs:)
1299 (guix build utils)
1300 (guix build emacs-utils))
1301 #:imported-modules (,@%gnu-build-system-modules
1302 (guix build emacs-build-system)
1303 (guix build emacs-utils))
1304 #:phases
1305 (modify-phases %standard-phases
1306 ;; Build server side using 'gnu-build-system'.
1307 (add-after 'unpack 'enter-server-dir
1308 (lambda _ (chdir "server") #t))
1309 (add-after 'enter-server-dir 'autogen
1310 (lambda _
1311 (zero? (system* "bash" "autogen.sh"))))
1312
1313 ;; Build emacs side using 'emacs-build-system'.
1314 (add-after 'compress-documentation 'enter-lisp-dir
1315 (lambda _ (chdir "../lisp") #t))
1316 (add-after 'enter-lisp-dir 'emacs-patch-variables
1317 (lambda* (#:key outputs #:allow-other-keys)
1318 ;; Set path to epdfinfo program.
1319 (emacs-substitute-variables "pdf-info.el"
1320 ("pdf-info-epdfinfo-program"
1321 (string-append (assoc-ref outputs "out")
1322 "/bin/epdfinfo")))
1323 ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
1324 ;; upgrading" that pdf-tools tries to perform.
1325 (emacs-substitute-variables "pdf-tools.el"
1326 ("pdf-tools-handle-upgrades" '()))))
1327 (add-after 'emacs-patch-variables 'emacs-install
1328 (assoc-ref emacs:%standard-phases 'install))
1329 (add-after 'emacs-install 'emacs-build
1330 (assoc-ref emacs:%standard-phases 'build))
1331 (add-after 'emacs-install 'emacs-make-autoloads
1332 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
1333 (native-inputs `(("autoconf" ,autoconf)
1334 ("automake" ,automake)
1335 ("pkg-config" ,pkg-config)
1336 ("emacs" ,emacs-minimal)))
1337 (inputs `(("poppler" ,poppler)
1338 ("cairo" ,cairo)
1339 ("glib" ,glib)
1340 ("libpng" ,libpng)
1341 ("zlib" ,zlib)))
1342 (synopsis "Emacs support library for PDF files")
1343 (description
1344 "PDF Tools is, among other things, a replacement of DocView for PDF
1345 files. The key difference is that pages are not pre-rendered by
1346 e.g. ghostscript and stored in the file-system, but rather created on-demand
1347 and stored in memory.")
1348 (home-page "https://github.com/politza/pdf-tools")
1349 (license license:gpl3+)))
1350
1351 (define-public emacs-dash
1352 (package
1353 (name "emacs-dash")
1354 (version "2.13.0")
1355 (source (origin
1356 (method url-fetch)
1357 (uri (string-append
1358 "https://github.com/magnars/dash.el/archive/"
1359 version ".tar.gz"))
1360 (file-name (string-append name "-" version ".tar.gz"))
1361 (sha256
1362 (base32
1363 "1pjlkrzr8n45bnp3xs3dybvy0nz3gwamrfc7vsi1nhpkkw99ihhb"))))
1364 (build-system emacs-build-system)
1365 (arguments
1366 `(#:phases
1367 (modify-phases %standard-phases
1368 (add-before 'install 'check
1369 (lambda _
1370 (zero? (system* "./run-tests.sh")))))))
1371 (home-page "https://github.com/magnars/dash.el")
1372 (synopsis "Modern list library for Emacs")
1373 (description "This package provides a modern list API library for Emacs.")
1374 (license license:gpl3+)))
1375
1376 (define-public emacs-bui
1377 (package
1378 (name "emacs-bui")
1379 (version "1.1.0")
1380 (source (origin
1381 (method url-fetch)
1382 (uri (string-append
1383 "https://github.com/alezost/bui.el/archive/v"
1384 version ".tar.gz"))
1385 (file-name (string-append name "-" version ".tar.gz"))
1386 (sha256
1387 (base32
1388 "112k0mq6xpy0r47vk66miw7rxbkv3d06pv3pd0vcmrhcnhnnk486"))))
1389 (build-system emacs-build-system)
1390 (propagated-inputs
1391 `(("dash" ,emacs-dash)))
1392 (home-page "https://github.com/alezost/bui.el")
1393 (synopsis "Buffer interface library for Emacs")
1394 (description
1395 "BUI (Buffer User Interface) is a library for making @code{list} and
1396 @code{info} interfaces to display an arbitrary data of the same
1397 type, for example: packages, buffers, files, etc.")
1398 (license license:gpl3+)))
1399
1400 (define-public emacs-guix
1401 (package
1402 (name "emacs-guix")
1403 (version "0.3.3")
1404 (source (origin
1405 (method url-fetch)
1406 (uri (string-append "https://github.com/alezost/guix.el"
1407 "/releases/download/v" version
1408 "/emacs-guix-" version ".tar.gz"))
1409 (sha256
1410 (base32
1411 "0mjb2yb454389ds2kr5rkjkl21r78z4c0f88ivf4g471yzg279mc"))))
1412 (build-system gnu-build-system)
1413 (arguments
1414 `(#:configure-flags
1415 (let ((guix (assoc-ref %build-inputs "guix"))
1416 (geiser (assoc-ref %build-inputs "geiser"))
1417 (dash (assoc-ref %build-inputs "dash"))
1418 (bui (assoc-ref %build-inputs "bui"))
1419 (magit-popup (assoc-ref %build-inputs "magit-popup"))
1420 (site-lisp "/share/emacs/site-lisp"))
1421 (list (string-append "--with-guix-site-dir="
1422 (car (find-files (string-append guix
1423 "/share/guile/site")
1424 (lambda (file stat)
1425 (string-prefix?
1426 "2."
1427 (basename file)))
1428 #:directories? #t)))
1429 (string-append "--with-guix-site-ccache-dir="
1430 (car (find-files (string-append guix "/lib/guile")
1431 (lambda (file stat)
1432 (string-prefix?
1433 "2." (basename file)))
1434 #:directories? #t))
1435 "/site-ccache")
1436 (string-append "--with-geiser-lispdir=" geiser site-lisp)
1437 (string-append "--with-dash-lispdir="
1438 dash site-lisp "/guix.d/dash-"
1439 ,(package-version emacs-dash))
1440 (string-append "--with-bui-lispdir="
1441 bui site-lisp "/guix.d/bui-"
1442 ,(package-version emacs-bui))
1443 (string-append "--with-popup-lispdir="
1444 magit-popup site-lisp "/guix.d/magit-popup-"
1445 ,(package-version emacs-magit-popup))))))
1446 (native-inputs
1447 `(("pkg-config" ,pkg-config)
1448 ("emacs" ,emacs-minimal)))
1449 (inputs
1450 `(("guile" ,guile-2.2)
1451 ("guix" ,guix)))
1452 (propagated-inputs
1453 `(("geiser" ,geiser)
1454 ("dash" ,emacs-dash)
1455 ("bui" ,emacs-bui)
1456 ("magit-popup" ,emacs-magit-popup)))
1457 (home-page "https://alezost.github.io/guix.el/")
1458 (synopsis "Emacs interface for GNU Guix")
1459 (description
1460 "Emacs-Guix provides a visual interface, tools and features for the GNU
1461 Guix package manager. Particularly, it allows you to do various package
1462 management tasks from Emacs. To begin with, run @code{M-x guix-about} or
1463 @code{M-x guix-help} command.")
1464 (license license:gpl3+)))
1465
1466 (define-public emacs-d-mode
1467 (package
1468 (name "emacs-d-mode")
1469 (version "2.0.8")
1470 (source (origin
1471 (method url-fetch)
1472 (uri (string-append
1473 "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode/"
1474 "archive/" version ".tar.gz"))
1475 (sha256
1476 (base32
1477 "0knpgi55jm09282aqf8pv55zillpnpzf9f4sgm6gwsmvxf17xaw0"))))
1478 (build-system emacs-build-system)
1479 (propagated-inputs
1480 `(("emacs-undercover" ,emacs-undercover)))
1481 (home-page "https://github.com/Emacs-D-Mode-Maintainers/Emacs-D-Mode")
1482 (synopsis "Emacs major mode for editing D code")
1483 (description "This package provides an Emacs major mode for highlighting
1484 code written in the D programming language. This mode is currently known to
1485 work with Emacs 24 and 25.")
1486 (license license:gpl2+)))
1487
1488 (define-public emacs-keyfreq
1489 (package
1490 (name "emacs-keyfreq")
1491 (version "20160516.716")
1492 (source
1493 (origin
1494 (method url-fetch)
1495 (uri (string-append "http://melpa.org/packages/keyfreq-"
1496 version ".el"))
1497 (sha256
1498 (base32
1499 "008hd7d06qskc3mx0bbdgpgy2pwxr8185fzlyqf9qjg49y74p6g8"))))
1500 (build-system emacs-build-system)
1501 (home-page "https://github.com/dacap/keyfreq")
1502 (synopsis "Track Emacs command frequencies")
1503 (description "@code{emacs-keyfeq} tracks and shows how many times you used
1504 a command.")
1505 (license license:gpl3+)))
1506
1507 (define-public emacs-undo-tree
1508 (package
1509 (name "emacs-undo-tree")
1510 (version "0.6.4")
1511 (source (origin
1512 (method git-fetch)
1513 (uri (git-reference
1514 (url "http://dr-qubit.org/git/undo-tree.git")
1515 (commit "release/0.6.4")))
1516 (file-name (string-append name "-" version "-checkout"))
1517 (sha256
1518 (base32
1519 "0b6hnv6bq1g5np5q2yw9r9aj1cxpp14akm21br7vpb7wp01fv4b3"))))
1520 (build-system emacs-build-system)
1521 (home-page "http://www.dr-qubit.org/emacs.php")
1522 (synopsis "Treat undo history as a tree")
1523 (description "Tree-like interface to Emacs undo system, providing
1524 graphical tree presentation of all previous states of buffer that
1525 allows easily move between them.")
1526 (license license:gpl3+)))
1527
1528 (define-public emacs-s
1529 (package
1530 (name "emacs-s")
1531 (version "1.11.0")
1532 (source (origin
1533 (method url-fetch)
1534 (uri (string-append
1535 "https://github.com/magnars/s.el/archive/"
1536 version ".tar.gz"))
1537 (file-name (string-append name "-" version ".tar.gz"))
1538 (sha256
1539 (base32
1540 "0krq5nz3llfx0vwdqn18pmq777ja0fac185w0h9qymppb1j1hvc2"))))
1541 (build-system emacs-build-system)
1542 (arguments
1543 `(#:phases
1544 (modify-phases %standard-phases
1545 (add-before 'install 'check
1546 (lambda _
1547 (zero? (system* "./run-tests.sh")))))))
1548 (home-page "https://github.com/magnars/s.el")
1549 (synopsis "Emacs string manipulation library")
1550 (description "This package provides an Emacs library for manipulating
1551 strings.")
1552 (license license:gpl3+)))
1553
1554 (define-public emacs-symon
1555 (package
1556 (name "emacs-symon")
1557 (version "20160630")
1558 (source
1559 (origin
1560 (method url-fetch)
1561 (uri (string-append "https://github.com/zk-phi/symon/archive/"
1562 version ".tar.gz"))
1563 (file-name (string-append name "-" version ".tar.gz"))
1564 (sha256
1565 (base32
1566 "0h4jcgdnq98wc9rj72nwyazq8498yg55jfljiij5qwbn1xf1g5zz"))))
1567 (build-system emacs-build-system)
1568 (home-page "https://github.com/zk-phi/symon")
1569 (synopsis "Tiny graphical system monitor")
1570 (description
1571 "Tiny graphical system monitor for the Emacs minibuffer when idle.")
1572 (license license:gpl2+)))
1573
1574 (define-public emacs-sx
1575 (package
1576 (name "emacs-sx")
1577 (version "0.4")
1578 (source (origin
1579 (method url-fetch)
1580 (uri (string-append "https://github.com/vermiculus/sx.el/"
1581 "archive/v" version ".tar.gz"))
1582 (file-name (string-append name "-" version ".tar.gz"))
1583 (sha256
1584 (base32
1585 "1w0xghfljqg31axcnv8gzlrd8pw25nji6idnrhflq0af9qh1dw03"))))
1586 (build-system emacs-build-system)
1587 (propagated-inputs
1588 `(("emacs-markdown-mode" ,emacs-markdown-mode)))
1589 (home-page "https://github.com/vermiculus/sx.el/")
1590 (synopsis "Emacs StackExchange client")
1591 (description
1592 "Emacs StackExchange client. Ask and answer questions on
1593 Stack Overflow, Super User, and other StackExchange sites.")
1594 (license license:gpl3+)))
1595
1596 (define-public emacs-f
1597 (package
1598 (name "emacs-f")
1599 (version "0.18.2")
1600 (source (origin
1601 (method url-fetch)
1602 (uri (string-append
1603 "https://github.com/rejeep/f.el/archive/v"
1604 version ".tar.gz"))
1605 (file-name (string-append name "-" version ".tar.gz"))
1606 (sha256
1607 (base32
1608 "1926shh2ymdsgz05c6q181mzzz1rci99ch568j151xi865jinyg5"))))
1609 (build-system emacs-build-system)
1610 (propagated-inputs
1611 `(("emacs-s" ,emacs-s)
1612 ("emacs-dash" ,emacs-dash)))
1613 (home-page "https://github.com/rejeep/f.el")
1614 (synopsis "Emacs API for working with files and directories")
1615 (description "This package provides an Emacs library for working with
1616 files and directories.")
1617 (license license:gpl3+)))
1618
1619 (define-public emacs-git-gutter
1620 (package
1621 (name "emacs-git-gutter")
1622 (version "0.90")
1623 (source (origin
1624 (method url-fetch)
1625 (uri (string-append
1626 "https://github.com/syohex/" name "/archive/"
1627 version ".tar.gz"))
1628 (file-name (string-append name "-" version ".tar.gz"))
1629 (sha256
1630 (base32
1631 "1nmhvhpq1l56mj2yq3ag23rw3x4xgnsy8szp30s26l0yjnkhc4qg"))))
1632 (build-system emacs-build-system)
1633 (home-page "https://github.com/syohex/emacs-git-gutter")
1634 (synopsis "See and manage hunks of text in a version control system")
1635 (description
1636 "This package is an Emacs minor mode for displaying and interacting with
1637 hunks of text managed in a version control system. Added modified and deleted
1638 areas can be indicated with symbols on the edge of the buffer, and commands
1639 can be used to move between and perform actions on these hunks.
1640
1641 Git, Mercurial, Subversion and Bazaar are supported, and many parts of the
1642 display and behaviour is easily customisable.")
1643 (license license:gpl3+)))
1644
1645 (define-public emacs-git-timemachine
1646 (package
1647 (name "emacs-git-timemachine")
1648 (version "3.0")
1649 (source
1650 (origin
1651 (method url-fetch)
1652 (uri (string-append "https://github.com/pidu/git-timemachine/"
1653 "archive/" version ".tar.gz"))
1654 (file-name (string-append name "-" version ".tar.gz"))
1655 (sha256
1656 (base32
1657 "1l4g0r69wfrnjsywv03v4bpdd53byg6zdx6mzabfxyymss3kvisa"))))
1658 (build-system emacs-build-system)
1659 (home-page "https://github.com/pidu/git-timemachine")
1660 (synopsis "Step through historic versions of Git-controlled files")
1661 (description "This package enables you to step through historic versions
1662 of files under Git version control from within Emacs.")
1663 (license license:gpl3+)))
1664
1665 (define-public emacs-minitest
1666 (package
1667 (name "emacs-minitest")
1668 (version "0.8.0")
1669 (source (origin
1670 (method url-fetch)
1671 (uri (string-append
1672 "https://github.com/arthurnn/minitest-emacs/archive/v"
1673 version ".tar.gz"))
1674 (file-name (string-append name "-" version ".tar.gz"))
1675 (sha256
1676 (base32
1677 "1dsb7kzvs1x6g4sgqmq73jqacb7wzm0wfkiq5m9dqdzq8mppgiqs"))))
1678 (build-system emacs-build-system)
1679 (arguments
1680 '(#:include (cons "^snippets\\/minitest-mode\\/" %default-include)
1681 #:exclude (delete "^[^/]*tests?\\.el$" %default-exclude)))
1682 (propagated-inputs
1683 `(("emacs-dash" ,emacs-dash)
1684 ("emacs-f" ,emacs-f)))
1685 (home-page "https://github.com/arthurnn/minitest-emacs")
1686 (synopsis "Emacs minitest mode")
1687 (description
1688 "The minitest mode provides commands to run the tests for the current
1689 file or line, as well as rerunning the previous tests, or all the tests for a
1690 project.
1691
1692 This package also includes relevant snippets for yasnippet.")
1693 (license license:expat)))
1694
1695 (define-public emacs-el-mock
1696 (package
1697 (name "emacs-el-mock")
1698 (version "1.25.1")
1699 (source
1700 (origin
1701 (method url-fetch)
1702 (uri (string-append "https://github.com/rejeep/el-mock.el/"
1703 "archive/v" version ".tar.gz"))
1704 (file-name (string-append name "-" version ".tar.gz"))
1705 (sha256
1706 (base32
1707 "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b"))))
1708 (build-system emacs-build-system)
1709 (home-page "https://github.com/rejeep/el-mock.el")
1710 (synopsis "Tiny mock and stub framework in Emacs Lisp")
1711 (description
1712 "Emacs Lisp Mock is a library for mocking and stubbing using readable
1713 syntax. Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp
1714 Expectations, but it can be used in other contexts.")
1715 (license license:gpl3+)))
1716
1717 (define-public emacs-espuds
1718 (package
1719 (name "emacs-espuds")
1720 (version "0.3.3")
1721 (source
1722 (origin
1723 (method url-fetch)
1724 (uri (string-append "https://github.com/ecukes/espuds/"
1725 "archive/v" version ".tar.gz"))
1726 (file-name (string-append name "-" version ".tar.gz"))
1727 (sha256
1728 (base32
1729 "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k"))))
1730 (build-system emacs-build-system)
1731 (propagated-inputs
1732 `(("emacs-s" ,emacs-s)
1733 ("emacs-dash" ,emacs-dash)
1734 ("emacs-f" ,emacs-f)))
1735 (home-page "https://github.com/ecukes/espuds")
1736 (synopsis "Common step definitions for Ecukes")
1737 (description "Espuds is a collection of the most commonly used step
1738 definitions for testing with the Ecukes framework.")
1739 (license license:gpl3+)))
1740
1741 (define-public emacs-es-mode
1742 (package
1743 (name "emacs-es-mode")
1744 (version "4.2.0")
1745 (source (origin
1746 (method url-fetch)
1747 (uri (string-append
1748 "https://github.com/dakrone/es-mode/archive/"
1749 version ".tar.gz"))
1750 (file-name (string-append name "-" version ".tar.gz"))
1751 (sha256
1752 (base32
1753 "02as82clm553yss7jfjac888308zr1h2229cch4z1yij70j25c8y"))))
1754 (build-system emacs-build-system)
1755 (propagated-inputs
1756 ;; The version of org in Emacs 24.5 is not sufficient, and causes tables
1757 ;; to be rendered incorrectly
1758 `(("emacs-org" ,emacs-org)))
1759 (home-page "https://github.com/dakrone/es-mode")
1760 (synopsis "Major mode for editing Elasticsearch queries")
1761 (description "@code{es-mode} includes highlighting, completion and
1762 indentation support for Elasticsearch queries. Also supported are
1763 @code{es-mode} blocks in @code{org-mode}, for which the results of queries can
1764 be processed through @code{jq}, or in the case of aggregations, can be
1765 rendered in to a table. In addition, there is an @code{es-command-center}
1766 mode, which displays information about Elasticsearch clusters.")
1767 (license license:gpl3+)))
1768
1769 (define-public emacs-expand-region
1770 (package
1771 (name "emacs-expand-region")
1772 (version "0.11.0")
1773 (source
1774 (origin
1775 (method url-fetch)
1776 (uri (string-append "https://github.com/magnars/expand-region.el"
1777 "/archive/" version ".tar.gz"))
1778 (file-name (string-append name "-" version ".tar.gz"))
1779 (sha256
1780 (base32
1781 "08dy1f411sh9wwww53rjw80idcf3vpki6ba2arl4hl5jcw9651g0"))))
1782 (build-system emacs-build-system)
1783 (home-page "https://github.com/magnars/expand-region.el")
1784 (synopsis "Increase selected region by semantic units")
1785 (description
1786 "Expand region increases the selected region by semantic units. Just
1787 keep pressing the key until it selects what you want. There's also
1788 @code{er/contract-region} if you expand too far.")
1789 (license license:gpl3+)))
1790
1791 (define-public emacs-fill-column-indicator
1792 (package
1793 (name "emacs-fill-column-indicator")
1794 (version "1.81")
1795 (source
1796 (origin
1797 (method url-fetch)
1798 (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator"
1799 "/archive/v" version ".tar.gz"))
1800 (file-name (string-append name "-" version ".tar.gz"))
1801 (sha256
1802 (base32
1803 "1xwyqbjbbicmvhlb85vg4j5snwy1vd7rfk89ws4viws5ljkhhyg8"))))
1804 (build-system emacs-build-system)
1805 (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator")
1806 (synopsis "Graphically indicate the fill column")
1807 (description
1808 "Fill-column-indicator graphically indicates the location of the fill
1809 column by drawing a thin line down the length of the editing window.")
1810 (license license:gpl3+)))
1811
1812 (define-public emacs-inf-ruby
1813 (package
1814 (name "emacs-inf-ruby")
1815 (version "2.5.1")
1816 (source
1817 (origin
1818 (method url-fetch)
1819 (uri (string-append "https://github.com/nonsequitur/inf-ruby/"
1820 "archive/" version ".tar.gz"))
1821 (file-name (string-append name "-" version ".tar.gz"))
1822 (sha256
1823 (base32
1824 "0m7323k649ckxql1grsdnf71bjhys7l4qb8wbpphb1mr1q8i4066"))))
1825 (build-system emacs-build-system)
1826 (home-page "https://github.com/nonsequitur/inf-ruby")
1827 (synopsis "Provides a REPL buffer connected to a Ruby subprocess in Emacs")
1828 (description
1829 "@code{inf-ruby} provides a Read Eval Print Loop (REPL) buffer, allowing
1830 for easy interaction with a ruby subprocess. Features include support for
1831 detecting specific uses of Ruby, e.g. when using rails, and using a
1832 appropriate console.")
1833 (license license:gpl3+)))
1834
1835 (define-public emacs-znc
1836 (package
1837 (name "emacs-znc")
1838 (version "0.0.2")
1839 (source
1840 (origin
1841 (method url-fetch)
1842 (uri (string-append "https://marmalade-repo.org/packages/znc-"
1843 version ".el"))
1844 (sha256
1845 (base32
1846 "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh"))))
1847 (build-system emacs-build-system)
1848 (home-page "https://github.com/sshirokov/ZNC.el")
1849 (synopsis "Make ERC and ZNC get along better")
1850 (description
1851 "This is a thin wrapper around @code{erc} that enables one to use the ZNC
1852 IRC bouncer with ERC.")
1853 (license license:expat)))
1854
1855 (define-public emacs-shut-up
1856 (package
1857 (name "emacs-shut-up")
1858 (version "0.3.2")
1859 (source
1860 (origin
1861 (method url-fetch)
1862 (uri (string-append "https://github.com/cask/shut-up/"
1863 "archive/v" version ".tar.gz"))
1864 (file-name (string-append name "-" version ".tar.gz"))
1865 (sha256
1866 (base32
1867 "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1"))))
1868 (build-system emacs-build-system)
1869 (home-page "https://github.com/cask/shut-up")
1870 (synopsis "Silence Emacs")
1871 (description "This package silences most output of Emacs when running an
1872 Emacs shell script.")
1873 (license license:expat)))
1874
1875 (define-public emacs-undercover
1876 (package
1877 (name "emacs-undercover")
1878 (version "0.6.0")
1879 (source
1880 (origin
1881 (method url-fetch)
1882 (uri (string-append "https://github.com/sviridov/undercover.el/"
1883 "archive/v" version ".tar.gz"))
1884 (file-name (string-append name "-" version ".tar.gz"))
1885 (sha256
1886 (base32
1887 "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a"))))
1888 (build-system emacs-build-system)
1889 (propagated-inputs
1890 `(("emacs-dash" ,emacs-dash)
1891 ("emacs-shut-up" ,emacs-shut-up)))
1892 (home-page "https://github.com/sviridov/undercover.el")
1893 (synopsis "Test coverage library for Emacs Lisp")
1894 (description
1895 "Undercover is a test coverage library for software written in Emacs
1896 Lisp.")
1897 (license license:expat)))
1898
1899 (define-public emacs-paren-face
1900 (package
1901 (name "emacs-paren-face")
1902 (version "1.0.0")
1903 (source
1904 (origin
1905 (method url-fetch)
1906 (uri (string-append "https://github.com/tarsius/paren-face/archive/"
1907 version ".tar.gz"))
1908 (file-name (string-append name "-" version ".tar.gz"))
1909 (sha256
1910 (base32
1911 "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn"))))
1912 (build-system emacs-build-system)
1913 (home-page "https://github.com/tarsius/paren-face")
1914 (synopsis "Face for parentheses in lisp modes")
1915 (description
1916 "This library defines a face named @code{parenthesis} used just for
1917 parentheses. The intended purpose of this face is to make parentheses less
1918 visible in Lisp code by dimming them. Lispers probably don't need to be
1919 constantly made aware of the existence of the parentheses. Dimming them might
1920 be even more useful for people new to lisp who have not yet learned to
1921 subconsciously blend out the parentheses.")
1922 (license license:gpl3+)))
1923
1924 (define-public emacs-page-break-lines
1925 (package
1926 (name "emacs-page-break-lines")
1927 (version "0.11")
1928 (source
1929 (origin
1930 (method url-fetch)
1931 (uri (string-append "https://github.com/purcell/page-break-lines/"
1932 "archive/" version ".tar.gz"))
1933 (file-name (string-append name "-" version ".tar.gz"))
1934 (sha256
1935 (base32
1936 "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg"))))
1937 (build-system emacs-build-system)
1938 (home-page "https://github.com/purcell/page-break-lines")
1939 (synopsis "Display page breaks as tidy horizontal lines")
1940 (description
1941 "This library provides a global mode which displays form feed characters
1942 as horizontal rules.")
1943 (license license:gpl3+)))
1944
1945 (define-public emacs-simple-httpd
1946 (package
1947 (name "emacs-simple-httpd")
1948 (version "1.4.6")
1949 (source
1950 (origin
1951 (method url-fetch)
1952 (uri (string-append "https://github.com/skeeto/emacs-web-server/"
1953 "archive/" version ".tar.gz"))
1954 (file-name (string-append name "-" version ".tar.gz"))
1955 (sha256
1956 (base32
1957 "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r"))))
1958 (build-system emacs-build-system)
1959 (home-page "https://github.com/skeeto/emacs-http-server")
1960 (synopsis "HTTP server in pure Emacs Lisp")
1961 (description
1962 "This package provides a simple HTTP server written in Emacs Lisp to
1963 serve files and directory listings.")
1964 (license license:unlicense)))
1965
1966 (define-public emacs-skewer-mode
1967 (package
1968 (name "emacs-skewer-mode")
1969 (version "1.6.2")
1970 (source
1971 (origin
1972 (method url-fetch)
1973 (uri (string-append "https://github.com/skeeto/skewer-mode/archive/"
1974 version ".tar.gz"))
1975 (file-name (string-append name "-" version ".tar.gz"))
1976 (sha256
1977 (base32
1978 "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0"))))
1979 (build-system emacs-build-system)
1980 (propagated-inputs
1981 `(("emacs-simple-httpd" ,emacs-simple-httpd)
1982 ("emacs-js2-mode" ,emacs-js2-mode)))
1983 (arguments '(#:include '("\\.el$" "\\.js$" "\\.html$")))
1984 (home-page "https://github.com/skeeto/skewer-mode")
1985 (synopsis "Live web development in Emacs")
1986 (description
1987 "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in
1988 a web browser. Expressions are sent on-the-fly from an editing buffer to be
1989 evaluated in the browser, just like Emacs does with an inferior Lisp process
1990 in Lisp modes.")
1991 (license license:unlicense)))
1992
1993 (define-public emacs-stripe-buffer
1994 (package
1995 (name "emacs-stripe-buffer")
1996 (version "0.2.5")
1997 (source
1998 (origin
1999 (method url-fetch)
2000 (uri (string-append "https://github.com/sabof/stripe-buffer/"
2001 "archive/" version ".tar.gz"))
2002 (file-name (string-append name "-" version ".tar.gz"))
2003 (sha256
2004 (base32
2005 "1p515dq7raly5hw94kiwm3vzsfih0d8af622q4ipvvljsm98aiik"))))
2006 (build-system emacs-build-system)
2007 (home-page "https://github.com/sabof/stripe-buffer/")
2008 (synopsis "Add stripes to list buffers")
2009 (description
2010 "This Emacs package adds faces to add stripes to list buffers and org
2011 tables.")
2012 (license license:gpl2+)))
2013
2014 (define-public emacs-rich-minority
2015 (package
2016 (name "emacs-rich-minority")
2017 (version "1.0.1")
2018 (source
2019 (origin
2020 (method url-fetch)
2021 (uri (string-append "https://github.com/Malabarba/rich-minority/"
2022 "archive/" version ".tar.gz"))
2023 (file-name (string-append name "-" version ".tar.gz"))
2024 (sha256
2025 (base32
2026 "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v"))))
2027 (build-system emacs-build-system)
2028 (home-page "https://github.com/Malabarba/rich-minority")
2029 (synopsis "Clean-up and beautify the list of minor modes")
2030 (description
2031 "This Emacs package hides and/or highlights minor modes in the
2032 mode-line.")
2033 (license license:gpl2+)))
2034
2035 (define-public emacs-rspec
2036 (package
2037 (name "emacs-rspec")
2038 (version "1.11")
2039 (source
2040 (origin
2041 (method url-fetch)
2042 (uri (string-append "https://github.com/pezra/rspec-mode/"
2043 "archive/v" version ".tar.gz"))
2044 (file-name (string-append name "-" version ".tar.gz"))
2045 (sha256
2046 (base32
2047 "1j0a7ms5516nlg60qfyn730pfxys6acm0rgyxh5xfkpi6jafgpvw"))))
2048 (build-system emacs-build-system)
2049 (home-page "https://github.com/pezra/rspec-mode")
2050 (synopsis "Provides a rspec mode for working with RSpec")
2051 (description
2052 "The Emacs RSpec mode provides keybindings for Ruby source files, e.g. to
2053 verify the spec associated with the current buffer, or entire project, as well
2054 as moving between the spec files, and coresponding code files.
2055
2056 Also included are keybindings for spec files and Dired buffers, as well as
2057 snippets for yasnippet.")
2058 (license license:gpl3+)))
2059
2060 (define-public emacs-smart-mode-line
2061 (package
2062 (name "emacs-smart-mode-line")
2063 (version "2.10.1")
2064 (source
2065 (origin
2066 (method url-fetch)
2067 (uri (string-append "https://github.com/Malabarba/smart-mode-line/"
2068 "archive/" version ".tar.gz"))
2069 (file-name (string-append name "-" version ".tar.gz"))
2070 (sha256
2071 (base32
2072 "0i9wajabrrsjzwd842q0m2611kf0q31p9hg1pdj81177gynkw8l8"))))
2073 (build-system emacs-build-system)
2074 (propagated-inputs
2075 `(("emacs-rich-minority" ,emacs-rich-minority)))
2076 (home-page "https://github.com/Malabarba/smart-mode-line")
2077 (synopsis "Color-coded smart mode-line")
2078 (description
2079 "Smart Mode Line is a mode-line theme for Emacs. It aims to be easy to
2080 read from small to large monitors by using colors, a prefix feature, and smart
2081 truncation.")
2082 (license license:gpl2+)))
2083
2084 (define-public emacs-shell-switcher
2085 (package
2086 (name "emacs-shell-switcher")
2087 (version "1.0.1")
2088 (source
2089 (origin
2090 (method url-fetch)
2091 (uri (string-append "https://github.com/DamienCassou/shell-switcher"
2092 "/archive/v" version ".tar.gz"))
2093 (file-name (string-append name "-" version ".tar.gz"))
2094 (sha256
2095 (base32
2096 "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz"))))
2097 (build-system emacs-build-system)
2098 (home-page "https://github.com/DamienCassou/shell-switcher")
2099 (synopsis "Provide fast switching between shell buffers")
2100 (description
2101 "This package provides commands to quickly switch between shell buffers.")
2102 (license license:gpl3+)))
2103
2104 (define-public emacs-ob-ipython
2105 (package
2106 (name "emacs-ob-ipython")
2107 (version "20150704.8807064693")
2108 (source (origin
2109 (method git-fetch)
2110 (uri (git-reference
2111 (commit "880706469338ab59b5bb7dbe8460016f89755364")
2112 (url "https://github.com/gregsexton/ob-ipython.git")))
2113 (sha256
2114 (base32
2115 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
2116 (build-system emacs-build-system)
2117 (propagated-inputs
2118 `(("emacs-f" ,emacs-f)))
2119 (home-page "http://www.gregsexton.org")
2120 (synopsis "Org-Babel functions for IPython evaluation")
2121 (description "This package adds support to Org-Babel for evaluating Python
2122 source code using IPython.")
2123 (license license:gpl3+)))
2124
2125 (define-public emacs-debbugs
2126 (package
2127 (name "emacs-debbugs")
2128 (version "0.14")
2129 (source (origin
2130 (method url-fetch)
2131 (uri (string-append "https://elpa.gnu.org/packages/debbugs-"
2132 version ".tar"))
2133 (sha256
2134 (base32
2135 "07wgcvg038l88gxvjr0gjpjhyk743w22x1rqghz3gkmif0g70say"))))
2136 (build-system emacs-build-system)
2137 (arguments '(#:include '("\\.el$" "\\.wsdl$" "\\.info$")))
2138 (propagated-inputs
2139 `(("emacs-async" ,emacs-async)))
2140 (home-page "https://elpa.gnu.org/packages/debbugs.html")
2141 (synopsis "Access the Debbugs bug tracker in Emacs")
2142 (description
2143 "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
2144 Tracker} from within Emacs.
2145
2146 For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
2147 and the command @code{M-x debbugs-gnu-search} for bug searching. If you
2148 prefer the listing of bugs as TODO items of @code{org-mode}, you could use
2149 @code{M-x debbugs-org} and related commands.
2150
2151 A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
2152 Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
2153 (license license:gpl3+)))
2154
2155 (define-public emacs-deferred
2156 (package
2157 (name "emacs-deferred")
2158 (version "0.3.2")
2159 (home-page "https://github.com/kiwanami/emacs-deferred")
2160 (source (origin
2161 (method git-fetch)
2162 (uri (git-reference
2163 (url home-page)
2164 (commit (string-append "v" version))))
2165 (sha256
2166 (base32
2167 "0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
2168 (file-name (string-append name "-" version))))
2169 (build-system emacs-build-system)
2170 ;; FIXME: Would need 'el-expectations' to actually run tests.
2171 (synopsis "Simple asynchronous functions for Emacs Lisp")
2172 (description
2173 "The @code{deferred.el} library provides support for asynchronous tasks.
2174 The API is almost the same as that of
2175 @uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
2176 for asynchronous tasks.")
2177 (license license:gpl3+)))
2178
2179 (define-public butler
2180 (package
2181 (name "emacs-butler")
2182 (version "0.2.4")
2183 (home-page "https://github.com/AshtonKem/Butler")
2184 (source (origin
2185 (method git-fetch)
2186 (uri (git-reference
2187 (url home-page)
2188 (commit version)))
2189 (sha256
2190 (base32
2191 "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
2192 (file-name (string-append name "-" version))))
2193 (build-system emacs-build-system)
2194 (propagated-inputs
2195 `(("emacs-deferred" ,emacs-deferred)))
2196 (synopsis "Emacs client for Jenkins")
2197 (description
2198 "Butler provides an interface to connect to Jenkins continuous
2199 integration servers. Users can specify a list of server in the
2200 @code{butler-server-list} variable and then use @code{M-x butler-status} to
2201 view the build status of those servers' build jobs, and possibly to trigger
2202 build jobs.")
2203 (license license:gpl3+)))
2204
2205 (define-public emacs-company
2206 (package
2207 (name "emacs-company")
2208 (version "0.9.3")
2209 (source
2210 (origin
2211 (method url-fetch)
2212 (uri (string-append "https://github.com/company-mode/company-mode/archive/"
2213 version ".tar.gz"))
2214 (file-name (string-append name "-" version ".tar.gz"))
2215 (sha256
2216 (base32
2217 "1fyrpchpdmvszssy1qmsw41aqpv6q5rybvs1bw00nv9xdhiaq4vh"))))
2218 (build-system emacs-build-system)
2219 (arguments
2220 `(#:phases
2221 (modify-phases %standard-phases
2222 (add-before 'install 'check
2223 (lambda _
2224 ;; The company-files-candidates-normal-root test looks
2225 ;; for the /bin directory, but the build environment has
2226 ;; no /bin directory. Modify the test to look for the
2227 ;; /tmp directory.
2228 (substitute* "test/files-tests.el"
2229 (("/bin/") "/tmp/"))
2230 (zero? (system* "make" "test-batch")))))))
2231 (home-page "http://company-mode.github.io/")
2232 (synopsis "Modular text completion framework")
2233 (description
2234 "Company is a modular completion mechanism. Modules for retrieving
2235 completion candidates are called back-ends, modules for displaying them are
2236 front-ends. Company comes with many back-ends, e.g. @code{company-elisp}.
2237 These are distributed in separate files and can be used individually.")
2238 (license license:gpl3+)))
2239
2240 (define-public emacs-multiple-cursors
2241 (package
2242 (name "emacs-multiple-cursors")
2243 (version "1.4.0")
2244 (source
2245 (origin
2246 (method url-fetch)
2247 (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
2248 "archive/" version ".tar.gz"))
2249 (file-name (string-append name "-" version ".tar.gz"))
2250 (sha256
2251 (base32
2252 "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
2253 (build-system emacs-build-system)
2254 (home-page "https://github.com/magnars/multiple-cursors.el")
2255 (synopsis "Multiple cursors for Emacs")
2256 (description
2257 "This package adds support to Emacs for editing text with multiple
2258 simultaneous cursors.")
2259 (license license:gpl3+)))
2260
2261 (define-public typo
2262 (package
2263 (name "emacs-typo")
2264 (version "1.1")
2265 (home-page "https://github.com/jorgenschaefer/typoel")
2266 (source (origin
2267 (method git-fetch)
2268 (uri (git-reference
2269 (url home-page)
2270 (commit (string-append "v" version))))
2271 (sha256
2272 (base32
2273 "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
2274 (file-name (string-append name "-" version))))
2275 (build-system emacs-build-system)
2276 (synopsis "Minor mode for typographic editing")
2277 (description
2278 "This package provides two Emacs modes, @code{typo-mode} and
2279 @code{typo-global-mode}. These modes automatically insert Unicode characters
2280 for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
2281 automatically inserts a Unicode opening or closing quotation mark, depending
2282 on context.")
2283 (license license:gpl3+)))
2284
2285 (define-public emacs-scheme-complete
2286 (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
2287 (package
2288 (name "emacs-scheme-complete")
2289 (version (string-append "20151223." (string-take commit 8)))
2290 (source
2291 (origin
2292 (file-name (string-append name "-" version))
2293 (method git-fetch)
2294 (uri (git-reference
2295 (url "https://github.com/ashinn/scheme-complete.git")
2296 (commit commit)))
2297 (sha256
2298 (base32
2299 "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
2300 (patches
2301 (search-patches "emacs-scheme-complete-scheme-r5rs-info.patch"))))
2302 (build-system emacs-build-system)
2303 (home-page "https://github.com/ashinn/scheme-complete")
2304 (synopsis "Smart tab completion for Scheme in Emacs")
2305 (description
2306 "This file provides a single function, @code{scheme-smart-complete},
2307 which you can use for intelligent, context-sensitive completion for any Scheme
2308 implementation in Emacs. To use it just load this file and bind that function
2309 to a key in your preferred mode.")
2310 (license license:public-domain))))
2311
2312 (define-public emacs-mit-scheme-doc
2313 (package
2314 (name "emacs-mit-scheme-doc")
2315 (version "20140203")
2316 (source
2317 (origin
2318 (modules '((guix build utils)))
2319 (snippet
2320 ;; keep only file of interest
2321 '(begin
2322 (for-each delete-file '("dot-emacs.el" "Makefile"))
2323 (install-file "6.945-config/mit-scheme-doc.el" ".")
2324 (delete-file-recursively "6.945-config")))
2325 (file-name (string-append name "-" version ".tar.bz2"))
2326 (method url-fetch)
2327 (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
2328 "6.945/dont-panic/emacs-basic-config.tar.bz2"))
2329 (sha256
2330 (base32
2331 "0dqidg2bd66pawqfarvwca93w5gqf9mikn1k2a2rmd9ymfjpziq1"))))
2332 (build-system emacs-build-system)
2333 (inputs `(("mit-scheme" ,mit-scheme)))
2334 (arguments
2335 `(#:phases
2336 (modify-phases %standard-phases
2337 (add-after 'unpack 'configure-doc
2338 (lambda* (#:key inputs #:allow-other-keys)
2339 (let* ((mit-scheme-dir (assoc-ref inputs "mit-scheme"))
2340 (doc-dir (string-append mit-scheme-dir "/share/doc/"
2341 "mit-scheme-"
2342 ,(package-version mit-scheme))))
2343 (substitute* "mit-scheme-doc.el"
2344 (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/")
2345 (string-append "file:" doc-dir "/mit-scheme-ref/")))))))))
2346 (home-page "http://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
2347 (synopsis "MIT-Scheme documentation lookup for Emacs")
2348 (description
2349 "This package provides a set of Emacs functions to search definitions of
2350 identifiers in the MIT-Scheme documentation.")
2351 (license license:gpl2+)))
2352
2353 (define-public emacs-constants
2354 (package
2355 (name "emacs-constants")
2356 (version "2.6")
2357 (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
2358 (source
2359 (origin
2360 (file-name (string-append name "-" version ".tar.gz"))
2361 (method url-fetch)
2362 (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
2363 "/archive/v" version ".tar.gz"))
2364 (sha256
2365 (base32
2366 "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
2367 (build-system emacs-build-system)
2368 (synopsis "Enter definition of constants into an Emacs buffer")
2369 (description
2370 "This package provides functions for inserting the definition of natural
2371 constants and units into an Emacs buffer.")
2372 (license license:gpl2+)))
2373
2374 (define-public emacs-tagedit
2375 (package
2376 (name "emacs-tagedit")
2377 (version "1.4.0")
2378 (source
2379 (origin
2380 (method url-fetch)
2381 (uri (string-append "https://github.com/magnars/tagedit/"
2382 "archive/" version ".tar.gz"))
2383 (file-name (string-append name "-" version ".tar.gz"))
2384 (sha256
2385 (base32
2386 "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq"))))
2387 (build-system emacs-build-system)
2388 (propagated-inputs
2389 `(("emacs-s" ,emacs-s)
2390 ("emacs-dash" ,emacs-dash)))
2391 (home-page "https://github.com/magnars/tagedit")
2392 (synopsis "Some paredit-like features for html-mode")
2393 (description
2394 "This package provides a collection of paredit-like functions for editing
2395 in @code{html-mode}.")
2396 (license license:gpl3+)))
2397
2398 (define-public emacs-slime
2399 (package
2400 (name "emacs-slime")
2401 (version "2.19")
2402 (source
2403 (origin
2404 (file-name (string-append name "-" version ".tar.gz"))
2405 (method url-fetch)
2406 (uri (string-append
2407 "https://github.com/slime/slime/archive/v"
2408 version ".tar.gz"))
2409 (sha256
2410 (base32
2411 "1jhaq5cn89k45nzyl0jd12gmjxnh1bq9jlfwrxba342agxsscb0p"))))
2412 (build-system emacs-build-system)
2413 (native-inputs
2414 `(("texinfo" ,texinfo)))
2415 (arguments
2416 `(#:include '("\\.el$" "\\.lisp$" "\\.asd$" "contrib")
2417 #:exclude '("^slime-tests.el" "^contrib/test/"
2418 "^contrib/Makefile$" "^contrib/README.md$")
2419 #:phases
2420 (modify-phases %standard-phases
2421 (add-before 'install 'configure
2422 (lambda* _
2423 (emacs-substitute-variables "slime.el"
2424 ("inferior-lisp-program" "sbcl"))
2425 #t))
2426 (add-before 'install 'install-doc
2427 (lambda* (#:key outputs #:allow-other-keys)
2428 (let* ((out (assoc-ref outputs "out"))
2429 (info-dir (string-append out "/share/info"))
2430 (doc-dir (string-append out "/share/doc/"
2431 ,name "-" ,version))
2432 (doc-files '("doc/slime-refcard.pdf"
2433 "README.md" "NEWS" "PROBLEMS"
2434 "CONTRIBUTING.md")))
2435 (with-directory-excursion "doc"
2436 (substitute* "Makefile"
2437 (("infodir=/usr/local/info")
2438 (string-append "infodir=" info-dir)))
2439 (system* "make" "html/index.html")
2440 (system* "make" "slime.info")
2441 (install-file "slime.info" info-dir)
2442 (copy-recursively "html" (string-append doc-dir "/html")))
2443 (for-each (lambda (f)
2444 (install-file f doc-dir)
2445 (delete-file f))
2446 doc-files)
2447 (delete-file-recursively "doc")
2448 #t))))))
2449 (home-page "https://github.com/slime/slime")
2450 (synopsis "Superior Lisp Interaction Mode for Emacs")
2451 (description
2452 "SLIME extends Emacs with support for interactive programming in
2453 Common Lisp. The features are centered around @{slime-mode}, an Emacs
2454 minor mode that complements the standard @{lisp-mode}. While lisp-mode
2455 supports editing Lisp source files, @{slime-mode} adds support for
2456 interacting with a running Common Lisp process for compilation,
2457 debugging, documentation lookup, and so on.")
2458 (license license:gpl2+)))
2459
2460 (define-public emacs-popup
2461 (package
2462 (name "emacs-popup")
2463 (version "0.5.3")
2464 (source (origin
2465 (method url-fetch)
2466 (uri (string-append
2467 "https://github.com/auto-complete/popup-el/archive/v"
2468 version ".tar.gz"))
2469 (file-name (string-append name "-" version ".tar.gz"))
2470 (sha256
2471 (base32
2472 "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
2473 (build-system emacs-build-system)
2474 (home-page "https://github.com/auto-complete/popup-el")
2475 (synopsis "Visual Popup User Interface for Emacs")
2476 (description
2477 "Popup.el is a visual popup user interface library for Emacs.
2478 This provides a basic API and common UI widgets such as popup tooltips
2479 and popup menus.")
2480 (license license:gpl3+)))
2481
2482 (define-public emacs-god-mode
2483 (let ((commit "6cf0807b6555eb6fcf8387a4e3b667071ef38964")
2484 (revision "1"))
2485 (package
2486 (name "emacs-god-mode")
2487 (version (string-append "20151005.925."
2488 revision "-" (string-take commit 9)))
2489 (source
2490 (origin
2491 (method git-fetch)
2492 (uri (git-reference
2493 (url "https://github.com/chrisdone/god-mode.git")
2494 (commit commit)))
2495 (file-name (string-append name "-" version "-checkout"))
2496 (sha256
2497 (base32
2498 "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
2499 (build-system emacs-build-system)
2500 (home-page "https://github.com/chrisdone/god-mode")
2501 (synopsis "Minor mode for entering commands without modifier keys")
2502 (description
2503 "This package provides a global minor mode for entering Emacs commands
2504 without modifier keys. It's similar to Vim's separation of commands and
2505 insertion mode. When enabled all keys are implicitly prefixed with
2506 @samp{C-} (among other helpful shortcuts).")
2507 (license license:gpl3+))))
2508
2509 (define-public emacs-rfcview
2510 (package
2511 (name "emacs-rfcview")
2512 (version "0.13")
2513 (home-page "http://www.loveshack.ukfsn.org/emacs")
2514 (source (origin
2515 (method url-fetch)
2516 (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
2517 (sha256
2518 (base32
2519 "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
2520 (build-system emacs-build-system)
2521 (synopsis "Prettify Request for Comments (RFC) documents")
2522 (description "The Internet Engineering Task Force (IETF) and the Internet
2523 Society (ISOC) publish various Internet-related protocols and specifications
2524 as \"Request for Comments\" (RFC) documents and Internet Standard (STD)
2525 documents. RFCs and STDs are published in a simple text form. This package
2526 provides an Emacs major mode, rfcview-mode, which makes it more pleasant to
2527 read these documents in Emacs. It prettifies the text and adds
2528 hyperlinks/menus for easier navigation. It also provides functions for
2529 browsing the index of RFC documents and fetching them from remote servers or
2530 local directories.")
2531 (license license:gpl3+)))
2532
2533 (define-public emacs-ffap-rfc-space
2534 (package
2535 (name "emacs-ffap-rfc-space")
2536 (version "12")
2537 (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
2538 (source (origin
2539 (method url-fetch)
2540 (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
2541 (sha256
2542 (base32
2543 "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
2544 (build-system emacs-build-system)
2545 (synopsis "Make ffap recognize an RFC with a space before its number")
2546 (description "The Internet Engineering Task Force (IETF) and the
2547 Internet Society (ISOC) publish various Internet-related protocols and
2548 specifications as \"Request for Comments\" (RFC) documents. The
2549 built-in Emacs module \"ffap\" (Find File at Point) has the ability to
2550 recognize names at point which look like \"RFC1234\" and \"RFC-1234\"
2551 and load the appropriate RFC from a remote server. However, it fails
2552 to recognize a name like \"RFC 1234\". This package enhances ffap so
2553 that it correctly finds RFCs even when a space appears before the
2554 number.")
2555 (license license:gpl3+)))
2556
2557 (define-public emacs-org-bullets
2558 (package
2559 (name "emacs-org-bullets")
2560 (version "0.2.4")
2561 (source
2562 (origin
2563 (method url-fetch)
2564 (uri (string-append "https://github.com/sabof/org-bullets/archive/"
2565 version ".tar.gz"))
2566 (file-name (string-append name "-" version ".tar.gz"))
2567 (sha256
2568 (base32
2569 "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
2570 (build-system emacs-build-system)
2571 (home-page "https://github.com/sabof/org-bullets")
2572 (synopsis "Show bullets in org-mode as UTF-8 characters")
2573 (description
2574 "This package provides an Emacs minor mode causing bullets in
2575 @code{org-mode} to be rendered as UTF-8 characters.")
2576 (license license:gpl3+)))
2577
2578 (define-public emacs-org-pomodoro
2579 (package
2580 (name "emacs-org-pomodoro")
2581 (version "2.1.0")
2582 (source
2583 (origin
2584 (method url-fetch)
2585 (uri (string-append
2586 "https://github.com/lolownia/org-pomodoro/archive/"
2587 version ".tar.gz"))
2588 (file-name (string-append name "-" version ".tar.gz"))
2589 (sha256
2590 (base32
2591 "1jalsggw3q5kvj353f84x4nl04a5vmq07h75ggppy1627lb31zm4"))))
2592 (build-system emacs-build-system)
2593 (propagated-inputs
2594 `(("emacs-alert" ,emacs-alert)))
2595 (home-page "https://github.com/lolownia/org-pomodoro")
2596 (synopsis "Pomodoro technique for org-mode")
2597 (description "@code{emacs-org-pomodoro} adds very basic support for
2598 Pomodoro technique in Emacs org-mode.
2599
2600 Run @code{M-x org-pomodoro} for the task at point or select one of the
2601 last tasks that you clocked time for. Each clocked-in pomodoro starts
2602 a timer of 25 minutes and after each pomodoro a break timer of 5
2603 minutes is started automatically. Every 4 breaks a long break is
2604 started with 20 minutes. All values are customizable.")
2605 (license license:gpl3+)))
2606
2607 (define-public emacs-org-trello
2608 (package
2609 (name "emacs-org-trello")
2610 (version "0.7.9")
2611 (source (origin
2612 (method url-fetch)
2613 (uri (string-append
2614 "https://github.com/org-trello/org-trello/archive/"
2615 version ".tar.gz"))
2616 (file-name (string-append name "-" version ".tar.gz"))
2617 (sha256
2618 (base32
2619 "074dka8g673bj1ck5vavbjaij5jyniygdlw51mdds005wd2br9wf"))))
2620 (build-system emacs-build-system)
2621 (propagated-inputs
2622 `(("emacs-deferred" ,emacs-deferred)
2623 ("emacs-request" ,emacs-request)
2624 ("emacs-dash" ,emacs-dash)
2625 ("emacs-s" ,emacs-s)))
2626 (home-page "https://org-trello.github.io")
2627 (synopsis "Emacs minor mode for interacting with Trello")
2628 (description "This package provides an Emacs minor mode to extend
2629 @code{org-mode} with Trello abilities. Trello is an online project
2630 organizer.")
2631 (license license:gpl3+)))
2632
2633 (define-public emacs-zenburn-theme
2634 (package
2635 (name "emacs-zenburn-theme")
2636 (version "2.5")
2637 (source (origin
2638 (method url-fetch)
2639 (uri (string-append
2640 "https://github.com/bbatsov/zenburn-emacs/archive/v"
2641 version ".tar.gz"))
2642 (file-name (string-append name "-" version ".tar.gz"))
2643 (sha256
2644 (base32
2645 "03kfhzgbbbl8ivpzzky6qxw4j9mmp452m1sk7wikxmcalfnix0gn"))))
2646 (build-system emacs-build-system)
2647 (home-page "https://github.com/bbatsov/zenburn-emacs")
2648 (synopsis "Low contrast color theme for Emacs")
2649 (description
2650 "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs.
2651 It is built on top of the custom theme support in Emacs 24 or later.")
2652 (license license:gpl3+)))
2653
2654 (define-public emacs-solarized-theme
2655 (package
2656 (name "emacs-solarized-theme")
2657 (version "1.2.2")
2658 (source (origin
2659 (method url-fetch)
2660 (uri (string-append "https://github.com/bbatsov/solarized-emacs/"
2661 "archive/v" version ".tar.gz"))
2662 (file-name (string-append name "-" version ".tar.gz"))
2663 (sha256
2664 (base32
2665 "1ha3slc6d9wi9ilkhmwrzkvf308n6ph7b0k69pk369s9304awxzx"))))
2666 (build-system emacs-build-system)
2667 (propagated-inputs
2668 `(("emacs-dash" ,emacs-dash)))
2669 (home-page "https://github.com/bbatsov/solarized-emacs")
2670 (synopsis "Port of the Solarized theme for Emacs")
2671 (description
2672 "Solarized for Emacs is a port of the Solarized theme for Vim. This
2673 package provides a light and a dark variant.")
2674 (license license:gpl3+)))
2675
2676 (define-public emacs-ahungry-theme
2677 (package
2678 (name "emacs-ahungry-theme")
2679 (version "1.4.0")
2680 (source
2681 (origin (method url-fetch)
2682 (uri (string-append "https://elpa.gnu.org/packages/ahungry-theme-"
2683 version ".tar"))
2684 (sha256
2685 (base32
2686 "1n8k12mfn01f20j0pyd7ycj77x0y3a008xc94frklaaqjc0v26s4"))))
2687 (build-system emacs-build-system)
2688 (home-page "https://github.com/ahungry/color-theme-ahungry")
2689 (synopsis "Ahungry color theme for Emacs")
2690 (description "Ahungry theme for Emacs provides bright and bold colors.
2691 If you load it from a terminal, you will be able to make use of the
2692 transparent background. If you load it from a GUI, it will default to a
2693 dark background.")
2694 (license license:gpl3+)))
2695
2696 (define-public emacs-2048-game
2697 (package
2698 (name "emacs-2048-game")
2699 (version "20151026.1233")
2700 (source
2701 (origin
2702 (method url-fetch)
2703 (uri (string-append "https://melpa.org/packages/2048-game-"
2704 version ".el"))
2705 (sha256
2706 (base32
2707 "0gy2pvz79whpavp4jmz8h9krzn7brmvv3diixi1d4w51pcdvaldd"))))
2708 (build-system emacs-build-system)
2709 (home-page "https://bitbucket.org/zck/2048.el")
2710 (synopsis "Implementation of the game 2048 in Emacs Lisp")
2711 (description
2712 "This program is an implementation of 2048 for Emacs.
2713 The goal of this game is to create a tile with value 2048. The size of the
2714 board and goal value can be customized.")
2715 (license license:gpl3+)))
2716
2717 (define-public emacs-base16-theme
2718 (package
2719 (name "emacs-base16-theme")
2720 (version "2.1")
2721 (source
2722 (origin
2723 (method url-fetch)
2724 (uri (string-append "https://stable.melpa.org/packages/base16-theme-"
2725 version ".tar"))
2726 (sha256
2727 (base32
2728 "0z6hrwz2jlz6jbr381rcqcqvx6hss5cad352klx07rark7zccacj"))))
2729 (build-system emacs-build-system)
2730 (home-page "https://github.com/belak/base16-emacs")
2731 (synopsis "Base16 color themes for Emacs")
2732 (description
2733 "Base16 provides carefully chosen syntax highlighting and a default set
2734 of sixteen colors suitable for a wide range of applications. Base16 is not a
2735 single theme but a set of guidelines with numerous implementations.")
2736 (license license:expat)))
2737
2738 (define-public emacs-smartparens
2739 (package
2740 (name "emacs-smartparens")
2741 (version "1.10.1")
2742 (source (origin
2743 (method url-fetch)
2744 (uri (string-append
2745 "https://github.com/Fuco1/smartparens/archive/"
2746 version ".tar.gz"))
2747 (file-name (string-append name "-" version ".tar.gz"))
2748 (sha256
2749 (base32
2750 "1nwsi6fbbxjq3r22r6knmx71la3g0lmwfb95i9q4k138gn0m2l3i"))))
2751 (build-system emacs-build-system)
2752 (propagated-inputs `(("emacs-dash" ,emacs-dash)))
2753 (home-page "https://github.com/Fuco1/smartparens")
2754 (synopsis "Paredit-like insertion, wrapping and navigation with user
2755 defined pairs")
2756 (description
2757 "Smartparens is a minor mode for Emacs that deals with parens pairs
2758 and tries to be smart about it. It started as a unification effort to
2759 combine functionality of several existing packages in a single,
2760 compatible and extensible way to deal with parentheses, delimiters, tags
2761 and the like. Some of these packages include autopair, textmate,
2762 wrap-region, electric-pair-mode, paredit and others. With the basic
2763 features found in other packages it also brings many improvements as
2764 well as completely new features.")
2765 (license license:gpl3+)))
2766
2767 (define-public emacs-highlight-symbol
2768 (package
2769 (name "emacs-highlight-symbol")
2770 (version "1.3")
2771 (source (origin
2772 (method url-fetch)
2773 (uri (string-append
2774 "https://github.com/nschum/highlight-symbol.el/archive/"
2775 version ".tar.gz"))
2776 (file-name (string-append name "-" version ".tar.gz"))
2777 (sha256
2778 (base32
2779 "1n7k1qns0fn0jsyc0hrjac5nzk21xw48yc30vyrhwvc51h0b9g90"))))
2780 (build-system emacs-build-system)
2781 (home-page "https://nschum.de/src/emacs/highlight-symbol")
2782 (synopsis "Automatic and manual symbol highlighting for Emacs")
2783 (description
2784 "Use @code{highlight-symbol} to toggle highlighting of the symbol at
2785 point throughout the current buffer. Use @code{highlight-symbol-mode} to keep
2786 the symbol at point highlighted.
2787
2788 The functions @code{highlight-symbol-next}, @code{highlight-symbol-prev},
2789 @code{highlight-symbol-next-in-defun} and
2790 @code{highlight-symbol-prev-in-defun} allow for cycling through the locations
2791 of any symbol at point. Use @code{highlight-symbol-nav-mode} to enable key
2792 bindings @code{M-p} and @code{M-p} for navigation. When
2793 @code{highlight-symbol-on-navigation-p} is set, highlighting is triggered
2794 regardless of @code{highlight-symbol-idle-delay}.
2795
2796 @code{highlight-symbol-query-replace} can be used to replace the symbol. ")
2797 (license license:gpl2+)))
2798
2799 (define-public emacs-hl-todo
2800 (package
2801 (name "emacs-hl-todo")
2802 (version "1.7.4")
2803 (source (origin
2804 (method url-fetch)
2805 (uri (string-append
2806 "https://raw.githubusercontent.com/tarsius/hl-todo/"
2807 version "/hl-todo.el"))
2808 (file-name (string-append "hl-todo-" version ".el"))
2809 (sha256
2810 (base32
2811 "016ivl4s0ysrm1xbfi86j5xcs759fcb0mkspxw81x8mpi3yb46ya"))))
2812 (build-system emacs-build-system)
2813 (home-page "https://github.com/tarsius/hl-todo")
2814 (synopsis "Emacs mode to highlight TODO and similar keywords")
2815 (description
2816 "This package provides an Emacs mode to highlight TODO and similar
2817 keywords in comments and strings. This package also provides commands for
2818 moving to the next or previous keyword and to invoke @code{occur} with a
2819 regexp that matches all known keywords.")
2820 (license license:gpl3+)))
2821
2822 (define-public emacs-perspective
2823 (package
2824 (name "emacs-perspective")
2825 (version "1.12")
2826 (source
2827 (origin
2828 (method url-fetch)
2829 (uri (string-append "https://github.com/nex3/perspective-el/"
2830 "archive/" version ".tar.gz"))
2831 (file-name (string-append name "-" version ".tar.gz"))
2832 (sha256
2833 (base32
2834 "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic"))))
2835 (build-system emacs-build-system)
2836 (home-page "https://github.com/nex3/perspective-el")
2837 (synopsis "Switch between named \"perspectives\"")
2838 (description
2839 "This package provides tagged workspaces in Emacs, similar to workspaces in
2840 windows managers such as Awesome and XMonad. @code{perspective.el} provides
2841 multiple workspaces (or \"perspectives\") for each Emacs frame. Each
2842 perspective is composed of a window configuration and a set of buffers.
2843 Switching to a perspective activates its window configuration, and when in a
2844 perspective only its buffers are available by default.")
2845 ;; This package is released under the same license as Emacs (GPLv3+) or
2846 ;; the Expat license.
2847 (license license:gpl3+)))
2848
2849 (define-public emacs-request
2850 (package
2851 (name "emacs-request")
2852 (version "0.2.0")
2853 (source (origin
2854 (method url-fetch)
2855 (uri (string-append
2856 "https://github.com/tkf/emacs-request/archive/v"
2857 version ".tar.gz"))
2858 (file-name (string-append name "-" version ".tar.gz"))
2859 (sha256
2860 (base32 "0sll9g9x15jxrdr58pdxx4iz74rnjd43q521iqm890i6hmkrgwap"))))
2861 (build-system emacs-build-system)
2862 (home-page "https://github.com/tkf/emacs-request")
2863 (synopsis "Package for speaking HTTP in Emacs Lisp")
2864 (description "This package provides a HTTP request library with multiple
2865 backends. It supports url.el which is shipped with Emacs and the curl command
2866 line program.")
2867 (license license:gpl3+)))
2868
2869 (define-public emacs-rudel
2870 (package
2871 (name "emacs-rudel")
2872 (version "0.3.1")
2873 (source
2874 (origin
2875 (method url-fetch)
2876 (uri (string-append "http://elpa.gnu.org/packages/rudel-"
2877 version ".tar"))
2878 (sha256
2879 (base32
2880 "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz"))))
2881 (build-system emacs-build-system)
2882 (home-page "http://rudel.sourceforge.net/")
2883 (synopsis "Collaborative editing framework")
2884 (description
2885 "Rudel is a collaborative editing environment for GNU Emacs. Its purpose
2886 is to share buffers with other users in order to edit the contents of those
2887 buffers collaboratively. Rudel supports multiple backends to enable
2888 communication with other collaborative editors using different protocols,
2889 though currently Obby (for use with the Gobby editor) is the only
2890 fully-functional one.")
2891 (license license:gpl3+)))
2892
2893 (define-public emacs-hydra
2894 (package
2895 (name "emacs-hydra")
2896 (version "0.13.6")
2897 (source
2898 (origin
2899 (method url-fetch)
2900 (uri (string-append "https://github.com/abo-abo/hydra/archive/"
2901 version ".tar.gz"))
2902 (file-name (string-append name "-" version ".tar.gz"))
2903 (sha256
2904 (base32
2905 "0575vh858gm35p57s49dy6pc2ij46dmj9zaa4z0cp98sqra3j3l0"))))
2906 (build-system emacs-build-system)
2907 (home-page "https://github.com/abo-abo/hydra")
2908 (synopsis "Make Emacs bindings that stick around")
2909 (description
2910 "This package can be used to tie related commands into a family of short
2911 bindings with a common prefix---a Hydra. Once you summon the Hydra (through
2912 the prefixed binding), all the heads can be called in succession with only a
2913 short extension. Any binding that isn't the Hydra's head vanquishes the
2914 Hydra. Note that the final binding, besides vanquishing the Hydra, will still
2915 serve its original purpose, calling the command assigned to it. This makes
2916 the Hydra very seamless; it's like a minor mode that disables itself
2917 automatically.")
2918 (license license:gpl3+)))
2919
2920 (define-public emacs-ivy
2921 (package
2922 (name "emacs-ivy")
2923 (version "0.9.1")
2924 (source
2925 (origin
2926 (method url-fetch)
2927 (uri (string-append "https://github.com/abo-abo/swiper/archive/"
2928 version ".tar.gz"))
2929 (file-name (string-append name "-" version ".tar.gz"))
2930 (sha256
2931 (base32
2932 "1abi1rvjarwfxxylpx8qlhck0kbavnj0nmlaaizk9q5zr02xfx1j"))))
2933 (build-system emacs-build-system)
2934 (propagated-inputs
2935 `(("emacs-hydra" ,emacs-hydra)))
2936 (home-page "http://oremacs.com/swiper/")
2937 (synopsis "Incremental vertical completion for Emacs")
2938 (description
2939 "This package provides @code{ivy-read} as an alternative to
2940 @code{completing-read} and similar functions. No attempt is made to determine
2941 the best candidate. Instead, the user can navigate candidates with
2942 @code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by
2943 splitting the input text by spaces and re-building it into a regular
2944 expression.")
2945 (license license:gpl3+)))
2946
2947 (define-public emacs-avy
2948 (package
2949 (name "emacs-avy")
2950 (version "0.4.0")
2951 (source
2952 (origin
2953 (method url-fetch)
2954 (uri (string-append "https://github.com/abo-abo/avy/archive/"
2955 version ".tar.gz"))
2956 (file-name (string-append name "-" version ".tar.gz"))
2957 (sha256
2958 (base32
2959 "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
2960 (build-system emacs-build-system)
2961 (home-page "https://github.com/abo-abo/avy")
2962 (synopsis "Tree-based completion for Emacs")
2963 (description
2964 "This package provides a generic completion method based on building a
2965 balanced decision tree with each candidate being a leaf. To traverse the tree
2966 from the root to a desired leaf, typically a sequence of @code{read-key} can
2967 be used.
2968
2969 In order for @code{read-key} to make sense, the tree needs to be visualized
2970 appropriately, with a character at each branch node. So this completion
2971 method works only for things that you can see on your screen, all at once,
2972 such as the positions of characters, words, line beginnings, links, or
2973 windows.")
2974 (license license:gpl3+)))
2975
2976 (define-public emacs-ace-window
2977 (package
2978 (name "emacs-ace-window")
2979 (version "0.9.0")
2980 (source
2981 (origin
2982 (method url-fetch)
2983 (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
2984 version ".tar.gz"))
2985 (file-name (string-append name "-" version ".tar.gz"))
2986 (sha256
2987 (base32
2988 "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
2989 (build-system emacs-build-system)
2990 (propagated-inputs
2991 `(("emacs-avy" ,emacs-avy)))
2992 (home-page "https://github.com/abo-abo/ace-window")
2993 (synopsis "Quickly switch windows in Emacs")
2994 (description
2995 "@code{ace-window} is meant to replace @code{other-window}.
2996 In fact, when there are only two windows present, @code{other-window} is
2997 called. If there are more, each window will have its first character
2998 highlighted. Pressing that character will switch to that window.")
2999 (license license:gpl3+)))
3000
3001 (define-public emacs-iedit
3002 (package
3003 (name "emacs-iedit")
3004 (version "0.9.9.9")
3005 (source
3006 (origin
3007 (method url-fetch)
3008 (uri (string-append "https://github.com/victorhge/iedit/archive/v"
3009 version ".tar.gz"))
3010 (file-name (string-append name "-" version ".tar.gz"))
3011 (sha256
3012 (base32
3013 "1hv8q6pr85ss9g3158l1fqv3m62vsq8rslsi86jicr2dcxyascr0"))))
3014 (build-system emacs-build-system)
3015 (home-page "http://www.emacswiki.org/emacs/Iedit")
3016 (synopsis "Edit multiple regions in the same way simultaneously")
3017 (description
3018 "This package is an Emacs minor mode and allows you to edit one
3019 occurrence of some text in a buffer (possibly narrowed) or region, and
3020 simultaneously have other occurrences edited in the same way.
3021
3022 You can also use Iedit mode as a quick way to temporarily show only the buffer
3023 lines that match the current text being edited. This gives you the effect of
3024 a temporary @code{keep-lines} or @code{occur}.")
3025 (license license:gpl3+)))
3026
3027 (define-public emacs-lispy
3028 (package
3029 (name "emacs-lispy")
3030 (version "0.26.0")
3031 (source
3032 (origin
3033 (method url-fetch)
3034 (uri (string-append "https://github.com/abo-abo/lispy/archive/"
3035 version ".tar.gz"))
3036 (file-name (string-append name "-" version ".tar.gz"))
3037 (sha256
3038 (base32
3039 "15gig95cvamw5zlw99cxggd27c18b9scznjj97gvjn2zbljcaqzl"))))
3040 (build-system emacs-build-system)
3041 (propagated-inputs
3042 `(("emacs-ace-window" ,emacs-ace-window)
3043 ("emacs-iedit" ,emacs-iedit)
3044 ("emacs-ivy" ,emacs-ivy)
3045 ("emacs-hydra" ,emacs-hydra)))
3046 (home-page "https://github.com/abo-abo/lispy")
3047 (synopsis "Modal S-expression editing")
3048 (description
3049 "Due to the structure of Lisp syntax it's very rare for the programmer to
3050 want to insert characters right before \"(\" or right after \")\". Thus
3051 unprefixed printable characters can be used to call commands when the point is
3052 at one of these special locations. Lispy provides unprefixed keybindings for
3053 S-expression editing when point is at the beginning or end of an
3054 S-expression.")
3055 (license license:gpl3+)))
3056
3057 (define-public emacs-clojure-mode
3058 (package
3059 (name "emacs-clojure-mode")
3060 (version "5.4.0")
3061 (source (origin
3062 (method url-fetch)
3063 (uri (string-append
3064 "https://github.com/clojure-emacs/clojure-mode/archive/"
3065 version ".tar.gz"))
3066 (file-name (string-append name "-" version ".tar.gz"))
3067 (sha256
3068 (base32
3069 "117mvjqh4nm8mvmwmmvy4qmkdg23ldlzk08y91g8b8ac8kxwqg81"))))
3070 (build-system emacs-build-system)
3071 (native-inputs
3072 `(("emacs-dash" ,emacs-dash)
3073 ("emacs-s" ,emacs-s)
3074 ("ert-runner" ,ert-runner)))
3075 (arguments
3076 `(#:phases
3077 (modify-phases %standard-phases
3078 (add-after 'install 'check
3079 (lambda _
3080 (zero? (system* "ert-runner")))))))
3081 (home-page "https://github.com/clojure-emacs/clojure-mode")
3082 (synopsis "Major mode for Clojure code")
3083 (description
3084 "This Emacs package provides font-lock, indentation, navigation and basic
3085 refactoring for the @uref{http://clojure.org, Clojure programming language}.
3086 It is recommended to use @code{clojure-mode} with paredit or smartparens.")
3087 (license license:gpl3+)))
3088
3089 (define-public emacs-epl
3090 (package
3091 (name "emacs-epl")
3092 (version "0.8")
3093 (source (origin
3094 (method url-fetch)
3095 (uri (string-append
3096 "https://github.com/cask/epl/archive/"
3097 version ".tar.gz"))
3098 (sha256
3099 (base32
3100 "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
3101 (build-system emacs-build-system)
3102 (home-page "https://github.com/cask/epl")
3103 (synopsis "Emacs Package Library")
3104 (description
3105 "A package management library for Emacs, based on @code{package.el}.
3106
3107 The purpose of this library is to wrap all the quirks and hassle of
3108 @code{package.el} into a sane API.")
3109 (license license:gpl3+)))
3110
3111 (define-public emacs-queue
3112 (package
3113 (name "emacs-queue")
3114 (version "0.1.1")
3115 (source (origin
3116 (method url-fetch)
3117 (uri (string-append "https://elpa.gnu.org/packages/queue-"
3118 version ".el"))
3119 (sha256
3120 (base32
3121 "0jw24fxqnf9qcaf2nh09cnds1kqfk7hal35dw83x1ari95say391"))))
3122 (build-system emacs-build-system)
3123 (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
3124 (synopsis "Queue data structure for Emacs")
3125 (description
3126 "This Emacs library provides queue data structure. These queues can be
3127 used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
3128 stack, i.e. elements can be added to the front or back of the queue, and can
3129 be removed from the front. This type of data structure is sometimes called an
3130 \"output-restricted deque\".")
3131 (license license:gpl3+)))
3132
3133 (define-public emacs-pkg-info
3134 (package
3135 (name "emacs-pkg-info")
3136 (version "0.6")
3137 (source (origin
3138 (method url-fetch)
3139 (uri (string-append
3140 "https://github.com/lunaryorn/pkg-info.el/archive/"
3141 version ".tar.gz"))
3142 (file-name (string-append name "-" version ".tar.gz"))
3143 (sha256
3144 (base32
3145 "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
3146 (build-system emacs-build-system)
3147 (propagated-inputs `(("emacs-epl" ,emacs-epl)))
3148 (home-page "https://github.com/lunaryorn/pkg-info.el")
3149 (synopsis "Information about Emacs packages")
3150 (description
3151 "This library extracts information from the installed Emacs packages.")
3152 (license license:gpl3+)))
3153
3154 (define-public emacs-spinner
3155 (package
3156 (name "emacs-spinner")
3157 (version "1.7.3")
3158 (source (origin
3159 (method url-fetch)
3160 (uri (string-append "https://elpa.gnu.org/packages/spinner-"
3161 version ".el"))
3162 (sha256
3163 (base32
3164 "19kp1mmndbmw11sgvv2ggfjl4pyf5zrsbh3871f0965pw9z8vahd"))))
3165 (build-system emacs-build-system)
3166 (home-page "https://github.com/Malabarba/spinner.el")
3167 (synopsis "Emacs mode-line spinner for operations in progress")
3168 (description
3169 "This Emacs package adds spinners and progress-bars to the mode-line for
3170 ongoing operations.")
3171 (license license:gpl3+)))
3172
3173 (define-public emacs-sparql-mode
3174 (package
3175 (name "emacs-sparql-mode")
3176 (version "2.0.1")
3177 (source (origin
3178 (method url-fetch)
3179 (uri (string-append "https://github.com/ljos/sparql-mode/archive/"
3180 "v" version ".tar.gz"))
3181 (file-name (string-append name "-" version ".tar.gz"))
3182 (sha256
3183 (base32
3184 "1s93mkllxnhy7fw616cnnc2danacdlarys0g3cn89drh0llh53cv"))))
3185 (build-system emacs-build-system)
3186 (home-page "https://github.com/ljos/sparql-mode")
3187 (synopsis "SPARQL mode for Emacs")
3188 (description "This package provides a major mode for Emacs that provides
3189 syntax highlighting for SPARQL. It also provides a way to execute queries
3190 against a SPARQL HTTP endpoint, such as is provided by Fuseki. It is also
3191 possible to query other endpoints like DBPedia.")
3192 (license license:gpl3+)))
3193
3194 (define-public emacs-better-defaults
3195 (package
3196 (name "emacs-better-defaults")
3197 (version "0.1.3")
3198 (source
3199 (origin
3200 (method url-fetch)
3201 (uri (string-append "https://github.com/technomancy/better-defaults"
3202 "/archive/" version ".tar.gz"))
3203 (file-name (string-append name "-" version ".tar.gz"))
3204 (sha256
3205 (base32
3206 "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
3207 (build-system emacs-build-system)
3208 (home-page "https://github.com/technomancy/better-defaults")
3209 (synopsis "Better defaults for Emacs")
3210 (description
3211 "Better defaults attempts to address the most obvious deficiencies of the
3212 Emacs default configuration in uncontroversial ways that nearly everyone can
3213 agree upon.")
3214 (license license:gpl3+)))
3215
3216 (define-public emacs-eprime
3217 (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f"))
3218 (package
3219 (name "emacs-eprime")
3220 (version (string-append "20140513-" (string-take commit 7)))
3221 (source (origin
3222 (method url-fetch)
3223 (uri (string-append "https://raw.githubusercontent.com"
3224 "/AndrewHynes/eprime-mode/"
3225 commit "/eprime-mode.el"))
3226 (file-name (string-append "eprime-" version ".el"))
3227 (sha256
3228 (base32
3229 "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d"))))
3230 (build-system emacs-build-system)
3231 (home-page "https://github.com/AndrewHynes/eprime-mode")
3232 (synopsis "E-prime checking mode for Emacs")
3233 (description "This package provides an E-prime checking mode for Emacs
3234 that highlights non-conforming text. The subset of the English language called
3235 E-Prime forbids the use of the \"to be\" form to strengthen your writing.")
3236 (license license:gpl3+))))
3237
3238 (define-public emacs-ess
3239 (package
3240 (name "emacs-ess")
3241 (version "16.04")
3242 (source (origin
3243 (method url-fetch)
3244 (uri (string-append "http://ess.r-project.org/downloads/ess/ess-"
3245 version ".tgz"))
3246 (sha256
3247 (base32
3248 "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg"))))
3249 (build-system gnu-build-system)
3250 (arguments
3251 (let ((base-directory "/share/emacs/site-lisp/guix.d/ess"))
3252 `(#:tests? #f ; There is no test suite.
3253 #:make-flags (list (string-append "PREFIX=" %output)
3254 (string-append "ETCDIR=" %output "/"
3255 ,base-directory "/etc")
3256 (string-append "LISPDIR=" %output "/"
3257 ,base-directory))
3258 #:phases
3259 (modify-phases %standard-phases
3260 (delete 'configure)
3261 (add-before 'build 'more-shebang-patching
3262 (lambda* (#:key inputs #:allow-other-keys)
3263 (substitute* "Makeconf"
3264 (("SHELL = /bin/sh")
3265 (string-append "SHELL = " (which "sh"))))))
3266 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
3267 ;; them in HOME, so it needs to be writeable.
3268 (add-before 'build 'set-HOME
3269 (lambda _ (setenv "HOME" "/tmp") #t))))))
3270 (inputs
3271 `(("emacs" ,emacs-minimal)
3272 ("r-minimal" ,r-minimal)))
3273 (native-inputs
3274 `(("perl" ,perl)
3275 ("texinfo" ,texinfo)
3276 ("texlive" ,(texlive-union (list texlive-latex-natbib
3277 texlive-latex-seminar
3278 texlive-latex-hyperref
3279 texlive-tex-texinfo)))))
3280 (home-page "http://ess.r-project.org/")
3281 (synopsis "Emacs mode for statistical analysis programs")
3282 (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU
3283 Emacs. It is designed to support editing of scripts and interaction with
3284 various statistical analysis programs such as R and OpenBUGS.")
3285 (license license:gpl2+)))
3286
3287 (define-public emacs-smex
3288 (package
3289 (name "emacs-smex")
3290 (version "3.0")
3291 (source (origin
3292 (method url-fetch)
3293 (uri (string-append "https://raw.githubusercontent.com"
3294 "/nonsequitur/smex/" version "/smex.el"))
3295 (file-name (string-append "smex-" version ".el"))
3296 (sha256
3297 (base32
3298 "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
3299 (build-system emacs-build-system)
3300 (home-page "https://github.com/nonsequitur/smex/")
3301 (synopsis "M-x interface with Ido-style fuzzy matching")
3302 (description
3303 "Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a
3304 convenient interface to your recently and most frequently used commands. And
3305 to all the other commands, too.")
3306 (license license:gpl3+)))
3307
3308 (define-public emacs-js2-mode
3309 (package
3310 (name "emacs-js2-mode")
3311 (version "20150909")
3312 (source (origin
3313 (method url-fetch)
3314 (uri (string-append "https://github.com/mooz/js2-mode/archive/"
3315 version ".tar.gz"))
3316 (file-name (string-append name "-" version ".tar.gz"))
3317 (sha256
3318 (base32
3319 "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
3320 (build-system emacs-build-system)
3321 (home-page "https://github.com/mooz/js2-mode/")
3322 (synopsis "Improved JavaScript editing mode for Emacs")
3323 (description
3324 "Js2-mode provides a JavaScript major mode for Emacs that is more
3325 advanced than the built-in javascript-mode. Features include accurate syntax
3326 highlighting using a recursive-descent parser, on-the-fly reporting of syntax
3327 errors and strict-mode warnings, smart line-wrapping within comments and
3328 strings, and code folding.")
3329 (license license:gpl3+)))
3330
3331 (define-public emacs-markdown-mode
3332 (package
3333 (name "emacs-markdown-mode")
3334 (version "2.3")
3335 (source (origin
3336 (method url-fetch)
3337 (uri (string-append "https://raw.githubusercontent.com/jrblevin"
3338 "/markdown-mode/v" version
3339 "/markdown-mode.el"))
3340 (file-name (string-append "markdown-mode-" version ".el"))
3341 (sha256
3342 (base32
3343 "152whyrq3dqlqy5wv4mdd94kmal19hs5kwaxjcp2gp2r97lsmdmi"))))
3344 (build-system emacs-build-system)
3345 (home-page "http://jblevins.org/projects/markdown-mode/")
3346 (synopsis "Emacs Major mode for Markdown files")
3347 (description
3348 "Markdown-mode is a major mode for editing Markdown-formatted text files
3349 in Emacs.")
3350 (license license:gpl3+)))
3351
3352 (define-public emacs-projectile
3353 (package
3354 (name "emacs-projectile")
3355 (version "0.14.0")
3356 (source (origin
3357 (method url-fetch)
3358 (uri (string-append "https://raw.githubusercontent.com/bbatsov"
3359 "/projectile/v" version "/projectile.el"))
3360 (file-name (string-append "projectile-" version ".el"))
3361 (sha256
3362 (base32
3363 "1ql1wnzhblbwnv66hf2y0wq45g71hh6s9inc090lmhm1vgylbd1f"))))
3364 (build-system emacs-build-system)
3365 (propagated-inputs
3366 `(("emacs-dash" ,emacs-dash)
3367 ("emacs-pkg-info" ,emacs-pkg-info)))
3368 (home-page "https://github.com/bbatsov/projectile")
3369 (synopsis "Manage and navigate projects in Emacs easily")
3370 (description
3371 "This library provides easy project management and navigation. The
3372 concept of a project is pretty basic - just a folder containing special file.
3373 Currently git, mercurial and bazaar repos are considered projects by default.
3374 If you want to mark a folder manually as a project just create an empty
3375 .projectile file in it.")
3376 (license license:gpl3+)))
3377
3378 (define-public emacs-elfeed
3379 (package
3380 (name "emacs-elfeed")
3381 (version "2.1.1")
3382 (source (origin
3383 (method url-fetch)
3384 (uri (string-append "https://github.com/skeeto/elfeed/archive/"
3385 version ".tar.gz"))
3386 (file-name (string-append name "-" version ".tar.gz"))
3387 (sha256
3388 (base32
3389 "1wlwc8fbkg6w1c8p856ikc20xm72f51clnzz419p0g8cavy27npw"))))
3390 (build-system emacs-build-system)
3391 (arguments
3392 `(#:phases
3393 (modify-phases %standard-phases
3394 (add-before 'install 'check
3395 (lambda _
3396 (zero? (system* "make" "test")))))))
3397 (home-page "https://github.com/skeeto/elfeed")
3398 (synopsis "Atom/RSS feed reader for Emacs")
3399 (description
3400 "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
3401 and RSS, with a user interface inspired by notmuch.")
3402 (license license:gpl3+)))
3403
3404 (define-public emacs-rainbow-delimiters
3405 (package
3406 (name "emacs-rainbow-delimiters")
3407 (version "2.1.3")
3408 (source (origin
3409 (method url-fetch)
3410 (uri (string-append "https://raw.githubusercontent.com/Fanael"
3411 "/rainbow-delimiters/" version
3412 "/rainbow-delimiters.el"))
3413 (file-name (string-append "rainbow-delimiters-" version ".el"))
3414 (sha256
3415 (base32
3416 "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
3417 (build-system emacs-build-system)
3418 (home-page "https://github.com/Fanael/rainbow-delimiters")
3419 (synopsis "Highlight brackets according to their depth")
3420 (description
3421 "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
3422 highlights parentheses, brackets, and braces according to their depth. Each
3423 successive level is highlighted in a different color, making it easy to spot
3424 matching delimiters, orient yourself in the code, and tell which statements
3425 are at a given level.")
3426 (license license:gpl3+)))
3427
3428 (define-public emacs-rainbow-identifiers
3429 (package
3430 (name "emacs-rainbow-identifiers")
3431 (version "0.2.2")
3432 (source (origin
3433 (method url-fetch)
3434 (uri (string-append "https://raw.githubusercontent.com/Fanael"
3435 "/rainbow-identifiers/" version
3436 "/rainbow-identifiers.el"))
3437 (file-name (string-append "rainbow-identifiers-" version ".el"))
3438 (sha256
3439 (base32
3440 "0325abxj47k0g1i8nqrq70w2wr6060ckhhf92krv1s072b3jzm31"))))
3441 (build-system emacs-build-system)
3442 (home-page "https://github.com/Fanael/rainbow-identifiers")
3443 (synopsis "Highlight identifiers in source code")
3444 (description
3445 "Rainbow identifiers mode is an Emacs minor mode providing highlighting of
3446 identifiers based on their names. Each identifier gets a color based on a hash
3447 of its name.")
3448 (license license:bsd-2)))
3449
3450 (define-public emacs-rainbow-mode
3451 (package
3452 (name "emacs-rainbow-mode")
3453 (version "0.13")
3454 (source (origin
3455 (method url-fetch)
3456 (uri (string-append
3457 "http://elpa.gnu.org/packages/rainbow-mode-" version ".el"))
3458 (sha256
3459 (base32
3460 "1d3aamx6qgqqpqijwsr02ggwrh67gfink1bir0692alfkm3zdddl"))))
3461 (build-system emacs-build-system)
3462 (home-page "http://elpa.gnu.org/packages/rainbow-mode.html")
3463 (synopsis "Colorize color names in buffers")
3464 (description
3465 "This minor mode sets background color to strings that match color
3466 names, e.g. #0000ff is displayed in white with a blue background.")
3467 (license license:gpl3+)))
3468
3469 (define-public emacs-visual-fill-column
3470 (package
3471 (name "emacs-visual-fill-column")
3472 (version "1.7")
3473 (source (origin
3474 (method url-fetch)
3475 (uri (string-append "https://codeload.github.com/joostkremers/"
3476 "visual-fill-column/tar.gz/" version))
3477 (file-name (string-append name "-" version ".tar.gz"))
3478 (sha256
3479 (base32
3480 "12vn7kdq2mpz9hgibbn1vhpf23lcm7c26k3fkz8nidhygwl5x5lq"))))
3481 (build-system emacs-build-system)
3482 (home-page "https://github.com/joostkremers/visual-fill-column")
3483 (synopsis "Fill-column for visual-line-mode")
3484 (description
3485 "@code{visual-fill-column-mode} is a small Emacs minor mode that mimics
3486 the effect of @code{fill-column} in @code{visual-line-mode}. Instead of
3487 wrapping lines at the window edge, which is the standard behaviour of
3488 @code{visual-line-mode}, it wraps lines at @code{fill-column}. If
3489 @code{fill-column} is too large for the window, the text is wrapped at the
3490 window edge.")
3491 (license license:gpl3+)))
3492
3493 (define-public emacs-ido-completing-read+
3494 (package
3495 (name "emacs-ido-completing-read+")
3496 (version "3.12")
3497 (source (origin
3498 (method url-fetch)
3499 (uri (string-append "https://raw.githubusercontent.com"
3500 "/DarwinAwardWinner/ido-ubiquitous/v"
3501 version "/ido-completing-read+.el"))
3502 (file-name (string-append "ido-completing-read+-" version ".el"))
3503 (sha256
3504 (base32
3505 "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
3506 (build-system emacs-build-system)
3507 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
3508 (synopsis "Replacement for completing-read using ido")
3509 (description
3510 "The ido-completing-read+ function is a wrapper for ido-completing-read.
3511 Importantly, it detects edge cases that ordinary ido cannot handle and either
3512 adjusts them so ido can handle them, or else simply falls back to the standard
3513 Emacs completion function instead.")
3514 (license license:gpl3+)))
3515
3516 (define-public emacs-ido-ubiquitous
3517 (package
3518 (name "emacs-ido-ubiquitous")
3519 (version "3.12")
3520 (source (origin
3521 (method url-fetch)
3522 (uri (string-append "https://raw.githubusercontent.com"
3523 "/DarwinAwardWinner/ido-ubiquitous/v"
3524 version "/ido-ubiquitous.el"))
3525 (file-name (string-append "ido-ubiquitous-" version ".el"))
3526 (sha256
3527 (base32
3528 "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
3529 (build-system emacs-build-system)
3530 (propagated-inputs
3531 `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
3532 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
3533 (synopsis "Use ido (nearly) everywhere")
3534 (description
3535 "Ido-ubiquitous enables ido-style completion for almost every function
3536 that uses the standard completion function completing-read.")
3537 (license license:gpl3+)))
3538
3539 (define-public emacs-yaml-mode
3540 (package
3541 (name "emacs-yaml-mode")
3542 (version "0.0.13")
3543 (source (origin
3544 (method url-fetch)
3545 (uri (string-append "https://raw.githubusercontent.com/yoshiki"
3546 "/yaml-mode/v" version "/yaml-mode.el"))
3547 (file-name (string-append "yaml-mode-" version ".el"))
3548 (sha256
3549 (base32
3550 "0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
3551 (build-system emacs-build-system)
3552 (home-page "https://github.com/yoshiki/yaml-mode")
3553 (synopsis "Major mode for editing YAML files")
3554 (description
3555 "Yaml-mode is an Emacs major mode for editing files in the YAML data
3556 serialization format. It was initially developed by Yoshiki Kurihara and many
3557 features were added by Marshall Vandegrift. As YAML and Python share the fact
3558 that indentation determines structure, this mode provides indentation and
3559 indentation command behavior very similar to that of python-mode.")
3560 (license license:gpl3+)))
3561
3562 (define-public emacs-web-mode
3563 (package
3564 (name "emacs-web-mode")
3565 (version "14")
3566 (source (origin
3567 (method url-fetch)
3568 (uri (string-append "https://raw.githubusercontent.com/fxbois"
3569 "/web-mode/v" version "/web-mode.el"))
3570 (file-name (string-append "web-mode-" version ".el"))
3571 (sha256
3572 (base32
3573 "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
3574 (build-system emacs-build-system)
3575 (synopsis "Major mode for editing web templates")
3576 (description "Web-mode is an Emacs major mode for editing web templates
3577 aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
3578 client/server side engines). Web-mode is compatible with many template
3579 engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
3580 Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
3581 Dust.js, React/JSX, Angularjs, ejs, etc.")
3582 (home-page "http://web-mode.org/")
3583 (license license:gpl3+)))
3584
3585 (define-public emacs-wgrep
3586 (package
3587 (name "emacs-wgrep")
3588 (version "2.1.10")
3589 (source (origin
3590 (method url-fetch)
3591 (uri (string-append
3592 "https://github.com/mhayashi1120/Emacs-wgrep/archive/"
3593 version ".tar.gz"))
3594 (file-name (string-append name "-" version ".tar.gz"))
3595 (sha256
3596 (base32
3597 "1r2bpypar70xg6dsx12x1k74f39ww930rday7rgqpyknzsx1k4l1"))))
3598 (build-system emacs-build-system)
3599 (home-page "https://github.com/mhayashi1120/Emacs-wgrep")
3600 (synopsis "Edit a grep buffer and apply those changes to the files")
3601 (description
3602 "Emacs wgrep allows you to edit a grep buffer and apply those changes to
3603 the file buffer.")
3604 (license license:gpl3+)))
3605
3606 (define-public emacs-helm
3607 (package
3608 (name "emacs-helm")
3609 (version "2.7.1")
3610 (source (origin
3611 (method url-fetch)
3612 (uri (string-append
3613 "https://github.com/" name "/helm/archive/v"
3614 version ".tar.gz"))
3615 (file-name (string-append name "-" version ".tar.gz"))
3616 (sha256
3617 (base32
3618 "0pay8pi3fszykgskfbxsp4byad497cgfz4m886mxnkba1naxf6h7"))))
3619 (build-system emacs-build-system)
3620 (propagated-inputs
3621 `(("emacs-async" ,emacs-async)
3622 ("emacs-popup" ,emacs-popup)))
3623 (home-page "https://emacs-helm.github.io/helm/")
3624 (synopsis "Incremental completion and selection narrowing
3625 framework for Emacs")
3626 (description "Helm is incremental completion and selection narrowing
3627 framework for Emacs. It will help steer you in the right direction when
3628 you're looking for stuff in Emacs (like buffers, files, etc). Helm is a fork
3629 of @code{anything.el} originally written by Tamas Patrovic and can be
3630 considered to be its successor. Helm sets out to clean up the legacy code in
3631 @code{anything.el} and provide a cleaner, leaner and more modular tool, that's
3632 not tied in the trap of backward compatibility.")
3633 (license license:gpl3+)))
3634
3635 (define-public emacs-helm-swoop
3636 (package
3637 (name "emacs-helm-swoop")
3638 (version "1.7.2")
3639 (source (origin
3640 (method url-fetch)
3641 (uri (string-append
3642 "https://github.com/ShingoFukuyama/helm-swoop/archive/"
3643 version
3644 ".tar.gz"))
3645 (file-name (string-append name "-" version ".tar.gz"))
3646 (sha256
3647 (base32
3648 "1z34pfi0gsk054pxr906ilaalaw0xz3s536163gf9ykkwmc2356d"))))
3649 (build-system emacs-build-system)
3650 (propagated-inputs
3651 `(("emacs-helm" ,emacs-helm)))
3652 (home-page "https://github.com/ShingoFukuyama/helm-swoop")
3653 (synopsis "Filter and jump to lines in an Emacs buffer using Helm")
3654 (description
3655 "This package builds on the Helm interface to provide several commands
3656 for search-based navigation of buffers.")
3657 (license license:gpl2+)))
3658
3659 (define-public emacs-helm-projectile
3660 (package
3661 (name "emacs-helm-projectile")
3662 (version "0.14.0")
3663 (source (origin
3664 (method url-fetch)
3665 (uri (string-append
3666 "https://github.com/bbatsov/helm-projectile/archive/v"
3667 version
3668 ".tar.gz"))
3669 (file-name (string-append name "-" version ".tar.gz"))
3670 (sha256
3671 (base32
3672 "19cfmilqh8kbab3b2hmx6lyrj73q6vfmn3p730x95g23iz16mnd5"))))
3673 (build-system emacs-build-system)
3674 (propagated-inputs
3675 `(("emacs-dash" ,emacs-dash)
3676 ("emacs-helm" ,emacs-helm)
3677 ("emacs-projectile" ,emacs-projectile)))
3678 (home-page "https://github.com/bbatsov/helm-projectile")
3679 (synopsis "Helm integration for Projectile")
3680 (description
3681 "This Emacs library provides a Helm interface for Projectile.")
3682 (license license:gpl3+)))
3683
3684 (define-public emacs-cider
3685 (package
3686 (name "emacs-cider")
3687 (version "0.15.0")
3688 (source (origin
3689 (method url-fetch)
3690 (uri (string-append
3691 "https://github.com/clojure-emacs/cider/archive/v"
3692 version ".tar.gz"))
3693 (file-name (string-append name "-" version ".tar.gz"))
3694 (sha256
3695 (base32
3696 "0j7qjcslh8mnxrr2m8qrscyq9ry240j5jd9dysbvih126lxisf12"))))
3697 (build-system emacs-build-system)
3698 (arguments
3699 '(#:exclude ; Don't exclude 'cider-test.el'.
3700 '("^\\.dir-locals\\.el$" "^test/")))
3701 (propagated-inputs
3702 `(("emacs-clojure-mode" ,emacs-clojure-mode)
3703 ("emacs-spinner" ,emacs-spinner)
3704 ("emacs-pkg-info" ,emacs-pkg-info)
3705 ("emacs-queue" ,emacs-queue)))
3706 (home-page "https://cider.readthedocs.org/")
3707 (synopsis "Clojure development environment for Emacs")
3708 (description
3709 "CIDER (Clojure Interactive Development Environment that Rocks) aims to
3710 provide an interactive development experience similar to the one you'd get
3711 when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
3712 Geiser) and Smalltalk.
3713
3714 CIDER is the successor to the now deprecated combination of using SLIME +
3715 swank-clojure for Clojure development.
3716
3717 There are plenty of differences between CIDER and SLIME, but the core ideas
3718 are pretty much the same (and SLIME served as the principle inspiration for
3719 CIDER).")
3720 (license license:gpl3+)))
3721
3722 (define-public emacs-lua-mode
3723 (let ((commit "652e299cb967fccca827dda381d61a9c144d97de")
3724 (revision "1"))
3725 (package
3726 (name "emacs-lua-mode")
3727 (version (string-append "20151025." revision "-" (string-take commit 9)))
3728 (home-page "https://github.com/immerrr/lua-mode/")
3729 (source (origin
3730 (method git-fetch)
3731 (uri (git-reference
3732 (url home-page)
3733 (commit commit)))
3734 (file-name (string-append name "-" version ".checkout"))
3735 (sha256
3736 (base32
3737 "053025k930wh0lak6rc1973ynfrmm8zsyzfqhhd39x7abkl41hc9"))))
3738 (build-system emacs-build-system)
3739 (synopsis "Major mode for lua")
3740 (description
3741 "This Emacs package provides a mode for @uref{https://www.lua.org/,
3742 Lua programing language}.")
3743 (license license:gpl2+))))
3744
3745 (define-public emacs-ebuild-mode
3746 (package
3747 (name "emacs-ebuild-mode")
3748 (version "1.37")
3749 (source (origin
3750 (method url-fetch)
3751 (uri (string-append
3752 "https://dev.gentoo.org/~ulm/emacs/ebuild-mode"
3753 "-" version ".tar.xz"))
3754 (file-name (string-append name "-" version ".tar.xz"))
3755 (sha256
3756 (base32
3757 "07dzrdjjczkxdfdgi60h4jjkvzi4p0k9rij2wpfp8s03ay3qldpp"))))
3758 (build-system emacs-build-system)
3759 (home-page "https://devmanual.gentoo.org")
3760 (synopsis "Major modes for Gentoo package files")
3761 (description
3762 "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42
3763 news items, openrc and runscripts.")
3764 (license license:gpl2+)))
3765
3766 (define-public emacs-evil
3767 (package
3768 (name "emacs-evil")
3769 (version "1.2.12")
3770 (source
3771 (origin
3772 (method url-fetch)
3773 (uri (string-append "https://bitbucket.org/lyro/evil/get/"
3774 version ".tar.bz2"))
3775 (file-name (string-append name "-" version ".tar.bz2"))
3776 (sha256
3777 (base32
3778 "17cda9fnbq3gmjcxs3lyq64gxswrf37y864bm53rldwsk3khq2yi"))))
3779 (build-system emacs-build-system)
3780 (propagated-inputs
3781 `(("emacs-undo-tree" ,emacs-undo-tree)
3782 ("emacs-goto-chg" ,emacs-goto-chg)))
3783 (home-page "https://bitbucket.com/lyro/evil")
3784 (synopsis "Extensible Vi layer for Emacs")
3785 (description
3786 "Evil is an extensible vi layer for Emacs. It emulates the
3787 main features of Vim, and provides facilities for writing custom
3788 extensions.")
3789 (license license:gpl3+)))
3790
3791 (define-public emacs-goto-chg
3792 (package
3793 (name "emacs-goto-chg")
3794 (version "1.6")
3795 (source
3796 (origin
3797 (method url-fetch)
3798 ;; There is no versioned source.
3799 (uri "https://www.emacswiki.org/emacs/download/goto-chg.el")
3800 (file-name (string-append "goto-chg-" version ".el"))
3801 (sha256
3802 (base32
3803 "078d6p4br5vips7b9x4v6cy0wxf6m5ij9gpqd4g33bryn22gnpij"))))
3804 (build-system emacs-build-system)
3805 ;; There is no other home page.
3806 (home-page "https://www.emacswiki.org/emacs/goto-chg.el")
3807 (synopsis "Go to the last change in the Emacs buffer")
3808 (description
3809 "This package provides @code{M-x goto-last-change} command that goes to
3810 the point of the most recent edit in the current Emacs buffer. When repeated,
3811 go to the second most recent edit, etc. Negative argument, @kbd{C-u -}, is
3812 used for reverse direction.")
3813 (license license:gpl2+)))
3814
3815 (define-public emacs-monroe
3816 (package
3817 (name "emacs-monroe")
3818 (version "0.3.1")
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (string-append "https://github.com/sanel/monroe/archive/"
3823 version ".tar.gz"))
3824 (file-name (string-append name "-" version ".tar.gz"))
3825 (sha256
3826 (base32
3827 "0icdx8shkd951phlnmcq1vqaxp1l667q5rjscskc5r22aylakh4w"))))
3828 (build-system emacs-build-system)
3829 (home-page "https://github.com/sanel/monroe")
3830 (synopsis "Clojure nREPL client for Emacs")
3831 (description
3832 "Monroe is a nREPL client for Emacs, focused on simplicity and easy
3833 distribution, primarily targeting Clojure users")
3834 (license license:gpl3+)))
3835
3836 (define-public emacs-writegood-mode
3837 (package
3838 (name "emacs-writegood-mode")
3839 (version "2.0.2")
3840 (home-page "https://github.com/bnbeckwith/writegood-mode")
3841 (source (origin
3842 (method git-fetch)
3843 (uri (git-reference
3844 (url home-page)
3845 (commit (string-append "v" version))))
3846 (sha256
3847 (base32
3848 "1nnjn1r669hvvzfycllwap4w04m8rfsk4nzcg8057m1f263kj31b"))
3849 (file-name (string-append name "-checkout"))))
3850 (build-system emacs-build-system)
3851 (synopsis "Polish up poor writing on the fly")
3852 (description
3853 "This minor mode tries to find and highlight problems with your writing
3854 in English as you type. It primarily detects \"weasel words\" and abuse of
3855 passive voice.")
3856 (license license:gpl3+)))
3857
3858 (define-public emacs-neotree
3859 (package
3860 (name "emacs-neotree")
3861 (version "0.2.1")
3862 (home-page "https://github.com/jaypei/emacs-neotree")
3863 (source (origin
3864 (method url-fetch)
3865 (uri (string-append
3866 "https://github.com/jaypei/" name
3867 "/archive/v" version ".tar.gz"))
3868 (sha256
3869 (base32
3870 "0cr37pdkwjgfijfws5bjskfh1rq9rfngxblcj6v5383vpmn83q7s"))
3871 (file-name (string-append name "-" version ".tar.gz"))))
3872 (build-system emacs-build-system)
3873 (synopsis "Folder tree view for Emacs")
3874 (description "This Emacs package provides a folder tree view.")
3875 (license license:gpl3+)))
3876
3877 (define-public emacs-org
3878 (package
3879 (name "emacs-org")
3880 (version "20170917")
3881 (source (origin
3882 (method url-fetch)
3883 (uri (string-append "http://elpa.gnu.org/packages/org-"
3884 version ".tar"))
3885 (sha256
3886 (base32
3887 "0qyis5ph3h99zn9kx7sgraddz41c1cf6yjkwi4im6ikwxk9x8cgc"))))
3888 (build-system emacs-build-system)
3889 (home-page "http://orgmode.org/")
3890 (synopsis "Outline-based notes management and organizer")
3891 (description "Org is an Emacs mode for keeping notes, maintaining TODO
3892 lists, and project planning with a fast and effective plain-text system. It
3893 also is an authoring system with unique support for literate programming and
3894 reproducible research.")
3895 (license license:gpl3+)))
3896
3897 (define-public emacs-flx
3898 (package
3899 (name "emacs-flx")
3900 (version "0.6.1")
3901 (source
3902 (origin
3903 (method url-fetch)
3904 (uri (string-append "https://github.com/lewang/"
3905 "flx/archive/v" version ".tar.gz"))
3906 (sha256
3907 (base32
3908 "0bkcpnf1j4i2fcc2rllwbz62l00sw2mcia6rm5amgwvlkqavmkv6"))
3909 (file-name (string-append name "-" version ".tar.gz"))))
3910 (build-system emacs-build-system)
3911 (home-page "https://github.com/lewang/flx")
3912 (synopsis "Fuzzy matching for Emacs")
3913 (description
3914 "Flx provides fuzzy matching for emacs a la sublime text.
3915 The sorting algorithm is a balance between word beginnings (abbreviation)
3916 and contiguous matches (substring). The longer the substring match,
3917 the higher it scores. This maps well to how we think about matching.
3918 Flx has support for ido (interactively do things) through flx-ido.")
3919 (license license:gpl3+)))
3920
3921 (define-public emacs-cyberpunk-theme
3922 (package
3923 (name "emacs-cyberpunk-theme")
3924 (version "1.18")
3925 (source
3926 (origin
3927 (method url-fetch)
3928 (uri (string-append "https://github.com/n3mo/cyberpunk-theme.el/"
3929 "archive/" version ".tar.gz"))
3930 (sha256
3931 (base32
3932 "0pxzbw0qjxgkhhs3gn3k9qy41kl1a4pfzbw83dk24l4b3nxd24wg"))
3933 (file-name (string-append name "-" version ".tar.gz"))))
3934 (build-system emacs-build-system)
3935 (home-page "https://github.com/n3mo/cyberpunk-theme.el")
3936 (synopsis "Cyberpunk theme for emacs built-in color theme support")
3937 (description
3938 "Cyberpunk color theme for the emacs 24+ built-in color theme support
3939 known loosely as deftheme. Many mode-specific customizations are included.")
3940 (license license:gpl3+)))
3941
3942 (define-public emacs-danneskjold-theme
3943 (let* ((commit "8733d2fe8743e8a01826ea6d4430ef376c727e57")
3944 (revision "1"))
3945 (package
3946 (name "emacs-danneskjold-theme")
3947 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
3948 (home-page "https://github.com/rails-to-cosmos/danneskjold-theme")
3949 (source
3950 (origin
3951 (method git-fetch)
3952 (uri (git-reference
3953 (url home-page)
3954 (commit commit)))
3955 (file-name (string-append name "-" version "-checkout"))
3956 (sha256
3957 (base32
3958 "0s6rbsb0y8i8m5b9xm4gw1p1cxsxdqnqxqqb638pygz9f76mbir1"))))
3959 (build-system emacs-build-system)
3960 (arguments
3961 `(#:phases
3962 (modify-phases %standard-phases
3963 (add-after 'unpack 'delete-screenshots
3964 (lambda _
3965 (delete-file-recursively "screenshots") #t)))))
3966 (synopsis "High-contrast Emacs theme")
3967 (description
3968 "@code{danneskjold-theme} is a high-contrast theme for Emacs.")
3969 (license license:gpl3+))))
3970
3971 (define-public emacs-dream-theme
3972 (let* ((commit "107a11d74365046f28a1802a2bdb5e69e4a7488b")
3973 (revision "1"))
3974 (package
3975 (name "emacs-dream-theme")
3976 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
3977 (source
3978 (origin
3979 (method git-fetch)
3980 (uri (git-reference
3981 (url "https://github.com/djcb/dream-theme")
3982 (commit commit)))
3983 (file-name (string-append name "-" version "-checkout"))
3984 (sha256
3985 (base32
3986 "0za18nfkq4xqm35k6006vsixcbmvmxqgma4iw5sw37h8vmcsdylk"))))
3987 (build-system emacs-build-system)
3988 (home-page "https://github.com/djcb/dream-theme")
3989 (synopsis "High-contrast Emacs theme")
3990 (description
3991 "@code{dream-theme} is a dark, clean theme for Emacs. It is inspired
3992 by zenburn, sinburn and similar themes, but slowly diverging from them.")
3993 (license license:gpl3+))))
3994
3995 (define-public emacs-auto-complete
3996 (package
3997 (name "emacs-auto-complete")
3998 (version "1.5.1")
3999 (source
4000 (origin
4001 (method url-fetch)
4002 (uri (string-append "https://github.com/auto-complete/"
4003 "auto-complete/archive/v" version ".tar.gz"))
4004 (sha256
4005 (base32
4006 "1jvq4lj00hwml75lpmlciazy8f3bbg13gffsfnl835p4qd8l7yqv"))
4007 (file-name (string-append name "-" version ".tar.gz"))))
4008 (build-system emacs-build-system)
4009 (propagated-inputs
4010 `(("emacs-popup" ,emacs-popup)))
4011 (home-page "https://github.com/auto-complete/auto-complete")
4012 (synopsis "Intelligent auto-completion extension for Emacs")
4013 (description
4014 "Auto-Complete is an intelligent auto-completion extension for Emacs.
4015 It extends the standard Emacs completion interface and provides an environment
4016 that allows users to concentrate more on their own work. Its features are:
4017 a visual interface, reduce overhead of completion by using statistic method,
4018 extensibility.")
4019 (license license:gpl3+)))
4020
4021 (define-public m17n-db
4022 (package
4023 (name "m17n-db")
4024 (version "1.7.0")
4025 (source
4026 (origin
4027 (method url-fetch)
4028 (uri (string-append "mirror://savannah/m17n/m17n-db-"
4029 version ".tar.gz"))
4030 (sha256
4031 (base32 "1w08hnsbknrcjlzp42c99bgwc9hzsnf5m4apdv0dacql2s09zfm2"))))
4032 (build-system gnu-build-system)
4033 (inputs
4034 `(("gettext" ,gettext-minimal)))
4035 (arguments
4036 `(#:configure-flags
4037 (list (string-append "--with-charmaps="
4038 (assoc-ref %build-inputs "libc")
4039 "/share/i18n/charmaps"))))
4040 ;; With `guix lint' the home-page URI returns a small page saying
4041 ;; that your browser does not handle frames. This triggers the "URI
4042 ;; returns suspiciously small file" warning.
4043 (home-page "http://www.nongnu.org/m17n/")
4044 (synopsis "Multilingual text processing library (database)")
4045 (description "The m17n library realizes multilingualization of
4046 many aspects of applications. The m17n library represents
4047 multilingual text as an object named M-text. M-text is a string with
4048 attributes called text properties, and designed to substitute for
4049 string in C. Text properties carry any information required to input,
4050 display and edit the text.
4051
4052 This package contains the library database.")
4053 (license license:lgpl2.1+)))
4054
4055 (define-public m17n-lib
4056 (package
4057 (name "m17n-lib")
4058 (version "1.7.0")
4059 (source
4060 (origin
4061 (method url-fetch)
4062 (uri (string-append "mirror://savannah/m17n/m17n-lib-"
4063 version ".tar.gz"))
4064 (sha256
4065 (base32 "10yv730i25g1rpzv6q49m6xn4p8fjm7jdwvik2h70sn8w3hm7f4f"))))
4066 (build-system gnu-build-system)
4067 (inputs
4068 `(("fribidi" ,fribidi)
4069 ("gd" ,gd)
4070 ("libotf" ,libotf)
4071 ("libxft" ,libxft)
4072 ("libxml2" ,libxml2)
4073 ("m17n-db" ,m17n-db)))
4074 (arguments
4075 `(#:parallel-build? #f))
4076 ;; With `guix lint' the home-page URI returns a small page saying
4077 ;; that your browser does not handle frames. This triggers the "URI
4078 ;; returns suspiciously small file" warning.
4079 (home-page "http://www.nongnu.org/m17n/")
4080 (synopsis "Multilingual text processing library (runtime)")
4081 (description "The m17n library realizes multilingualization of
4082 many aspects of applications. The m17n library represents
4083 multilingual text as an object named M-text. M-text is a string with
4084 attributes called text properties, and designed to substitute for
4085 string in C. Text properties carry any information required to input,
4086 display and edit the text.
4087
4088 This package contains the library runtime.")
4089 (license license:lgpl2.1+)))
4090
4091 (define-public emacs-nginx-mode
4092 (package
4093 (name "emacs-nginx-mode")
4094 (version "1.1.4")
4095 (source
4096 (origin
4097 (method url-fetch)
4098 (uri (string-append
4099 "https://github.com/ajc/nginx-mode/archive/v"
4100 version ".tar.gz"))
4101 (file-name (string-append name "-" version ".tar.gz"))
4102 (sha256
4103 (base32
4104 "1lvkj07kq0jkskr2f61vqb5rlrbnaz9a76ikq40w6925i2r970rr"))))
4105 (build-system emacs-build-system)
4106 (home-page "https://github.com/ajc/nginx-mode")
4107 (synopsis "Emacs major mode for editing nginx config files")
4108 (description "This package provides an Emacs major mode for
4109 editing nginx config files.")
4110 (license license:gpl2+)))
4111
4112 (define-public emacs-stream
4113 (package
4114 (name "emacs-stream")
4115 (version "2.2.0")
4116 (home-page "https://github.com/NicolasPetton/stream")
4117 (source
4118 (origin
4119 (method url-fetch)
4120 (file-name (string-append name "-" version ".tar.gz"))
4121 (uri (string-append home-page "/archive/"version ".tar.gz"))
4122 (sha256
4123 (base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
4124 (build-system emacs-build-system)
4125 (synopsis "Implementation of streams for Emacs")
4126 (description "This library provides an implementation of streams for Emacs.
4127 Streams are implemented as delayed evaluation of cons cells.")
4128 (license license:gpl3+)))
4129
4130 (define-public emacs-el-search
4131 (let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
4132 (revision "1"))
4133 (package
4134 (name "emacs-el-search")
4135 ;; No ufficial release.
4136 (version (string-append "0.0-" revision "." (string-take commit 7)))
4137 (home-page "https://github.com/emacsmirror/el-search")
4138 (source
4139 (origin
4140 (method git-fetch)
4141 (file-name (string-append name "-" version ".tar.gz"))
4142 (uri (git-reference
4143 (commit commit)
4144 (url (string-append home-page ".git"))))
4145 (sha256
4146 (base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
4147 (build-system emacs-build-system)
4148 (inputs `(("emacs-stream" ,emacs-stream)))
4149 (synopsis "Expression based interactive search for emacs-lisp-mode")
4150 (description "This package provides expression based interactive search
4151 procedures for emacs-lisp-mode.")
4152 (license license:gpl3+))))
4153
4154 (define-public emacs-ht
4155 (package
4156 (name "emacs-ht")
4157 (version "2.1")
4158 (source
4159 (origin
4160 (method url-fetch)
4161 (uri (string-append
4162 "https://github.com/Wilfred/ht.el/archive/"
4163 version ".tar.gz"))
4164 (file-name (string-append name "-" version ".tar.gz"))
4165 (sha256
4166 (base32
4167 "1lpba36kzxcc966fvsbrfpy8ah9gnvay0yk26gbyjil0rggrbqzj"))))
4168 (build-system emacs-build-system)
4169 (propagated-inputs `(("emacs-dash" ,emacs-dash)))
4170 (home-page "https://github.com/Wilfred/ht.el")
4171 (synopsis "Hash table library for Emacs")
4172 (description
4173 "This package simplifies the use of hash tables in elisp. It also
4174 provides functions to convert hash tables from and to alists and plists.")
4175 (license license:gpl3+)))
4176
4177 (define-public emacs-log4e
4178 (package
4179 (name "emacs-log4e")
4180 (version "0.3.0")
4181 (source
4182 (origin
4183 (method url-fetch)
4184 (uri (string-append
4185 "https://github.com/aki2o/log4e/archive/v"
4186 version ".tar.gz"))
4187 (file-name (string-append name "-" version ".tar.gz"))
4188 (sha256
4189 (base32
4190 "0nbdpbw353snda3v19l9hsm6gimppwnpxj18amm350bm81lyim2g"))))
4191 (build-system emacs-build-system)
4192 (arguments
4193 `(#:phases
4194 (modify-phases %standard-phases
4195 (add-after 'unpack 'remove-tests
4196 ;; Guile builder complains about null characters in some
4197 ;; strings of test files. Remove "test" directory (it is not
4198 ;; needed anyway).
4199 (lambda _
4200 (delete-file-recursively "test"))))))
4201 (home-page "https://github.com/aki2o/log4e")
4202 (synopsis "Logging framework for elisp")
4203 (description
4204 "This package provides a logging framework for elisp. It allows
4205 you to deal with multiple log levels.")
4206 (license license:gpl3+)))
4207
4208 (define-public emacs-gntp
4209 (package
4210 (name "emacs-gntp")
4211 (version "0.1")
4212 (source
4213 (origin
4214 (method url-fetch)
4215 (uri (string-append
4216 "https://github.com/tekai/gntp.el/archive/v"
4217 version ".tar.gz"))
4218 (file-name (string-append name "-" version ".tar.gz"))
4219 (sha256
4220 (base32
4221 "16c1dfkia9yhl206bdhjr3b8kfvqcqr38jl5lq8qsyrrzsnmghny"))))
4222 (build-system emacs-build-system)
4223 (home-page "https://github.com/tekai/gntp.el")
4224 (synopsis "Growl Notification Protocol for Emacs")
4225 (description
4226 "This package implements the Growl Notification Protocol GNTP
4227 described at @uref{http://www.growlforwindows.com/gfw/help/gntp.aspx}.
4228 It is incomplete as it only lets you send but not receive
4229 notifications.")
4230 (license license:bsd-3)))
4231
4232 (define-public emacs-alert
4233 (package
4234 (name "emacs-alert")
4235 (version "1.2")
4236 (source
4237 (origin
4238 (method url-fetch)
4239 (uri (string-append
4240 "https://github.com/jwiegley/alert/archive/v"
4241 version ".tar.gz"))
4242 (file-name (string-append name "-" version ".tar.gz"))
4243 (sha256
4244 (base32
4245 "1693kck3k2iz5zhpmxwqyafxm68hr6gzs60lkxd3j1wlp2c9fwyr"))))
4246 (build-system emacs-build-system)
4247 (propagated-inputs
4248 `(("emacs-gntp" ,emacs-gntp)
4249 ("emacs-log4e" ,emacs-log4e)))
4250 (home-page "https://github.com/jwiegley/alert")
4251 (synopsis "Growl-style notification system for Emacs")
4252 (description
4253 "Alert is a Growl-workalike for Emacs which uses a common notification
4254 interface and multiple, selectable \"styles\", whose use is fully
4255 customizable by the user.")
4256 (license license:gpl2+)))
4257
4258 (define-public emacs-mu4e-alert
4259 (package
4260 (name "emacs-mu4e-alert")
4261 (version "1.0")
4262 (source
4263 (origin
4264 (method url-fetch)
4265 (uri (string-append
4266 "https://github.com/iqbalansari/mu4e-alert/archive/v"
4267 version ".tar.gz"))
4268 (file-name (string-append name "-" version ".tar.gz"))
4269 (sha256
4270 (base32
4271 "07qc834qnxn8xi4bw5nawj8g91bmkzw0r0vahkgysp7r9xrf57gj"))))
4272 (build-system emacs-build-system)
4273 (propagated-inputs
4274 `(("emacs-alert" ,emacs-alert)
4275 ("emacs-s" ,emacs-s)
4276 ("emacs-ht" ,emacs-ht)))
4277 (home-page "https://github.com/iqbalansari/mu4e-alert")
4278 (synopsis "Desktop notification for mu4e")
4279 (description
4280 "This package provides desktop notifications for mu4e.
4281 Additionally it can display the number of unread emails in the
4282 mode-line.")
4283 (license license:gpl3+)))
4284
4285 (define-public emacs-pretty-mode
4286 (package
4287 (name "emacs-pretty-mode")
4288 (version "2.0.3")
4289 (source
4290 (origin
4291 (method url-fetch)
4292 (uri (string-append "https://github.com/akatov/pretty-mode/"
4293 "archive/" version ".tar.gz"))
4294 (file-name (string-append name "-" version ".tar.gz"))
4295 (sha256
4296 (base32
4297 "1fan7m4vnqs8kpg7r54kx3g7faadkpkf9kzarfv8n57kq8w157pl"))))
4298 (build-system emacs-build-system)
4299 (home-page "https://github.com/akatov/pretty-mode")
4300 (synopsis "Redisplay parts of the buffer as Unicode symbols")
4301 (description
4302 "Emacs minor mode for redisplaying parts of the buffer as pretty symbols.")
4303 (license license:gpl3+)))
4304
4305 (define-public emacs-yasnippet
4306 (package
4307 (name "emacs-yasnippet")
4308 (version "0.12.0")
4309 (source (origin
4310 (method url-fetch)
4311 (uri (string-append "https://github.com/joaotavora/yasnippet/"
4312 "archive/" version ".tar.gz"))
4313 (file-name (string-append name "-" version ".tar.gz"))
4314 (sha256
4315 (base32
4316 "1yqiprighgqz1hsslph50cy09xxqabc06jffrnjcsdf6nj70xlkc"))
4317 (modules '((guix build utils)))
4318 (snippet
4319 '(begin
4320 ;; YASnippet expects a "snippets" subdirectory in the same
4321 ;; directory as yasnippet.el, but we don't install it
4322 ;; because it's a git submodule pointing to an external
4323 ;; repository. Adjust `yas-snippet-dirs' to prevent
4324 ;; warnings about a missing directory.
4325 (substitute* "yasnippet.el"
4326 (("^ +'yas-installed-snippets-dir\\)\\)\n")
4327 "))\n"))))))
4328 (build-system emacs-build-system)
4329 (home-page "https://github.com/joaotavora/yasnippet")
4330 (synopsis "Yet another snippet extension for Emacs")
4331 (description
4332 "YASnippet is a template system for Emacs. It allows you to type an
4333 abbreviation and automatically expand it into function templates.")
4334 (license license:gpl3+)))
4335
4336 (define-public emacs-yasnippet-snippets
4337 (let ((commit "885050d34737e2fb36a3e7759d60c09347bd4ce0")
4338 (revision "1"))
4339 (package
4340 (name "emacs-yasnippet-snippets")
4341 (version (string-append "1-" revision "." (string-take commit 8)))
4342 (source
4343 (origin
4344 (method git-fetch)
4345 (uri (git-reference
4346 (url "https://github.com/AndreaCrotti/yasnippet-snippets")
4347 (commit commit)))
4348 (file-name (string-append name "-" version "-checkout"))
4349 (sha256
4350 (base32
4351 "1m935zgglw0iakzrixld5rcjz3wnj84f8wy2mvc3pggjri9l0qr9"))))
4352 (build-system trivial-build-system)
4353 (arguments
4354 `(#:modules ((ice-9 ftw)
4355 (ice-9 regex)
4356 (guix build utils))
4357 #:builder
4358 (begin
4359 (use-modules (ice-9 ftw)
4360 (ice-9 regex)
4361 (guix build utils))
4362 (with-directory-excursion (assoc-ref %build-inputs "source")
4363 (for-each (lambda (dir)
4364 (copy-recursively
4365 dir
4366 (string-append %output
4367 "/share/emacs/yasnippet-snippets/"
4368 dir)))
4369 (scandir "." (lambda (fname)
4370 (and (string-match "-mode$" fname)
4371 (directory-exists? fname)))))))))
4372 (home-page "https://github.com/AndreaCrotti/yasnippet-snippets")
4373 (synopsis "Collection of YASnippet snippets for many languages")
4374 (description
4375 "Provides Andrea Crotti's collection of YASnippet snippets. After installation,
4376 the snippets will be in \"~/.guix-profile/share/emacs/yasnippet-snippets/\".
4377 To make YASnippet aware of these snippets, add the above directory to
4378 @code{yas-snippet-dirs}.")
4379 (license license:expat))))
4380
4381 (define-public emacs-memoize
4382 (package
4383 (name "emacs-memoize")
4384 (version "20130421.b55eab0")
4385 (source
4386 (origin
4387 (method git-fetch)
4388 (uri (git-reference
4389 (url "https://github.com/skeeto/emacs-memoize")
4390 (commit "b55eab0cb6ab05d941e07b8c01f1655c0cf1dd75")))
4391 (file-name (string-append name "-" version ".tar.gz"))
4392 (sha256
4393 (base32
4394 "0fjwlrdm270qcrqffvarw5yhijk656q4lam79ybhaznzj0dq3xpw"))))
4395 (build-system emacs-build-system)
4396 (arguments
4397 `(#:phases
4398 (modify-phases %standard-phases
4399 (add-before 'install 'check
4400 (lambda _
4401 (zero? (system* "emacs" "-batch" "-l" "memoize.el"
4402 "-l" "memoize-test.el"
4403 "-f" "ert-run-tests-batch-and-exit")))))))
4404 (home-page "https://github.com/skeeto/emacs-memoize")
4405 (synopsis "Emacs lisp memoization library")
4406 (description "@code{emacs-memoize} is an Emacs library for
4407 memoizing functions.")
4408 (license license:unlicense)))
4409
4410 (define-public emacs-linum-relative
4411 (package
4412 (name "emacs-linum-relative")
4413 (version "0.5")
4414 (source
4415 (origin
4416 (method url-fetch)
4417 (uri (string-append
4418 "https://github.com/coldnew/linum-relative/archive/"
4419 version ".tar.gz"))
4420 (file-name (string-append name "-" version ".tar.gz"))
4421 (sha256
4422 (base32
4423 "0s4frvr27866lw1rn3jal9wj5rkz9fx4yiszqv7w06azsdgsqksv"))))
4424 (build-system emacs-build-system)
4425 (home-page "https://github.com/coldnew/linum-relative")
4426 (synopsis "Relative line numbering for Emacs")
4427 (description "@code{emacs-linum-relative} displays the relative line
4428 number on the left margin in Emacs.")
4429 (license license:gpl2+)))
4430
4431 (define-public emacs-idle-highlight
4432 (package
4433 (name "emacs-idle-highlight")
4434 (version "1.1.3")
4435 (source
4436 (origin
4437 (method url-fetch)
4438 (uri (string-append
4439 "https://github.com/nonsequitur/idle-highlight-mode/archive/"
4440 version ".tar.gz"))
4441 (file-name (string-append name "-" version ".tar.gz"))
4442 (sha256
4443 (base32
4444 "0kdv10hrgqpskjh0zvpnzwlkn5bccnqxas62gkws6njln57bf8nl"))))
4445 (build-system emacs-build-system)
4446 (home-page "https://www.emacswiki.org/emacs/IdleHighlight")
4447 (synopsis "Highlights all occurrences of the word the point is on")
4448 (description
4449 "This Emacs package provides @code{idle-highlight-mode} that sets
4450 an idle timer to highlight all occurrences in the buffer of the word under
4451 the point.")
4452 (license license:gpl3+)))
4453
4454 (define-public emacs-ox-twbs
4455 (package
4456 (name "emacs-ox-twbs")
4457 (version "1.1.1")
4458 (source
4459 (origin
4460 (method url-fetch)
4461 (uri (string-append
4462 "https://github.com/marsmining/ox-twbs/archive/v"
4463 version ".tar.gz"))
4464 (file-name (string-append name "-" version ".tar.gz"))
4465 (sha256
4466 (base32
4467 "1zaq8dczq5wijjk36114k2x3hfrqig3lyx6djril6wyk67vczyqs"))))
4468 (build-system emacs-build-system)
4469 (home-page "https://github.com/marsmining/ox-twbs")
4470 (synopsis "Export org-mode docs as HTML compatible with Twitter Bootstrap")
4471 (description
4472 "This Emacs package outputs your org-mode docs with a simple, clean and
4473 modern look. It implements a new HTML back-end for exporting org-mode docs as
4474 HTML compatible with Twitter Bootstrap. By default, HTML is exported with
4475 jQuery and Bootstrap resources included via osscdn.")
4476 (license license:gpl3+)))
4477
4478 (define-public emacs-highlight-sexp
4479 (package
4480 (name "emacs-highlight-sexp")
4481 (version "1.0")
4482 (source
4483 (origin
4484 (method url-fetch)
4485 (uri (string-append
4486 "https://github.com/daimrod/highlight-sexp/archive/v"
4487 version ".tar.gz"))
4488 (file-name (string-append name "-" version ".tar.gz"))
4489 (sha256
4490 (base32
4491 "0jwx87qkln1rg9wmv4qkgkml935fh2pkgrg5x4ca6n5dgb4q6rj1"))))
4492 (build-system emacs-build-system)
4493 (home-page "https://github.com/daimrod/highlight-sexp")
4494 (synopsis "Minor mode that highlights the s-exp at the current position")
4495 (description
4496 "This Emacs package highlights the s-exp at the current position.")
4497 (license license:gpl3+)))
4498
4499 (define-public emacspeak
4500 (package
4501 (name "emacspeak")
4502 (version "46.0")
4503 (source
4504 (origin
4505 (method url-fetch)
4506 (uri (string-append
4507 "https://github.com/tvraman/emacspeak/releases/download/"
4508 version "/emacspeak-" version ".tar.bz2"))
4509 (sha256
4510 (base32
4511 "15x4yfp3wl2fxm1nkx6pz3clw6zyw3argcsqxgcx6pa28sivlg2n"))
4512 (modules '((guix build utils)))
4513 (snippet
4514 ;; Delete the bundled byte-compiled elisp files.
4515 '(for-each delete-file (find-files "lisp" "\\.elc$")))))
4516 (build-system gnu-build-system)
4517 (arguments
4518 '(#:make-flags (list (string-append "prefix="
4519 (assoc-ref %outputs "out")))
4520 #:phases
4521 (modify-phases %standard-phases
4522 (replace 'configure
4523 (lambda _
4524 ;; Configure Emacspeak according to etc/install.org.
4525 (zero? (system* "make" "config"))))
4526 (add-after 'build 'build-espeak
4527 (lambda _
4528 (zero? (system* "make" "espeak"))))
4529 (replace 'install
4530 (lambda* (#:key outputs #:allow-other-keys)
4531 (let* ((out (assoc-ref outputs "out"))
4532 (bin (string-append out "/bin"))
4533 (lisp (string-append out "/share/emacs/site-lisp/emacspeak"))
4534 (info (string-append out "/share/info")))
4535 ;; According to etc/install.org, the Emacspeak directory should
4536 ;; be copied to its installation destination.
4537 (for-each
4538 (lambda (file)
4539 (copy-recursively file (string-append lisp "/" file)))
4540 '("etc" "info" "lisp" "media" "servers" "sounds" "stumpwm"
4541 "xsl"))
4542 ;; Make sure emacspeak is loaded from the correct directory.
4543 (substitute* "etc/emacspeak.sh"
4544 (("exec emacs.*$")
4545 (string-append "exec emacs -l " lisp
4546 "/lisp/emacspeak-setup.el $CL_ALL")))
4547 ;; Install the convenient startup script.
4548 (mkdir-p bin)
4549 (copy-file "etc/emacspeak.sh" (string-append bin "/emacspeak")))
4550 #t))
4551 (add-after 'install 'wrap-program
4552 (lambda* (#:key inputs outputs #:allow-other-keys)
4553 (let* ((out (assoc-ref outputs "out"))
4554 (emacspeak (string-append out "/bin/emacspeak"))
4555 (espeak (string-append (assoc-ref inputs "espeak")
4556 "/bin/espeak")))
4557 ;; The environment variable DTK_PROGRAM tells emacspeak what
4558 ;; program to use for speech.
4559 (wrap-program emacspeak
4560 `("DTK_PROGRAM" ":" prefix (,espeak)))
4561 #t))))
4562 #:tests? #f)) ; no check target
4563 (inputs
4564 `(("espeak" ,espeak)
4565 ("tcl" ,tcl)
4566 ("tclx" ,tclx)))
4567 (native-inputs `(("emacs" ,emacs-minimal)))
4568 (home-page "http://emacspeak.sourceforge.net")
4569 (synopsis "Audio desktop interface for Emacs")
4570 (description
4571 "Emacspeak is a speech interface that allows visually impaired users to
4572 interact independently and efficiently with the computer. Audio formatting
4573 --a technique pioneered by AsTeR-- and full support for W3C's Aural CSS (ACSS)
4574 allows Emacspeak to produce rich aural presentations of electronic information.
4575 By seamlessly blending all aspects of the Internet such as Web-surfing and
4576 messaging, Emacspeak speech-enables local and remote information via a
4577 consistent and well-integrated user interface.")
4578 (license license:gpl2+)))
4579
4580 (define-public emacs-adaptive-wrap
4581 (package
4582 (name "emacs-adaptive-wrap")
4583 (version "0.5")
4584 (source (origin
4585 (method url-fetch)
4586 (uri (string-append
4587 "http://elpa.gnu.org/packages/adaptive-wrap-"
4588 version ".el"))
4589 (sha256
4590 (base32
4591 "0frgmp8vrrml4iykm60j4d6cl9rbcivy9yh24q6kd10bcyx59ypy"))))
4592 (build-system emacs-build-system)
4593 (home-page "http://elpa.gnu.org/packages/adaptive-wrap.html")
4594 (synopsis "Smart line-wrapping with wrap-prefix")
4595 (description
4596 "This Emacs package provides the @code{adaptive-wrap-prefix-mode}
4597 minor mode which sets the wrap-prefix property on the fly so that
4598 single-long-line paragraphs get word-wrapped in a way similar to what
4599 you'd get with @kbd{M-q} using @code{adaptive-fill-mode}, but without
4600 actually changing the buffer's text.")
4601 (license license:gpl3+)))
4602
4603 (define-public emacs-diminish
4604 (package
4605 (name "emacs-diminish")
4606 (version "0.45")
4607 (source
4608 (origin
4609 (method url-fetch)
4610 (uri (string-append
4611 "https://github.com/myrjola/diminish.el/archive/v"
4612 version ".tar.gz"))
4613 (file-name (string-append name "-" version ".tar.gz"))
4614 (sha256
4615 (base32
4616 "0i3629sv5cfrrb00hcnmaqzgs8mk36yasc1ax3ry1ga09nr6rkj9"))))
4617 (build-system emacs-build-system)
4618 (home-page "https://github.com/myrjola/diminish.el")
4619 (synopsis "Diminish minor modes with no modeline display")
4620 (description "@code{emacs-diminish} implements hiding or
4621 abbreviation of the mode line displays (lighters) of minor modes.")
4622 (license license:gpl2+)))
4623
4624 (define-public emacs-use-package
4625 (package
4626 (name "emacs-use-package")
4627 (version "2.3")
4628 (source
4629 (origin
4630 (method url-fetch)
4631 (uri (string-append
4632 "https://github.com/jwiegley/use-package/archive/"
4633 version ".tar.gz"))
4634 (file-name (string-append name "-" version ".tar.gz"))
4635 (sha256
4636 (base32
4637 "0x4h136jb3imyli6zsh7dyzjrra6pv0v6b0yk94jdng3rdfcmsf5"))))
4638 (build-system emacs-build-system)
4639 (propagated-inputs
4640 `(("emacs-diminish" ,emacs-diminish)))
4641 (arguments
4642 `(#:phases
4643 (modify-phases %standard-phases
4644 (add-before 'install 'check
4645 (lambda _
4646 (zero? (system* "emacs" "--batch" "-L" "."
4647 "-l" "use-package-tests.el"
4648 "-f" "ert-run-tests-batch-and-exit"))
4649 ;; Tests fail in this release, but have been fixed in
4650 ;; upstream commit 7956d40eed57d6c06bef36ebc174cf57d934e30d
4651 #t)))))
4652 (home-page "https://github.com/jwiegley/use-package")
4653 (synopsis "Declaration for simplifying your .emacs")
4654 (description "The use-package macro allows you to isolate package
4655 configuration in your @file{.emacs} file in a way that is both
4656 performance-oriented and tidy.")
4657 (license license:gpl2+)))
4658
4659 (define-public emacs-strace-mode
4660 (let* ((commit "6a69b4b06db6797af56f33eda5cb28af94e59f11")
4661 (revision "1"))
4662 (package
4663 (name "emacs-strace-mode")
4664 (version (string-append "0.0.2-" revision "." (string-take commit 7)))
4665 (source (origin
4666 (method git-fetch)
4667 (uri (git-reference
4668 (url "https://github.com/pkmoore/strace-mode")
4669 (commit commit)))
4670 (file-name (string-append name "-" version "-checkout"))
4671 (sha256
4672 (base32
4673 "1lbk2kzdznf2bkfazizfbimaxxzfzv00lrz1ran9dc2zqbc0bj9f"))))
4674 (build-system emacs-build-system)
4675 (home-page "https://github.com/pkmoore/strace-mode")
4676 (synopsis "Emacs major mode to highlight strace outputs")
4677 (description "@code{emacs-strace-mode} provides an Emacs major mode
4678 highlighting strace outputs.")
4679 (license license:gpl3+))))
4680
4681 (define-public emacs-default-encrypt
4682 (package
4683 (name "emacs-default-encrypt")
4684 (version "4.3")
4685 (source
4686 (origin
4687 (method url-fetch)
4688 (uri (string-append
4689 "https://www.informationelle-selbstbestimmung-im-internet.de"
4690 "/emacs/jl-encrypt" version "/jl-encrypt.el"))
4691 (file-name (string-append "jl-encrypt-" version ".el"))
4692 (sha256
4693 (base32
4694 "16i3rlfp3jxlqvndn8idylhmczync3gwmy8a019v29vyr48rnnr0"))))
4695 (build-system emacs-build-system)
4696 (home-page "https://www.informationelle-selbstbestimmung-im-internet.de/Emacs.html")
4697 (synopsis "Automatically encrypt or sign Gnus messages in Emacs")
4698 (description
4699 "DefaultEncrypt is designed to be used with Gnus in Emacs. It
4700 automatically encrypts messages that you send (e.g., email) when public keys
4701 for all recipients are available, and it protects you from accidentally
4702 sending un-encrypted messages. It can also be configured to automatically
4703 sign messages that you send. For details and instructions on how to use
4704 DefaultEncrypt, please refer to the home page or read the comments in the
4705 source file, @file{jl-encrypt.el}.")
4706 (license license:gpl3+)))
4707
4708 (define-public emacs-htmlize
4709 (package
4710 (name "emacs-htmlize")
4711 (version "1.51")
4712 (source
4713 (origin
4714 (method url-fetch)
4715 (uri (string-append
4716 "https://github.com/hniksic/emacs-htmlize/archive/release/"
4717 version ".tar.gz"))
4718 (file-name (string-append name "-" version ".tar.gz"))
4719 (sha256
4720 (base32
4721 "1fy1lybzrxl8a8r88f6p19nz8ygmvcxhxbnymkxh7jqaz25viwld"))))
4722 (build-system emacs-build-system)
4723 (home-page "https://github.com/hniksic/emacs-htmlize")
4724 (synopsis "Convert buffer text and decorations to HTML")
4725 (description "@code{emacs-htmlize} converts the buffer text and
4726 the associated decorations to HTML. Output to CSS, inline CSS and
4727 fonts is supported.")
4728 (license license:gpl2+)))
4729
4730 (define-public emacs-xmlgen
4731 (package
4732 (name "emacs-xmlgen")
4733 (version "0.5")
4734 (source
4735 (origin
4736 (method url-fetch)
4737 (uri (string-append
4738 "https://github.com/philjackson/xmlgen/archive/"
4739 version ".tar.gz"))
4740 (file-name (string-append name "-" version ".tar.gz"))
4741 (sha256
4742 (base32
4743 "0zay490vjby3f7455r0vydmjg7q1gwc78hilpfb0rg4gwz224z8r"))))
4744 (build-system emacs-build-system)
4745 (arguments
4746 `(#:phases
4747 (modify-phases %standard-phases
4748 (add-before 'install 'check
4749 (lambda _
4750 (zero? (system* "emacs" "--batch" "-L" "."
4751 "-l" "xmlgen-test.el"
4752 "-f" "ert-run-tests-batch-and-exit")))))))
4753 (home-page "https://github.com/philjackson/xmlgen")
4754 (synopsis "S-expression to XML domain specific language (DSL) in
4755 Emacs Lisp")
4756 (description "@code{emacs-xmlgen} provides S-expression to XML
4757 conversion for Emacs Lisp.")
4758 (license license:gpl2+)))
4759
4760 (define-public emacs-cdlatex
4761 (package
4762 (name "emacs-cdlatex")
4763 (version "4.7")
4764 (source
4765 (origin
4766 (method url-fetch)
4767 (uri (string-append
4768 "https://github.com/cdominik/cdlatex/archive/"
4769 version ".tar.gz"))
4770 (file-name (string-append name "-" version ".tar.gz"))
4771 (sha256
4772 (base32
4773 "0pivapphmykc6vhvpx7hdyl55ls37vc4jcrxpvs4yk7jzcmwa9xp"))))
4774 (build-system emacs-build-system)
4775 (home-page "https://github.com/cdominik/cdlatex")
4776 (synopsis "Fast Emacs input methods for LaTeX environments and
4777 math")
4778 (description "CDLaTeX is an Emacs minor mode supporting fast
4779 insertion of environment templates and math in LaTeX. Similar
4780 commands are also offered as part of the AUCTeX package, but it is not
4781 the same - CDLaTeX focuses on speediness for inserting LaTeX
4782 constructs.")
4783 (license license:gpl3+)))
4784
4785 (define-public emacs-xelb
4786 (package
4787 (name "emacs-xelb")
4788 (version "0.12")
4789 (source (origin
4790 (method url-fetch)
4791 (uri (string-append "https://elpa.gnu.org/packages/xelb-"
4792 version ".tar"))
4793 (sha256
4794 (base32
4795 "0i9n0f3ibj4a5pwcsvwrah9m0fz32m0x6a9wsmjn3li20v8pcb81"))))
4796 (build-system emacs-build-system)
4797 ;; The following functions and variables needed by emacs-xelb are
4798 ;; not included in emacs-minimal:
4799 ;; x-display-screens, x-keysym-table, x-alt-keysym, x-meta-keysym
4800 ;; x-hyper-keysym, x-super-keysym, libxml-parse-xml-region
4801 ;; x-display-pixel-width, x-display-pixel-height
4802 (arguments
4803 `(#:emacs ,emacs
4804 #:phases
4805 (modify-phases %standard-phases
4806 (add-after 'unpack 'regenerate-el-files
4807 (lambda* (#:key inputs #:allow-other-keys)
4808 (zero? (system* "make"
4809 (string-append "PROTO_PATH="
4810 (assoc-ref inputs "xcb-proto")
4811 "/share/xcb")
4812 (string-append "EMACS_BIN="
4813 (assoc-ref inputs "emacs")
4814 "/bin/emacs -Q"))))))))
4815 (native-inputs `(("xcb-proto" ,xcb-proto)))
4816 (home-page "https://github.com/ch11ng/xelb")
4817 (synopsis "X protocol Emacs Lisp binding")
4818 (description "@code{emacs-xelb} is a pure Emacs Lisp implementation of the
4819 X11 protocol based on the XML description files from the XCB project. It
4820 features an object-oriented API and permits a certain degree of concurrency.
4821 It should enable you to implement low-level X11 applications.")
4822 (license license:gpl3+)))
4823
4824 (define-public emacs-exwm
4825 (package
4826 (name "emacs-exwm")
4827 (version "0.15")
4828 (synopsis "Emacs X window manager")
4829 (source (origin
4830 (method url-fetch)
4831 (uri (string-append "https://elpa.gnu.org/packages/exwm-"
4832 version ".tar"))
4833 (sha256
4834 (base32
4835 "1y7nqry9y0a99bsdqkk9f554vczfw4sz6raadw3138835qy697jg"))))
4836 (build-system emacs-build-system)
4837 (propagated-inputs
4838 `(("emacs-xelb" ,emacs-xelb)))
4839 (inputs
4840 `(("xhost" ,xhost)
4841 ("dbus" ,dbus)))
4842 ;; The following functions and variables needed by emacs-exwm are
4843 ;; not included in emacs-minimal:
4844 ;; scroll-bar-mode, fringe-mode
4845 ;; x-display-pixel-width, x-display-pixel-height
4846 (arguments
4847 `(#:emacs ,emacs
4848 #:phases
4849 (modify-phases %standard-phases
4850 (add-after 'build 'install-xsession
4851 (lambda* (#:key inputs outputs #:allow-other-keys)
4852 (let* ((out (assoc-ref outputs "out"))
4853 (xsessions (string-append out "/share/xsessions"))
4854 (bin (string-append out "/bin"))
4855 (exwm-executable (string-append bin "/exwm")))
4856 ;; Add a .desktop file to xsessions
4857 (mkdir-p xsessions)
4858 (mkdir-p bin)
4859 (with-output-to-file
4860 (string-append xsessions "/exwm.desktop")
4861 (lambda _
4862 (format #t "[Desktop Entry]~@
4863 Name=~a~@
4864 Comment=~a~@
4865 Exec=~a~@
4866 TryExec=~@*~a~@
4867 Type=Application~%" ,name ,synopsis exwm-executable)))
4868 ;; Add a shell wrapper to bin
4869 (with-output-to-file exwm-executable
4870 (lambda _
4871 (format #t "#!~a ~@
4872 ~a +SI:localuser:$USER ~@
4873 exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
4874 (string-append (assoc-ref inputs "bash") "/bin/sh")
4875 (string-append (assoc-ref inputs "xhost") "/bin/xhost")
4876 (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
4877 (string-append (assoc-ref inputs "emacs") "/bin/emacs")
4878 '(cond
4879 ((file-exists-p "~/.exwm")
4880 (load-file "~/.exwm"))
4881 ((not (featurep 'exwm))
4882 (require 'exwm)
4883 (require 'exwm-config)
4884 (exwm-config-default)
4885 (message (concat "exwm configuration not found. "
4886 "Falling back to default configuration...")))))))
4887 (chmod exwm-executable #o555)
4888 #t))))))
4889 (home-page "https://github.com/ch11ng/exwm")
4890 (description "EXWM is a full-featured tiling X window manager for Emacs
4891 built on top of XELB.")
4892 (license license:gpl3+)))
4893
4894 (define-public emacs-switch-window
4895 (package
4896 (name "emacs-switch-window")
4897 (version "1.5.1")
4898 (source (origin
4899 (method url-fetch)
4900 (uri (string-append
4901 "https://github.com/dimitri/switch-window/archive/v"
4902 version ".tar.gz"))
4903 (file-name (string-append name "-" version ".tar.gz"))
4904 (sha256
4905 (base32
4906 "07f99apxscwvsp2bjxsbi462c433kcglrjh6xl0gyafs1nvvvnd8"))))
4907 (build-system emacs-build-system)
4908 (home-page "https://github.com/dimitri/switch-window")
4909 (synopsis "Emacs window switch tool")
4910 (description "Switch-window is an emacs window switch tool, which
4911 offer a visual way to choose a window to switch to, delete, split or
4912 other operations.")
4913 (license license:wtfpl2)))
4914
4915 (define-public emacs-exwm-x
4916 (package
4917 (name "emacs-exwm-x")
4918 (version "1.7.2")
4919 (synopsis "Derivative window manager based on EXWM")
4920 (source (origin
4921 (method url-fetch)
4922 (uri (string-append
4923 "https://github.com/tumashu/exwm-x/archive/v"
4924 version ".tar.gz"))
4925 (file-name (string-append name "-" version ".tar.gz"))
4926 (sha256
4927 (base32
4928 "1ny13i82fb72917jgl0ndwjg1x6l9f8gfhcx7cwlwhh5saq23mvy"))))
4929 (build-system emacs-build-system)
4930 (propagated-inputs
4931 `(("emacs-exwm" ,emacs-exwm)
4932 ("emacs-switch-window" ,emacs-switch-window)
4933 ("emacs-ivy" ,emacs-ivy)
4934 ("emacs-use-package" ,emacs-use-package)))
4935 (inputs
4936 `(("xhost" ,xhost)
4937 ("dbus" ,dbus)))
4938 ;; Need emacs instead of emacs-minimal,
4939 ;; for emacs's bin path will be inserted into bin/exwm-x file.
4940 (arguments
4941 `(#:emacs ,emacs
4942 #:phases
4943 (modify-phases %standard-phases
4944 (add-after 'build 'install-xsession
4945 (lambda* (#:key inputs outputs #:allow-other-keys)
4946 (let* ((out (assoc-ref outputs "out"))
4947 (xsessions (string-append out "/share/xsessions"))
4948 (bin (string-append out "/bin"))
4949 (exwm-executable (string-append bin "/exwm-x")))
4950 ;; Add a .desktop file to xsessions
4951 (mkdir-p xsessions)
4952 (mkdir-p bin)
4953 (with-output-to-file
4954 (string-append xsessions "/exwm-x.desktop")
4955 (lambda _
4956 (format #t "[Desktop Entry]~@
4957 Name=~a~@
4958 Comment=~a~@
4959 Exec=~a~@
4960 TryExec=~@*~a~@
4961 Type=Application~%" ,name ,synopsis exwm-executable)))
4962 ;; Add a shell wrapper to bin
4963 (with-output-to-file exwm-executable
4964 (lambda _
4965 (format #t "#!~a ~@
4966 ~a +SI:localuser:$USER ~@
4967 exec ~a --exit-with-session ~a \"$@\" --eval '~s' ~%"
4968 (string-append (assoc-ref inputs "bash") "/bin/sh")
4969 (string-append (assoc-ref inputs "xhost") "/bin/xhost")
4970 (string-append (assoc-ref inputs "dbus") "/bin/dbus-launch")
4971 (string-append (assoc-ref inputs "emacs") "/bin/emacs")
4972 '(require 'exwmx-loader))))
4973 (chmod exwm-executable #o555)
4974 #t))))))
4975 (home-page "https://github.com/tumashu/exwm-x")
4976 (description "EXWM-X is a derivative window manager based on EXWM, with focus
4977 on mouse-control.")
4978 (license license:gpl3+)))
4979
4980 (define-public emacs-gnuplot
4981 (package
4982 (name "emacs-gnuplot")
4983 (version "0.7.0")
4984 (source
4985 (origin
4986 (method url-fetch)
4987 (uri (string-append
4988 "https://github.com/bruceravel/gnuplot-mode/archive/"
4989 version ".tar.gz"))
4990 (file-name (string-append name "-" version ".tar.gz"))
4991 (sha256
4992 (base32
4993 "0glzymrn138lwig7p4cj17x4if5jisr6l4g6wcbxisqkqgc1h01i"))))
4994 (build-system gnu-build-system)
4995 (native-inputs `(("emacs" ,emacs-minimal)))
4996 (arguments
4997 (let ((elisp-dir (string-append "/share/emacs/site-lisp/guix.d"
4998 "/gnuplot-" version)))
4999 `(#:modules ((guix build gnu-build-system)
5000 (guix build utils)
5001 (guix build emacs-utils))
5002 #:imported-modules (,@%gnu-build-system-modules
5003 (guix build emacs-utils))
5004 #:configure-flags
5005 (list (string-append "EMACS=" (assoc-ref %build-inputs "emacs")
5006 "/bin/emacs")
5007 (string-append "--with-lispdir=" %output ,elisp-dir))
5008 #:phases
5009 (modify-phases %standard-phases
5010 (add-after 'install 'generate-autoloads
5011 (lambda* (#:key outputs #:allow-other-keys)
5012 (emacs-generate-autoloads
5013 "gnuplot"
5014 (string-append (assoc-ref outputs "out") ,elisp-dir))
5015 #t))))))
5016 (home-page "https://github.com/bruceravel/gnuplot-mode")
5017 (synopsis "Emacs major mode for interacting with gnuplot")
5018 (description "@code{emacs-gnuplot} is an emacs major mode for interacting
5019 with gnuplot.")
5020 (license license:gpl2+)))
5021
5022 (define-public emacs-transpose-frame
5023 (package
5024 (name "emacs-transpose-frame")
5025 (version "0.1.0")
5026 (source
5027 (origin
5028 (method url-fetch)
5029 (uri "http://www.emacswiki.org/emacs/download/transpose-frame.el")
5030 (file-name (string-append "transpose-frame-" version ".el"))
5031 (sha256
5032 (base32
5033 "1f67yksgw9s6j0033hmqzaxx2a93jm11sd5ys7cc3li5gfh680m4"))))
5034 (build-system emacs-build-system)
5035 (home-page "https://www.emacswiki.org/emacs/TransposeFrame")
5036 (synopsis "Transpose window arrangement in current frame")
5037 (description "@code{emacs-transpose-frame} provides some interactive
5038 functions which allows users to transpose windows arrangement in currently
5039 selected frame.")
5040 (license license:bsd-2)))
5041
5042 (define-public emacs-key-chord
5043 (package
5044 (name "emacs-key-chord")
5045 (version "0.6")
5046 (source
5047 (origin
5048 (method url-fetch)
5049 (uri "https://www.emacswiki.org/emacs/download/key-chord.el")
5050 (file-name (string-append "key-chord-" version ".el"))
5051 (sha256
5052 (base32
5053 "03m44pqggfrd53nh9dvpdjgm0rvca34qxmd30hr33hzprzjambxg"))))
5054 (build-system emacs-build-system)
5055 (home-page "https://www.emacswiki.org/emacs/key-chord.el")
5056 (synopsis "Map pairs of simultaneously pressed keys to Emacs commands")
5057 (description "@code{emacs-key-chord} provides @code{key-chord-mode}, a
5058 mode for binding key chords to commands. A key chord is defined as two keys
5059 pressed simultaneously or a single key quickly pressed twice.")
5060 (license license:gpl2+)))
5061
5062 (define-public emacs-evil-surround
5063 (package
5064 (name "emacs-evil-surround")
5065 (version "1.0.0")
5066 (source
5067 (origin
5068 (method url-fetch)
5069 (uri (string-append
5070 "https://github.com/timcharper/evil-surround/archive/v"
5071 version ".tar.gz"))
5072 (file-name (string-append name "-" version ".tar.gz"))
5073 (sha256
5074 (base32
5075 "0p572jgic3q1ia1nz37kclir729ay6i2f4sa7wnaapyxly2lwb3r"))))
5076 (build-system emacs-build-system)
5077 (propagated-inputs
5078 `(("emacs-evil" ,emacs-evil)))
5079 (home-page "https://github.com/timcharper/evil-surround")
5080 (synopsis "Easily modify surrounding parantheses and quotes")
5081 (description "@code{emacs-evil-surround} allows easy deletion, change and
5082 addition of surrounding pairs, such as parantheses and quotes, in evil mode.")
5083 (license license:gpl3+)))
5084
5085 (define-public emacs-evil-commentary
5086 (package
5087 (name "emacs-evil-commentary")
5088 (version "2.1.1")
5089 (source
5090 (origin
5091 (method url-fetch)
5092 (uri (string-append
5093 "https://github.com/linktohack/evil-commentary/archive/v"
5094 version ".tar.gz"))
5095 (file-name (string-append name "-" version ".tar.gz"))
5096 (sha256
5097 (base32
5098 "1jdya0i921nwskwrzdsj0vrr3m7gm49dy6f6pk9p5nxaarfxk230"))))
5099 (build-system emacs-build-system)
5100 (propagated-inputs
5101 `(("emacs-evil" ,emacs-evil)))
5102 (home-page "https://github.com/linktohack/evil-commentary")
5103 (synopsis "Comment out code in evil mode")
5104 (description "@code{emacs-evil-commentary} adds keybindings to easily
5105 comment out lines of code in evil mode. It provides @code{gcc} to comment out
5106 lines, and @code{gc} to comment out the target of a motion.")
5107 (license license:gpl3+)))
5108
5109 ;; Tests for emacs-ansi have a circular dependency with ert-runner, and
5110 ;; therefore cannot be run
5111 (define-public emacs-ansi
5112 (package
5113 (name "emacs-ansi")
5114 (version "0.4.1")
5115 (source
5116 (origin
5117 (method url-fetch)
5118 (uri (string-append "https://github.com/rejeep/ansi.el/archive/v"
5119 version ".tar.gz"))
5120 (file-name (string-append name "-" version ".tar.gz"))
5121 (sha256
5122 (base32
5123 "13jj4vbi98j3p17hs99bmy7g21jd5h4v3wpxk4pkvhylm3bfwjw8"))))
5124 (build-system emacs-build-system)
5125 (propagated-inputs
5126 `(("emacs-dash" ,emacs-dash)
5127 ("emacs-s" ,emacs-s)))
5128 (home-page "https://github.com/rejeep/ansi.el")
5129 (synopsis "Convert strings to ANSI")
5130 (description "@code{emacs-ansi} defines functions that turns simple
5131 strings to ANSI strings. Turning a string into an ANSI string can be to add
5132 color to a text, add color in the background of a text or adding a style, such
5133 as bold, underscore or italic.")
5134 (license license:gpl3+)))
5135
5136 ;; Tests for emacs-commander have a circular dependency with ert-runner, and
5137 ;; therefore cannot be run
5138 (define-public emacs-commander
5139 (package
5140 (name "emacs-commander")
5141 (version "0.7.0")
5142 (source
5143 (origin
5144 (method url-fetch)
5145 (uri (string-append "https://github.com/rejeep/commander.el/archive/v"
5146 version ".tar.gz"))
5147 (file-name (string-append name "-" version ".tar.gz"))
5148 (sha256
5149 (base32
5150 "196s2i15z7gwxa97l1wkxvjnfmj5n38wwm6d3g4zz15l2vqggc2y"))))
5151 (build-system emacs-build-system)
5152 (propagated-inputs
5153 `(("emacs-dash" ,emacs-dash)
5154 ("emacs-f" ,emacs-f)
5155 ("emacs-s" ,emacs-s)))
5156 (home-page "https://github.com/rejeep/commander.el")
5157 (synopsis "Emacs command line parser")
5158 (description "@code{emacs-commander} provides command line parsing for
5159 Emacs.")
5160 (license license:gpl3+)))
5161
5162 ;; Tests for ert-runner have a circular dependency with ecukes, and therefore
5163 ;; cannot be run
5164 (define-public ert-runner
5165 (let ((dependencies
5166 `(("emacs-ansi" ,emacs-ansi)
5167 ("emacs-commander" ,emacs-commander)
5168 ("emacs-dash" ,emacs-dash)
5169 ("emacs-f" ,emacs-f)
5170 ("emacs-s" ,emacs-s)
5171 ("emacs-shut-up" ,emacs-shut-up))))
5172 (package
5173 (name "ert-runner")
5174 (version "0.7.0")
5175 (source
5176 (origin
5177 (method url-fetch)
5178 (uri (string-append "https://github.com/rejeep/ert-runner.el/archive/v"
5179 version ".tar.gz"))
5180 (file-name (string-append name "-" version ".tar.gz"))
5181 (sha256
5182 (base32
5183 "1657nck9i96a4xgl8crfqq0s8gflzp21pkkzwg6m3z5npjxklgwp"))))
5184 (build-system emacs-build-system)
5185 (inputs dependencies)
5186 (arguments
5187 `(#:phases
5188 (modify-phases %standard-phases
5189 (add-after 'install 'install-executable
5190 (lambda* (#:key inputs outputs #:allow-other-keys)
5191 (let ((out (assoc-ref outputs "out")))
5192 (substitute* "bin/ert-runner"
5193 (("ERT_RUNNER=\"\\$\\(dirname \\$\\(dirname \\$0\\)\\)")
5194 (string-append "ERT_RUNNER=\"" out
5195 "/share/emacs/site-lisp/guix.d/"
5196 ,name "-" ,version)))
5197 (install-file "bin/ert-runner" (string-append out "/bin"))
5198 (wrap-program (string-append out "/bin/ert-runner")
5199 (list "EMACSLOADPATH" ":" '=
5200 (append
5201 ,(match dependencies
5202 (((labels packages) ...)
5203 `(map (lambda (label package version)
5204 (string-append (assoc-ref inputs label)
5205 "/share/emacs/site-lisp/guix.d/"
5206 (string-drop package 6)
5207 "-" version))
5208 ',labels
5209 ',(map package-name packages)
5210 ',(map package-version packages))))
5211 ;; empty element to include the default load path as
5212 ;; determined by emacs' standard initialization
5213 ;; procedure
5214 (list ""))))
5215 #t))))
5216 #:include (cons* "^reporters/.*\\.el$" %default-include)))
5217 (home-page "https://github.com/rejeep/ert-runner.el")
5218 (synopsis "Opinionated Ert testing workflow")
5219 (description "@code{ert-runner} is a tool for Emacs projects tested
5220 using ERT. It assumes a certain test structure setup and can therefore make
5221 running tests easier.")
5222 (license license:gpl3+))))
5223
5224 (define-public emacs-disable-mouse
5225 (package
5226 (name "emacs-disable-mouse")
5227 (version "0.2")
5228 (source
5229 (origin
5230 (method url-fetch)
5231 (uri (string-append
5232 "https://github.com/purcell/disable-mouse/archive/"
5233 version ".tar.gz"))
5234 (file-name (string-append name "-" version ".tar.gz"))
5235 (sha256
5236 (base32
5237 "0haqpq23r1wx04lsqrrg3p5visg9hx5i36dg55ab003wfsrlrzbc"))))
5238 (build-system emacs-build-system)
5239 (home-page "https://github.com/purcell/disable-mouse")
5240 (synopsis "Disable mouse commands globally")
5241 (description
5242 "Provides @code{disable-mouse-mode} and @code{global-disable-mouse-mode},
5243 pair of minor modes which suppress all mouse events by intercepting them and
5244 running a customisable handler command (@code{ignore} by default). ")
5245 (license license:gpl3+)))
5246
5247 (define-public emacs-restclient
5248 (let ((commit "07a3888bb36d0e29608142ebe743b4362b800f40")
5249 (revision "1")) ;Guix package revision,
5250 ;upstream doesn't have official releases
5251 (package
5252 (name "emacs-restclient")
5253 (version (string-append revision "."
5254 (string-take commit 7)))
5255 (source (origin
5256 (method git-fetch)
5257 (uri (git-reference
5258 (url "https://github.com/pashky/restclient.el.git")
5259 (commit commit)))
5260 (sha256
5261 (base32
5262 "00lmjhb5im1kgrp54yipf1h9pshxzgjlg71yf2rq5n973gvb0w0q"))
5263 (file-name (git-file-name name version))))
5264 (build-system emacs-build-system)
5265 (propagated-inputs
5266 `(("emacs-helm" ,emacs-helm)))
5267 (home-page "https://github.com/pashky/restclient.el")
5268 (synopsis "Explore and test HTTP REST webservices")
5269 (description
5270 "This tool allows for testing and exploration of HTTP REST Web services
5271 from within Emacs. Restclient runs queries from a plan-text query sheet,
5272 displays results pretty-printed in XML or JSON with @code{restclient-mode}")
5273 (license license:public-domain))))
5274
5275 (define-public emacs-dired-hacks
5276 (let ((commit "eda68006ce73bbf6b9b995bfd70d08bec8cade36")
5277 (revision "1"))
5278 (package
5279 (name "emacs-dired-hacks")
5280 (version (string-append "0.0.1-" revision "."
5281 (string-take commit 7)))
5282 (source (origin
5283 (method git-fetch)
5284 (uri (git-reference
5285 (url "https://github.com/Fuco1/dired-hacks.git")
5286 (commit commit)))
5287 (file-name (string-append name "-" version "-checkout"))
5288 (sha256
5289 (base32
5290 "1w7ssl9zssn5rcha6apf4h8drkd02k4xgvs203bdbqyqp9wz9brx"))))
5291 (build-system emacs-build-system)
5292 (propagated-inputs
5293 `(("emacs-dash" ,emacs-dash)
5294 ("emacs-f" ,emacs-f)
5295 ("emacs-s" ,emacs-s)))
5296 (home-page "https://github.com/Fuco1/dired-hacks")
5297 (synopsis
5298 "Collection of useful dired additions")
5299 (description
5300 "Collection of Emacs dired mode additions:
5301 @itemize
5302 @item dired-avfs
5303 @item dired-columns
5304 @item dired-filter
5305 @item dired-hacks-utils
5306 @item dired-images
5307 @item dired-list
5308 @item dired-narrow
5309 @item dired-open
5310 @item dired-rainbow
5311 @item dired-ranger
5312 @item dired-subtree
5313 @item dired-tagsistant
5314 @end itemize\n")
5315 (license license:gpl3+))))
5316
5317 (define-public emacs-which-key
5318 (package
5319 (name "emacs-which-key")
5320 (version "3.0.1")
5321 (source
5322 (origin
5323 (method url-fetch)
5324 (uri (string-append
5325 "https://github.com/justbur/emacs-which-key/archive/v"
5326 version ".tar.gz"))
5327 (sha256
5328 (base32
5329 "0zc9yivdkbxmcllhlbbcvsbj8g8nzzgs0xib488s08p4s0l7xs8m"))
5330 (file-name (string-append name "-" version ".tar.gz"))))
5331 (build-system emacs-build-system)
5332 (arguments
5333 `(#:phases
5334 (modify-phases %standard-phases
5335 (add-before 'install 'check
5336 (lambda _
5337 (zero? (system* "emacs" "--batch" "-L" "."
5338 "-l" "which-key-tests.el"
5339 "-f" "ert-run-tests-batch-and-exit")))))))
5340 (home-page "https://github.com/justbur/emacs-which-key")
5341 (synopsis "Display available key bindings in popup")
5342 (description
5343 "@code{emacs-which-key} is a minor mode for Emacs that displays the key
5344 bindings following your currently entered incomplete command (a prefix) in a
5345 popup. For example, after enabling the minor mode if you enter C-x and wait
5346 for the default of 1 second, the minibuffer will expand with all of the
5347 available key bindings that follow C-x (or as many as space allows given your
5348 settings).")
5349 (license license:gpl3+)))
5350
5351 (define-public emacs-org-edit-latex
5352 (package
5353 (name "emacs-org-edit-latex")
5354 (version "0.8.0")
5355 (source
5356 (origin
5357 (method url-fetch)
5358 (uri (string-append
5359 "https://github.com/et2010/org-edit-latex/archive/v"
5360 version ".tar.gz"))
5361 (file-name (string-append name "-" version ".tar.gz"))
5362 (sha256
5363 (base32
5364 "1y4h6wrs8286h9pbsv4d8fr67a885vz8b2k80qgv5qddipi2i78p"))))
5365 (build-system emacs-build-system)
5366 (propagated-inputs
5367 `(("emacs-auctex" ,emacs-auctex)
5368 ;; The version of org in Emacs 25.2 is not sufficient, because the
5369 ;; `org-latex-make-preamble' function is required.
5370 ("emacs-org" ,emacs-org)))
5371 (home-page "https://github.com/et2010/org-edit-latex")
5372 (synopsis "Edit a latex fragment just like editing a src block")
5373 (description "@code{emacs-org-edit-latex} is an extension for org-mode.
5374 It lets you edit a latex fragment in a dedicated buffer just like editing a
5375 src block.")
5376 (license license:gpl3+)))
5377
5378 (define-public emacs-emamux
5379 (package
5380 (name "emacs-emamux")
5381 (version "0.14")
5382 (source (origin
5383 (method url-fetch)
5384 (uri (string-append
5385 "https://github.com/syohex/emacs-emamux/archive/"
5386 version ".tar.gz"))
5387 (file-name (string-append name "-" version ".tar.gz"))
5388 (sha256
5389 (base32
5390 "0wlqg4icy037bj70b0qmhvwvmiwhagpnx6pnxhq6gzy1hvwlilkx"))))
5391 (build-system emacs-build-system)
5392 (home-page "https://github.com/syohex/emacs-emamux")
5393 (synopsis "Manipulate Tmux from Emacs")
5394 (description
5395 "@code{emacs-emamux} lets Emacs interact with the @code{tmux} terminal
5396 multiplexer.")
5397 (license license:gpl3+)))
5398
5399 (define-public emacs-rpm-spec-mode
5400 (package
5401 (name "emacs-rpm-spec-mode")
5402 (version "0.16")
5403 (source
5404 (origin
5405 (method url-fetch)
5406 ;; URI has the Fedora release number instead of the version
5407 ;; number. This will have to updated manually every new release.
5408 (uri (string-append
5409 "https://src.fedoraproject.org/cgit/rpms"
5410 "/emacs-rpm-spec-mode.git/snapshot"
5411 "/emacs-rpm-spec-mode-f26.tar.gz"))
5412 (sha256
5413 (base32
5414 "17dz80lhjrc89fj17pysl8slahzrqdkxgcjdk55zls6jizkr6kz3"))))
5415 (build-system emacs-build-system)
5416 (home-page "http://pkgs.fedoraproject.org/cgit/rpms/emacs-rpm-spec-mode.git")
5417 (synopsis "Emacs major mode for editing RPM spec files")
5418 (description "@code{emacs-rpm-spec-mode} provides an Emacs major mode for
5419 editing RPM spec files.")
5420 (license license:gpl2+)))
5421
5422 (define-public emacs-git-messenger
5423 (package
5424 (name "emacs-git-messenger")
5425 (version "0.18")
5426 (source
5427 (origin
5428 (method url-fetch)
5429 (uri (string-append
5430 "https://github.com/syohex/emacs-git-messenger/archive/"
5431 version ".tar.gz"))
5432 (file-name (string-append name "-" version ".tar.gz"))
5433 (sha256
5434 (base32
5435 "17mqki6g0wx46fn7dcbcc2pjxik7vvrcb1j9jzxim8b9psbsbnp9"))))
5436 (build-system emacs-build-system)
5437 (propagated-inputs
5438 `(("emacs-popup" ,emacs-popup)))
5439 (arguments
5440 `(#:phases
5441 (modify-phases %standard-phases
5442 (add-before 'install 'check
5443 (lambda* (#:key inputs #:allow-other-keys)
5444 (zero? (system* "emacs" "--batch" "-L" "."
5445 "-L" (string-append
5446 (assoc-ref inputs "emacs-popup")
5447 "/share/emacs/site-lisp/guix.d/popup-"
5448 ,(package-version emacs-popup))
5449 "-l" "test/test.el"
5450 "-f" "ert-run-tests-batch-and-exit")))))))
5451 (home-page "https://github.com/syohex/emacs-git-messenger")
5452 (synopsis "Popup commit message at current line")
5453 (description "@code{emacs-git-messenger} provides
5454 @code{git-messenger:popup-message}, a function that when called, will popup
5455 the last git commit message for the current line. This uses git-blame
5456 internally.")
5457 (license license:gpl3+)))
5458
5459 (define-public emacs-gitpatch
5460 (package
5461 (name "emacs-gitpatch")
5462 (version "0.5.0")
5463 (source
5464 (origin
5465 (method url-fetch)
5466 (uri (string-append "https://github.com/tumashu/gitpatch/archive/"
5467 "v" version ".tar.gz"))
5468 (file-name (string-append name "-" version ".tar.gz"))
5469 (sha256
5470 (base32
5471 "1yj6pmic541lcnscjin300k380qp9xdfprs55xg1q57jrkq6f6k7"))))
5472 (build-system emacs-build-system)
5473 (home-page "https://github.com/tumashu/gitpatch")
5474 (synopsis "Mail git patch from Emacs")
5475 (description "@code{emacs-gitpatch} lets users easily send git patches,
5476 created by @code{git format-patch}, from @code{magit}, @code{dired} and
5477 @code{ibuffer} buffers.")
5478 (license license:gpl3+)))
5479
5480 (define-public emacs-erc-hl-nicks
5481 (package
5482 (name "emacs-erc-hl-nicks")
5483 (version "1.3.2")
5484 (source
5485 (origin
5486 (method url-fetch)
5487 (uri (string-append "https://github.com/leathekd/erc-hl-nicks"
5488 "/archive/" version ".tar.gz"))
5489 (file-name (string-append name "-" version ".tar.gz"))
5490 (sha256
5491 (base32
5492 "01svpl9bps5kx4y1wnymakxya2cznqmlynvqv2r500wpnbxczrbs"))))
5493 (build-system emacs-build-system)
5494 (synopsis "Nickname highlighting for Emacs ERC")
5495 (description "@code{erc-hl-nicks} highlights nicknames in ERC, an IRC
5496 client for Emacs. The main features are:
5497 @itemize
5498 @item Auto-colorizes nicknames without having to specify colors
5499 @item Ignores certain characters that IRC clients add to nicknames to avoid
5500 duplicates (nickname, nickname’, nickname\", etc.)
5501 @item Attempts to produce colors with a sufficient amount of contrast between
5502 the nick color and the background color
5503 @end itemize\n")
5504 (home-page "https://github.com/leathekd/erc-hl-nicks")
5505 (license license:gpl3+)))
5506
5507 (define-public emacs-engine-mode
5508 (package
5509 (name "emacs-engine-mode")
5510 (version "2.0.0")
5511 (source
5512 (origin
5513 (method url-fetch)
5514 (uri (string-append "https://github.com/hrs/engine-mode/archive/"
5515 "v" version ".tar.gz"))
5516 (file-name (string-append name "-" version ".tar.gz"))
5517 (sha256
5518 (base32
5519 "1vm4p7pcp1vnwwxvps1bhm7i7hkabqqxl898knxf2hqvxys76684"))))
5520 (build-system emacs-build-system)
5521 (synopsis "Minor mode for defining and querying search engines")
5522 (description "@code{engine-mode} is a global minor mode for Emacs. It
5523 enables you to easily define search engines, bind them to keybindings, and
5524 query them from the comfort of your editor.")
5525 (home-page "https://github.com/hrs/engine-mode")
5526 (license license:gpl3+)))
5527
5528 (define-public emacs-prop-menu
5529 (package
5530 (name "emacs-prop-menu")
5531 (version "0.1.2")
5532 (source
5533 (origin
5534 (method url-fetch)
5535 (uri (string-append
5536 "http://stable.melpa.org/packages/prop-menu-"
5537 version ".el"))
5538 (sha256
5539 (base32
5540 "01bk4sjafzz7gqrkv9jg0pa85qr34vbk3q8ga2b0m61bndywzgpr"))))
5541 (build-system emacs-build-system)
5542 (home-page
5543 "https://github.com/david-christiansen/prop-menu-el")
5544 (synopsis
5545 "Create and display a context menu based on text and overlay properties")
5546 (description
5547 "This is a library for computing context menus based on text
5548 properties and overlays. The intended use is to have tools that
5549 annotate source code and others that use these annotations, without
5550 requiring a direct coupling between them, but maintaining
5551 discoverability.
5552
5553 Major modes that wish to use this library should first define an
5554 appropriate value for @code{prop-menu-item-functions}. Then, they should
5555 bind @code{prop-menu-by-completing-read} to an appropriate
5556 key. Optionally, a mouse pop-up can be added by binding
5557 @code{prop-menu-show-menu} to a mouse event.")
5558 (license license:gpl3+)))
5559
5560 (define-public emacs-idris-mode
5561 (package
5562 (name "emacs-idris-mode")
5563 (version "0.9.19")
5564 (source
5565 (origin
5566 (method url-fetch)
5567 (uri (string-append
5568 "http://stable.melpa.org/packages/idris-mode-"
5569 version ".tar"))
5570 (sha256
5571 (base32
5572 "0ld4kfwnyyhlsnj5f6cbn4is4mpxdqalk2aifkw02r00mbr9n294"))))
5573 (build-system emacs-build-system)
5574 (propagated-inputs
5575 `(("emacs-prop-menu" ,emacs-prop-menu)))
5576 (home-page
5577 "https://github.com/idris-hackers/idris-mode")
5578 (synopsis "Major mode for editing Idris code")
5579 (description
5580 "This is an Emacs mode for editing Idris code. It requires the latest
5581 version of Idris, and some features may rely on the latest Git version of
5582 Idris.")
5583 (license license:gpl3+)))
5584
5585 (define-public emacs-browse-at-remote
5586 (let ((commit "b5cff7971ca8bbb966e3acd9b7e5c4c007f94215")
5587 (revision "1"))
5588 (package
5589 (name "emacs-browse-at-remote")
5590 (version (string-append "0.9.0-" revision "."
5591 (string-take commit 7)))
5592 (source (origin
5593 (method git-fetch)
5594 (uri (git-reference
5595 (url "https://github.com/rmuslimov/browse-at-remote.git")
5596 (commit commit)))
5597 (file-name (string-append name "-" version "-checkout"))
5598 (sha256
5599 (base32
5600 "16ms9703m15dfxg6ap4mdw7msf8z5rzsdhba51dwivfpjxg7n52c"))))
5601 (build-system emacs-build-system)
5602 (propagated-inputs
5603 `(("emacs-f" ,emacs-f)
5604 ("emacs-s" ,emacs-s)))
5605 (native-inputs
5606 `(("ert-runner" ,ert-runner)))
5607 (arguments
5608 `(#:phases
5609 (modify-phases %standard-phases
5610 (add-before 'install 'check
5611 (lambda _
5612 (zero? (system* "ert-runner")))))))
5613 (home-page "https://github.com/rmuslimov/browse-at-remote")
5614 (synopsis "Open github/gitlab/bitbucket/stash page from Emacs")
5615 (description
5616 "This Emacs package allows you to open a target page on
5617 github/gitlab (or bitbucket) by calling @code{browse-at-remote} command.
5618 It supports dired buffers and opens them in tree mode at destination.")
5619 (license license:gpl3+))))
5620
5621 (define-public emacs-tiny
5622 (package
5623 (name "emacs-tiny")
5624 (version "0.1.1")
5625 (source
5626 (origin
5627 (method url-fetch)
5628 (uri (string-append "http://elpa.gnu.org/packages/tiny-" version ".tar"))
5629 (sha256
5630 (base32
5631 "1nhg8375qdn457wj0xmfaj72s87xbabk2w1nl6q7rjvwxv08yyn7"))))
5632 (build-system emacs-build-system)
5633 (home-page "https://github.com/abo-abo/tiny")
5634 (synopsis "Quickly generate linear ranges in Emacs")
5635 (description
5636 "The main command of the @code{tiny} extension for Emacs is @code{tiny-expand}.
5637 It is meant to quickly generate linear ranges, e.g. 5, 6, 7, 8. Some elisp
5638 proficiency is an advantage, since you can transform your numeric range with
5639 an elisp expression.")
5640 (license license:gpl3+)))
5641
5642 (define-public emacs-bash-completion
5643 (package
5644 (name "emacs-bash-completion")
5645 (version "2.0.0")
5646 (source
5647 (origin
5648 (method url-fetch)
5649 (uri (string-append
5650 "https://github.com/szermatt/emacs-bash-completion/archive/v"
5651 version ".tar.gz"))
5652 (file-name (string-append name "-" version ".tar.gz"))
5653 (sha256
5654 (base32
5655 "0mkci4a1fy8z4cmry8mx5vsx4f16a8r454slnh7lqzidnhfi63hj"))))
5656 (inputs `(("bash" ,bash)))
5657 (build-system emacs-build-system)
5658 (arguments
5659 `(#:phases
5660 (modify-phases %standard-phases
5661 (add-before 'install 'configure
5662 (lambda* (#:key inputs #:allow-other-keys)
5663 (let ((bash (assoc-ref inputs "bash")))
5664 (emacs-substitute-variables "bash-completion.el"
5665 ("bash-completion-prog" (string-append bash "/bin/bash"))))
5666 #t)))))
5667 (home-page "https://github.com/szermatt/emacs-bash-completion")
5668 (synopsis "BASH completion for the shell buffer")
5669 (description
5670 "@code{bash-completion} defines dynamic completion hooks for shell-mode
5671 and shell-command prompts that are based on bash completion.")
5672 (license license:gpl2+)))