gnu: Adjust formatting as recommended by 'guix lint'.
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
CommitLineData
468bdabb 1;;; GNU Guix --- Functional package management for GNU
4a3e602c 2;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
c72aed6d 3;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
4c2a38c2 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
55f29c39 5;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
78395334 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
ec9825d6 7;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
468bdabb
LC
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
1ffa7090 24(define-module (gnu packages emacs)
f61e0e79 25 #:use-module ((guix licenses) #:prefix license:)
468bdabb
LC
26 #:use-module (guix packages)
27 #:use-module (guix download)
f906d30c 28 #:use-module (guix git-download)
468bdabb 29 #:use-module (guix build-system gnu)
78395334 30 #:use-module (guix build-system emacs)
71f57158 31 #:use-module (guix build-system glib-or-gtk)
fe4163f3 32 #:use-module (guix build-system trivial)
59a43334 33 #:use-module (gnu packages)
f906d30c 34 #:use-module (gnu packages guile)
7abe1965 35 #:use-module (gnu packages gtk)
8ba4dc63 36 #:use-module (gnu packages gnome)
1ffa7090
LC
37 #:use-module (gnu packages ncurses)
38 #:use-module (gnu packages texinfo)
a7fd7b68 39 #:use-module (gnu packages tls)
4f028c8f 40 #:use-module (gnu packages pkg-config)
50efa797
LC
41 #:use-module (gnu packages xorg)
42 #:use-module (gnu packages lesstif)
e55354b8 43 #:use-module (gnu packages image)
504a83af 44 #:use-module (gnu packages linux)
9a4c9715 45 #:use-module (gnu packages version-control)
18d26210
MW
46 #:use-module (gnu packages imagemagick)
47 #:use-module (gnu packages w3m)
89925972 48 #:use-module (gnu packages wget)
18d26210 49 #:use-module (gnu packages autotools)
be379ee7 50 #:use-module (gnu packages base)
f61e0e79 51 #:use-module (gnu packages compression)
50efa797 52 #:use-module (gnu packages xml)
4a3e602c 53 #:use-module (gnu packages glib)
388fd01b 54 #:use-module (gnu packages acl)
77c9286d 55 #:use-module (gnu packages perl)
ec9825d6 56 #:use-module (gnu packages pdf)
77c9286d
LC
57 #:use-module (gnu packages xiph)
58 #:use-module (gnu packages mp3)
4a3e602c
TUBK
59 #:use-module (guix utils)
60 #:use-module (srfi srfi-1))
468bdabb
LC
61
62(define-public emacs
63 (package
64 (name "emacs")
4c2a38c2 65 (version "24.5")
468bdabb
LC
66 (source (origin
67 (method url-fetch)
68 (uri (string-append "mirror://gnu/emacs/emacs-"
3be9f724 69 version ".tar.xz"))
468bdabb
LC
70 (sha256
71 (base32
1bef37ee
LC
72 "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
73 (patches (list (search-patch "emacs-exec-path.patch")))))
71f57158 74 (build-system glib-or-gtk-build-system)
468bdabb 75 (arguments
388fd01b 76 '(#:phases (alist-cons-before
468bdabb
LC
77 'configure 'fix-/bin/pwd
78 (lambda _
79 ;; Use `pwd', not `/bin/pwd'.
80 (substitute* (find-files "." "^Makefile\\.in$")
81 (("/bin/pwd")
82 "pwd")))
83 %standard-phases)))
84 (inputs
c4c4cc05 85 `(("gnutls" ,gnutls)
468bdabb
LC
86 ("ncurses" ,ncurses)
87
88 ;; TODO: Add the optional dependencies.
fa275717 89 ("libx11" ,libx11)
0a9e9a63 90 ("gtk+" ,gtk+)
fa275717 91 ("libxft" ,libxft)
50efa797 92 ("libtiff" ,libtiff)
504a83af 93 ("giflib" ,giflib)
50efa797 94 ("libjpeg" ,libjpeg-8)
388fd01b 95 ("acl" ,acl)
50efa797
LC
96
97 ;; When looking for libpng `configure' links with `-lpng -lz', so we
98 ;; must also provide zlib as an input.
99 ("libpng" ,libpng)
f61e0e79 100 ("zlib" ,zlib)
50efa797 101
8ba4dc63 102 ("librsvg" ,librsvg)
fa275717 103 ("libxpm" ,libxpm)
50efa797 104 ("libxml2" ,libxml2)
504a83af
MW
105 ("libice" ,libice)
106 ("libsm" ,libsm)
107 ("alsa-lib" ,alsa-lib)
01eafd38 108 ("dbus" ,dbus)))
c4c4cc05
JD
109 (native-inputs
110 `(("pkg-config" ,pkg-config)
111 ("texinfo" ,texinfo)))
64c98347
LC
112
113 (native-search-paths
114 (list (search-path-specification
115 (variable "INFOPATH")
116 (files '("share/info")))))
117
468bdabb 118 (home-page "http://www.gnu.org/software/emacs/")
f50d2669 119 (synopsis "The extensible, customizable, self-documenting text editor")
468bdabb 120 (description
79c311b8
LC
121 "GNU Emacs is an extensible and highly customizable text editor. It is
122based on an Emacs Lisp interpreter with extensions for text editing. Emacs
123has been extended in essentially all areas of computing, giving rise to a
124vast array of packages supporting, e.g., email, IRC and XMPP messaging,
125spreadsheets, remote server editing, and much more. Emacs includes extensive
126documentation on all aspects of the system, from basic editing to writing
127large Lisp programs. It has full Unicode support for nearly all human
128languages.")
f61e0e79 129 (license license:gpl3+)))
4f028c8f 130
4fd540b7
LC
131(define-public emacs-no-x
132 ;; This is the version that you should use as an input to packages that just
133 ;; need to byte-compile .el files.
134 (package (inherit emacs)
4fd540b7
LC
135 (name "emacs-no-x")
136 (synopsis "The extensible, customizable, self-documenting text
137editor (console only)")
138 (build-system gnu-build-system)
139 (inputs (fold alist-delete
140 (package-inputs emacs)
141 '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
8ba4dc63 142 "libpng" "librsvg" "libxpm" "libice" "libsm"
4fd540b7
LC
143
144 ;; D-Bus depends on libx11, so remove it as well.
145 "dbus")))))
146
4a3e602c
TUBK
147(define-public emacs-no-x-toolkit
148 (package (inherit emacs)
149 (name "emacs-no-x-toolkit")
150 (synopsis "The extensible, customizable, self-documenting text
151editor (without an X toolkit)" )
71f57158 152 (build-system gnu-build-system)
388fd01b
MW
153 (inputs (append `(("inotify-tools" ,inotify-tools))
154 (alist-delete "gtk+" (package-inputs emacs))))
155 (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
156 (package-arguments emacs)))))
4a3e602c 157
f906d30c
CAW
158(define-public guile-emacs
159 (package (inherit emacs)
160 (name "guile-emacs")
161 (version "20150512.41120e0")
162 (source (origin
163 (method git-fetch)
164 (uri (git-reference
165 (url "git://git.hcoop.net/git/bpt/emacs.git")
166 (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
167 (sha256
168 (base32
169 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
170 (native-inputs
171 `(("autoconf" ,autoconf)
172 ("automake" ,automake)
173 ("guile" ,guile-for-guile-emacs)
174 ,@(package-native-inputs emacs)))
175 (arguments
176 (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
177 #:parallel-build? #f
178 ;; Tests aren't passing for now.
179 #:tests? #f
180 ,@(package-arguments emacs))
181 ((#:phases phases)
182 `(modify-phases ,phases
183 (add-after 'unpack 'autogen
184 (lambda _
185 (zero? (system* "sh" "autogen.sh"))))))))))
186
4f028c8f
LC
187\f
188;;;
189;;; Emacs hacking.
190;;;
191
192(define-public geiser
193 (package
194 (name "geiser")
837294b7 195 (version "0.8.1")
4f028c8f
LC
196 (source (origin
197 (method url-fetch)
cf8f58b2
LC
198 (uri (string-append "mirror://savannah/geiser/" version
199 "/geiser-" version ".tar.gz"))
4f028c8f 200 (sha256
1f8ad12a 201 (base32
837294b7 202 "163zh8qf1q8l485d94a51a9xixirj8r2xvrbgxyw06vkaqrz5qvc"))))
4f028c8f 203 (build-system gnu-build-system)
d51cafb0
AK
204 (arguments
205 '(#:phases (alist-cons-after
206 'install 'post-install
207 (lambda* (#:key outputs #:allow-other-keys)
208 (symlink "geiser-install.el"
209 (string-append (assoc-ref outputs "out")
210 "/share/emacs/site-lisp/"
211 "geiser-autoloads.el")))
212 %standard-phases)))
4f028c8f 213 (inputs `(("guile" ,guile-2.0)
2d32d153 214 ("emacs" ,emacs-no-x)))
4f028c8f
LC
215 (home-page "http://nongnu.org/geiser/")
216 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
217 (description
9586011d
LC
218 "Geiser is a collection of Emacs major and minor modes that conspire with
219one or more Scheme implementations to keep the Lisp Machine Spirit alive. The
220continuously running Scheme interpreter takes the center of the stage in
221Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme
222implementation, Emacs and, ultimately, the schemer, giving them access to live
223metadata.")
f61e0e79 224 (license license:bsd-3)))
9a4c9715 225
fe4163f3
MW
226(define-public paredit
227 (package
228 (name "paredit")
229 (version "23")
230 (source (origin
231 (method url-fetch)
232 (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
233 version ".el"))
234 (sha256
235 (base32 "1np882jzvxckljx3cjz4absyzmc5hw65cs21sjmbic82163m9lf8"))))
236 (build-system trivial-build-system)
2d32d153 237 (inputs `(("emacs" ,emacs-no-x)))
fe4163f3
MW
238 (arguments
239 `(#:modules ((guix build utils)
240 (guix build emacs-utils))
241 #:builder
242 (begin
243 (use-modules (guix build utils))
244 (use-modules (guix build emacs-utils))
245
246 (let* ((emacs (string-append (assoc-ref %build-inputs "emacs")
247 "/bin/emacs"))
248 (source (assoc-ref %build-inputs "source"))
249 (lisp-dir (string-append %output
250 "/share/emacs/site-lisp"))
251 (target (string-append lisp-dir "/paredit.el")))
252 (mkdir-p lisp-dir)
253 (copy-file source target)
254 (with-directory-excursion lisp-dir
255 (parameterize ((%emacs emacs))
d51cafb0 256 (emacs-generate-autoloads ,name lisp-dir)
fe4163f3
MW
257 (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
258 (home-page "http://mumble.net/~campbell/emacs/paredit/")
259 (synopsis "Emacs minor mode for editing parentheses")
260 (description
261 "ParEdit (paredit.el) is a minor mode for performing structured editing
262of S-expression data. The typical example of this would be Lisp or Scheme
263source code.
264
265ParEdit helps **keep parentheses balanced** and adds many keys for moving
266S-expressions and moving around in S-expressions. Its behavior can be jarring
267for those who may want transient periods of unbalanced parentheses, such as
268when typing parentheses directly or commenting out code line by line.")
f61e0e79 269 (license license:gpl3+)))
fe4163f3 270
2f910ef6
LC
271(define-public git-modes
272 (package
273 (name "git-modes")
89949e8f 274 (version "1.2.0")
2f910ef6
LC
275 (source (origin
276 (method url-fetch)
277 (uri (string-append
278 "https://github.com/magit/git-modes/archive/"
279 version ".tar.gz"))
8fd3c1ff 280 (file-name (string-append name "-" version ".tar.gz"))
2f910ef6
LC
281 (sha256
282 (base32
89949e8f 283 "09dv7ikbj2bi4y3lmvjfzqpdmx2f9bd4w7jkp10bkap62d05iqhk"))))
2f910ef6
LC
284 (build-system gnu-build-system)
285 (arguments
286 `(#:modules ((guix build gnu-build-system)
287 (guix build emacs-utils)
288 (guix build utils))
289 #:imported-modules (,@%gnu-build-system-modules
290 (guix build emacs-utils))
291
292 #:make-flags (list (string-append "PREFIX="
293 (assoc-ref %outputs "out"))
294 ;; Don't put .el files in a 'git-modes'
295 ;; sub-directory.
296 (string-append "LISPDIR="
297 (assoc-ref %outputs "out")
298 "/share/emacs/site-lisp"))
89949e8f 299 #:tests? #f ; no check target
2f910ef6
LC
300 #:phases (modify-phases %standard-phases
301 (delete 'configure)
302 (add-after 'install 'emacs-autoloads
303 (lambda* (#:key outputs #:allow-other-keys)
304 (let* ((out (assoc-ref outputs "out"))
305 (lisp (string-append
306 out "/share/emacs/site-lisp/")))
307 (emacs-generate-autoloads ,name lisp)))))))
308 (native-inputs `(("emacs" ,emacs-no-x)))
309 (home-page "https://github.com/magit/git-modes")
310 (synopsis "Emacs major modes for Git configuration files")
311 (description
312 "This package provides Emacs major modes for editing various Git
313configuration files, such as .gitattributes, .gitignore, and .git/config.")
314 (license license:gpl3+)))
315
9a4c9715
MW
316(define-public magit
317 (package
318 (name "magit")
1fda9b1f 319 (version "2.3.0")
9a4c9715
MW
320 (source (origin
321 (method url-fetch)
fac8b30b
MW
322 (uri (string-append
323 "https://github.com/magit/magit/releases/download/"
324 version "/" name "-" version ".tar.gz"))
9a4c9715 325 (sha256
7e4871ba 326 (base32
1fda9b1f 327 "0bi0vqp9802f00vnii3x80iqycji20bw4pjysy6al0d86mkggjx5"))))
9a4c9715 328 (build-system gnu-build-system)
2c047b4a
LC
329 (native-inputs `(("texinfo" ,texinfo)
330 ("emacs" ,emacs-no-x)))
55f29c39
AK
331 (inputs `(("git" ,git)))
332 (propagated-inputs `(("dash" ,emacs-dash)))
9a4c9715
MW
333 (arguments
334 `(#:modules ((guix build gnu-build-system)
335 (guix build utils)
336 (guix build emacs-utils))
8ff3df5b 337 #:imported-modules (,@%gnu-build-system-modules
9a4c9715 338 (guix build emacs-utils))
7e4871ba
LC
339
340 #:test-target "test"
55f29c39 341 #:tests? #f ; tests are not included in the release
7e4871ba 342
55f29c39
AK
343 #:make-flags
344 (list (string-append "PREFIX=" %output)
345 ;; Don't put .el files in a sub-directory.
346 (string-append "lispdir=" %output "/share/emacs/site-lisp")
347 (string-append "DASH_DIR="
348 (assoc-ref %build-inputs "dash")
349 "/share/emacs/site-lisp/guix.d/dash-"
350 ,(package-version emacs-dash)))
d41a8a07 351
9a4c9715 352 #:phases
c466bfd1 353 (modify-phases %standard-phases
55f29c39 354 (delete 'configure)
c466bfd1
LC
355 (add-before
356 'build 'patch-exec-paths
357 (lambda* (#:key inputs #:allow-other-keys)
55f29c39
AK
358 (let ((git (assoc-ref inputs "git")))
359 (emacs-substitute-variables "lisp/magit-git.el"
360 ("magit-git-executable" (string-append git "/bin/git")))
361 #t))))))
9a4c9715
MW
362 (home-page "http://magit.github.io/")
363 (synopsis "Emacs interface for the Git version control system")
364 (description
365 "With Magit, you can inspect and modify your Git repositories with Emacs.
366You can review and commit the changes you have made to the tracked files, for
367example, and you can browse the history of past changes. There is support for
368cherry picking, reverting, merging, rebasing, and other common Git
369operations.")
f61e0e79 370 (license license:gpl3+)))
18d26210 371
97cc51f8
LC
372(define-public magit-svn
373 (package
374 (name "magit-svn")
b7f16845 375 (version "2.1.1")
97cc51f8 376 (source (origin
be379ee7
AK
377 (method url-fetch)
378 (uri (string-append
379 "https://github.com/magit/magit-svn/archive/"
380 version ".tar.gz"))
381 (file-name (string-append name "-" version ".tar.gz"))
97cc51f8
LC
382 (sha256
383 (base32
b7f16845 384 "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
97cc51f8 385 (build-system trivial-build-system)
be379ee7
AK
386 (native-inputs `(("emacs" ,emacs-no-x)
387 ("tar" ,tar)
388 ("gzip" ,gzip)))
389 (propagated-inputs `(("dash" ,emacs-dash)
390 ("magit" ,magit)))
97cc51f8
LC
391 (arguments
392 `(#:modules ((guix build utils)
393 (guix build emacs-utils))
394
395 #:builder
396 (begin
397 (use-modules (guix build utils)
398 (guix build emacs-utils))
399
be379ee7
AK
400 (let* ((tar (string-append (assoc-ref %build-inputs "tar")
401 "/bin/tar"))
402 (PATH (string-append (assoc-ref %build-inputs "gzip")
403 "/bin"))
404 (emacs (string-append (assoc-ref %build-inputs "emacs")
97cc51f8
LC
405 "/bin/emacs"))
406 (magit (string-append (assoc-ref %build-inputs "magit")
407 "/share/emacs/site-lisp"))
be379ee7
AK
408 (dash (string-append (assoc-ref %build-inputs "dash")
409 "/share/emacs/site-lisp/guix.d/dash-"
410 ,(package-version emacs-dash)))
97cc51f8
LC
411 (source (assoc-ref %build-inputs "source"))
412 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
be379ee7
AK
413 (setenv "PATH" PATH)
414 (system* tar "xvf" source)
96c46210
LC
415
416 (install-file (string-append ,name "-" ,version "/magit-svn.el")
417 lisp-dir)
97cc51f8
LC
418
419 (with-directory-excursion lisp-dir
420 (parameterize ((%emacs emacs))
421 (emacs-generate-autoloads ,name lisp-dir)
422 (setenv "EMACSLOADPATH"
be379ee7 423 (string-append ":" magit ":" dash))
97cc51f8
LC
424 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
425 (home-page "https://github.com/magit/magit-svn")
426 (synopsis "Git-SVN extension to Magit")
427 (description
428 "This package is an extension to Magit, the Git Emacs mode, providing
429support for Git-SVN.")
430 (license license:gpl3+)))
431
00f4bd50
FB
432(define-public haskell-mode
433 (package
434 (name "haskell-mode")
435 (version "13.14.2")
436 (source (origin
437 (method url-fetch)
438 (file-name (string-append name "-" version ".tar.gz"))
439 (uri (string-append
440 "https://github.com/haskell/haskell-mode/archive/v"
441 version ".tar.gz"))
442 (sha256
443 (base32 "1kxc2yj8vb122dv91r68h7c5ladcryx963fr16plfhg71fv7f9av"))))
444 (inputs `(("emacs" ,emacs-no-x)))
445 (native-inputs
446 `(("texinfo" ,texinfo)))
447 (build-system gnu-build-system)
448 (arguments
449 `(#:make-flags (list (string-append "EMACS="
450 (assoc-ref %build-inputs "emacs")
451 "/bin/emacs"))
452 #:phases
453 (modify-phases %standard-phases
454 (delete 'configure)
455 (add-before
456 'build 'pre-build
457 (lambda* (#:key inputs #:allow-other-keys)
458 (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
459 (setenv "SHELL" "sh")
460 (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
461 #t)))
462 (replace
463 'install
464 (lambda* (#:key outputs #:allow-other-keys)
465 (let* ((out (assoc-ref outputs "out"))
466 (el-dir (string-append out "/share/emacs/site-lisp"))
467 (doc (string-append
468 out "/share/doc/haskell-mode-" ,version))
469 (info (string-append out "/share/info")))
470 (define (copy-to-dir dir files)
96c46210
LC
471 (for-each (lambda (f)
472 (install-file f dir))
473 files))
00f4bd50
FB
474
475 (with-directory-excursion "doc"
476 (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
477 (error "makeinfo failed"))
96c46210 478 (install-file "haskell-mode.info" info))
00f4bd50
FB
479 (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
480 (copy-to-dir el-dir (find-files "." "\\.elc?"))
481 ;; these are now distributed with emacs
482 (with-directory-excursion el-dir
483 (for-each delete-file '("cl-lib.el" "ert.el")))
484 #t))))))
485 (home-page "https://github.com/haskell/haskell-mode")
486 (synopsis "Haskell mode for Emacs")
487 (description
488 "This is an Emacs mode for editing, debugging and developing Haskell
489programs.")
490 (license license:gpl3+)))
491
1defd8cd
LC
492(define-public let-alist
493 (package
494 (name "emacs-let-alist")
495 (version "1.0.4")
496 (source (origin
497 (method url-fetch)
498 (uri (string-append "http://elpa.gnu.org/packages/let-alist-"
499 version ".el"))
500 (sha256
501 (base32
502 "07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x"))))
503 (build-system trivial-build-system)
504 (arguments
505 `(#:modules ((guix build utils)
506 (guix build emacs-utils))
507
508 #:builder (begin
509 (use-modules (guix build emacs-utils)
510 (guix build utils))
511
512 (let* ((out (assoc-ref %outputs "out"))
513 (lispdir (string-append out
514 "/share/emacs/site-lisp/"
515 "guix.d/let-alist-"
516 ,version))
517 (emacs (assoc-ref %build-inputs "emacs")))
518
519 (mkdir-p lispdir)
520 (copy-file (assoc-ref %build-inputs "source")
521 (string-append lispdir "/let-alist.el"))
522
523 (setenv "PATH" (string-append emacs "/bin"))
524 (emacs-byte-compile-directory lispdir)
525 #t))))
526 (native-inputs `(("emacs" ,emacs-no-x)))
527 (home-page "http://elpa.gnu.org/packages/let-alist.html")
528 (synopsis "Easily let-bind values of an assoc-list by their names")
529 (description
530 "This package offers a single Emacs Lisp macro, @code{let-alist}. This
531macro takes a first argument, whose value must be an alist (association list),
532and a body.
533
534The macro expands to a let form containing the body, where each dotted symbol
535inside body is let-bound to their cdrs in the alist. Only those present in
536the body are let-bound and this search is done at compile time.")
537 (license license:gpl3+)))
538
6e3fdbbe
LC
539(define-public flycheck
540 (package
541 (name "emacs-flycheck")
0b928076 542 (version "0.23")
6e3fdbbe
LC
543 (source (origin
544 (method url-fetch)
0b928076
AK
545 (uri (string-append
546 "https://github.com/flycheck/flycheck/releases/download/"
547 version "/flycheck-" version ".tar"))
6e3fdbbe
LC
548 (sha256
549 (base32
0b928076 550 "1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b"))))
6e3fdbbe
LC
551 (build-system emacs-build-system)
552 (propagated-inputs
553 `(("emacs-dash" ,emacs-dash)
554 ("emacs-let-alist" ,let-alist)))
555 (home-page "https://www.flycheck.org")
556 (synopsis "On-the-fly syntax checking")
557 (description
558 "This package provides on-the-fly syntax checking for GNU Emacs. It is a
559replacement for the older Flymake extension which is part of GNU Emacs, with
560many improvements and additional features.
561
562Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
563checking for over 30 programming and markup languages with more than 70
564different tools. It highlights errors and warnings inline in the buffer, and
565provides an optional IDE-like error list.")
566 (license license:gpl3+))) ;+GFDLv1.3+ for the manual
567
18d26210
MW
568\f
569;;;
570;;; Web browsing.
571;;;
572
573(define-public emacs-w3m
574 (package
575 (name "emacs-w3m")
576 (version "1.4.483+0.20120614")
577 (source (origin
578 (method url-fetch)
579 (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
580 version ".orig.tar.gz"))
581 (sha256
582 (base32 "0ms181gjavnfk79hhv5xl9llik4c6kj0w3c04kgyif8lcy2sxljx"))))
583 (build-system gnu-build-system)
584 (native-inputs `(("autoconf" ,autoconf)))
585 (inputs `(("w3m" ,w3m)
586 ("imagemagick" ,imagemagick)
2d32d153 587 ("emacs" ,emacs-no-x)))
18d26210 588 (arguments
caaf1933 589 `(#:modules ((guix build gnu-build-system)
18d26210
MW
590 (guix build utils)
591 (guix build emacs-utils))
8ff3df5b 592 #:imported-modules (,@%gnu-build-system-modules
18d26210
MW
593 (guix build emacs-utils))
594 #:configure-flags
595 (let ((out (assoc-ref %outputs "out")))
596 (list (string-append "--with-lispdir="
597 out "/share/emacs/site-lisp")
598 (string-append "--with-icondir="
599 out "/share/images/emacs-w3m")))
600 #:tests? #f ; no check target
601 #:phases
722ec722
MW
602 (alist-cons-after
603 'unpack 'autoconf
18d26210
MW
604 (lambda _
605 (zero? (system* "autoconf")))
606 (alist-cons-before
607 'build 'patch-exec-paths
608 (lambda* (#:key inputs outputs #:allow-other-keys)
609 (let ((out (assoc-ref outputs "out"))
610 (w3m (assoc-ref inputs "w3m"))
611 (imagemagick (assoc-ref inputs "imagemagick"))
612 (coreutils (assoc-ref inputs "coreutils")))
613 (emacs-substitute-variables "w3m.el"
614 ("w3m-command" (string-append w3m "/bin/w3m"))
615 ("w3m-touch-command" (string-append coreutils "/bin/touch"))
616 ("w3m-image-viewer" (string-append imagemagick "/bin/display"))
617 ("w3m-icon-directory" (string-append out
618 "/share/images/emacs-w3m")))
619 (emacs-substitute-variables "w3m-image.el"
620 ("w3m-imagick-convert-program" (string-append imagemagick
621 "/bin/convert"))
622 ("w3m-imagick-identify-program" (string-append imagemagick
623 "/bin/identify")))
624 #t))
625 (alist-replace
626 'install
627 (lambda* (#:key outputs #:allow-other-keys)
628 (and (zero? (system* "make" "install" "install-icons"))
629 (with-directory-excursion
630 (string-append (assoc-ref outputs "out")
631 "/share/emacs/site-lisp")
632 (for-each delete-file '("ChangeLog" "ChangeLog.1"))
d51cafb0 633 (symlink "w3m-load.el" "w3m-autoloads.el")
18d26210
MW
634 #t)))
635 %standard-phases)))))
636 (home-page "http://emacs-w3m.namazu.org/")
637 (synopsis "Simple Web browser for Emacs based on w3m")
638 (description
35b9e423 639 "Emacs-w3m is an emacs interface for the w3m web browser.")
f61e0e79 640 (license license:gpl2+)))
89925972
MW
641
642(define-public emacs-wget
643 (package
644 (name "emacs-wget")
645 (version "0.5.0")
646 (source (origin
647 (method url-fetch)
648 (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
649 version ".orig.tar.gz"))
650 (sha256
651 (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
652 (build-system gnu-build-system)
653 (inputs `(("wget" ,wget)
2d32d153 654 ("emacs" ,emacs-no-x)))
89925972 655 (arguments
caaf1933 656 `(#:modules ((guix build gnu-build-system)
89925972
MW
657 (guix build utils)
658 (guix build emacs-utils))
caaf1933 659 #:imported-modules (,@%gnu-build-system-modules
89925972
MW
660 (guix build emacs-utils))
661 #:tests? #f ; no check target
662 #:phases
663 (alist-replace
664 'configure
665 (lambda* (#:key outputs #:allow-other-keys)
666 (substitute* "Makefile"
667 (("/usr/local") (assoc-ref outputs "out"))
668 (("/site-lisp/emacs-wget") "/site-lisp")))
669 (alist-cons-before
670 'build 'patch-exec-paths
671 (lambda* (#:key inputs outputs #:allow-other-keys)
672 (let ((wget (assoc-ref inputs "wget")))
673 (emacs-substitute-variables "wget.el"
674 ("wget-command" (string-append wget "/bin/wget")))))
d51cafb0
AK
675 (alist-cons-after
676 'install 'post-install
677 (lambda* (#:key outputs #:allow-other-keys)
678 (emacs-generate-autoloads
679 "wget" (string-append (assoc-ref outputs "out")
680 "/share/emacs/site-lisp/")))
681 %standard-phases)))))
89925972 682 (home-page "http://www.emacswiki.org/emacs/EmacsWget")
ae2189a9 683 (synopsis "Simple file downloader for Emacs based on wget")
89925972 684 (description
35b9e423 685 "Emacs-wget is an emacs interface for the wget file downloader.")
f61e0e79 686 (license license:gpl2+)))
77c9286d
LC
687
688\f
689;;;
690;;; Multimedia.
691;;;
692
693(define-public emms
694 (package
695 (name "emms")
696 (version "4.0")
697 (source (origin
698 (method url-fetch)
699 (uri (string-append "mirror://gnu/emms/emms-"
700 version ".tar.gz"))
701 (sha256
702 (base32
703 "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
704 (modules '((guix build utils)))
705 (snippet
706 '(substitute* "Makefile"
707 (("/usr/bin/install-info")
708 ;; No need to use 'install-info' since it would create a
709 ;; useless 'dir' file.
710 "true")
711 (("^INFODIR=.*")
712 ;; Install Info files to $out/share/info, not $out/info.
713 "INFODIR := $(PREFIX)/share/info\n")
714 (("/site-lisp/emms")
715 ;; Install directly in share/emacs/site-lisp, not in a
716 ;; sub-directory.
717 "/site-lisp")
718 (("^all: (.*)\n" _ rest)
719 ;; Build 'emms-print-metadata'.
720 (string-append "all: " rest " emms-print-metadata\n"))))))
721 (build-system gnu-build-system)
722 (arguments
caaf1933 723 `(#:modules ((guix build gnu-build-system)
77c9286d
LC
724 (guix build utils)
725 (guix build emacs-utils))
caaf1933 726 #:imported-modules (,@%gnu-build-system-modules
77c9286d
LC
727 (guix build emacs-utils))
728
729 #:phases (alist-replace
730 'configure
731 (lambda* (#:key inputs outputs #:allow-other-keys)
732 (let ((out (assoc-ref outputs "out"))
733 (vorbis (assoc-ref inputs "vorbis-tools"))
734 (alsa (assoc-ref inputs "alsa-utils"))
735 (mpg321 (assoc-ref inputs "mpg321"))
736 (mp3info (assoc-ref inputs "mp3info")))
737 ;; Specify the installation directory.
738 (substitute* "Makefile"
739 (("PREFIX=.*$")
740 (string-append "PREFIX := " out "\n")))
741
742 (setenv "SHELL" (which "sh"))
743 (setenv "CC" "gcc")
744
745 ;; Specify the absolute file names of the various
746 ;; programs so that everything works out-of-the-box.
747 (with-directory-excursion "lisp"
748 (emacs-substitute-variables
749 "emms-player-mpg321-remote.el"
750 ("emms-player-mpg321-remote-command"
751 (string-append mpg321 "/bin/mpg321")))
752 (substitute* "emms-player-simple.el"
753 (("\"ogg123\"")
754 (string-append "\"" vorbis "/bin/ogg123\"")))
755 (emacs-substitute-variables "emms-info-ogginfo.el"
756 ("emms-info-ogginfo-program-name"
757 (string-append vorbis "/bin/ogginfo")))
758 (emacs-substitute-variables "emms-info-libtag.el"
759 ("emms-info-libtag-program-name"
760 (string-append out "/bin/emms-print-metadata")))
2d2a2bac
LC
761 (emacs-substitute-variables "emms-info-mp3info.el"
762 ("emms-info-mp3info-program-name"
763 (string-append mp3info "/bin/mp3info")))
77c9286d
LC
764 (substitute* "emms-volume-amixer.el"
765 (("\"amixer\"")
766 (string-append "\"" alsa "/bin/amixer\"")))
767 (substitute* "emms-tag-editor.el"
768 (("\"mp3info\"")
a5f60659 769 (string-append "\"" mp3info "/bin/mp3info\""))))))
77c9286d
LC
770 (alist-cons-before
771 'install 'pre-install
772 (lambda* (#:key outputs #:allow-other-keys)
c72aed6d
LC
773 ;; The 'install' rule expects the target directory to
774 ;; exist.
77c9286d
LC
775 (let* ((out (assoc-ref outputs "out"))
776 (man1 (string-append out "/share/man/man1")))
777 (mkdir-p man1)
c72aed6d 778 #t))
77c9286d
LC
779 (alist-cons-after
780 'install 'post-install
781 (lambda* (#:key outputs #:allow-other-keys)
782 (let* ((out (assoc-ref outputs "out"))
783 (target (string-append
784 out "/bin/emms-print-metadata")))
d51cafb0
AK
785 (symlink "emms-auto.el"
786 (string-append out "/share/emacs/site-lisp/"
787 "emms-autoloads.el"))
77c9286d
LC
788 (mkdir-p (dirname target))
789 (copy-file "src/emms-print-metadata" target)
790 (chmod target #o555)))
791 %standard-phases)))
792 #:tests? #f))
2d32d153 793 (native-inputs `(("emacs" ,emacs-no-x) ;for (guix build emacs-utils)
77c9286d 794 ("texinfo" ,texinfo)))
c72aed6d 795 (inputs `(("alsa-utils" ,alsa-utils)
77c9286d
LC
796 ("vorbis-tools" ,vorbis-tools)
797 ("mpg321" ,mpg321)
798 ("taglib" ,taglib)
799 ("mp3info" ,mp3info)))
800 (synopsis "Emacs Multimedia System")
801 (description
802 "EMMS is the Emacs Multimedia System. It is a small front-end which
803can control one of the supported external players. Thus, it supports
804whatever formats are supported by your music player. It also
805supports tagging and playlist management, all behind a clean and
806light user interface.")
807 (home-page "http://www.gnu.org/software/emms/")
f61e0e79 808 (license license:gpl3+)))
c7e553a3
LC
809
810\f
811;;;
812;;; Miscellaneous.
813;;;
814
815(define-public bbdb
816 (package
817 (name "bbdb")
818 (version "3.1.2")
819 (source (origin
820 (method url-fetch)
821 (uri (string-append "mirror://savannah/bbdb/bbdb-"
822 version ".tar.gz"))
823 (sha256
824 (base32
825 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
826 (modules '((guix build utils)))
827 (snippet
828 ;; We don't want to build and install the PDF.
829 '(substitute* "doc/Makefile.in"
830 (("^doc_DATA = .*$")
831 "doc_DATA =\n")))))
832 (build-system gnu-build-system)
833 (arguments
834 '(#:phases (alist-cons-after
835 'install 'post-install
836 (lambda* (#:key outputs #:allow-other-keys)
837 ;; Add an autoloads file with the right name for guix.el.
838 (let* ((out (assoc-ref outputs "out"))
839 (site (string-append out "/share/emacs/site-lisp")))
840 (with-directory-excursion site
841 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
842 %standard-phases)))
2d32d153 843 (native-inputs `(("emacs" ,emacs-no-x)))
c7e553a3
LC
844 (home-page "http://savannah.nongnu.org/projects/bbdb/")
845 (synopsis "Contact management utility for Emacs")
846 (description
847 "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides
848an address book for email and snail mail addresses, phone numbers and the
849like. It can be linked with various Emacs mail clients (Message and Mail
850mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
f61e0e79 851 (license license:gpl3+)))
78395334
FB
852
853(define-public emacs-auctex
854 (package
855 (name "emacs-auctex")
856 (version "11.88.6")
857 (source
858 (origin
859 (method url-fetch)
860 (uri (string-append
861 "http://elpa.gnu.org/packages/auctex-"
862 version
863 ".tar"))
864 (sha256
865 (base32
866 "1pmki8hdjjikxlvip3pzi350bln3gcimr27yjf0xfwjvnp5hh9nc"))))
867 (build-system emacs-build-system)
868 (native-inputs
869 `(("perl" ,perl)))
870 (home-page "http://www.gnu.org/software/auctex/")
871 (synopsis "Integrated environment for TeX")
872 (description
873 "AUCTeX is a comprehensive customizable integrated environment for
874writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs
875or XEmacs.")
876 (license license:gpl3+)))
85ef742c
FB
877
878(define-public emacs-mmm-mode
879 (package
880 (name "emacs-mmm-mode")
881 (version "0.5.4")
882 (source
883 (origin
884 (method url-fetch)
885 (uri (string-append
0c909c05
AK
886 "https://github.com/purcell/mmm-mode/archive/"
887 version ".tar.gz"))
888 (file-name (string-append name "-" version ".tar.gz"))
85ef742c
FB
889 (sha256
890 (base32
0c909c05
AK
891 "10kwslnflbjqm62wkrq420crqzdqalzfflp9pqk1i12zm6dm4mfv"))))
892 (build-system gnu-build-system)
893 (arguments
894 '(#:phases
895 (modify-phases %standard-phases
896 (add-after 'unpack 'autogen
897 (lambda _
898 (zero? (system* "sh" "autogen.sh")))))))
899 (native-inputs
900 `(("autoconf" ,autoconf)
901 ("automake" ,automake)
902 ("emacs" ,emacs-no-x)
903 ("texinfo" ,texinfo)))
85ef742c 904 (home-page "https://github.com/purcell/mmm-mode")
0c909c05 905 (synopsis "Allow multiple major modes in an Emacs buffer")
85ef742c 906 (description
0c909c05 907 "MMM Mode is a minor mode that allows multiple major modes to coexist in a
85ef742c
FB
908single buffer.")
909 (license license:gpl3+)))
ec9825d6
RW
910
911(define-public emacs-pdf-tools
912 (package
913 (name "emacs-pdf-tools")
914 (version "0.60")
915 (source (origin
916 (method url-fetch)
917 (uri (string-append
918 "https://github.com/politza/pdf-tools/archive/v"
919 version ".tar.gz"))
920 (file-name (string-append name "-" version ".tar.gz"))
921 (sha256
922 (base32
923 "1y8k5n2jbyaxby0j6f4m9xbm0ddpmbkrfj6rp6ll5sb97lcg3vrx"))))
924 (build-system gnu-build-system)
925 (arguments
926 `(#:tests? #f ; there are no tests
927 #:modules ((guix build gnu-build-system)
928 (guix build utils)
929 (guix build emacs-utils))
930 #:imported-modules (,@%gnu-build-system-modules
931 (guix build emacs-utils))
932 #:phases
933 (modify-phases %standard-phases
934 (add-after 'unpack 'enter-dir (lambda _ (chdir "server") #t))
935 (add-before
936 'configure 'autogen
937 (lambda _
938 (zero? (system* "bash" "autogen.sh"))))
939 (add-before
940 'build 'patch-variables
941 (lambda* (#:key outputs #:allow-other-keys)
942 (with-directory-excursion "../lisp"
943 ;; Set path to epdfinfo program.
944 (emacs-substitute-variables "pdf-info.el"
945 ("pdf-info-epdfinfo-program"
946 (string-append (assoc-ref outputs "out")
947 "/bin/epdfinfo")))
948 ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
949 ;; upgrading" that pdf-tools tries to perform.
950 (emacs-substitute-variables "pdf-tools.el"
951 ("pdf-tools-handle-upgrades" '())))))
952 (add-after
953 'install 'install-lisp
954 (lambda* (#:key outputs #:allow-other-keys)
955 (let ((target (string-append (assoc-ref outputs "out")
956 "/share/emacs/site-lisp/")))
96c46210
LC
957 (for-each (lambda (file)
958 (install-file file target))
959 (find-files "../lisp" "^(pdf|tab).*\\.elc?"))
ec9825d6
RW
960 (emacs-byte-compile-directory target)
961 (emacs-generate-autoloads "pdf-tools" target)))))))
962 (native-inputs `(("autoconf" ,autoconf)
963 ("automake" ,automake)
964 ("pkg-config" ,pkg-config)
965 ("emacs" ,emacs-no-x)))
966 (inputs `(("poppler" ,poppler)
967 ("cairo" ,cairo)
968 ("glib" ,glib)
969 ("libpng" ,libpng)
970 ("zlib" ,zlib)))
971 (synopsis "Emacs support library for PDF files")
972 (description
973 "PDF Tools is, among other things, a replacement of DocView for PDF
974files. The key difference is that pages are not pre-rendered by
975e.g. ghostscript and stored in the file-system, but rather created on-demand
976and stored in memory.")
977 (home-page "https://github.com/politza/pdf-tools")
978 (license license:gpl3+)))
d4dbf10e
FB
979
980(define-public emacs-dash
981 (package
982 (name "emacs-dash")
983 (version "2.11.0")
984 (source (origin
985 (method url-fetch)
986 (uri (string-append
987 "https://github.com/magnars/dash.el/archive/"
988 version ".tar.gz"))
989 (file-name (string-append name "-" version ".tar.gz"))
990 (sha256
991 (base32
992 "1piwcwilkxcbjxx832mhb7q3pz1fgwp203r581bpqcw6kd5x726q"))))
993 (build-system emacs-build-system)
994 (arguments
995 `(#:phases
996 (modify-phases %standard-phases
997 (add-before 'install 'check
998 (lambda _
999 (zero? (system* "./run-tests.sh")))))))
1000 (home-page "https://github.com/magnars/dash.el")
1001 (synopsis "Modern list library for Emacs")
1002 (description "This package provides a modern list API library for Emacs.")
1003 (license license:gpl3+)))
85777fe5
FB
1004
1005(define-public emacs-s
1006 (package
1007 (name "emacs-s")
1008 (version "1.9.0")
1009 (source (origin
1010 (method url-fetch)
1011 (uri (string-append
1012 "https://github.com/magnars/s.el/archive/"
1013 version ".tar.gz"))
1014 (file-name (string-append name "-" version ".tar.gz"))
1015 (sha256
1016 (base32
1017 "1gah2k577gvnmxlpw7zrz0jr571vghzhdv2hbgchlgah07czd091"))))
1018 (build-system emacs-build-system)
1019 (arguments
1020 `(#:phases
1021 (modify-phases %standard-phases
1022 (add-before 'install 'check
1023 (lambda _
1024 (zero? (system* "./run-tests.sh")))))))
1025 (home-page "https://github.com/magnars/s.el")
a124bbd2 1026 (synopsis "Emacs string manipulation library")
85777fe5
FB
1027 (description "This package provides an Emacs library for manipulating
1028strings.")
1029 (license license:gpl3+)))
cf9ce01f
FB
1030
1031(define-public emacs-f
1032 (package
1033 (name "emacs-f")
1034 (version "0.17.2")
1035 (source (origin
1036 (method url-fetch)
1037 (uri (string-append
1038 "https://github.com/rejeep/f.el/archive/v"
1039 version ".tar.gz"))
1040 (file-name (string-append name "-" version ".tar.gz"))
1041 (sha256
1042 (base32
1043 "1n5gcldf43wmkr7jxgs519v21zavwr0yn8048iv6gvgfwicnyjlx"))))
1044 (build-system emacs-build-system)
1045 (propagated-inputs
1046 `(("emacs-s" ,emacs-s)
1047 ("emacs-dash" ,emacs-dash)))
1048 (home-page "http://github.com/rejeep/f.el")
1049 (synopsis "Emacs API for working with files and directories")
1050 (description "This package provides an Emacs library for working with
1051files and directories.")
1052 (license license:gpl3+)))
48dbeef7
FB
1053
1054(define-public emacs-ob-ipython
1055 (package
1056 (name "emacs-ob-ipython")
1057 (version "20150704.8807064693")
1058 (source (origin
1059 (method git-fetch)
1060 (uri (git-reference
1061 (commit "8807064693")
1062 (url "https://github.com/gregsexton/ob-ipython.git")))
1063 (sha256
1064 (base32
1065 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
1066 (build-system emacs-build-system)
1067 (propagated-inputs
1068 `(("emacs-f" ,emacs-f)))
1069 (home-page "http://www.gregsexton.org")
1070 (synopsis "Org-Babel functions for IPython evaluation")
1071 (description "This package adds support to Org-Babel for evaluating Python
1072source code using IPython.")
1073 (license license:gpl3+)))
6fd66b6c
LC
1074
1075(define-public emacs-debbugs
1076 (package
1077 (name "emacs-debbugs")
1078 (version "0.7")
1079 (source (origin
1080 (method url-fetch)
1081 (uri (string-append "http://elpa.gnu.org/packages/debbugs-"
1082 version ".tar"))
1083 (sha256
1084 (base32
1085 "0pbglx3paa8icazgxlg4jf40wl8war63y9j2jmbb7gbd1xp95v72"))))
1086 (build-system emacs-build-system)
1087 (home-page "http://elpa.gnu.org/packages/debbugs.html")
1088 (synopsis "Access the Debbugs bug tracker in Emacs")
1089 (description
1090 "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
1091Tracker} from within Emacs.
1092
1093For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
1094and the command @code{M-x debbugs-gnu-search} for bug searching. If you
1095prefer the listing of bugs as TODO items of @code{org-mode}, you could use
1096@code{M-x debbugs-org} and related commands.
1097
1098A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
1099Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
1100 (license license:gpl3+)))
3ffe36f5
LC
1101
1102(define-public emacs-deferred
1103 (package
1104 (name "emacs-deferred")
1105 (version "0.3.2")
1106 (home-page "https://github.com/kiwanami/emacs-deferred")
1107 (source (origin
1108 (method git-fetch)
1109 (uri (git-reference
1110 (url home-page)
1111 (commit (string-append "v" version))))
1112 (sha256
1113 (base32
1114 "0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
1115 (file-name (string-append name "-" version))))
1116 (build-system emacs-build-system)
1117 ;; FIXME: Would need 'el-expectations' to actually run tests.
1118 (synopsis "Simple asynchronous functions for Emacs Lisp")
1119 (description
1120 "The @code{deferred.el} library provides support for asynchronous tasks.
1121The API is almost the same as that of
1122@uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
1123for asynchronous tasks.")
1124 (license license:gpl3+)))
d001bb5a
LC
1125
1126(define-public butler
1127 (package
1128 (name "emacs-butler")
1129 (version "0.2.4")
1130 (home-page "https://github.com/AshtonKem/Butler")
1131 (source (origin
1132 (method git-fetch)
1133 (uri (git-reference
1134 (url home-page)
1135 (commit version)))
1136 (sha256
1137 (base32
1138 "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
1139 (file-name (string-append name "-" version))))
1140 (build-system emacs-build-system)
1141 (propagated-inputs
1142 `(("emacs-deferred" ,emacs-deferred)))
1143 (synopsis "Emacs client for Jenkins")
1144 (description
1145 "Butler provides an interface to connect to Jenkins continuous
1146integration servers. Users can specify a list of server in the
1147@code{butler-server-list} variable and then use @code{M-x butler-status} to
1148view the build status of those servers' build jobs, and possibly to trigger
1149build jobs.")
1150 (license license:gpl3+)))
2d1db448
LC
1151
1152(define-public typo
1153 (package
1154 (name "emacs-typo")
1155 (version "1.1")
1156 (home-page "https://github.com/jorgenschaefer/typoel")
1157 (source (origin
1158 (method git-fetch)
1159 (uri (git-reference
1160 (url home-page)
1161 (commit (string-append "v" version))))
1162 (sha256
1163 (base32
1164 "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
1165 (file-name (string-append name "-" version))))
1166 (build-system emacs-build-system)
1167 (synopsis "Minor mode for typographic editing")
1168 (description
1169 "This package provides two Emacs modes, @code{typo-mode} and
1170@code{typo-global-mode}. These modes automatically insert Unicode characters
1171for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
1172automatically inserts a Unicode opening or closing quotation mark, depending
1173on context.")
1174 (license license:gpl3+)))