aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/emacs.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/emacs.scm')
-rw-r--r--gnu/packages/emacs.scm236
1 files changed, 233 insertions, 3 deletions
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index af8772eefd..76a8cc566f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +23,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages gtk)
#:use-module (gnu packages ncurses)
@@ -33,10 +36,17 @@
#:use-module (gnu packages image)
#:use-module (gnu packages giflib)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages w3m)
+ #:use-module (gnu packages wget)
+ #:use-module (gnu packages autotools)
#:use-module ((gnu packages compression)
#:renamer (symbol-prefix-proc 'compression:))
#:use-module (gnu packages xml)
- #:use-module (gnu packages glib))
+ #:use-module (gnu packages glib)
+ #:use-module (guix utils)
+ #:use-module (srfi srfi-1))
(define-public emacs
(package
@@ -102,6 +112,17 @@ large Lisp programs. It has full Unicode support for nearly all human
languages.")
(license gpl3+)))
+(define-public emacs-no-x-toolkit
+ (package (inherit emacs)
+ (name "emacs-no-x-toolkit")
+ (synopsis "The extensible, customizable, self-documenting text
+editor (without an X toolkit)" )
+ (inputs (alist-delete "gtk+" (package-inputs emacs)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments emacs)
+ ((#:configure-flags flags)
+ `(cons "--with-x-toolkit=no" ,flags))))))
+
;;;
;;; Emacs hacking.
@@ -110,13 +131,13 @@ languages.")
(define-public geiser
(package
(name "geiser")
- (version "0.4")
+ (version "0.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/geiser/" version
"/geiser-" version ".tar.gz"))
(sha256
- (base32 "0ds7zk9b1839l9fsqfsgrby6manvy1cf5bjniiqhxl55h0cr6ijp"))))
+ (base32 "1mrk0bzqcpfhsw6635qznn47nzfy9ps7wrhkpymswdfpw5mdsry5"))))
(build-system gnu-build-system)
(inputs `(("guile" ,guile-2.0)
("emacs" ,emacs)))
@@ -138,3 +159,212 @@ of the stage in Geiser. A bundle of Elisp shims orchestrates the dialog
between the Scheme interpreter, Emacs and, ultimately, the schemer,
giving her access to live metadata.")
(license bsd-3)))
+
+(define-public paredit
+ (package
+ (name "paredit")
+ (version "23")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
+ version ".el"))
+ (sha256
+ (base32 "1np882jzvxckljx3cjz4absyzmc5hw65cs21sjmbic82163m9lf8"))))
+ (build-system trivial-build-system)
+ (inputs `(("emacs" ,emacs)))
+ (arguments
+ `(#:modules ((guix build utils)
+ (guix build emacs-utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (use-modules (guix build emacs-utils))
+
+ (let* ((emacs (string-append (assoc-ref %build-inputs "emacs")
+ "/bin/emacs"))
+ (source (assoc-ref %build-inputs "source"))
+ (lisp-dir (string-append %output
+ "/share/emacs/site-lisp"))
+ (target (string-append lisp-dir "/paredit.el")))
+ (mkdir-p lisp-dir)
+ (copy-file source target)
+ (with-directory-excursion lisp-dir
+ (parameterize ((%emacs emacs))
+ (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
+ (home-page "http://mumble.net/~campbell/emacs/paredit/")
+ (synopsis "Emacs minor mode for editing parentheses")
+ (description
+ "ParEdit (paredit.el) is a minor mode for performing structured editing
+of S-expression data. The typical example of this would be Lisp or Scheme
+source code.
+
+ParEdit helps **keep parentheses balanced** and adds many keys for moving
+S-expressions and moving around in S-expressions. Its behavior can be jarring
+for those who may want transient periods of unbalanced parentheses, such as
+when typing parentheses directly or commenting out code line by line.")
+ (license gpl3+)))
+
+(define-public magit
+ (package
+ (name "magit")
+ (version "1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/downloads/magit/magit/magit-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "1a8vvilhd5y5vmlpsh194qpl4qlg0a1brylfscxcacpfp0cmhlzg"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("texinfo" ,texinfo)))
+ (inputs `(("emacs" ,emacs)
+ ("git" ,git)
+ ("git:gui" ,git "gui")))
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:imported-modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:tests? #f ; no check target
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "Makefile"
+ (("/usr/local") out)
+ (("/etc") (string-append out "/etc")))))
+ (alist-cons-before
+ 'build 'patch-exec-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((git (assoc-ref inputs "git"))
+ (git:gui (assoc-ref inputs "git:gui")))
+ (emacs-substitute-variables "magit.el"
+ ("magit-git-executable" (string-append git "/bin/git"))
+ ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))
+ %standard-phases))))
+ (home-page "http://magit.github.io/")
+ (synopsis "Emacs interface for the Git version control system")
+ (description
+ "With Magit, you can inspect and modify your Git repositories with Emacs.
+You can review and commit the changes you have made to the tracked files, for
+example, and you can browse the history of past changes. There is support for
+cherry picking, reverting, merging, rebasing, and other common Git
+operations.")
+ (license gpl3+)))
+
+
+;;;
+;;; Web browsing.
+;;;
+
+(define-public emacs-w3m
+ (package
+ (name "emacs-w3m")
+ (version "1.4.483+0.20120614")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
+ version ".orig.tar.gz"))
+ (sha256
+ (base32 "0ms181gjavnfk79hhv5xl9llik4c6kj0w3c04kgyif8lcy2sxljx"))))
+ (build-system gnu-build-system)
+ (native-inputs `(("autoconf" ,autoconf)))
+ (inputs `(("w3m" ,w3m)
+ ("imagemagick" ,imagemagick)
+ ("emacs" ,emacs)))
+ (arguments
+ '(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:imported-modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:configure-flags
+ (let ((out (assoc-ref %outputs "out")))
+ (list (string-append "--with-lispdir="
+ out "/share/emacs/site-lisp")
+ (string-append "--with-icondir="
+ out "/share/images/emacs-w3m")))
+ #:tests? #f ; no check target
+ #:phases
+ (alist-cons-before
+ 'configure 'pre-configure
+ (lambda _
+ (zero? (system* "autoconf")))
+ (alist-cons-before
+ 'build 'patch-exec-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (w3m (assoc-ref inputs "w3m"))
+ (imagemagick (assoc-ref inputs "imagemagick"))
+ (coreutils (assoc-ref inputs "coreutils")))
+ (emacs-substitute-variables "w3m.el"
+ ("w3m-command" (string-append w3m "/bin/w3m"))
+ ("w3m-touch-command" (string-append coreutils "/bin/touch"))
+ ("w3m-image-viewer" (string-append imagemagick "/bin/display"))
+ ("w3m-icon-directory" (string-append out
+ "/share/images/emacs-w3m")))
+ (emacs-substitute-variables "w3m-image.el"
+ ("w3m-imagick-convert-program" (string-append imagemagick
+ "/bin/convert"))
+ ("w3m-imagick-identify-program" (string-append imagemagick
+ "/bin/identify")))
+ #t))
+ (alist-replace
+ 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (and (zero? (system* "make" "install" "install-icons"))
+ (with-directory-excursion
+ (string-append (assoc-ref outputs "out")
+ "/share/emacs/site-lisp")
+ (for-each delete-file '("ChangeLog" "ChangeLog.1"))
+ #t)))
+ %standard-phases)))))
+ (home-page "http://emacs-w3m.namazu.org/")
+ (synopsis "Simple Web browser for Emacs based on w3m")
+ (description
+ "emacs-w3m is an emacs interface for the w3m web browser.")
+ (license gpl2+)))
+
+(define-public emacs-wget
+ (package
+ (name "emacs-wget")
+ (version "0.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
+ version ".orig.tar.gz"))
+ (sha256
+ (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
+ (build-system gnu-build-system)
+ (inputs `(("wget" ,wget)
+ ("emacs" ,emacs)))
+ (arguments
+ '(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:imported-modules ((guix build gnu-build-system)
+ (guix build utils)
+ (guix build emacs-utils))
+ #:tests? #f ; no check target
+ #:phases
+ (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "Makefile"
+ (("/usr/local") (assoc-ref outputs "out"))
+ (("/site-lisp/emacs-wget") "/site-lisp")))
+ (alist-cons-before
+ 'build 'patch-exec-paths
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((wget (assoc-ref inputs "wget")))
+ (emacs-substitute-variables "wget.el"
+ ("wget-command" (string-append wget "/bin/wget")))))
+ %standard-phases))))
+ (home-page "http://www.emacswiki.org/emacs/EmacsWget")
+ (synopsis "Simple file downloader for Emacs based on wget")
+ (description
+ "emacs-wget is an emacs interface for the wget file downloader.")
+ (license gpl2+)))