gnu: Add emacs-iedit.
[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>
fe542b97 3;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
4c2a38c2 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
60edbe22 5;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
78395334 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
48766ea8 7;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
e11d14fe 8;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
4670f70a 9;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
11e4c1fd 10;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
9576cc72 11;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
0985f526 12;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
c5c08f1b 13;;; Copyright © 2016 David Thompson <davet@gnu.org>
ae609001 14;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
d95e8e01 15;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
26e08b4d 16;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
468bdabb
LC
17;;;
18;;; This file is part of GNU Guix.
19;;;
20;;; GNU Guix is free software; you can redistribute it and/or modify it
21;;; under the terms of the GNU General Public License as published by
22;;; the Free Software Foundation; either version 3 of the License, or (at
23;;; your option) any later version.
24;;;
25;;; GNU Guix is distributed in the hope that it will be useful, but
26;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28;;; GNU General Public License for more details.
29;;;
30;;; You should have received a copy of the GNU General Public License
31;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
1ffa7090 33(define-module (gnu packages emacs)
f61e0e79 34 #:use-module ((guix licenses) #:prefix license:)
468bdabb
LC
35 #:use-module (guix packages)
36 #:use-module (guix download)
f906d30c 37 #:use-module (guix git-download)
e5045f30
FB
38 #:use-module (guix gexp)
39 #:use-module (guix monads)
40 #:use-module (guix store)
468bdabb 41 #:use-module (guix build-system gnu)
78395334 42 #:use-module (guix build-system emacs)
71f57158 43 #:use-module (guix build-system glib-or-gtk)
fe4163f3 44 #:use-module (guix build-system trivial)
59a43334 45 #:use-module (gnu packages)
f906d30c 46 #:use-module (gnu packages guile)
7abe1965 47 #:use-module (gnu packages gtk)
8ba4dc63 48 #:use-module (gnu packages gnome)
1ffa7090
LC
49 #:use-module (gnu packages ncurses)
50 #:use-module (gnu packages texinfo)
a7fd7b68 51 #:use-module (gnu packages tls)
4f028c8f 52 #:use-module (gnu packages pkg-config)
50efa797
LC
53 #:use-module (gnu packages xorg)
54 #:use-module (gnu packages lesstif)
e55354b8 55 #:use-module (gnu packages image)
504a83af 56 #:use-module (gnu packages linux)
9a4c9715 57 #:use-module (gnu packages version-control)
18d26210
MW
58 #:use-module (gnu packages imagemagick)
59 #:use-module (gnu packages w3m)
89925972 60 #:use-module (gnu packages wget)
18d26210 61 #:use-module (gnu packages autotools)
be379ee7 62 #:use-module (gnu packages base)
f61e0e79 63 #:use-module (gnu packages compression)
50efa797 64 #:use-module (gnu packages xml)
4a3e602c 65 #:use-module (gnu packages glib)
388fd01b 66 #:use-module (gnu packages acl)
13fe4891 67 #:use-module (gnu packages package-management)
77c9286d 68 #:use-module (gnu packages perl)
ec9825d6 69 #:use-module (gnu packages pdf)
58a7dc13 70 #:use-module (gnu packages scheme)
77c9286d
LC
71 #:use-module (gnu packages xiph)
72 #:use-module (gnu packages mp3)
4a3e602c
TUBK
73 #:use-module (guix utils)
74 #:use-module (srfi srfi-1))
468bdabb
LC
75
76(define-public emacs
77 (package
78 (name "emacs")
4c2a38c2 79 (version "24.5")
468bdabb
LC
80 (source (origin
81 (method url-fetch)
82 (uri (string-append "mirror://gnu/emacs/emacs-"
3be9f724 83 version ".tar.xz"))
468bdabb
LC
84 (sha256
85 (base32
1bef37ee 86 "0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
fc1adab1 87 (patches (search-patches "emacs-exec-path.patch"
4509ec72 88 "emacs-fix-scheme-indent-function.patch"
486f36eb
AK
89 "emacs-source-date-epoch.patch"))
90 (modules '((guix build utils)))
91 (snippet
92 ;; Delete the bundled byte-compiled elisp files and
93 ;; generated autoloads.
94 '(with-directory-excursion "lisp"
95 (for-each delete-file
96 (append (find-files "." "\\.elc$")
97 (find-files "." "loaddefs\\.el$")
98 ;; This is the only "autoloads" file that
99 ;; does not have "*loaddefs.el" name.
100 '("eshell/esh-groups.el")))))))
71f57158 101 (build-system glib-or-gtk-build-system)
468bdabb 102 (arguments
13fe4891
FB
103 `(#:phases
104 (modify-phases %standard-phases
105 (add-before 'configure 'fix-/bin/pwd
106 (lambda _
107 ;; Use `pwd', not `/bin/pwd'.
108 (substitute* (find-files "." "^Makefile\\.in$")
109 (("/bin/pwd")
110 "pwd"))))
111 (add-after 'install 'remove-info.info
112 (lambda* (#:key outputs #:allow-other-keys)
8c4c2a98
LC
113 ;; Remove 'info.info', which is provided by Texinfo <= 6.0.
114 ;; TODO: Remove this phase when we switch to Texinfo 6.1.
13fe4891
FB
115 (let ((out (assoc-ref outputs "out")))
116 (delete-file
117 (string-append out "/share/info/info.info.gz"))
118 #t)))
119 (add-after 'install 'install-site-start
120 ;; Copy guix-emacs.el from Guix and add it to site-start.el. This
121 ;; way, Emacs packages provided by Guix and installed in
122 ;; ~/.guix-profile/share/emacs/site-lisp/guix.d/PACKAGE-VERSION are
123 ;; automatically found.
124 (lambda* (#:key inputs outputs #:allow-other-keys)
125 (let* ((guix-src (assoc-ref inputs "guix-src"))
126 (out (assoc-ref outputs "out"))
127 (lisp-dir (string-append out "/share/emacs/"
128 ,(version-major+minor version)
129 "/site-lisp"))
130 (unpack (assoc-ref %standard-phases 'unpack)))
131 (mkdir "guix")
132 (with-directory-excursion "guix"
133 (apply unpack (list #:source guix-src))
134 (install-file "emacs/guix-emacs.el" lisp-dir))
135 (with-output-to-file (string-append lisp-dir "/site-start.el")
136 (lambda ()
137 (display "(require 'guix-emacs nil t)")))
138 #t))))))
468bdabb 139 (inputs
c4c4cc05 140 `(("gnutls" ,gnutls)
468bdabb
LC
141 ("ncurses" ,ncurses)
142
143 ;; TODO: Add the optional dependencies.
fa275717 144 ("libx11" ,libx11)
0a9e9a63 145 ("gtk+" ,gtk+)
fa275717 146 ("libxft" ,libxft)
50efa797 147 ("libtiff" ,libtiff)
504a83af 148 ("giflib" ,giflib)
50efa797 149 ("libjpeg" ,libjpeg-8)
388fd01b 150 ("acl" ,acl)
50efa797
LC
151
152 ;; When looking for libpng `configure' links with `-lpng -lz', so we
153 ;; must also provide zlib as an input.
154 ("libpng" ,libpng)
f61e0e79 155 ("zlib" ,zlib)
50efa797 156
8ba4dc63 157 ("librsvg" ,librsvg)
fa275717 158 ("libxpm" ,libxpm)
50efa797 159 ("libxml2" ,libxml2)
504a83af
MW
160 ("libice" ,libice)
161 ("libsm" ,libsm)
162 ("alsa-lib" ,alsa-lib)
13fe4891
FB
163 ("dbus" ,dbus)
164 ("guix-src" ,(package-source guix))))
c4c4cc05
JD
165 (native-inputs
166 `(("pkg-config" ,pkg-config)
167 ("texinfo" ,texinfo)))
64c98347
LC
168
169 (native-search-paths
170 (list (search-path-specification
171 (variable "INFOPATH")
172 (files '("share/info")))))
173
468bdabb 174 (home-page "http://www.gnu.org/software/emacs/")
f50d2669 175 (synopsis "The extensible, customizable, self-documenting text editor")
468bdabb 176 (description
79c311b8
LC
177 "GNU Emacs is an extensible and highly customizable text editor. It is
178based on an Emacs Lisp interpreter with extensions for text editing. Emacs
179has been extended in essentially all areas of computing, giving rise to a
180vast array of packages supporting, e.g., email, IRC and XMPP messaging,
181spreadsheets, remote server editing, and much more. Emacs includes extensive
182documentation on all aspects of the system, from basic editing to writing
183large Lisp programs. It has full Unicode support for nearly all human
184languages.")
f61e0e79 185 (license license:gpl3+)))
4f028c8f 186
b2eaf7ba 187(define-public emacs-minimal
4fd540b7
LC
188 ;; This is the version that you should use as an input to packages that just
189 ;; need to byte-compile .el files.
b2eaf7ba
AK
190 (package (inherit emacs)
191 (name "emacs-minimal")
192 (synopsis "The extensible text editor (used only for byte-compilation)")
193 (build-system gnu-build-system)
194 (arguments
195 (substitute-keyword-arguments (package-arguments emacs)
196 ((#:phases phases)
197 `(modify-phases ,phases
198 (delete 'install-site-start)))))
199 (inputs
200 `(("ncurses" ,ncurses)))
201 (native-inputs
202 `(("pkg-config" ,pkg-config)))))
203
204(define-public emacs-no-x
4fd540b7 205 (package (inherit emacs)
4fd540b7
LC
206 (name "emacs-no-x")
207 (synopsis "The extensible, customizable, self-documenting text
208editor (console only)")
209 (build-system gnu-build-system)
210 (inputs (fold alist-delete
211 (package-inputs emacs)
212 '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
8ba4dc63 213 "libpng" "librsvg" "libxpm" "libice" "libsm"
4fd540b7
LC
214
215 ;; D-Bus depends on libx11, so remove it as well.
216 "dbus")))))
217
4a3e602c
TUBK
218(define-public emacs-no-x-toolkit
219 (package (inherit emacs)
220 (name "emacs-no-x-toolkit")
221 (synopsis "The extensible, customizable, self-documenting text
222editor (without an X toolkit)" )
71f57158 223 (build-system gnu-build-system)
388fd01b
MW
224 (inputs (append `(("inotify-tools" ,inotify-tools))
225 (alist-delete "gtk+" (package-inputs emacs))))
226 (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
227 (package-arguments emacs)))))
4a3e602c 228
f906d30c
CAW
229(define-public guile-emacs
230 (package (inherit emacs)
231 (name "guile-emacs")
232 (version "20150512.41120e0")
233 (source (origin
234 (method git-fetch)
235 (uri (git-reference
236 (url "git://git.hcoop.net/git/bpt/emacs.git")
237 (commit "41120e0f595b16387eebfbf731fff70481de1b4b")))
238 (sha256
239 (base32
240 "0lvcvsz0f4mawj04db35p1dvkffdqkz8pkhc0jzh9j9x2i63kcz6"))))
241 (native-inputs
242 `(("autoconf" ,autoconf)
243 ("automake" ,automake)
244 ("guile" ,guile-for-guile-emacs)
245 ,@(package-native-inputs emacs)))
246 (arguments
247 (substitute-keyword-arguments `(;; Build fails if we allow parallel build.
248 #:parallel-build? #f
249 ;; Tests aren't passing for now.
250 #:tests? #f
251 ,@(package-arguments emacs))
252 ((#:phases phases)
253 `(modify-phases ,phases
254 (add-after 'unpack 'autogen
255 (lambda _
256 (zero? (system* "sh" "autogen.sh"))))))))))
257
4f028c8f
LC
258\f
259;;;
260;;; Emacs hacking.
261;;;
262
263(define-public geiser
264 (package
265 (name "geiser")
837294b7 266 (version "0.8.1")
4f028c8f
LC
267 (source (origin
268 (method url-fetch)
cf8f58b2
LC
269 (uri (string-append "mirror://savannah/geiser/" version
270 "/geiser-" version ".tar.gz"))
4f028c8f 271 (sha256
1f8ad12a 272 (base32
837294b7 273 "163zh8qf1q8l485d94a51a9xixirj8r2xvrbgxyw06vkaqrz5qvc"))))
4f028c8f 274 (build-system gnu-build-system)
d51cafb0
AK
275 (arguments
276 '(#:phases (alist-cons-after
277 'install 'post-install
278 (lambda* (#:key outputs #:allow-other-keys)
279 (symlink "geiser-install.el"
280 (string-append (assoc-ref outputs "out")
281 "/share/emacs/site-lisp/"
282 "geiser-autoloads.el")))
283 %standard-phases)))
6aaf3899 284 (inputs `(("guile" ,guile-2.0)))
b8fc3622 285 (native-inputs `(("emacs" ,emacs-minimal)))
4f028c8f
LC
286 (home-page "http://nongnu.org/geiser/")
287 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
288 (description
9586011d
LC
289 "Geiser is a collection of Emacs major and minor modes that conspire with
290one or more Scheme implementations to keep the Lisp Machine Spirit alive. The
291continuously running Scheme interpreter takes the center of the stage in
292Geiser. A bundle of Elisp shims orchestrates the dialog between the Scheme
293implementation, Emacs and, ultimately, the schemer, giving them access to live
294metadata.")
f61e0e79 295 (license license:bsd-3)))
9a4c9715 296
11e4c1fd
CAW
297(define-public geiser-next
298 ;; Geiser's upcoming version supports guile-next, and 0.8.1 does not.
299 ;; When the next Geiser release comes out, we can remove this.
300 (let ((commit "2e335695fc1a4a0b520b50deb761b958194cbec4"))
301 (package
302 (inherit geiser)
303 (name "geiser-next")
304 (version (string-append "0.8.1-1"
305 (string-take commit 7)))
306 (source (origin
307 (method git-fetch)
308 (uri (git-reference
309 (url "git://git.sv.gnu.org/geiser.git")
310 (commit commit)))
311 (sha256
312 (base32
313 "00rmpn8zncq1fiah5m12l26z0s28bh7ql63kxdvksqdgfrisnmgf"))))
314 (native-inputs
315 `(("autoconf" ,autoconf)
316 ("automake" ,automake)
317 ("texinfo" ,texinfo)
318 ,@(package-native-inputs geiser)))
319 (arguments
320 (substitute-keyword-arguments (package-arguments geiser)
321 ((#:phases phases)
322 `(modify-phases ,phases
323 (add-after 'unpack 'autogen
324 (lambda _
325 (zero? (system* "sh" "autogen.sh")))))))))))
326
fe4163f3
MW
327(define-public paredit
328 (package
329 (name "paredit")
c181b870 330 (version "24")
fe4163f3 331 (source (origin
c181b870
AK
332 (method url-fetch)
333 (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
334 version ".el"))
335 (sha256
336 (base32
337 "0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
fe4163f3 338 (build-system trivial-build-system)
b8fc3622 339 (native-inputs `(("emacs" ,emacs-minimal)))
fe4163f3
MW
340 (arguments
341 `(#:modules ((guix build utils)
342 (guix build emacs-utils))
343 #:builder
344 (begin
345 (use-modules (guix build utils))
346 (use-modules (guix build emacs-utils))
347
348 (let* ((emacs (string-append (assoc-ref %build-inputs "emacs")
349 "/bin/emacs"))
350 (source (assoc-ref %build-inputs "source"))
351 (lisp-dir (string-append %output
352 "/share/emacs/site-lisp"))
353 (target (string-append lisp-dir "/paredit.el")))
354 (mkdir-p lisp-dir)
355 (copy-file source target)
356 (with-directory-excursion lisp-dir
357 (parameterize ((%emacs emacs))
d51cafb0 358 (emacs-generate-autoloads ,name lisp-dir)
fe4163f3
MW
359 (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
360 (home-page "http://mumble.net/~campbell/emacs/paredit/")
361 (synopsis "Emacs minor mode for editing parentheses")
362 (description
363 "ParEdit (paredit.el) is a minor mode for performing structured editing
364of S-expression data. The typical example of this would be Lisp or Scheme
365source code.
366
367ParEdit helps **keep parentheses balanced** and adds many keys for moving
368S-expressions and moving around in S-expressions. Its behavior can be jarring
369for those who may want transient periods of unbalanced parentheses, such as
370when typing parentheses directly or commenting out code line by line.")
f61e0e79 371 (license license:gpl3+)))
fe4163f3 372
2f910ef6
LC
373(define-public git-modes
374 (package
375 (name "git-modes")
d1dfa22f 376 (version "1.2.2")
2f910ef6
LC
377 (source (origin
378 (method url-fetch)
379 (uri (string-append
380 "https://github.com/magit/git-modes/archive/"
381 version ".tar.gz"))
8fd3c1ff 382 (file-name (string-append name "-" version ".tar.gz"))
2f910ef6
LC
383 (sha256
384 (base32
d1dfa22f 385 "0gb9c18jib8rpm14vig9774104lwmd8353ps0259m861syf6664d"))))
2f910ef6
LC
386 (build-system gnu-build-system)
387 (arguments
388 `(#:modules ((guix build gnu-build-system)
389 (guix build emacs-utils)
390 (guix build utils))
391 #:imported-modules (,@%gnu-build-system-modules
392 (guix build emacs-utils))
393
394 #:make-flags (list (string-append "PREFIX="
395 (assoc-ref %outputs "out"))
396 ;; Don't put .el files in a 'git-modes'
397 ;; sub-directory.
398 (string-append "LISPDIR="
399 (assoc-ref %outputs "out")
400 "/share/emacs/site-lisp"))
89949e8f 401 #:tests? #f ; no check target
2f910ef6
LC
402 #:phases (modify-phases %standard-phases
403 (delete 'configure)
404 (add-after 'install 'emacs-autoloads
405 (lambda* (#:key outputs #:allow-other-keys)
406 (let* ((out (assoc-ref outputs "out"))
407 (lisp (string-append
408 out "/share/emacs/site-lisp/")))
409 (emacs-generate-autoloads ,name lisp)))))))
b8fc3622 410 (native-inputs `(("emacs" ,emacs-minimal)))
2f910ef6
LC
411 (home-page "https://github.com/magit/git-modes")
412 (synopsis "Emacs major modes for Git configuration files")
413 (description
414 "This package provides Emacs major modes for editing various Git
415configuration files, such as .gitattributes, .gitignore, and .git/config.")
416 (license license:gpl3+)))
417
2b0e4300
AK
418(define-public emacs-with-editor
419 (package
420 (name "emacs-with-editor")
ffefa3da 421 (version "2.5.1")
2b0e4300
AK
422 (source (origin
423 (method url-fetch)
424 (uri (string-append
425 "https://github.com/magit/with-editor/archive/v"
426 version ".tar.gz"))
427 (file-name (string-append name "-" version ".tar.gz"))
428 (sha256
429 (base32
ffefa3da 430 "1lqm0msc9lzb05ys96bsx8bf2y1qrw27dh5h6qz8lf5i4cbhflw2"))))
2b0e4300
AK
431 (build-system emacs-build-system)
432 (propagated-inputs
433 `(("emacs-dash" ,emacs-dash)))
434 (home-page "https://github.com/magit/with-editor")
435 (synopsis "Emacs library for using Emacsclient as EDITOR")
436 (description
437 "This package provides an Emacs library to use the Emacsclient as
438@code{$EDITOR} of child processes, making sure they know how to call home.
439For remote processes a substitute is provided, which communicates with Emacs
440on stdout instead of using a socket as the Emacsclient does.")
441 (license license:gpl3+)))
442
9a4c9715
MW
443(define-public magit
444 (package
445 (name "magit")
847534e1 446 (version "2.7.0")
9a4c9715
MW
447 (source (origin
448 (method url-fetch)
fac8b30b
MW
449 (uri (string-append
450 "https://github.com/magit/magit/releases/download/"
451 version "/" name "-" version ".tar.gz"))
9a4c9715 452 (sha256
7e4871ba 453 (base32
847534e1 454 "1kzd8k2n0lcr04jvn5b6d29zf765mxgshfhzflkzndwmvyxmlqpl"))))
9a4c9715 455 (build-system gnu-build-system)
2c047b4a 456 (native-inputs `(("texinfo" ,texinfo)
b8fc3622 457 ("emacs" ,emacs-minimal)))
55f29c39 458 (inputs `(("git" ,git)))
3db5ed11
AK
459 (propagated-inputs
460 `(("dash" ,emacs-dash)
461 ("with-editor" ,emacs-with-editor)))
9a4c9715
MW
462 (arguments
463 `(#:modules ((guix build gnu-build-system)
464 (guix build utils)
465 (guix build emacs-utils))
8ff3df5b 466 #:imported-modules (,@%gnu-build-system-modules
9a4c9715 467 (guix build emacs-utils))
7e4871ba
LC
468
469 #:test-target "test"
55f29c39 470 #:tests? #f ; tests are not included in the release
7e4871ba 471
55f29c39
AK
472 #:make-flags
473 (list (string-append "PREFIX=" %output)
474 ;; Don't put .el files in a sub-directory.
475 (string-append "lispdir=" %output "/share/emacs/site-lisp")
476 (string-append "DASH_DIR="
477 (assoc-ref %build-inputs "dash")
478 "/share/emacs/site-lisp/guix.d/dash-"
3db5ed11
AK
479 ,(package-version emacs-dash))
480 (string-append "WITH_EDITOR_DIR="
481 (assoc-ref %build-inputs "with-editor")
482 "/share/emacs/site-lisp/guix.d/with-editor-"
483 ,(package-version emacs-with-editor)))
d41a8a07 484
9a4c9715 485 #:phases
c466bfd1 486 (modify-phases %standard-phases
55f29c39 487 (delete 'configure)
c466bfd1
LC
488 (add-before
489 'build 'patch-exec-paths
490 (lambda* (#:key inputs #:allow-other-keys)
55f29c39
AK
491 (let ((git (assoc-ref inputs "git")))
492 (emacs-substitute-variables "lisp/magit-git.el"
493 ("magit-git-executable" (string-append git "/bin/git")))
494 #t))))))
9a4c9715
MW
495 (home-page "http://magit.github.io/")
496 (synopsis "Emacs interface for the Git version control system")
497 (description
498 "With Magit, you can inspect and modify your Git repositories with Emacs.
499You can review and commit the changes you have made to the tracked files, for
500example, and you can browse the history of past changes. There is support for
501cherry picking, reverting, merging, rebasing, and other common Git
502operations.")
f61e0e79 503 (license license:gpl3+)))
18d26210 504
97cc51f8
LC
505(define-public magit-svn
506 (package
507 (name "magit-svn")
b7f16845 508 (version "2.1.1")
97cc51f8 509 (source (origin
be379ee7
AK
510 (method url-fetch)
511 (uri (string-append
512 "https://github.com/magit/magit-svn/archive/"
513 version ".tar.gz"))
514 (file-name (string-append name "-" version ".tar.gz"))
97cc51f8
LC
515 (sha256
516 (base32
b7f16845 517 "04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
97cc51f8 518 (build-system trivial-build-system)
b8fc3622 519 (native-inputs `(("emacs" ,emacs-minimal)
be379ee7
AK
520 ("tar" ,tar)
521 ("gzip" ,gzip)))
522 (propagated-inputs `(("dash" ,emacs-dash)
523 ("magit" ,magit)))
97cc51f8
LC
524 (arguments
525 `(#:modules ((guix build utils)
526 (guix build emacs-utils))
527
528 #:builder
529 (begin
530 (use-modules (guix build utils)
531 (guix build emacs-utils))
532
be379ee7
AK
533 (let* ((tar (string-append (assoc-ref %build-inputs "tar")
534 "/bin/tar"))
535 (PATH (string-append (assoc-ref %build-inputs "gzip")
536 "/bin"))
537 (emacs (string-append (assoc-ref %build-inputs "emacs")
97cc51f8
LC
538 "/bin/emacs"))
539 (magit (string-append (assoc-ref %build-inputs "magit")
540 "/share/emacs/site-lisp"))
be379ee7
AK
541 (dash (string-append (assoc-ref %build-inputs "dash")
542 "/share/emacs/site-lisp/guix.d/dash-"
543 ,(package-version emacs-dash)))
97cc51f8
LC
544 (source (assoc-ref %build-inputs "source"))
545 (lisp-dir (string-append %output "/share/emacs/site-lisp")))
be379ee7
AK
546 (setenv "PATH" PATH)
547 (system* tar "xvf" source)
96c46210
LC
548
549 (install-file (string-append ,name "-" ,version "/magit-svn.el")
550 lisp-dir)
97cc51f8
LC
551
552 (with-directory-excursion lisp-dir
553 (parameterize ((%emacs emacs))
554 (emacs-generate-autoloads ,name lisp-dir)
555 (setenv "EMACSLOADPATH"
be379ee7 556 (string-append ":" magit ":" dash))
97cc51f8
LC
557 (emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
558 (home-page "https://github.com/magit/magit-svn")
559 (synopsis "Git-SVN extension to Magit")
560 (description
561 "This package is an extension to Magit, the Git Emacs mode, providing
562support for Git-SVN.")
563 (license license:gpl3+)))
564
00f4bd50
FB
565(define-public haskell-mode
566 (package
567 (name "haskell-mode")
568 (version "13.14.2")
569 (source (origin
570 (method url-fetch)
571 (file-name (string-append name "-" version ".tar.gz"))
572 (uri (string-append
573 "https://github.com/haskell/haskell-mode/archive/v"
574 version ".tar.gz"))
575 (sha256
576 (base32 "1kxc2yj8vb122dv91r68h7c5ladcryx963fr16plfhg71fv7f9av"))))
00f4bd50 577 (native-inputs
b8fc3622 578 `(("emacs" ,emacs-minimal)
6aaf3899 579 ("texinfo" ,texinfo)))
00f4bd50
FB
580 (build-system gnu-build-system)
581 (arguments
582 `(#:make-flags (list (string-append "EMACS="
583 (assoc-ref %build-inputs "emacs")
584 "/bin/emacs"))
585 #:phases
586 (modify-phases %standard-phases
587 (delete 'configure)
588 (add-before
589 'build 'pre-build
590 (lambda* (#:key inputs #:allow-other-keys)
591 (let ((sh (string-append (assoc-ref inputs "bash") "/bin/sh")))
592 (setenv "SHELL" "sh")
593 (substitute* (find-files "." "\\.el") (("/bin/sh") sh))
594 #t)))
595 (replace
596 'install
597 (lambda* (#:key outputs #:allow-other-keys)
598 (let* ((out (assoc-ref outputs "out"))
599 (el-dir (string-append out "/share/emacs/site-lisp"))
600 (doc (string-append
601 out "/share/doc/haskell-mode-" ,version))
602 (info (string-append out "/share/info")))
603 (define (copy-to-dir dir files)
96c46210
LC
604 (for-each (lambda (f)
605 (install-file f dir))
606 files))
00f4bd50
FB
607
608 (with-directory-excursion "doc"
609 (unless (zero? (system* "makeinfo" "haskell-mode.texi"))
610 (error "makeinfo failed"))
96c46210 611 (install-file "haskell-mode.info" info))
00f4bd50
FB
612 (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
613 (copy-to-dir el-dir (find-files "." "\\.elc?"))
614 ;; these are now distributed with emacs
615 (with-directory-excursion el-dir
616 (for-each delete-file '("cl-lib.el" "ert.el")))
617 #t))))))
618 (home-page "https://github.com/haskell/haskell-mode")
619 (synopsis "Haskell mode for Emacs")
620 (description
621 "This is an Emacs mode for editing, debugging and developing Haskell
622programs.")
623 (license license:gpl3+)))
624
1defd8cd
LC
625(define-public let-alist
626 (package
627 (name "emacs-let-alist")
628 (version "1.0.4")
629 (source (origin
630 (method url-fetch)
631 (uri (string-append "http://elpa.gnu.org/packages/let-alist-"
632 version ".el"))
633 (sha256
634 (base32
635 "07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x"))))
636 (build-system trivial-build-system)
637 (arguments
638 `(#:modules ((guix build utils)
639 (guix build emacs-utils))
640
641 #:builder (begin
642 (use-modules (guix build emacs-utils)
643 (guix build utils))
644
645 (let* ((out (assoc-ref %outputs "out"))
646 (lispdir (string-append out
647 "/share/emacs/site-lisp/"
648 "guix.d/let-alist-"
649 ,version))
650 (emacs (assoc-ref %build-inputs "emacs")))
651
652 (mkdir-p lispdir)
653 (copy-file (assoc-ref %build-inputs "source")
654 (string-append lispdir "/let-alist.el"))
655
656 (setenv "PATH" (string-append emacs "/bin"))
657 (emacs-byte-compile-directory lispdir)
658 #t))))
b8fc3622 659 (native-inputs `(("emacs" ,emacs-minimal)))
1defd8cd
LC
660 (home-page "http://elpa.gnu.org/packages/let-alist.html")
661 (synopsis "Easily let-bind values of an assoc-list by their names")
662 (description
663 "This package offers a single Emacs Lisp macro, @code{let-alist}. This
664macro takes a first argument, whose value must be an alist (association list),
665and a body.
666
667The macro expands to a let form containing the body, where each dotted symbol
668inside body is let-bound to their cdrs in the alist. Only those present in
669the body are let-bound and this search is done at compile time.")
670 (license license:gpl3+)))
671
6e3fdbbe
LC
672(define-public flycheck
673 (package
674 (name "emacs-flycheck")
0b928076 675 (version "0.23")
6e3fdbbe
LC
676 (source (origin
677 (method url-fetch)
0b928076
AK
678 (uri (string-append
679 "https://github.com/flycheck/flycheck/releases/download/"
680 version "/flycheck-" version ".tar"))
6e3fdbbe
LC
681 (sha256
682 (base32
0b928076 683 "1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b"))))
6e3fdbbe
LC
684 (build-system emacs-build-system)
685 (propagated-inputs
686 `(("emacs-dash" ,emacs-dash)
687 ("emacs-let-alist" ,let-alist)))
688 (home-page "https://www.flycheck.org")
689 (synopsis "On-the-fly syntax checking")
690 (description
691 "This package provides on-the-fly syntax checking for GNU Emacs. It is a
692replacement for the older Flymake extension which is part of GNU Emacs, with
693many improvements and additional features.
694
695Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
696checking for over 30 programming and markup languages with more than 70
697different tools. It highlights errors and warnings inline in the buffer, and
698provides an optional IDE-like error list.")
699 (license license:gpl3+))) ;+GFDLv1.3+ for the manual
700
18d26210
MW
701\f
702;;;
703;;; Web browsing.
704;;;
705
706(define-public emacs-w3m
707 (package
708 (name "emacs-w3m")
2e74b9f4 709 (version "1.4.538+0.20141022")
18d26210
MW
710 (source (origin
711 (method url-fetch)
712 (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
713 version ".orig.tar.gz"))
714 (sha256
2e74b9f4
AK
715 (base32
716 "0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y"))))
18d26210 717 (build-system gnu-build-system)
6aaf3899 718 (native-inputs `(("autoconf" ,autoconf)
b8fc3622 719 ("emacs" ,emacs-minimal)))
18d26210 720 (inputs `(("w3m" ,w3m)
6aaf3899 721 ("imagemagick" ,imagemagick)))
18d26210 722 (arguments
caaf1933 723 `(#:modules ((guix build gnu-build-system)
18d26210
MW
724 (guix build utils)
725 (guix build emacs-utils))
8ff3df5b 726 #:imported-modules (,@%gnu-build-system-modules
18d26210
MW
727 (guix build emacs-utils))
728 #:configure-flags
729 (let ((out (assoc-ref %outputs "out")))
730 (list (string-append "--with-lispdir="
731 out "/share/emacs/site-lisp")
732 (string-append "--with-icondir="
2e74b9f4
AK
733 out "/share/images/emacs-w3m")
734 ;; Leave .el files uncompressed, otherwise GC can't
735 ;; identify run-time dependencies. See
736 ;; <http://lists.gnu.org/archive/html/guix-devel/2015-12/msg00208.html>
737 "--without-compress-install"))
18d26210
MW
738 #:tests? #f ; no check target
739 #:phases
932ece65
AK
740 (modify-phases %standard-phases
741 (add-after 'unpack 'autoconf
742 (lambda _
743 (zero? (system* "autoconf"))))
744 (add-before 'build 'patch-exec-paths
745 (lambda* (#:key inputs outputs #:allow-other-keys)
746 (let ((out (assoc-ref outputs "out"))
747 (w3m (assoc-ref inputs "w3m"))
748 (imagemagick (assoc-ref inputs "imagemagick"))
749 (coreutils (assoc-ref inputs "coreutils")))
750 (emacs-substitute-variables "w3m.el"
751 ("w3m-command" (string-append w3m "/bin/w3m"))
752 ("w3m-touch-command"
753 (string-append coreutils "/bin/touch"))
754 ("w3m-image-viewer"
755 (string-append imagemagick "/bin/display"))
756 ("w3m-icon-directory"
757 (string-append out "/share/images/emacs-w3m")))
758 (emacs-substitute-variables "w3m-image.el"
759 ("w3m-imagick-convert-program"
760 (string-append imagemagick "/bin/convert"))
761 ("w3m-imagick-identify-program"
762 (string-append imagemagick "/bin/identify")))
763 #t)))
764 (replace 'install
765 (lambda* (#:key outputs #:allow-other-keys)
766 (and (zero? (system* "make" "install" "install-icons"))
767 (with-directory-excursion
768 (string-append (assoc-ref outputs "out")
769 "/share/emacs/site-lisp")
770 (for-each delete-file '("ChangeLog" "ChangeLog.1"))
771 (symlink "w3m-load.el" "w3m-autoloads.el")
772 #t)))))))
18d26210
MW
773 (home-page "http://emacs-w3m.namazu.org/")
774 (synopsis "Simple Web browser for Emacs based on w3m")
775 (description
35b9e423 776 "Emacs-w3m is an emacs interface for the w3m web browser.")
f61e0e79 777 (license license:gpl2+)))
89925972
MW
778
779(define-public emacs-wget
780 (package
781 (name "emacs-wget")
782 (version "0.5.0")
783 (source (origin
784 (method url-fetch)
785 (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
786 version ".orig.tar.gz"))
787 (sha256
788 (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
789 (build-system gnu-build-system)
6aaf3899 790 (inputs `(("wget" ,wget)))
b8fc3622 791 (native-inputs `(("emacs" ,emacs-minimal)))
89925972 792 (arguments
caaf1933 793 `(#:modules ((guix build gnu-build-system)
89925972
MW
794 (guix build utils)
795 (guix build emacs-utils))
caaf1933 796 #:imported-modules (,@%gnu-build-system-modules
89925972
MW
797 (guix build emacs-utils))
798 #:tests? #f ; no check target
799 #:phases
800 (alist-replace
801 'configure
802 (lambda* (#:key outputs #:allow-other-keys)
803 (substitute* "Makefile"
804 (("/usr/local") (assoc-ref outputs "out"))
805 (("/site-lisp/emacs-wget") "/site-lisp")))
806 (alist-cons-before
807 'build 'patch-exec-paths
808 (lambda* (#:key inputs outputs #:allow-other-keys)
809 (let ((wget (assoc-ref inputs "wget")))
810 (emacs-substitute-variables "wget.el"
811 ("wget-command" (string-append wget "/bin/wget")))))
d51cafb0
AK
812 (alist-cons-after
813 'install 'post-install
814 (lambda* (#:key outputs #:allow-other-keys)
815 (emacs-generate-autoloads
816 "wget" (string-append (assoc-ref outputs "out")
817 "/share/emacs/site-lisp/")))
818 %standard-phases)))))
89925972 819 (home-page "http://www.emacswiki.org/emacs/EmacsWget")
ae2189a9 820 (synopsis "Simple file downloader for Emacs based on wget")
89925972 821 (description
35b9e423 822 "Emacs-wget is an emacs interface for the wget file downloader.")
f61e0e79 823 (license license:gpl2+)))
77c9286d
LC
824
825\f
826;;;
827;;; Multimedia.
828;;;
829
830(define-public emms
831 (package
832 (name "emms")
0985f526 833 (version "4.1")
77c9286d
LC
834 (source (origin
835 (method url-fetch)
836 (uri (string-append "mirror://gnu/emms/emms-"
837 version ".tar.gz"))
838 (sha256
839 (base32
0985f526 840 "0ay6631p3dr6xnhkm7skwn0gp317r1mxbip28m126w4zqf05cbh3"))
77c9286d
LC
841 (modules '((guix build utils)))
842 (snippet
843 '(substitute* "Makefile"
844 (("/usr/bin/install-info")
845 ;; No need to use 'install-info' since it would create a
846 ;; useless 'dir' file.
847 "true")
848 (("^INFODIR=.*")
849 ;; Install Info files to $out/share/info, not $out/info.
850 "INFODIR := $(PREFIX)/share/info\n")
851 (("/site-lisp/emms")
852 ;; Install directly in share/emacs/site-lisp, not in a
853 ;; sub-directory.
854 "/site-lisp")
855 (("^all: (.*)\n" _ rest)
856 ;; Build 'emms-print-metadata'.
857 (string-append "all: " rest " emms-print-metadata\n"))))))
858 (build-system gnu-build-system)
859 (arguments
caaf1933 860 `(#:modules ((guix build gnu-build-system)
77c9286d
LC
861 (guix build utils)
862 (guix build emacs-utils))
caaf1933 863 #:imported-modules (,@%gnu-build-system-modules
77c9286d
LC
864 (guix build emacs-utils))
865
2fe176be
EF
866 #:phases
867 (modify-phases %standard-phases
868 (replace 'configure
869 (lambda* (#:key inputs outputs #:allow-other-keys)
870 (let ((out (assoc-ref outputs "out"))
871 (vorbis (assoc-ref inputs "vorbis-tools"))
872 (alsa (assoc-ref inputs "alsa-utils"))
873 (mpg321 (assoc-ref inputs "mpg321"))
874 (mp3info (assoc-ref inputs "mp3info")))
875 ;; Specify the installation directory.
876 (substitute* "Makefile"
877 (("PREFIX=.*$")
878 (string-append "PREFIX := " out "\n")))
879
880 (setenv "SHELL" (which "sh"))
881 (setenv "CC" "gcc")
882
883 ;; Specify the absolute file names of the various
884 ;; programs so that everything works out-of-the-box.
885 (with-directory-excursion "lisp"
886 (emacs-substitute-variables
887 "emms-player-mpg321-remote.el"
888 ("emms-player-mpg321-remote-command"
889 (string-append mpg321 "/bin/mpg321")))
890 (substitute* "emms-player-simple.el"
891 (("\"ogg123\"")
892 (string-append "\"" vorbis "/bin/ogg123\"")))
893 (emacs-substitute-variables "emms-info-ogginfo.el"
894 ("emms-info-ogginfo-program-name"
895 (string-append vorbis "/bin/ogginfo")))
896 (emacs-substitute-variables "emms-info-libtag.el"
897 ("emms-info-libtag-program-name"
898 (string-append out "/bin/emms-print-metadata")))
899 (emacs-substitute-variables "emms-info-mp3info.el"
900 ("emms-info-mp3info-program-name"
901 (string-append mp3info "/bin/mp3info")))
902 (substitute* "emms-volume-amixer.el"
903 (("\"amixer\"")
904 (string-append "\"" alsa "/bin/amixer\"")))
905 (substitute* "emms-tag-editor.el"
906 (("\"mp3info\"")
907 (string-append "\"" mp3info "/bin/mp3info\"")))))))
908 (add-before 'install 'pre-install
909 (lambda* (#:key outputs #:allow-other-keys)
910 ;; The 'install' rule expects the target directory to exist.
911 (let* ((out (assoc-ref outputs "out"))
912 (man1 (string-append out "/share/man/man1")))
913 (mkdir-p man1)
914 #t)))
915 (add-after 'install 'post-install
916 (lambda* (#:key outputs #:allow-other-keys)
917 (let* ((out (assoc-ref outputs "out"))
918 (target (string-append
919 out "/bin/emms-print-metadata")))
920 (symlink "emms-auto.el"
921 (string-append out "/share/emacs/site-lisp/"
922 "emms-autoloads.el"))
923 (mkdir-p (dirname target))
924 (copy-file "src/emms-print-metadata" target)
925 (chmod target #o555)))))
77c9286d 926 #:tests? #f))
b8fc3622 927 (native-inputs `(("emacs" ,emacs-minimal) ;for (guix build emacs-utils)
77c9286d 928 ("texinfo" ,texinfo)))
c72aed6d 929 (inputs `(("alsa-utils" ,alsa-utils)
77c9286d
LC
930 ("vorbis-tools" ,vorbis-tools)
931 ("mpg321" ,mpg321)
932 ("taglib" ,taglib)
933 ("mp3info" ,mp3info)))
934 (synopsis "Emacs Multimedia System")
935 (description
936 "EMMS is the Emacs Multimedia System. It is a small front-end which
937can control one of the supported external players. Thus, it supports
938whatever formats are supported by your music player. It also
939supports tagging and playlist management, all behind a clean and
940light user interface.")
941 (home-page "http://www.gnu.org/software/emms/")
f61e0e79 942 (license license:gpl3+)))
c7e553a3
LC
943
944\f
945;;;
946;;; Miscellaneous.
947;;;
948
949(define-public bbdb
950 (package
951 (name "bbdb")
952 (version "3.1.2")
953 (source (origin
954 (method url-fetch)
955 (uri (string-append "mirror://savannah/bbdb/bbdb-"
956 version ".tar.gz"))
957 (sha256
958 (base32
959 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
960 (modules '((guix build utils)))
961 (snippet
962 ;; We don't want to build and install the PDF.
963 '(substitute* "doc/Makefile.in"
964 (("^doc_DATA = .*$")
965 "doc_DATA =\n")))))
966 (build-system gnu-build-system)
967 (arguments
968 '(#:phases (alist-cons-after
969 'install 'post-install
970 (lambda* (#:key outputs #:allow-other-keys)
971 ;; Add an autoloads file with the right name for guix.el.
972 (let* ((out (assoc-ref outputs "out"))
973 (site (string-append out "/share/emacs/site-lisp")))
974 (with-directory-excursion site
975 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
976 %standard-phases)))
b8fc3622 977 (native-inputs `(("emacs" ,emacs-minimal)))
c7e553a3
LC
978 (home-page "http://savannah.nongnu.org/projects/bbdb/")
979 (synopsis "Contact management utility for Emacs")
980 (description
981 "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides
982an address book for email and snail mail addresses, phone numbers and the
983like. It can be linked with various Emacs mail clients (Message and Mail
984mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
f61e0e79 985 (license license:gpl3+)))
78395334 986
b654de6d
AK
987(define-public emacs-async
988 (package
989 (name "emacs-async")
a8ce82ac 990 (version "1.9")
b654de6d
AK
991 (source (origin
992 (method url-fetch)
993 (uri (string-append "http://elpa.gnu.org/packages/async-"
994 version ".tar"))
995 (sha256
996 (base32
a8ce82ac 997 "1ip5nc8xyln5szvqwp6wqva9xr84pn8ssn3nnphrszr19y4js2bm"))))
b654de6d
AK
998 (build-system emacs-build-system)
999 (home-page "http://elpa.gnu.org/packages/async.html")
1000 (synopsis "Asynchronous processing in Emacs")
1001 (description
1002 "This package provides the ability to call asynchronous functions and
1003processes. For example, it can be used to run dired commands (for copying,
1004moving, etc.) asynchronously using @code{dired-async-mode}. Also it is used
1005as a library for other Emacs packages.")
1006 (license license:gpl3+)))
1007
78395334
FB
1008(define-public emacs-auctex
1009 (package
1010 (name "emacs-auctex")
1011 (version "11.88.6")
1012 (source
1013 (origin
1014 (method url-fetch)
1015 (uri (string-append
1016 "http://elpa.gnu.org/packages/auctex-"
1017 version
1018 ".tar"))
1019 (sha256
1020 (base32
1021 "1pmki8hdjjikxlvip3pzi350bln3gcimr27yjf0xfwjvnp5hh9nc"))))
1022 (build-system emacs-build-system)
a6eafbed
AK
1023 ;; We use 'emacs' because AUCTeX requires dbus at compile time
1024 ;; ('emacs-minimal' does not provide dbus).
1025 (arguments `(#:emacs ,emacs))
78395334
FB
1026 (native-inputs
1027 `(("perl" ,perl)))
1028 (home-page "http://www.gnu.org/software/auctex/")
1029 (synopsis "Integrated environment for TeX")
1030 (description
1031 "AUCTeX is a comprehensive customizable integrated environment for
1032writing input files for TeX, LaTeX, ConTeXt, Texinfo, and docTeX using Emacs
1033or XEmacs.")
1034 (license license:gpl3+)))
85ef742c
FB
1035
1036(define-public emacs-mmm-mode
1037 (package
1038 (name "emacs-mmm-mode")
1039 (version "0.5.4")
1040 (source
1041 (origin
1042 (method url-fetch)
1043 (uri (string-append
0c909c05
AK
1044 "https://github.com/purcell/mmm-mode/archive/"
1045 version ".tar.gz"))
1046 (file-name (string-append name "-" version ".tar.gz"))
85ef742c
FB
1047 (sha256
1048 (base32
0c909c05
AK
1049 "10kwslnflbjqm62wkrq420crqzdqalzfflp9pqk1i12zm6dm4mfv"))))
1050 (build-system gnu-build-system)
1051 (arguments
1052 '(#:phases
1053 (modify-phases %standard-phases
1054 (add-after 'unpack 'autogen
1055 (lambda _
1056 (zero? (system* "sh" "autogen.sh")))))))
1057 (native-inputs
1058 `(("autoconf" ,autoconf)
1059 ("automake" ,automake)
b8fc3622 1060 ("emacs" ,emacs-minimal)
0c909c05 1061 ("texinfo" ,texinfo)))
85ef742c 1062 (home-page "https://github.com/purcell/mmm-mode")
0c909c05 1063 (synopsis "Allow multiple major modes in an Emacs buffer")
85ef742c 1064 (description
0c909c05 1065 "MMM Mode is a minor mode that allows multiple major modes to coexist in a
85ef742c
FB
1066single buffer.")
1067 (license license:gpl3+)))
ec9825d6
RW
1068
1069(define-public emacs-pdf-tools
1070 (package
1071 (name "emacs-pdf-tools")
eccd0b57 1072 (version "0.70")
ec9825d6
RW
1073 (source (origin
1074 (method url-fetch)
1075 (uri (string-append
1076 "https://github.com/politza/pdf-tools/archive/v"
1077 version ".tar.gz"))
1078 (file-name (string-append name "-" version ".tar.gz"))
1079 (sha256
1080 (base32
eccd0b57 1081 "1m0api6wiawswyk46bdsyk6r5rg3b86a4paar6nassm6x6c6vr77"))))
ec9825d6
RW
1082 (build-system gnu-build-system)
1083 (arguments
1084 `(#:tests? #f ; there are no tests
1085 #:modules ((guix build gnu-build-system)
1bcae5c5 1086 ((guix build emacs-build-system) #:prefix emacs:)
ec9825d6
RW
1087 (guix build utils)
1088 (guix build emacs-utils))
1089 #:imported-modules (,@%gnu-build-system-modules
1bcae5c5 1090 (guix build emacs-build-system)
ec9825d6
RW
1091 (guix build emacs-utils))
1092 #:phases
1093 (modify-phases %standard-phases
1bcae5c5
AK
1094 ;; Build server side using 'gnu-build-system'.
1095 (add-after 'unpack 'enter-server-dir
1096 (lambda _ (chdir "server") #t))
1097 (add-before 'configure 'autogen
1098 (lambda _
1099 (zero? (system* "bash" "autogen.sh"))))
1100
1101 ;; Build emacs side using 'emacs-build-system'.
1102 (add-after 'compress-documentation 'enter-lisp-dir
1103 (lambda _ (chdir "../lisp") #t))
1104 (add-after 'enter-lisp-dir 'emacs-patch-variables
1105 (lambda* (#:key outputs #:allow-other-keys)
1106 ;; Set path to epdfinfo program.
1107 (emacs-substitute-variables "pdf-info.el"
1108 ("pdf-info-epdfinfo-program"
1109 (string-append (assoc-ref outputs "out")
1110 "/bin/epdfinfo")))
1111 ;; Set 'pdf-tools-handle-upgrades' to nil to avoid "auto
1112 ;; upgrading" that pdf-tools tries to perform.
1113 (emacs-substitute-variables "pdf-tools.el"
1114 ("pdf-tools-handle-upgrades" '()))))
1115 (add-after 'emacs-patch-variables 'emacs-install
1116 (assoc-ref emacs:%standard-phases 'install))
1117 (add-after 'emacs-install 'emacs-build
1118 (assoc-ref emacs:%standard-phases 'build))
1119 (add-after 'emacs-install 'emacs-make-autoloads
1120 (assoc-ref emacs:%standard-phases 'make-autoloads)))))
ec9825d6
RW
1121 (native-inputs `(("autoconf" ,autoconf)
1122 ("automake" ,automake)
1123 ("pkg-config" ,pkg-config)
b8fc3622 1124 ("emacs" ,emacs-minimal)))
e6527d64
AK
1125 (propagated-inputs
1126 `(("let-alist" ,let-alist)))
ec9825d6
RW
1127 (inputs `(("poppler" ,poppler)
1128 ("cairo" ,cairo)
1129 ("glib" ,glib)
1130 ("libpng" ,libpng)
1131 ("zlib" ,zlib)))
1132 (synopsis "Emacs support library for PDF files")
1133 (description
1134 "PDF Tools is, among other things, a replacement of DocView for PDF
1135files. The key difference is that pages are not pre-rendered by
1136e.g. ghostscript and stored in the file-system, but rather created on-demand
1137and stored in memory.")
1138 (home-page "https://github.com/politza/pdf-tools")
1139 (license license:gpl3+)))
d4dbf10e
FB
1140
1141(define-public emacs-dash
1142 (package
1143 (name "emacs-dash")
fae2a30f 1144 (version "2.12.1")
d4dbf10e
FB
1145 (source (origin
1146 (method url-fetch)
1147 (uri (string-append
1148 "https://github.com/magnars/dash.el/archive/"
1149 version ".tar.gz"))
1150 (file-name (string-append name "-" version ".tar.gz"))
1151 (sha256
1152 (base32
fae2a30f 1153 "082jl7mp4x063bpj5ad2pc5125k0d6p7rb89gcj7ny3lma9h2ij1"))))
d4dbf10e
FB
1154 (build-system emacs-build-system)
1155 (arguments
1156 `(#:phases
1157 (modify-phases %standard-phases
1158 (add-before 'install 'check
1159 (lambda _
1160 (zero? (system* "./run-tests.sh")))))))
1161 (home-page "https://github.com/magnars/dash.el")
1162 (synopsis "Modern list library for Emacs")
1163 (description "This package provides a modern list API library for Emacs.")
1164 (license license:gpl3+)))
85777fe5 1165
1075b437
DB
1166(define-public emacs-undo-tree
1167 (package
1168 (name "emacs-undo-tree")
1169 (version "0.6.4")
1170 (source (origin
1171 (method git-fetch)
1172 (uri (git-reference
1173 (url "http://dr-qubit.org/git/undo-tree.git")
1174 (commit "release/0.6.4")))
1175 (file-name (string-append name "-" version "-checkout"))
1176 (sha256
1177 (base32
1178 "0b6hnv6bq1g5np5q2yw9r9aj1cxpp14akm21br7vpb7wp01fv4b3"))))
1179 (build-system emacs-build-system)
1180 (home-page "http://www.dr-qubit.org/emacs.php")
1181 (synopsis "Treat undo history as a tree")
1182 (description "Tree-like interface to Emacs undo system, providing
1183graphical tree presentation of all previous states of buffer that
1184allows easily move between them.")
1185 (license license:gpl3+)))
1186
85777fe5
FB
1187(define-public emacs-s
1188 (package
1189 (name "emacs-s")
1190 (version "1.9.0")
1191 (source (origin
1192 (method url-fetch)
1193 (uri (string-append
1194 "https://github.com/magnars/s.el/archive/"
1195 version ".tar.gz"))
1196 (file-name (string-append name "-" version ".tar.gz"))
1197 (sha256
1198 (base32
1199 "1gah2k577gvnmxlpw7zrz0jr571vghzhdv2hbgchlgah07czd091"))))
1200 (build-system emacs-build-system)
1201 (arguments
1202 `(#:phases
1203 (modify-phases %standard-phases
1204 (add-before 'install 'check
1205 (lambda _
1206 (zero? (system* "./run-tests.sh")))))))
1207 (home-page "https://github.com/magnars/s.el")
a124bbd2 1208 (synopsis "Emacs string manipulation library")
85777fe5
FB
1209 (description "This package provides an Emacs library for manipulating
1210strings.")
1211 (license license:gpl3+)))
cf9ce01f
FB
1212
1213(define-public emacs-f
1214 (package
1215 (name "emacs-f")
1216 (version "0.17.2")
1217 (source (origin
1218 (method url-fetch)
1219 (uri (string-append
1220 "https://github.com/rejeep/f.el/archive/v"
1221 version ".tar.gz"))
1222 (file-name (string-append name "-" version ".tar.gz"))
1223 (sha256
1224 (base32
1225 "1n5gcldf43wmkr7jxgs519v21zavwr0yn8048iv6gvgfwicnyjlx"))))
1226 (build-system emacs-build-system)
1227 (propagated-inputs
1228 `(("emacs-s" ,emacs-s)
1229 ("emacs-dash" ,emacs-dash)))
1230 (home-page "http://github.com/rejeep/f.el")
1231 (synopsis "Emacs API for working with files and directories")
1232 (description "This package provides an Emacs library for working with
1233files and directories.")
1234 (license license:gpl3+)))
48dbeef7
FB
1235
1236(define-public emacs-ob-ipython
1237 (package
1238 (name "emacs-ob-ipython")
1239 (version "20150704.8807064693")
1240 (source (origin
1241 (method git-fetch)
1242 (uri (git-reference
698bd297 1243 (commit "880706469338ab59b5bb7dbe8460016f89755364")
48dbeef7
FB
1244 (url "https://github.com/gregsexton/ob-ipython.git")))
1245 (sha256
1246 (base32
1247 "1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
1248 (build-system emacs-build-system)
1249 (propagated-inputs
1250 `(("emacs-f" ,emacs-f)))
1251 (home-page "http://www.gregsexton.org")
1252 (synopsis "Org-Babel functions for IPython evaluation")
1253 (description "This package adds support to Org-Babel for evaluating Python
1254source code using IPython.")
1255 (license license:gpl3+)))
6fd66b6c
LC
1256
1257(define-public emacs-debbugs
1258 (package
1259 (name "emacs-debbugs")
32e16112 1260 (version "0.9")
6fd66b6c
LC
1261 (source (origin
1262 (method url-fetch)
1263 (uri (string-append "http://elpa.gnu.org/packages/debbugs-"
1264 version ".tar"))
1265 (sha256
1266 (base32
32e16112 1267 "1wc6kw7hihqqdx8qyl01akygycnan44x400hwrcf54m3hb4isa0k"))))
6fd66b6c 1268 (build-system emacs-build-system)
32e16112
AK
1269 (propagated-inputs
1270 `(("emacs-async" ,emacs-async)))
6fd66b6c
LC
1271 (home-page "http://elpa.gnu.org/packages/debbugs.html")
1272 (synopsis "Access the Debbugs bug tracker in Emacs")
1273 (description
1274 "This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
1275Tracker} from within Emacs.
1276
1277For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
1278and the command @code{M-x debbugs-gnu-search} for bug searching. If you
1279prefer the listing of bugs as TODO items of @code{org-mode}, you could use
1280@code{M-x debbugs-org} and related commands.
1281
1282A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
1283Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
1284 (license license:gpl3+)))
3ffe36f5
LC
1285
1286(define-public emacs-deferred
1287 (package
1288 (name "emacs-deferred")
1289 (version "0.3.2")
1290 (home-page "https://github.com/kiwanami/emacs-deferred")
1291 (source (origin
1292 (method git-fetch)
1293 (uri (git-reference
1294 (url home-page)
1295 (commit (string-append "v" version))))
1296 (sha256
1297 (base32
1298 "0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
1299 (file-name (string-append name "-" version))))
1300 (build-system emacs-build-system)
1301 ;; FIXME: Would need 'el-expectations' to actually run tests.
1302 (synopsis "Simple asynchronous functions for Emacs Lisp")
1303 (description
1304 "The @code{deferred.el} library provides support for asynchronous tasks.
1305The API is almost the same as that of
1306@uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
1307for asynchronous tasks.")
1308 (license license:gpl3+)))
d001bb5a
LC
1309
1310(define-public butler
1311 (package
1312 (name "emacs-butler")
1313 (version "0.2.4")
1314 (home-page "https://github.com/AshtonKem/Butler")
1315 (source (origin
1316 (method git-fetch)
1317 (uri (git-reference
1318 (url home-page)
1319 (commit version)))
1320 (sha256
1321 (base32
1322 "1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
1323 (file-name (string-append name "-" version))))
1324 (build-system emacs-build-system)
1325 (propagated-inputs
1326 `(("emacs-deferred" ,emacs-deferred)))
1327 (synopsis "Emacs client for Jenkins")
1328 (description
1329 "Butler provides an interface to connect to Jenkins continuous
1330integration servers. Users can specify a list of server in the
1331@code{butler-server-list} variable and then use @code{M-x butler-status} to
1332view the build status of those servers' build jobs, and possibly to trigger
1333build jobs.")
1334 (license license:gpl3+)))
2d1db448 1335
d1dbeddd
RW
1336(define-public emacs-company
1337 (package
1338 (name "emacs-company")
1339 (version "0.8.12")
1340 (source
1341 (origin
1342 (method url-fetch)
1343 (uri (string-append "https://github.com/company-mode/company-mode/archive/"
1344 version ".tar.gz"))
1345 (file-name (string-append name "-" version ".tar.gz"))
1346 (sha256
1347 (base32
1348 "1vwmbqm7h4lrszv2qxy6fqzznm9raigi84cadx982c9m7shp0zzz"))))
1349 (build-system emacs-build-system)
1350 (home-page "http://company-mode.github.io/")
1351 (synopsis "Modular text completion framework")
1352 (description
1353 "Company is a modular completion mechanism. Modules for retrieving
1354completion candidates are called back-ends, modules for displaying them are
1355front-ends. Company comes with many back-ends, e.g. @code{company-elisp}.
1356These are distributed in separate files and can be used individually.")
1357 (license license:gpl3+)))
1358
7c438099
RW
1359(define-public emacs-multiple-cursors
1360 (package
1361 (name "emacs-multiple-cursors")
1362 (version "1.4.0")
1363 (source
1364 (origin
1365 (method url-fetch)
1366 (uri (string-append "https://github.com/magnars/multiple-cursors.el/"
1367 "archive/" version ".tar.gz"))
1368 (file-name (string-append name "-" version ".tar.gz"))
1369 (sha256
1370 (base32
1371 "0hihihlvcvzayg5fnqzcg45fhvlmq6xlq58syy00rjwbry9w389k"))))
1372 (build-system emacs-build-system)
1373 (home-page "https://github.com/magnars/multiple-cursors.el")
1374 (synopsis "Multiple cursors for Emacs")
1375 (description
1376 "This package adds support to Emacs for editing text with multiple
1377simultaneous cursors.")
1378 (license license:gpl3+)))
1379
2d1db448
LC
1380(define-public typo
1381 (package
1382 (name "emacs-typo")
1383 (version "1.1")
1384 (home-page "https://github.com/jorgenschaefer/typoel")
1385 (source (origin
1386 (method git-fetch)
1387 (uri (git-reference
1388 (url home-page)
1389 (commit (string-append "v" version))))
1390 (sha256
1391 (base32
1392 "1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
1393 (file-name (string-append name "-" version))))
1394 (build-system emacs-build-system)
1395 (synopsis "Minor mode for typographic editing")
1396 (description
1397 "This package provides two Emacs modes, @code{typo-mode} and
1398@code{typo-global-mode}. These modes automatically insert Unicode characters
1399for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
1400automatically inserts a Unicode opening or closing quotation mark, depending
1401on context.")
1402 (license license:gpl3+)))
e037a09f
FB
1403
1404(define-public emacs-scheme-complete
1405 (let ((commit "9b5cf224bf2a5994bc6d5b152ff487517f1a9bb5"))
1406 (package
1407 (name "emacs-scheme-complete")
1408 (version (string-append "20151223." (string-take commit 8)))
1409 (source
1410 (origin
1411 (file-name (string-append name "-" version))
1412 (method git-fetch)
1413 (uri (git-reference
1414 (url "https://github.com/ashinn/scheme-complete.git")
1415 (commit commit)))
1416 (sha256
1417 (base32
1418 "141wn9l0m33w0g3dqmx8nxbfdny1r5xbr6ak61rsz21bk0qafs7x"))
1419 (patches
fc1adab1 1420 (search-patches "emacs-scheme-complete-scheme-r5rs-info.patch"))))
e037a09f
FB
1421 (build-system emacs-build-system)
1422 (home-page "https://github.com/ashinn/scheme-complete")
1423 (synopsis "Smart tab completion for Scheme in Emacs")
1424 (description
1425 "This file provides a single function, @code{scheme-smart-complete},
1426which you can use for intelligent, context-sensitive completion for any Scheme
1427implementation in Emacs. To use it just load this file and bind that function
1428to a key in your preferred mode.")
1429 (license license:public-domain))))
58a7dc13
FB
1430
1431(define-public emacs-mit-scheme-doc
1432 (package
1433 (name "emacs-mit-scheme-doc")
1434 (version "20140203")
1435 (source
1436 (origin
1437 (modules '((guix build utils)))
1438 (snippet
1439 ;; keep only file of interest
1440 '(begin
1441 (for-each delete-file '("dot-emacs.el" "Makefile"))
1442 (copy-file "6.945-config/mit-scheme-doc.el" "mit-scheme-doc.el")
1443 (delete-file-recursively "6.945-config")))
1444 (file-name (string-append name "-" version ".tar.bz2"))
1445 (method url-fetch)
1446 (uri (string-append "http://groups.csail.mit.edu/mac/users/gjs/"
1447 "6.945/dont-panic/emacs-basic-config.tar.bz2"))
1448 (sha256
1449 (base32
1450 "0dqidg2bd66pawqfarvwca93w5gqf9mikn1k2a2rmd9ymfjpziq1"))))
1451 (build-system emacs-build-system)
1452 (inputs `(("mit-scheme" ,mit-scheme)))
1453 (arguments
1454 `(#:phases
1455 (modify-phases %standard-phases
1456 (add-after 'unpack 'configure-doc
1457 (lambda* (#:key inputs #:allow-other-keys)
1458 (let* ((mit-scheme-dir (assoc-ref inputs "mit-scheme"))
1459 (doc-dir (string-append mit-scheme-dir "/share/doc/"
1460 "mit-scheme-"
1461 ,(package-version mit-scheme))))
1462 (substitute* "mit-scheme-doc.el"
1463 (("http://www\\.gnu\\.org/software/mit-scheme/documentation/mit-scheme-ref/")
1464 (string-append "file:" doc-dir "/mit-scheme-ref/")))))))))
1465 (home-page "http://groups.csail.mit.edu/mac/users/gjs/6.945/dont-panic/")
1466 (synopsis "MIT-Scheme documentation lookup for Emacs")
1467 (description
1468 "This package provides a set of Emacs functions to search definitions of
1469identifiers in the MIT-Scheme documentation.")
1470 (license license:gpl2+)))
e5045f30 1471
e5045f30
FB
1472(define-public emacs-constants
1473 (package
1474 (name "emacs-constants")
f99f3f24 1475 (version "2.6")
a9e41d2f 1476 (home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
e5045f30
FB
1477 (source
1478 (origin
37dbfc50 1479 (file-name (string-append name "-" version ".tar.gz"))
f99f3f24
FB
1480 (method url-fetch)
1481 (uri (string-append "https://github.com/fedeinthemix/emacs-constants"
1482 "/archive/v" version ".tar.gz"))
e5045f30
FB
1483 (sha256
1484 (base32
f99f3f24 1485 "0pnrpmmxq8mh5h2hbrp5vcym0j0fh6dv3s7c5ccn18wllhzg9g7n"))))
e5045f30 1486 (build-system emacs-build-system)
e5045f30
FB
1487 (synopsis "Enter definition of constants into an Emacs buffer")
1488 (description
1489 "This package provides functions for inserting the definition of natural
1490constants and units into an Emacs buffer.")
1491 (license license:gpl2+)))
85960693
FB
1492
1493(define-public emacs-slime
1494 (package
1495 (name "emacs-slime")
1496 (version "2.15")
1497 (source
1498 (origin
1499 (file-name (string-append name "-" version ".tar.gz"))
1500 (method url-fetch)
1501 (uri (string-append
1502 "https://github.com/slime/slime/archive/v"
1503 version ".tar.gz"))
1504 (sha256
1505 (base32
1506 "0l2z6l2xm78mhh0nczkrmzh2ddb1n911ij9xb6q40zwvx4f8blds"))))
1507 (build-system emacs-build-system)
1508 (native-inputs
1509 `(("texinfo" ,texinfo)))
1510 (arguments
1511 `(#:phases
1512 (modify-phases %standard-phases
1513 (add-before 'install 'configure
1514 (lambda* _
1515 (emacs-substitute-variables "slime.el"
1516 ("inferior-lisp-program" "sbcl"))
1517 #t))
1518 (add-before 'install 'install-doc
1519 (lambda* (#:key outputs #:allow-other-keys)
1520 (let* ((out (assoc-ref outputs "out"))
1521 (info-dir (string-append out "/share/info"))
1522 (doc-dir (string-append out "/share/doc/"
1523 ,name "-" ,version))
1524 (doc-files '("doc/slime-refcard.pdf"
1525 "README.md" "NEWS" "PROBLEMS"
1526 "CONTRIBUTING.md")))
1527 (with-directory-excursion "doc"
1528 (substitute* "Makefile"
1529 (("infodir=/usr/local/info")
1530 (string-append "infodir=" info-dir)))
1531 (system* "make" "html/index.html")
1532 (system* "make" "slime.info")
1533 (install-file "slime.info" info-dir)
1534 (copy-recursively "html" (string-append doc-dir "/html")))
1535 (for-each (lambda (f)
1536 (install-file f doc-dir)
1537 (delete-file f))
1538 doc-files)
1539 (delete-file-recursively "doc")
1540 #t))))))
1541 (home-page "https://github.com/slime/slime")
1542 (synopsis "Superior Lisp Interaction Mode for Emacs")
1543 (description
1544 "SLIME extends Emacs with support for interactive programming in
1545Common Lisp. The features are centered around @{slime-mode}, an Emacs
1546minor mode that complements the standard @{lisp-mode}. While lisp-mode
1547supports editing Lisp source files, @{slime-mode} adds support for
1548interacting with a running Common Lisp process for compilation,
1549debugging, documentation lookup, and so on.")
1550 (license license:gpl2+)))
e11d14fe 1551
1552(define-public emacs-popup
1553 (package
1554 (name "emacs-popup")
1555 (version "0.5.3")
1556 (source (origin
1557 (method url-fetch)
1558 (uri (string-append
1559 "https://github.com/auto-complete/popup-el/archive/v"
1560 version ".tar.gz"))
1561 (file-name (string-append name "-" version ".tar.gz"))
1562 (sha256
1563 (base32
1564 "1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
1565 (build-system emacs-build-system)
e11d14fe 1566 (home-page "https://github.com/auto-complete/popup-el")
1567 (synopsis "Visual Popup User Interface for Emacs")
1568 (description
1569 "Popup.el is a visual popup user interface library for Emacs.
1570This provides a basic API and common UI widgets such as popup tooltips
1571and popup menus.")
1572 (license license:gpl3+)))
48766ea8
RW
1573
1574(define-public emacs-god-mode
1575 (let ((commit "6cf0807b6555eb6fcf8387a4e3b667071ef38964")
1576 (revision "1"))
1577 (package
1578 (name "emacs-god-mode")
1579 (version (string-append "20151005.925."
1580 revision "-" (string-take commit 9)))
1581 (source
1582 (origin
1583 (method git-fetch)
1584 (uri (git-reference
1585 (url "https://github.com/chrisdone/god-mode.git")
1586 (commit commit)))
1587 (file-name (string-append name "-" version "-checkout"))
1588 (sha256
1589 (base32
1590 "1am415k4xxcva6y3vbvyvknzc6bma49pq3p85zmpjsdmsp18qdix"))))
1591 (build-system emacs-build-system)
1592 (home-page "https://github.com/chrisdone/god-mode")
1593 (synopsis "Minor mode for entering commands without modifier keys")
1594 (description
1595 "This package provides a global minor mode for entering Emacs commands
1596without modifier keys. It's similar to Vim's separation of commands and
1597insertion mode. When enabled all keys are implicitly prefixed with
1598@samp{C-} (among other helpful shortcuts).")
1599 (license license:gpl3+))))
4670f70a
CM
1600
1601(define-public emacs-rfcview
1602 (package
1603 (name "emacs-rfcview")
1604 (version "0.13")
1605 (home-page "http://www.loveshack.ukfsn.org/emacs")
1606 (source (origin
02736daa 1607 (method url-fetch)
4670f70a
CM
1608 (uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
1609 (sha256
1610 (base32
1611 "0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
1612 (build-system emacs-build-system)
4670f70a
CM
1613 (synopsis "Prettify Request for Comments (RFC) documents")
1614 (description "The Internet Engineering Task Force (IETF) and the Internet
1615Society (ISOC) publish various Internet-related protocols and specifications
1616as \"Request for Comments\" (RFC) documents and Internet Standard (STD)
1617documents. RFCs and STDs are published in a simple text form. This package
1618provides an Emacs major mode, rfcview-mode, which makes it more pleasant to
1619read these documents in Emacs. It prettifies the text and adds
1620hyperlinks/menus for easier navigation. It also provides functions for
1621browsing the index of RFC documents and fetching them from remote servers or
1622local directories.")
1623 (license license:gpl3+)))
1624
9e9c71eb
CM
1625(define-public emacs-ffap-rfc-space
1626 (package
1627 (name "emacs-ffap-rfc-space")
1628 (version "12")
1629 (home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
1630 (source (origin
02736daa 1631 (method url-fetch)
9e9c71eb
CM
1632 (uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
1633 (sha256
1634 (base32
1635 "1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
1636 (build-system emacs-build-system)
9e9c71eb
CM
1637 (synopsis "Make ffap recognize an RFC with a space before its number")
1638 (description "The Internet Engineering Task Force (IETF) and the
1639Internet Society (ISOC) publish various Internet-related protocols and
1640specifications as \"Request for Comments\" (RFC) documents. The
1641built-in Emacs module \"ffap\" (Find File at Point) has the ability to
1642recognize names at point which look like \"RFC1234\" and \"RFC-1234\"
1643and load the appropriate RFC from a remote server. However, it fails
1644to recognize a name like \"RFC 1234\". This package enhances ffap so
1645that it correctly finds RFCs even when a space appears before the
1646number.")
1647 (license license:gpl3+)))
9576cc72 1648
db1a4960
RW
1649(define-public emacs-org-bullets
1650 (package
1651 (name "emacs-org-bullets")
1652 (version "0.2.4")
1653 (source
1654 (origin
1655 (method url-fetch)
1656 (uri (string-append "https://github.com/sabof/org-bullets/archive/"
1657 version ".tar.gz"))
1658 (file-name (string-append name "-" version ".tar.gz"))
1659 (sha256
1660 (base32
1661 "1dyxvpb73vj80v8br2q9rf255hfphrgaw91fbvwdcd735np9pcnh"))))
1662 (build-system emacs-build-system)
1663 (home-page "https://github.com/sabof/org-bullets")
1664 (synopsis "Show bullets in org-mode as UTF-8 characters")
1665 (description
1666 "This package provides an Emacs minor mode causing bullets in
1667@code{org-mode} to be rendered as UTF-8 characters.")
1668 (license license:gpl3+)))
1669
9576cc72
AP
1670(define-public emacs-zenburn-theme
1671 (package
1672 (name "emacs-zenburn-theme")
1673 (version "2.4")
1674 (source (origin
1675 (method url-fetch)
1676 (uri (string-append
1677 "https://github.com/bbatsov/zenburn-emacs/archive/v"
1678 version ".tar.gz"))
1679 (file-name (string-append name "-" version ".tar.gz"))
1680 (sha256
1681 (base32
1682 "0lyi84bm8sa7vj40n6zg6rlbsmi53mi1y9xn6gkjj29s5zbcnlg7"))))
1683 (build-system emacs-build-system)
1684 (home-page "http://github.com/bbatsov/zenburn-emacs")
1685 (synopsis "Low contrast color theme for Emacs")
1686 (description
1687 "Zenburn theme is a port of the popular Vim Zenburn theme for Emacs.
1688It is built on top of the custom theme support in Emacs 24 or later.")
1689 (license license:gpl3+)))
1690
5c447e28
AP
1691(define-public emacs-smartparens
1692 (package
1693 (name "emacs-smartparens")
1694 (version "1.7.1")
1695 (source (origin
1696 (method url-fetch)
1697 (uri (string-append
1698 "https://github.com/Fuco1/smartparens/archive/"
1699 version ".tar.gz"))
1700 (file-name (string-append name "-" version ".tar.gz"))
1701 (sha256
1702 (base32
1703 "1b47ppkzsj8j8a2p0bmvq05rhm2d2lsm3wlc0sg542r4zr6nji8s"))))
1704 (build-system emacs-build-system)
1705 (propagated-inputs `(("emacs-dash" ,emacs-dash)))
1706 (home-page "https://github.com/Fuco1/smartparens")
1707 (synopsis "Paredit-like insertion, wrapping and navigation with user
1708defined pairs")
1709 (description
1710 "Smartparens is a minor mode for Emacs that deals with parens pairs
1711and tries to be smart about it. It started as a unification effort to
1712combine functionality of several existing packages in a single,
1713compatible and extensible way to deal with parentheses, delimiters, tags
1714and the like. Some of these packages include autopair, textmate,
1715wrap-region, electric-pair-mode, paredit and others. With the basic
1716features found in other packages it also brings many improvements as
1717well as completely new features.")
1718 (license license:gpl3+)))
8eeb301d 1719
79b3d3ea
RW
1720(define-public emacs-hydra
1721 (package
1722 (name "emacs-hydra")
1723 (version "0.13.0")
1724 (source
1725 (origin
1726 (method url-fetch)
1727 (uri (string-append "https://github.com/abo-abo/hydra/archive/"
1728 version ".tar.gz"))
1729 (file-name (string-append name "-" version ".tar.gz"))
1730 (sha256
1731 (base32
1732 "19ynkjlg3jj7x90xxbz885324h6nkxmzlb2c2c95xkr20zckn0lk"))))
1733 (build-system emacs-build-system)
1734 (home-page "https://github.com/abo-abo/hydra")
1735 (synopsis "Make Emacs bindings that stick around")
1736 (description
1737 "This package can be used to tie related commands into a family of short
1738bindings with a common prefix---a Hydra. Once you summon the Hydra (through
1739the prefixed binding), all the heads can be called in succession with only a
1740short extension. Any binding that isn't the Hydra's head vanquishes the
1741Hydra. Note that the final binding, besides vanquishing the Hydra, will still
1742serve its original purpose, calling the command assigned to it. This makes
1743the Hydra very seamless; it's like a minor mode that disables itself
1744automatically.")
1745 (license license:gpl3+)))
1746
12db29ba
RW
1747(define-public emacs-ivy
1748 (package
1749 (name "emacs-ivy")
1750 (version "0.8.0")
1751 (source
1752 (origin
1753 (method url-fetch)
1754 (uri (string-append "https://github.com/abo-abo/swiper/archive/"
1755 version ".tar.gz"))
1756 (file-name (string-append name "-" version ".tar.gz"))
1757 (sha256
1758 (base32
1759 "18nqwl05is71dzswnvpfhlg7b0v3apvbsfxrwab9c0apwavi892q"))))
1760 (build-system emacs-build-system)
1761 (propagated-inputs
1762 `(("emacs-hydra" ,emacs-hydra)))
1763 (home-page "http://oremacs.com/swiper/")
1764 (synopsis "Incremental vertical completion for Emacs")
1765 (description
1766 "This package provides @code{ivy-read} as an alternative to
1767@code{completing-read} and similar functions. No attempt is made to determine
1768the best candidate. Instead, the user can navigate candidates with
1769@code{ivy-next-line} and @code{ivy-previous-line}. The matching is done by
1770splitting the input text by spaces and re-building it into a regular
1771expression.")
1772 (license license:gpl3+)))
1773
5edc24ec
RW
1774(define-public emacs-avy
1775 (package
1776 (name "emacs-avy")
1777 (version "0.4.0")
1778 (source
1779 (origin
1780 (method url-fetch)
1781 (uri (string-append "https://github.com/abo-abo/avy/archive/"
1782 version ".tar.gz"))
1783 (file-name (string-append name "-" version ".tar.gz"))
1784 (sha256
1785 (base32
1786 "1wdrq512h25ymzjbf2kbsdymvd2ryfwzb6bh5bc3yv7q203im796"))))
1787 (build-system emacs-build-system)
1788 (home-page "https://github.com/abo-abo/avy")
1789 (synopsis "Tree-based completion for Emacs")
1790 (description
1791 "This package provides a generic completion method based on building a
1792balanced decision tree with each candidate being a leaf. To traverse the tree
1793from the root to a desired leaf, typically a sequence of @code{read-key} can
1794be used.
1795
1796In order for @code{read-key} to make sense, the tree needs to be visualized
1797appropriately, with a character at each branch node. So this completion
1798method works only for things that you can see on your screen, all at once,
1799such as the positions of characters, words, line beginnings, links, or
1800windows.")
1801 (license license:gpl3+)))
1802
93dba17c
RW
1803(define-public emacs-ace-window
1804 (package
1805 (name "emacs-ace-window")
1806 (version "0.9.0")
1807 (source
1808 (origin
1809 (method url-fetch)
1810 (uri (string-append "https://github.com/abo-abo/ace-window/archive/"
1811 version ".tar.gz"))
1812 (file-name (string-append name "-" version ".tar.gz"))
1813 (sha256
1814 (base32
1815 "1p2sgfl5dml4zbd6ldql6lm2m9vmd236ah996ni32x254s48j5pn"))))
1816 (build-system emacs-build-system)
1817 (propagated-inputs
1818 `(("emacs-avy" ,emacs-avy)))
1819 (home-page "https://github.com/abo-abo/ace-window")
1820 (synopsis "Quickly switch windows in Emacs")
1821 (description
1822 "@code{ace-window} is meant to replace @code{other-window}.
1823In fact, when there are only two windows present, @code{other-window} is
1824called. If there are more, each window will have its first character
1825highlighted. Pressing that character will switch to that window.")
1826 (license license:gpl3+)))
1827
e1918ce4
RW
1828(define-public emacs-iedit
1829 (package
1830 (name "emacs-iedit")
1831 (version "0.9.9")
1832 (source
1833 (origin
1834 (method url-fetch)
1835 (uri (string-append "https://github.com/victorhge/iedit/archive/v"
1836 version ".tar.gz"))
1837 (file-name (string-append name "-" version ".tar.gz"))
1838 (sha256
1839 (base32
1840 "00v86zllcsivmiibigbr91qij2zdf1lr9db8z8again1sn63wkdj"))))
1841 (build-system emacs-build-system)
1842 (home-page "http://www.emacswiki.org/emacs/Iedit")
1843 (synopsis "Edit multiple regions in the same way simultaneously")
1844 (description
1845 "This package is an Emacs minor mode and allows you to edit one
1846occurrence of some text in a buffer (possibly narrowed) or region, and
1847simultaneously have other occurrences edited in the same way.
1848
1849You can also use Iedit mode as a quick way to temporarily show only the buffer
1850lines that match the current text being edited. This gives you the effect of
1851a temporary @code{keep-lines} or @code{occur}.")
1852 (license license:gpl3+)))
1853
8eeb301d
AP
1854(define-public emacs-clojure-mode
1855 (package
1856 (name "emacs-clojure-mode")
1857 (version "5.3.0")
1858 (source (origin
1859 (method url-fetch)
1860 (uri (string-append
1861 "https://github.com/clojure-emacs/clojure-mode/archive/"
1862 version ".tar.gz"))
1863 (file-name (string-append name "-" version ".tar.gz"))
1864 (sha256
1865 (base32
1866 "0gi8ra3ap5m3mz4qh1yxp2cldn7z9xcxvypznr6rrlc6a9l8s5a6"))))
1867 (build-system emacs-build-system)
1868 (home-page "http://github.com/clojure-emacs/clojure-mode")
1869 (synopsis "Major mode for Clojure code")
1870 (description
1871 "This Emacs package provides font-lock, indentation, navigation and basic
1872refactoring for the @uref{http://clojure.org, Clojure programming language}.
1873It is recommended to use @code{clojure-mode} with paredit or smartparens.")
1874 (license license:gpl3+)))
d345491a
AP
1875
1876(define-public emacs-epl
1877 (package
1878 (name "emacs-epl")
1879 (version "0.8")
1880 (source (origin
1881 (method url-fetch)
1882 (uri (string-append
1883 "https://github.com/cask/epl/archive/"
1884 version ".tar.gz"))
1885 (sha256
1886 (base32
1887 "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
1888 (build-system emacs-build-system)
1889 (home-page "http://github.com/cask/epl")
1890 (synopsis "Emacs Package Library")
1891 (description
1892 "A package management library for Emacs, based on @code{package.el}.
1893
1894The purpose of this library is to wrap all the quirks and hassle of
1895@code{package.el} into a sane API.")
1896 (license license:gpl3+)))
ad6c4bc4
AP
1897
1898(define-public emacs-queue
1899 (package
1900 (name "emacs-queue")
1901 (version "0.1.1")
1902 (source (origin
02736daa 1903 (method url-fetch)
ad6c4bc4
AP
1904 (uri (string-append "http://elpa.gnu.org/packages/queue-"
1905 version ".el"))
1906 (sha256
1907 (base32
1908 "0jw24fxqnf9qcaf2nh09cnds1kqfk7hal35dw83x1ari95say391"))))
1909 (build-system emacs-build-system)
1910 (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
1911 (synopsis "Queue data structure for Emacs")
1912 (description
1913 "This Emacs library provides queue data structure. These queues can be
1914used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
1915stack, i.e. elements can be added to the front or back of the queue, and can
1916be removed from the front. This type of data structure is sometimes called an
1917\"output-restricted deque\".")
1918 (license license:gpl3+)))
32abfcf4
AP
1919
1920(define-public emacs-pkg-info
1921 (package
1922 (name "emacs-pkg-info")
1923 (version "0.6")
1924 (source (origin
1925 (method url-fetch)
1926 (uri (string-append
1927 "https://github.com/lunaryorn/pkg-info.el/archive/"
1928 version ".tar.gz"))
1929 (file-name (string-append name "-" version ".tar.gz"))
1930 (sha256
1931 (base32
1932 "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
1933 (build-system emacs-build-system)
1934 (propagated-inputs `(("emacs-epl" ,emacs-epl)))
1935 (home-page "https://github.com/lunaryorn/pkg-info.el")
1936 (synopsis "Information about Emacs packages")
1937 (description
1938 "This library extracts information from the installed Emacs packages.")
1939 (license license:gpl3+)))
565bccc5
AP
1940
1941(define-public emacs-spinner
1942 (package
1943 (name "emacs-spinner")
1944 (version "1.7.1")
1945 (source (origin
02736daa 1946 (method url-fetch)
565bccc5
AP
1947 (uri (string-append "http://elpa.gnu.org/packages/spinner-"
1948 version ".el"))
1949 (sha256
1950 (base32
1951 "1fmwzdih0kbyvs8bn38mpm4sbs2mikqy2vdykfy9g20wpa8vb681"))))
1952 (build-system emacs-build-system)
1953 (home-page "https://github.com/Malabarba/spinner.el")
1954 (synopsis "Emacs mode-line spinner for operations in progress")
1955 (description
1956 "This Emacs package adds spinners and progress-bars to the mode-line for
1957ongoing operations.")
1958 (license license:gpl3+)))
62a45cb6
AP
1959
1960(define-public emacs-seq
1961 (package
1962 (name "emacs-seq")
1963 (version "2.15")
1964 (source (origin
1965 (method url-fetch)
1966 (uri (string-append "http://elpa.gnu.org/packages/seq-"
1967 version ".tar"))
1968 (sha256
1969 (base32
1970 "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"))))
1971 (build-system emacs-build-system)
1972 (home-page "http://elpa.gnu.org/packages/seq.html")
1973 (synopsis "Sequence manipulation functions for Emacs")
1974 (description
1975 "This Emacs library provides sequence-manipulation functions that
1976complement basic functions provided by @code{subr.el}. All provided functions
1977work on lists, strings and vectors.")
1978 (license license:gpl3+)))
6ede256f
DT
1979
1980(define-public emacs-better-defaults
1981 (package
1982 (name "emacs-better-defaults")
1983 (version "0.1.3")
1984 (source
1985 (origin
1986 (method url-fetch)
1987 (uri (string-append "https://github.com/technomancy/better-defaults"
1988 "/archive/" version ".tar.gz"))
13384842 1989 (file-name (string-append name "-" version ".tar.gz"))
6ede256f
DT
1990 (sha256
1991 (base32
1992 "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
1993 (build-system emacs-build-system)
1994 (home-page "https://github.com/technomancy/better-defaults")
1995 (synopsis "Better defaults for Emacs")
1996 (description
1997 "Better defaults attempts to address the most obvious deficiencies of the
1998Emacs default configuration in uncontroversial ways that nearly everyone can
1999agree upon.")
2000 (license license:gpl3+)))
c5c08f1b
DT
2001
2002(define-public emacs-smex
2003 (package
2004 (name "emacs-smex")
2005 (version "3.0")
2006 (source (origin
2007 (method url-fetch)
2008 (uri (string-append "https://raw.githubusercontent.com"
2009 "/nonsequitur/smex/" version "/smex.el"))
2010 (file-name (string-append "smex-" version ".el"))
2011 (sha256
2012 (base32
2013 "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
2014 (build-system emacs-build-system)
2015 (home-page "http://github.com/nonsequitur/smex/")
2016 (synopsis "M-x interface with Ido-style fuzzy matching")
2017 (description
2018 "Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a
2019convenient interface to your recently and most frequently used commands. And
2020to all the other commands, too.")
2021 (license license:gpl3+)))
3e5be84b
DT
2022
2023(define-public emacs-js2-mode
2024 (package
2025 (name "emacs-js2-mode")
2026 (version "20150909")
2027 (source (origin
2028 (method url-fetch)
2029 (uri (string-append "https://github.com/mooz/js2-mode/archive/"
2030 version ".tar.gz"))
2031 (file-name (string-append name "-" version ".tar.gz"))
2032 (sha256
2033 (base32
2034 "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
2035 (build-system emacs-build-system)
2036 (home-page "https://github.com/mooz/js2-mode/")
2037 (synopsis "Improved JavaScript editing mode for Emacs")
2038 (description
2039 "Js2-mode provides a JavaScript major mode for Emacs that is more
2040advanced than the built-in javascript-mode. Features include accurate syntax
2041highlighting using a recursive-descent parser, on-the-fly reporting of syntax
2042errors and strict-mode warnings, smart line-wrapping within comments and
2043strings, and code folding.")
2044 (license license:gpl3+)))
b78b6e80
DT
2045
2046(define-public emacs-markdown-mode
2047 (package
2048 (name "emacs-markdown-mode")
2049 (version "2.1")
2050 (source (origin
2051 (method url-fetch)
2052 (uri (string-append "https://raw.githubusercontent.com/jrblevin"
2053 "/markdown-mode/v" version
2054 "/markdown-mode.el"))
2055 (file-name (string-append "markdown-mode-" version ".el"))
2056 (sha256
2057 (base32
2058 "1faibar32jnjia9202swblw91q6z1g5s4k9xmypwjahfh8yznl6w"))))
2059 (build-system emacs-build-system)
2060 (home-page "http://jblevins.org/projects/markdown-mode/")
2061 (synopsis "Emacs Major mode for Markdown files")
2062 (description
2063 "Markdown-mode is a major mode for editing Markdown-formatted text files
2064in Emacs.")
2065 (license license:gpl3+)))
a2670dde
DT
2066
2067(define-public emacs-projectile
2068 (package
2069 (name "emacs-projectile")
2070 (version "0.13.0")
2071 (source (origin
2072 (method url-fetch)
2073 (uri (string-append "https://raw.githubusercontent.com/bbatsov"
2074 "/projectile/v" version "/projectile.el"))
2075 (file-name (string-append "projectile-" version ".el"))
2076 (sha256
2077 (base32
2078 "1pc6xb61hzxzc5hkqkli1ab0s7wz0rfgx4kcn9y30ksvhw18smbz"))))
2079 (build-system emacs-build-system)
2080 (propagated-inputs
2081 `(("emacs-dash" ,emacs-dash)
2082 ("emacs-pkg-info" ,emacs-pkg-info)))
2083 (home-page "https://github.com/bbatsov/projectile")
2084 (synopsis "Manage and navigate projects in Emacs easily")
2085 (description
2086 "This library provides easy project management and navigation. The
2087concept of a project is pretty basic - just a folder containing special file.
2088Currently git, mercurial and bazaar repos are considered projects by default.
2089If you want to mark a folder manually as a project just create an empty
2090.projectile file in it.")
2091 (license license:gpl3+)))
4aea1e01
DT
2092
2093(define-public emacs-elfeed
2094 (package
2095 (name "emacs-elfeed")
2096 (version "1.4.1")
2097 (source (origin
2098 (method url-fetch)
2099 (uri (string-append "https://github.com/skeeto/elfeed/archive/"
2100 version ".tar.gz"))
2101 (file-name (string-append name "-" version ".tar.gz"))
2102 (sha256
2103 (base32
2104 "0i75r8x9ypbfjlnym04h16ikcrlks86p7wsgawrx7mh1lk4inp89"))))
2105 (build-system emacs-build-system)
2106 (home-page "https://github.com/skeeto/elfeed")
2107 (synopsis "Atom/RSS feed reader for Emacs")
2108 (description
2109 "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
2110and RSS, with a user interface inspired by notmuch.")
2111 (license license:gpl3+)))
c86f0207
DT
2112
2113(define-public emacs-rainbow-delimiters
2114 (package
2115 (name "emacs-rainbow-delimiters")
2116 (version "2.1.3")
2117 (source (origin
2118 (method url-fetch)
2119 (uri (string-append "https://raw.githubusercontent.com/Fanael"
2120 "/rainbow-delimiters/" version
2121 "/rainbow-delimiters.el"))
2122 (file-name (string-append "rainbow-delimiters-" version ".el"))
2123 (sha256
2124 (base32
2125 "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
2126 (build-system emacs-build-system)
2127 (home-page "https://github.com/Fanael/rainbow-delimiters")
2128 (synopsis "Highlight brackets according to their depth")
2129 (description
2130 "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
2131highlights parentheses, brackets, and braces according to their depth. Each
2132successive level is highlighted in a different color, making it easy to spot
2133matching delimiters, orient yourself in the code, and tell which statements
2134are at a given level.")
2135 (license license:gpl3+)))
65b49ae7 2136
d95e8e01
RJ
2137(define-public emacs-rainbow-identifiers
2138 (package
2139 (name "emacs-rainbow-identifiers")
2140 (version "0.2.2")
2141 (source (origin
2142 (method url-fetch)
2143 (uri (string-append "https://raw.githubusercontent.com/Fanael"
2144 "/rainbow-identifiers/" version
2145 "/rainbow-identifiers.el"))
2146 (file-name (string-append "rainbow-identifiers-" version ".el"))
2147 (sha256
2148 (base32
2149 "0325abxj47k0g1i8nqrq70w2wr6060ckhhf92krv1s072b3jzm31"))))
2150 (build-system emacs-build-system)
2151 (home-page "https://github.com/Fanael/rainbow-identifiers")
2152 (synopsis "Highlight identifiers in source code")
2153 (description
2154 "Rainbow identifiers mode is an Emacs minor mode providing highlighting of
2155identifiers based on their names. Each identifier gets a color based on a hash
2156of its name.")
2157 (license license:bsd-2)))
2158
65b49ae7
DT
2159(define-public emacs-ido-completing-read+
2160 (package
2161 (name "emacs-ido-completing-read+")
2162 (version "3.12")
2163 (source (origin
2164 (method url-fetch)
2165 (uri (string-append "https://raw.githubusercontent.com"
2166 "/DarwinAwardWinner/ido-ubiquitous/v"
2167 version "/ido-completing-read+.el"))
2168 (file-name (string-append "ido-completing-read+-" version ".el"))
2169 (sha256
2170 (base32
2171 "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
2172 (build-system emacs-build-system)
2173 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
2174 (synopsis "Replacement for completing-read using ido")
2175 (description
2176 "The ido-completing-read+ function is a wrapper for ido-completing-read.
2177Importantly, it detects edge cases that ordinary ido cannot handle and either
2178adjusts them so ido can handle them, or else simply falls back to the standard
2179Emacs completion function instead.")
2180 (license license:gpl3+)))
529fe992
DT
2181
2182(define-public emacs-ido-ubiquitous
2183 (package
2184 (name "emacs-ido-ubiquitous")
2185 (version "3.12")
2186 (source (origin
2187 (method url-fetch)
2188 (uri (string-append "https://raw.githubusercontent.com"
2189 "/DarwinAwardWinner/ido-ubiquitous/v"
2190 version "/ido-ubiquitous.el"))
2191 (file-name (string-append "ido-ubiquitous-" version ".el"))
2192 (sha256
2193 (base32
2194 "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
2195 (build-system emacs-build-system)
2196 (propagated-inputs
2197 `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
2198 (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
2199 (synopsis "Use ido (nearly) everywhere")
2200 (description
2201 "Ido-ubiquitous enables ido-style completion for almost every function
2202that uses the standard completion function completing-read.")
2203 (license license:gpl3+)))
63de1231
DT
2204
2205(define-public emacs-yaml-mode
2206 (package
2207 (name "emacs-yaml-mode")
2208 (version "0.0.12")
2209 (source (origin
2210 (method url-fetch)
2211 (uri (string-append "https://raw.githubusercontent.com/yoshiki"
2212 "/yaml-mode/v" version "/yaml-mode.el"))
2213 (file-name (string-append "yaml-mode-" version ".el"))
2214 (sha256
2215 (base32
e08580c5 2216 "17wq433ycli0qx4gdhgrmb392qblm6y2dwcyn38j5ja1lasfb0ax"))))
63de1231
DT
2217 (build-system emacs-build-system)
2218 (home-page "https://github.com/yoshiki/yaml-mode")
2219 (synopsis "Major mode for editing YAML files")
2220 (description
2221 "Yaml-mode is an Emacs major mode for editing files in the YAML data
2222serialization format. It was initially developed by Yoshiki Kurihara and many
2223features were added by Marshall Vandegrift. As YAML and Python share the fact
2224that indentation determines structure, this mode provides indentation and
2225indentation command behavior very similar to that of python-mode.")
2226 (license license:gpl3+)))
7529c883
DT
2227
2228(define-public emacs-web-mode
2229 (package
2230 (name "emacs-web-mode")
2231 (version "14")
2232 (source (origin
2233 (method url-fetch)
2234 (uri (string-append "https://raw.githubusercontent.com/fxbois"
2235 "/web-mode/v" version "/web-mode.el"))
2236 (file-name (string-append "web-mode-" version ".el"))
2237 (sha256
2238 (base32
2239 "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
2240 (build-system emacs-build-system)
2241 (synopsis "Major mode for editing web templates")
2242 (description "Web-mode is an Emacs major mode for editing web templates
2243aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
2244client/server side engines). Web-mode is compatible with many template
2245engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
2246Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
2247Dust.js, React/JSX, Angularjs, ejs, etc.")
2248 (home-page "http://web-mode.org/")
2249 (license license:gpl3+)))
ae609001
MJ
2250
2251(define-public emacs-helm
2252 (package
2253 (name "emacs-helm")
2254 (version "1.9.6")
2255 (source (origin
2256 (method url-fetch)
2257 (uri (string-append
2258 "https://github.com/" name "/helm/archive/v"
2259 version ".tar.gz"))
2260 (file-name (string-append name "-" version ".tar.gz"))
2261 (sha256
2262 (base32
2263 "0fc897rwf1fm2m7jrsikkgcyzhngfcysxfmzchpwzfj6v9sb5rl9"))))
2264 (build-system emacs-build-system)
2265 (propagated-inputs
2266 `(("emacs-async" ,emacs-async)
2267 ("emacs-popup" ,emacs-popup)))
2268 (home-page "https://emacs-helm.github.io/helm/")
2269 (synopsis "Incremental completion and selection narrowing
2270framework for Emacs")
2271 (description "Helm is incremental completion and selection narrowing
2272framework for Emacs. It will help steer you in the right direction when
2273you're looking for stuff in Emacs (like buffers, files, etc). Helm is a fork
2274of @code{anything.el} originally written by Tamas Patrovic and can be
2275considered to be its successor. Helm sets out to clean up the legacy code in
2276@code{anything.el} and provide a cleaner, leaner and more modular tool, that's
2277not tied in the trap of backward compatibility.")
2278 (license license:gpl3+)))
f9be4366
AP
2279
2280(define-public emacs-cider
2281 (package
2282 (name "emacs-cider")
2283 (version "0.12.0")
2284 (source (origin
2285 (method url-fetch)
2286 (uri (string-append
2287 "https://github.com/clojure-emacs/cider/archive/v"
2288 version ".tar.gz"))
2289 (file-name (string-append name "-" version ".tar.gz"))
2290 (sha256
2291 (base32
2292 "00qzbfjy3w6bcnki7gw0clmi0cc5yqjdrcyhgv4ymijjs79h9p5s"))))
2293 (build-system emacs-build-system)
2294 (propagated-inputs
2295 `(("emacs-clojure-mode" ,emacs-clojure-mode)
2296 ("emacs-spinner" ,emacs-spinner)
2297 ("emacs-pkg-info" ,emacs-pkg-info)
2298 ("emacs-queue" ,emacs-queue)
2299 ("emacs-seq" ,emacs-seq)))
2300 (home-page "https://cider.readthedocs.org/")
2301 (synopsis "Clojure development environment for Emacs")
2302 (description
2303 "CIDER (Clojure Interactive Development Environment that Rocks) aims to
2304provide an interactive development experience similar to the one you'd get
2305when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
2306Geiser) and Smalltalk.
2307
2308CIDER is the successor to the now deprecated combination of using SLIME +
2309swank-clojure for Clojure development.
2310
2311There are plenty of differences between CIDER and SLIME, but the core ideas
2312are pretty much the same (and SLIME served as the principle inspiration for
2313CIDER).")
2314 (license license:gpl3+)))
26e08b4d 2315
2316(define-public emacs-lua-mode
2317 (package
2318 (name "emacs-lua-mode")
2319 (version "20151025")
2320 (source (origin
2321 (method url-fetch)
2322 (uri (string-append
2323 "https://github.com/immerrr/lua-mode/archive/v"
2324 version ".tar.gz"))
2325 (file-name (string-append name "-" version ".tar.gz"))
2326 (sha256
2327 (base32
2328 "0sbhfny5ib65cnx6xcy6h9bbw27mw034s8m9cca00bhxqaqi6p4v"))))
2329 (build-system emacs-build-system)
2330 (home-page "http://github.com/immerrr/lua-mode/")
2331 (synopsis "Major mode for lua")
2332 (description
2333 "This Emacs package provides a mode for @uref{https://www.lua.org/,
2334Lua programing language}.")
2335 (license license:gpl2+)))
0202612d 2336
2337(define-public emacs-ebuild-mode
2338 (package
2339 (name "emacs-ebuild-mode")
2340 (version "1.30")
2341 (source (origin
2342 (method url-fetch)
2343 (uri (string-append
2344 "https://dev.gentoo.org/~ulm/emacs/ebuild-mode"
2345 "-" version ".tar.xz"))
2346 (file-name (string-append name "-" version ".tar.xz"))
2347 (sha256
2348 (base32
2349 "0vp7lq1kvmh1b2bms2x1kf2k76dy9m02d7cirkxpiglwaxa0h9vz"))))
2350 (build-system emacs-build-system)
2351 (home-page "https://devmanual.gentoo.org")
2352 (synopsis "Major modes for Gentoo package files")
2353 (description
2354 "This Emacs package provides modes for ebuild, eclass, eblit, GLEP42
2355news items, openrc and runscripts.")
2356 (license license:gpl2+)))