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