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