Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
CommitLineData
468bdabb
LC
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
1ffa7090 19(define-module (gnu packages emacs)
468bdabb
LC
20 #:use-module (guix licenses)
21 #:use-module (guix packages)
22 #:use-module (guix download)
23 #:use-module (guix build-system gnu)
59a43334 24 #:use-module (gnu packages)
7abe1965 25 #:use-module (gnu packages gtk)
1ffa7090
LC
26 #:use-module (gnu packages ncurses)
27 #:use-module (gnu packages texinfo)
28 #:use-module (gnu packages gnutls)
4f028c8f 29 #:use-module (gnu packages pkg-config)
50efa797
LC
30 #:use-module (gnu packages guile)
31 #:use-module (gnu packages xorg)
32 #:use-module (gnu packages lesstif)
e55354b8 33 #:use-module (gnu packages image)
504a83af
MW
34 #:use-module (gnu packages giflib)
35 #:use-module (gnu packages linux)
50efa797
LC
36 #:use-module ((gnu packages compression)
37 #:renamer (symbol-prefix-proc 'compression:))
38 #:use-module (gnu packages xml)
39 #:use-module (gnu packages glib))
468bdabb
LC
40
41(define-public emacs
42 (package
43 (name "emacs")
3be9f724 44 (version "24.3")
468bdabb
LC
45 (source (origin
46 (method url-fetch)
47 (uri (string-append "mirror://gnu/emacs/emacs-"
3be9f724 48 version ".tar.xz"))
468bdabb
LC
49 (sha256
50 (base32
01eafd38
LC
51 "1385qzs3bsa52s5rcncbrkxlydkw0ajzrvfxgv8rws5fx512kakh"))
52 (patches (list (search-patch "emacs-configure-sh.patch")))))
468bdabb
LC
53 (build-system gnu-build-system)
54 (arguments
55 '(#:configure-flags
56 (list (string-append "--with-crt-dir=" (assoc-ref %build-inputs "libc")
504a83af 57 "/lib"))
468bdabb
LC
58 #:phases (alist-cons-before
59 'configure 'fix-/bin/pwd
60 (lambda _
61 ;; Use `pwd', not `/bin/pwd'.
62 (substitute* (find-files "." "^Makefile\\.in$")
63 (("/bin/pwd")
64 "pwd")))
65 %standard-phases)))
66 (inputs
c4c4cc05 67 `(("gnutls" ,gnutls)
468bdabb
LC
68 ("ncurses" ,ncurses)
69
70 ;; TODO: Add the optional dependencies.
50efa797 71 ("xlibs" ,libx11)
8b0275b6 72 ("gtk+" ,gtk+-2)
50efa797
LC
73 ("libXft" ,libxft)
74 ("libtiff" ,libtiff)
504a83af 75 ("giflib" ,giflib)
50efa797
LC
76 ("libjpeg" ,libjpeg-8)
77
78 ;; When looking for libpng `configure' links with `-lpng -lz', so we
79 ;; must also provide zlib as an input.
80 ("libpng" ,libpng)
81 ("zlib" ,compression:zlib)
82
83 ("libXpm" ,libxpm)
84 ("libxml2" ,libxml2)
504a83af
MW
85 ("libice" ,libice)
86 ("libsm" ,libsm)
87 ("alsa-lib" ,alsa-lib)
01eafd38 88 ("dbus" ,dbus)))
c4c4cc05
JD
89 (native-inputs
90 `(("pkg-config" ,pkg-config)
91 ("texinfo" ,texinfo)))
468bdabb 92 (home-page "http://www.gnu.org/software/emacs/")
f50d2669 93 (synopsis "The extensible, customizable, self-documenting text editor")
468bdabb 94 (description
79c311b8
LC
95 "GNU Emacs is an extensible and highly customizable text editor. It is
96based on an Emacs Lisp interpreter with extensions for text editing. Emacs
97has been extended in essentially all areas of computing, giving rise to a
98vast array of packages supporting, e.g., email, IRC and XMPP messaging,
99spreadsheets, remote server editing, and much more. Emacs includes extensive
100documentation on all aspects of the system, from basic editing to writing
101large Lisp programs. It has full Unicode support for nearly all human
102languages.")
468bdabb 103 (license gpl3+)))
4f028c8f
LC
104
105\f
106;;;
107;;; Emacs hacking.
108;;;
109
110(define-public geiser
111 (package
112 (name "geiser")
cf8f58b2 113 (version "0.4")
4f028c8f
LC
114 (source (origin
115 (method url-fetch)
cf8f58b2
LC
116 (uri (string-append "mirror://savannah/geiser/" version
117 "/geiser-" version ".tar.gz"))
4f028c8f 118 (sha256
cf8f58b2 119 (base32 "0ds7zk9b1839l9fsqfsgrby6manvy1cf5bjniiqhxl55h0cr6ijp"))))
4f028c8f
LC
120 (build-system gnu-build-system)
121 (inputs `(("guile" ,guile-2.0)
122 ("emacs" ,emacs)))
123 (home-page "http://nongnu.org/geiser/")
124 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
125 (description
126 "Geiser is a collection of Emacs major and minor modes that
127conspire with one or more Scheme interpreters to keep the Lisp Machine
128Spirit alive. It draws inspiration (and a bit more) from environments
129such as Common Lisp’s Slime, Factor’s FUEL, Squeak or Emacs itself, and
130does its best to make Scheme hacking inside Emacs (even more) fun.
131
132Or, to be precise, what i consider fun. Geiser is thus my humble
133contribution to the dynamic school of expression, and a reaction against
134what i perceive as a derailment, in modern times, of standard Scheme
135towards the static camp. Because i prefer growing and healing to poking
136at corpses, the continuously running Scheme interpreter takes the center
137of the stage in Geiser. A bundle of Elisp shims orchestrates the dialog
138between the Scheme interpreter, Emacs and, ultimately, the schemer,
139giving her access to live metadata.")
140 (license bsd-3)))