summaryrefslogtreecommitdiff
path: root/app-emacs/slime
diff options
context:
space:
mode:
Diffstat (limited to 'app-emacs/slime')
-rw-r--r--app-emacs/slime/Manifest6
-rw-r--r--app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el15
-rw-r--r--app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch16
-rw-r--r--app-emacs/slime/files/2.0_p20110617/swank.asd98
-rw-r--r--app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch84
-rw-r--r--app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch13
-rw-r--r--app-emacs/slime/files/2.11/gentoo-changelog-date.patch20
-rw-r--r--app-emacs/slime/files/70slime-gentoo.el13
-rw-r--r--app-emacs/slime/files/swank-loader.lisp4
-rw-r--r--app-emacs/slime/metadata.xml37
-rw-r--r--app-emacs/slime/slime-2.0_p20080731-r1.ebuild79
-rw-r--r--app-emacs/slime/slime-2.0_p20080731.ebuild78
-rw-r--r--app-emacs/slime/slime-2.0_p20101103.ebuild82
-rw-r--r--app-emacs/slime/slime-2.11.ebuild122
-rw-r--r--app-emacs/slime/slime-2.12.ebuild122
15 files changed, 789 insertions, 0 deletions
diff --git a/app-emacs/slime/Manifest b/app-emacs/slime/Manifest
new file mode 100644
index 00000000000..ee07c1c27c7
--- /dev/null
+++ b/app-emacs/slime/Manifest
@@ -0,0 +1,6 @@
+DIST slime-2.0_p20080731-patches.tar.bz2 4966 SHA256 0b032a7f6744dac372bfd2036789efd4e9cc7c509e7836e27fee4abc9072a12a SHA512 12dafeeeeab9bc4b63113e6a3cb4e2695867c0f8dd8e08f38af8c1cc403b25ead6a94b0d3ac2ede2c88e2152f01af49964b811301e761545f9589fa969617d85 WHIRLPOOL 5b99322502466f06ccf22a411053316bb31d510eef4f9189f15a544609cd5d1a47f89de6b5a8366a6c62939dfb012133083305404e3a512077b9e1ac7108e04e
+DIST slime-2.0_p20080731.tar.bz2 596093 SHA256 7c5f3ab65a0e76ff042230a34213f558d9a57c00ef22380876bf9cde9717354b SHA512 c991c6d41c5e694a64c71cd9010aeeb7f79ef308ec1d9e1df63ff4031946cf88f7d2b6819725a17f98fcdf6a1a35f82352a817c1c064b7b205b82c363691b7bc WHIRLPOOL 6f62a33600ca7831dfe0cdc0a94db1b5c849fcc3c8392f5709a65c588f45eec70f78c9930e471652f4926398328d2f2ff9a3c6e9475eb14f9c6233213e6c9416
+DIST slime-2.0_p20101103-patches.tar.bz2 4730 SHA256 9cab942f4ea64ec2f0e127db3b5428513c51899e5518d9f8c2bd9143c644fd19 SHA512 7990a3ffa4a5867fe84e326034aa794d3396dd2a74125e256be33524e2e737e052094fa11f2f486db34dc619e89e9343d4c5d2f84f3972139c2c7ac33248ce2c WHIRLPOOL a11ebfdf6b9054ed07ea8af667a5ef909cbe129531ee63dd3b4556fedc4d0e334ed913423a23acab176312b1c781f3c25f1c499184d7f2c6bfe459d4b67c368b
+DIST slime-2.0_p20101103.tar.bz2 725888 SHA256 0596532fa8cb78e59f685557474bd0ac5d00a79ac84c361ab93f079797a4041f SHA512 cb0cc3232304ef6efec5e01d3660cc649abb3e5803f17c82785b154b6f0b581889ea3b2dcf261be39b16ff22c912c34c7ec84c400856f5c4a29fbeaf7c49851d WHIRLPOOL 3421ea5aa5ed96a3d7b552fe74804bc3e7e822dd21623c0b36f7f84d7ad726fa57d0eb496e15d4ef9ea5027f0c247a3ba8ae7ae46118851c3f0ed13ec1cf482f
+DIST slime-2.11.tar.gz 1054516 SHA256 d63962c22f983a52519fb51b5ca28183aeb23ff6892804d02311e54d73ec8b2a SHA512 9507a4460a2f0d5b4f0857824fcaa36f6efeb09aebde7ca682bdc0214b6a722e471180c34ddce26a8f94d7cf3aae959954565ada314729e803d36767afc3e850 WHIRLPOOL 530c5b341f2ca4a95c954cea848c67cfd027345691feb9c246eb56ecaf6c420b642ed1991f1d615dabc0ca1f54bc6b28482e57c800498cf25a17ce39a7dc0ba3
+DIST slime-2.12.tar.gz 1057243 SHA256 29d57d1036abe69cb62809b5bb31d08c76c3e0e559b7e601b9d76fb7a554d53b SHA512 f18c79cba3eb75761982f2d1f163aab8213b77fa72a689d110fe91b1aa40953516566adc5f771638eee95d33ba8b4c8842ddf99738804483ccfb76a00290b2a1 WHIRLPOOL b0b78101f114514c16cba823dee02aac8a1fee74d23d5623838c2fdedaaa4fda953e6ee9bfcfcd6cf5a174d245f4ba801596c16e0bb67c1729d73a69d0ebc0b1
diff --git a/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el b/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el
new file mode 100644
index 00000000000..358af67d918
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/70slime-gentoo.el
@@ -0,0 +1,15 @@
+;;; site-lisp configuration for SLIME
+
+(add-to-list 'load-path "@SITELISP@")
+(add-to-list 'load-path "@SITELISP@/contrib")
+(autoload 'slime-highlight-edits-mode "slime-highlight-edits")
+
+(require 'slime-autoloads)
+(slime-setup '(slime-fancy slime-asdf slime-banner))
+
+;; this allows us not to require dev-lisp/hyperspec
+;; (which is non-free) as a hard dependency
+(setq common-lisp-hyperspec-root
+ (if (file-exists-p "/usr/share/doc/hyperspec/HyperSpec")
+ "file:///usr/share/doc/hyperspec/HyperSpec/"
+ "http://www.lispworks.com/reference/HyperSpec/"))
diff --git a/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch b/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch
new file mode 100644
index 00000000000..410c3913a2a
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/gentoo-dont-call-init.patch
@@ -0,0 +1,16 @@
+Author: Stelian Ionescu <sionescu@cddr.org>
+Date: 2010-05-14
+Status: Gentoo-only
+Description: Dont' call SWANK-LOADER:INIT on startup since we don't use
+ the upstream swank-loader.lisp
+
+--- a/slime.el
++++ b/slime.el
+@@ -1323,7 +1323,6 @@ See `slime-start'."
+ `(progn
+ (load ,(slime-to-lisp-filename (expand-file-name loader))
+ :verbose t)
+- (funcall (read-from-string "swank-loader:init"))
+ (funcall (read-from-string "swank:start-server")
+ ,(slime-to-lisp-filename port-filename)
+ :coding-system ,encoding)))))
diff --git a/app-emacs/slime/files/2.0_p20110617/swank.asd b/app-emacs/slime/files/2.0_p20110617/swank.asd
new file mode 100644
index 00000000000..b33ca6e67cb
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20110617/swank.asd
@@ -0,0 +1,98 @@
+;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
+
+(defpackage #:swank-system
+ (:use #:common-lisp #:asdf))
+
+(in-package #:swank-system)
+
+(defun load-user-init-file ()
+ "Load the user init file, return NIL if it does not exist."
+ (load (merge-pathnames (user-homedir-pathname)
+ (make-pathname :name ".swank" :type "lisp"))
+ :if-does-not-exist nil))
+
+(defun load-site-init-file ()
+ (load (make-pathname :name "site-init" :type "lisp"
+ :defaults (truename
+ (asdf:system-definition-pathname
+ (asdf:find-system :swank))))
+ :if-does-not-exist nil))
+
+(defclass no-load-file (cl-source-file) ())
+
+(defmethod perform ((op load-op) (c no-load-file)) nil)
+
+(defmacro define-swank-system (sysdep-files)
+ `(defsystem :swank
+ :description "Swank is the Common Lisp back-end to SLIME"
+ :serial t
+ :components ((:file "swank-backend")
+ (:file "nregex")
+ ,@(mapcar #'(lambda (component)
+ (if (atom component)
+ (list :file component)
+ component))
+ sysdep-files)
+ (:file "swank-match")
+ (:file "swank-rpc")
+ (:file "swank")
+ (:module "contrib"
+ :components ((:no-load-file "swank-c-p-c")
+ (:no-load-file "swank-arglists"
+ :depends-on ("swank-c-p-c"))
+ (:no-load-file "swank-asdf")
+ (:no-load-file "swank-clipboard")
+ (:no-load-file "swank-fancy-inspector")
+ (:no-load-file "swank-fuzzy"
+ :depends-on ("swank-c-p-c"))
+ (:no-load-file "swank-hyperdoc")
+ (:no-load-file "swank-indentation")
+ (:no-load-file "swank-listener-hooks")
+ (:no-load-file "swank-media")
+ (:no-load-file "swank-motd")
+ (:no-load-file "swank-package-fu")
+ (:no-load-file "swank-presentations")
+ (:no-load-file "swank-presentation-streams"
+ :depends-on ("swank-presentations"))
+ (:no-load-file "swank-sbcl-exts"
+ :depends-on ("swank-arglists"))
+ (:no-load-file "swank-snapshot")
+ (:no-load-file "swank-sprof"))))
+ :depends-on (#+sbcl sb-bsd-sockets)
+ :perform (load-op :after (op swank)
+ (load-site-init-file)
+ (load-user-init-file))))
+
+#+(or cmu scl sbcl openmcl clozurecl lispworks allegro clisp armedbear cormanlisp ecl)
+(define-swank-system
+ #+cmu (swank-source-path-parser swank-source-file-cache swank-cmucl)
+ #+scl (swank-source-path-parser swank-source-file-cache swank-scl)
+ #+sbcl (swank-source-path-parser swank-source-file-cache swank-sbcl swank-gray)
+ #+(or openmcl clozurecl) (metering
+ #.(if (and (find-package "CCL")
+ (fboundp (intern "COMPUTE-APPLICABLE-METHODS-USING-CLASSES" "CCL")))
+ 'swank-ccl
+ 'swank-openmcl)
+ swank-gray)
+ #+lispworks (swank-lispworks swank-gray)
+ #+allegro (swank-allegro swank-gray)
+ #+clisp (xref metering swank-clisp swank-gray)
+ #+armedbear (swank-abcl)
+ #+cormanlisp (swank-corman swank-gray)
+ #+ecl (swank-source-path-parser swank-source-file-cache swank-ecl swank-gray))
+
+#-(or cmu scl sbcl openmcl clozurecl lispworks allegro clisp armedbear cormanlisp ecl)
+(error "Your CL implementation is not supported !")
+
+(defpackage #:swank-loader
+ (:use #:common-lisp)
+ (:export #:*source-directory*))
+
+(in-package #:swank-loader)
+
+(defparameter *source-directory*
+ (asdf:component-pathname (asdf:find-system :swank)))
+
+;; (funcall (intern (string :warn-unimplemented-interfaces) :swank-backend))
+
+;; swank.asd ends here
diff --git a/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch b/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch
new file mode 100644
index 00000000000..c25a248d04a
--- /dev/null
+++ b/app-emacs/slime/files/2.0_p20130214/gentoo-module-load.patch
@@ -0,0 +1,84 @@
+--- slime-9999-orig/contrib/swank-arglists.lisp 2012-08-14 06:50:34.000000000 +1000
++++ slime-9999/contrib/swank-arglists.lisp 2013-02-14 21:33:26.879124163 +1100
+@@ -9,8 +9,7 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-c-p-c))
++(swank-require :swank-c-p-c)
+
+ ;;;; Utilities
+
+--- slime-9999-orig/contrib/swank-fuzzy.lisp 2013-02-02 20:48:51.000000000 +1100
++++ slime-9999/contrib/swank-fuzzy.lisp 2013-02-14 21:35:32.059873714 +1100
+@@ -10,9 +10,8 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-util)
+- (swank-require :swank-c-p-c))
++(swank-require :swank-util)
++(swank-require :swank-c-p-c)
+
+ ;;; For nomenclature of the fuzzy completion section, please read
+ ;;; through the following docstring.
+--- slime-9999-orig/contrib/swank-sbcl-exts.lisp 2009-09-25 16:43:33.000000000 +1000
++++ slime-9999/contrib/swank-sbcl-exts.lisp 2013-02-14 21:33:26.880124185 +1100
+@@ -7,8 +7,7 @@
+
+ (in-package :swank)
+
+-(eval-when (:compile-toplevel :load-toplevel :execute)
+- (swank-require :swank-arglists))
++(swank-require :swank-arglists)
+
+ ;; We need to do this so users can place `slime-sbcl-exts' into their
+ ;; ~/.emacs, and still use any implementation they want.
+--- slime-9999-orig/swank.lisp 2013-01-11 20:00:30.000000000 +1100
++++ slime-9999/swank.lisp 2013-02-14 22:15:39.624982175 +1100
+@@ -2535,14 +2535,17 @@
+ "Load the module MODULE."
+ (dolist (module (ensure-list modules))
+ (unless (member (string module) *modules* :test #'string=)
+- (require module (if filename
+- (filename-to-pathname filename)
+- (module-filename module)))
++ (let ((*load-print* nil)
++ (*load-verbose* nil)
++ #+cmu (ext:*gc-verbose* nil))
++ (require module (if filename
++ (filename-to-pathname filename)
++ (module-filename module))))
+ (assert (member (string module) *modules* :test #'string=)
+ () "Required module ~s was not provided" module)))
+ *modules*)
+
+-(defvar *find-module* 'find-module
++(defvar *find-module* 'find-module-gentoo
+ "Pluggable function to locate modules.
+ The function receives a module name as argument and should return
+ the filename of the module (or nil if the file doesn't exist).")
+@@ -2572,6 +2575,21 @@
+ (some (lambda (dir) (some #'probe-file (module-canditates name dir)))
+ *load-path*)))
+
++(defun swank-fasl-pathname ()
++ (make-pathname :name nil :type nil
++ :defaults (car (asdf:output-files
++ (make-instance 'asdf:compile-op)
++ (car (asdf:module-components
++ (asdf:find-system :swank)))))))
++
++(defun append-dir (pathname dir)
++ (make-pathname :directory (append (pathname-directory pathname) dir)))
++
++(defun find-module-gentoo (module)
++ (or (let ((*load-path* (list (append-dir (swank-fasl-pathname) '("contrib"))
++ (append-dir swank-loader:*source-directory* '("contrib")))))
++ (find-module module))
++ (find-module module)))
+
+ ;;;; Macroexpansion
+
diff --git a/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch b/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch
new file mode 100644
index 00000000000..c7dafb6cb91
--- /dev/null
+++ b/app-emacs/slime/files/2.11/dont-load-sbcl-pprint.patch
@@ -0,0 +1,13 @@
+diff --git a/contrib/swank-presentation-streams.lisp b/contrib/swank-presentation-streams.lisp
+index 0c24bda..bd5a990 100644
+--- a/contrib/swank-presentation-streams.lisp
++++ b/contrib/swank-presentation-streams.lisp
+@@ -65,7 +65,7 @@ be sensitive and remember what object it is in the repl if predicate is true"
+ (funcall ,continue)))))
+
+ ;;; Get pretty printer patches for SBCL at load (not compile) time.
+-#+sbcl
++#+#:disable-dangerous-patching ; #+sbcl
+ (eval-when (:load-toplevel)
+ (handler-bind ((simple-error
+ (lambda (c)
diff --git a/app-emacs/slime/files/2.11/gentoo-changelog-date.patch b/app-emacs/slime/files/2.11/gentoo-changelog-date.patch
new file mode 100644
index 00000000000..4d7669a34d2
--- /dev/null
+++ b/app-emacs/slime/files/2.11/gentoo-changelog-date.patch
@@ -0,0 +1,20 @@
+--- slime-2.11-orig/slime.el 2014-12-01 21:05:54.000000000 +1100
++++ slime-2.11/slime.el 2014-12-19 11:57:45.455393436 +1100
+@@ -134,16 +134,7 @@
+ "Return the datestring of the latest entry in the ChangeLog file.
+ Return nil if the ChangeLog file cannot be found."
+ (interactive "p")
+- (let ((changelog (expand-file-name "ChangeLog" slime-path))
+- (date nil))
+- (when (file-exists-p changelog)
+- (with-temp-buffer
+- (insert-file-contents-literally changelog nil 0 100)
+- (goto-char (point-min))
+- (setq date (symbol-name (read (current-buffer))))))
+- (when interactivep
+- (message "Slime ChangeLog dates %s." date))
+- date)))
++ "@SLIME-CHANGELOG-DATE@"))
+
+ (defvar slime-protocol-version nil)
+ (setq slime-protocol-version
diff --git a/app-emacs/slime/files/70slime-gentoo.el b/app-emacs/slime/files/70slime-gentoo.el
new file mode 100644
index 00000000000..6dfd505133e
--- /dev/null
+++ b/app-emacs/slime/files/70slime-gentoo.el
@@ -0,0 +1,13 @@
+(add-to-list 'load-path "@SITELISP@")
+(add-to-list 'load-path "@SITELISP@/contrib")
+(autoload 'slime-highlight-edits-mode "slime-highlight-edits" nil t)
+
+(require 'slime-autoloads)
+(slime-setup '(slime-fancy slime-asdf slime-banner))
+
+;; this allows us not to require dev-lisp/hyperspec
+;; (which is non-free) as a hard dependency
+(setq common-lisp-hyperspec-root
+ (if (file-exists-p "/usr/share/doc/hyperspec/HyperSpec")
+ "file:///usr/share/doc/hyperspec/HyperSpec/"
+ "http://www.lispworks.com/reference/HyperSpec/"))
diff --git a/app-emacs/slime/files/swank-loader.lisp b/app-emacs/slime/files/swank-loader.lisp
new file mode 100644
index 00000000000..4d9b157312e
--- /dev/null
+++ b/app-emacs/slime/files/swank-loader.lisp
@@ -0,0 +1,4 @@
+
+;; This file is NOT part of SLIME
+
+(asdf:oos 'asdf:load-op :swank)
diff --git a/app-emacs/slime/metadata.xml b/app-emacs/slime/metadata.xml
new file mode 100644
index 00000000000..907cce48a95
--- /dev/null
+++ b/app-emacs/slime/metadata.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>emacs</herd>
+<herd>common-lisp</herd>
+<longdescription>
+ SLIME: The Superior Lisp Interaction Mode for Emacs. SLIME is a
+ fresh, new Emacs mode for Common Lisp development inspired by existing
+ systems such Emacs Lisp and ILISP. Feature highlights include:
+
+ * slime-mode: An Emacs minor-mode to enhance lisp-mode with:
+ o Code evaluation, compilation, and macroexpansion.
+ o Online documentation (describe, apropos, hyperspec).
+ o Definition finding (aka Meta-Point aka M-.).
+ o Symbol and package name completion.
+ o Automatic macro indentation based on &amp;body.
+ o Cross-reference interface (WHO-CALLS, etc).
+ o ... and more.
+
+ * SLDB: Common Lisp debugger with an Emacs-based user interface.
+
+ * REPL: The Read-Eval-Print Loop ("top-level") is written in Emacs
+ Lisp for tighter integration with Emacs. The REPL also has builtin
+ "shortcut" commands similar those of the McCLIM Listener.
+
+ * Compilation notes: SLIME is able to take compiler messages and
+ annotate them directly into source buffers.
+
+ * Inspector: Interactive object-inspector in an Emacs buffer.
+</longdescription>
+<use>
+ <flag name="xref">Install xref.lisp cross-referencing tool</flag>
+</use>
+<upstream>
+ <remote-id type="github">slime/slime</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/app-emacs/slime/slime-2.0_p20080731-r1.ebuild b/app-emacs/slime/slime-2.0_p20080731-r1.ebuild
new file mode 100644
index 00000000000..4be63c9c22e
--- /dev/null
+++ b/app-emacs/slime/slime-2.0_p20080731-r1.ebuild
@@ -0,0 +1,79 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=3
+
+inherit common-lisp elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2
+ mirror://gentoo/${P}-patches.tar.bz2"
+
+LICENSE="GPL-2 xref? ( xref.lisp )"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos"
+IUSE="doc xref"
+
+RDEPEND="virtual/commonlisp
+ dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+SITEFILE="70${PN}-gentoo.el"
+
+src_prepare() {
+ EPATCH_SUFFIX=patch epatch
+ mv "${WORKDIR}/swank.asd" "${S}" || die
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp || die
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el || die
+
+ # Remove xref.lisp (which is non-free) unless USE flag is set
+ use xref || rm -f xref.lisp
+}
+
+src_compile() {
+ elisp-compile *.el || die
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el || die
+ emake -j1 -C doc slime.info || die
+
+ if use doc; then
+ VARTEXFONTS="${T}/fonts" emake -j1 -C doc slime.{ps,pdf} || die
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.{el,elc} "${FILESDIR}/swank-loader.lisp" || die
+ sed "s:/usr/:${EPREFIX}&:g" "${FILESDIR}/${SITEFILE}" >"${T}/${SITEFILE}" \
+ || die
+ elisp-site-file-install "${T}/${SITEFILE}" || die
+
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}/swank-loader.lisp"
+
+ insinto "${CLSOURCEROOT%/}/swank"
+ doins *.lisp swank.asd || die
+ dodir "${CLSYSTEMROOT}" || die
+ dosym "${CLSOURCEROOT%/}/swank/swank.asd" "${CLSYSTEMROOT}" || die
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} || die
+ insinto "${CLSOURCEROOT%/}/swank/contrib"
+ doins contrib/*.lisp || die
+
+ ## install docs
+ doinfo doc/slime.info || die
+ dodoc README* ChangeLog HACKING NEWS PROBLEMS
+ newdoc contrib/README README.contrib
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ use doc && dodoc doc/slime.{ps,pdf}
+}
diff --git a/app-emacs/slime/slime-2.0_p20080731.ebuild b/app-emacs/slime/slime-2.0_p20080731.ebuild
new file mode 100644
index 00000000000..64157e2a78b
--- /dev/null
+++ b/app-emacs/slime/slime-2.0_p20080731.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+inherit common-lisp elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2
+ mirror://gentoo/${P}-patches.tar.bz2"
+
+LICENSE="GPL-2 xref.lisp"
+SLOT="0"
+KEYWORDS="amd64 ppc ~sparc x86"
+IUSE="doc"
+
+RDEPEND="virtual/commonlisp dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+SITEFILE=70${PN}-gentoo.el
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ EPATCH_SUFFIX=patch epatch
+ mv "${WORKDIR}/swank.asd" "${S}" || die
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp \
+ || die "sed swank.lisp failed"
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el \
+ || die "sed slime.el failed"
+}
+
+src_compile() {
+ elisp-compile *.el || die "Cannot compile core Elisp files"
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el || die "Cannot compile contrib Elisp files"
+ emake -j1 -C doc slime.info || die "Cannot build info docs"
+ if use doc; then
+ VARTEXFONTS="${T}"/fonts \
+ emake -j1 -C doc slime.{ps,pdf} || die "emake doc failed"
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.el{,c} "${FILESDIR}"/swank-loader.lisp \
+ || die "Cannot install SLIME core"
+ elisp-site-file-install "${FILESDIR}"/${SITEFILE} \
+ || die "elisp-site-file-install failed"
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}"/swank-loader.lisp
+ insinto "${CLSOURCEROOT%/}"/swank
+ doins *.lisp swank.asd
+ dodir "${CLSYSTEMROOT}"
+ dosym "${CLSOURCEROOT%/}"/swank/swank.asd "${CLSYSTEMROOT}"
+ dosym "${SITELISP}"/${PN}/swank-version.el "${CLSOURCEROOT%/}"/swank
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} \
+ || die "Cannot install contribs"
+ insinto "${CLSOURCEROOT%/}"/swank/contrib
+ doins contrib/*.lisp
+
+ ## install docs
+ dodoc README* ChangeLog HACKING NEWS PROBLEMS
+ newdoc contrib/README README.contrib
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ doinfo doc/slime.info
+ use doc && dodoc doc/slime.{ps,pdf}
+}
diff --git a/app-emacs/slime/slime-2.0_p20101103.ebuild b/app-emacs/slime/slime-2.0_p20101103.ebuild
new file mode 100644
index 00000000000..69de9666951
--- /dev/null
+++ b/app-emacs/slime/slime-2.0_p20101103.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=3
+
+inherit common-lisp elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+SRC_URI="mirror://gentoo/${P}.tar.bz2
+ mirror://gentoo/${P}-patches.tar.bz2"
+
+LICENSE="GPL-2 xref? ( xref.lisp )"
+SLOT="0"
+KEYWORDS="amd64 ppc ~sparc x86 ~amd64-linux ~x86-linux ~x86-macos"
+IUSE="doc xref"
+
+RDEPEND="virtual/commonlisp
+ dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+SITEFILE="70${PN}-gentoo.el"
+
+src_prepare() {
+ EPATCH_SUFFIX=patch epatch
+ mv "${WORKDIR}/swank.asd" "${S}" || die
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ sed -i '/^section :=/d' doc/Makefile || die
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp || die
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el || die
+ sed -i "s/@itemx INIT-FUNCTION/@item INIT-FUNCTION/" doc/slime.texi \
+ || die "sed doc/slime.texi failed"
+
+ # Remove xref.lisp (which is non-free) unless USE flag is set
+ use xref || rm -f xref.lisp
+}
+
+src_compile() {
+ elisp-compile *.el || die
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el || die
+ emake -j1 -C doc slime.info || die
+
+ if use doc; then
+ VARTEXFONTS="${T}/fonts" emake -j1 -C doc slime.pdf || die
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.{el,elc} "${FILESDIR}/swank-loader.lisp" || die
+ sed "s:/usr/:${EPREFIX}&:g" "${FILESDIR}/${SITEFILE}" >"${T}/${SITEFILE}" \
+ || die
+ elisp-site-file-install "${T}/${SITEFILE}" || die
+
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}/swank-loader.lisp"
+
+ insinto "${CLSOURCEROOT%/}/swank"
+ doins *.lisp swank.asd || die
+ dodir "${CLSYSTEMROOT}" || die
+ dosym "${CLSOURCEROOT%/}/swank/swank.asd" "${CLSYSTEMROOT}" || die
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} || die
+ insinto "${CLSOURCEROOT%/}/swank/contrib"
+ doins contrib/*.lisp || die
+
+ ## install docs
+ doinfo doc/slime.info || die
+ dodoc README* ChangeLog HACKING NEWS PROBLEMS
+ newdoc contrib/README README.contrib
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ use doc && dodoc doc/slime.pdf
+}
diff --git a/app-emacs/slime/slime-2.11.ebuild b/app-emacs/slime/slime-2.11.ebuild
new file mode 100644
index 00000000000..effd2445caf
--- /dev/null
+++ b/app-emacs/slime/slime-2.11.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+[[ ${PV} = *9999* ]] && GIT_ECLASS="git-r3" || GIT_ECLASS=""
+
+inherit common-lisp-3 ${GIT_ECLASS} elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+if [[ ${PV} != *9999* ]]; then
+ SRC_URI="https://github.com/slime/slime/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+fi
+
+LICENSE="GPL-2 xref? ( xref.lisp )"
+SLOT="0"
+if [[ ${PV} == *9999* ]]; then
+ KEYWORDS=""
+else
+ KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+fi
+IUSE="doc xref"
+RESTRICT=test # tests fail to contact sbcl
+
+RDEPEND="virtual/commonlisp
+ dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ >=sys-apps/texinfo-5.1
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+CLSYSTEMS=swank
+SITEFILE=70${PN}-gentoo.el
+
+src_unpack() {
+ if [[ ${PV} == *9999* ]]; then
+ EGIT_REPO_URI="https://github.com/slime/slime.git"
+ ${GIT_ECLASS}_src_unpack
+ fi
+ elisp_src_unpack
+}
+
+src_prepare() {
+ if [[ "${PV}" == "2.11" ]]; then
+ epatch "${FILESDIR}"/2.11/dont-load-sbcl-pprint.patch
+ fi
+ epatch "${FILESDIR}"/2.0_p20130214/gentoo-module-load.patch
+ epatch "${FILESDIR}"/2.0_p20110617/gentoo-dont-call-init.patch
+ has_version ">=app-editors/emacs-24" && rm -f lib/cl-lib.el
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ # SLIME uses the changelog date to make sure that the emacs side and the CL side
+ # are in sync. We hardcode it instead of letting slime determine it at runtime
+ # because ChangeLog doesn't get installed to $EMACSDIR
+ epatch "${FILESDIR}"/2.11/gentoo-changelog-date.patch
+
+ # When starting slime in emacs, slime looks for ${S}/swank/backend.lisp as
+ # /usr/share/common-lisp/source/swank/swank-backend.lisp
+ pushd swank || die
+ for i in *.lisp
+ do
+ mv ${i} ../swank-${i}
+ done
+ popd
+
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp \
+ || die "sed swank.lisp failed"
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el \
+ || die "sed slime.el failed"
+ sed -i "s/@itemx INIT-FUNCTION/@item INIT-FUNCTION/" doc/slime.texi \
+ || die "sed doc/slime.texi failed"
+
+ # Remove xref.lisp (which is non-free) unless USE flag is set
+ use xref || rm -f xref.lisp
+}
+
+src_compile() {
+ elisp-compile *.el || die
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el lib/*.el || die
+ emake -j1 -C doc slime.info || die "Cannot build info docs"
+
+ if use doc; then
+ VARTEXFONTS="${T}"/fonts \
+ emake -j1 -C doc slime.pdf || die "emake doc failed"
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.{el,elc} "${FILESDIR}"/swank-loader.lisp \
+ || die "Cannot install SLIME core"
+ sed "s:/usr/:${EPREFIX}&:g" "${FILESDIR}"/2.0_p20110617/${SITEFILE} \
+ >"${T}"/${SITEFILE} || die "sed failed"
+ elisp-site-file-install "${T}"/${SITEFILE} || die
+ cp "${FILESDIR}"/2.0_p20110617/swank.asd "${S}"
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}"/swank-loader.lisp
+ common-lisp-install-sources *.lisp
+ common-lisp-install-asdf swank.asd
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} \
+ || die "Cannot install contribs"
+ common-lisp-install-sources contrib/*.lisp
+
+ ## install lib
+ elisp-install ${PN}/lib/ lib/*.{el,elc} \
+ || die "Cannot install libs"
+
+ ## install docs
+ dodoc README.md ChangeLog CONTRIBUTING.md NEWS PROBLEMS
+ newdoc contrib/README.md README-contrib.md
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ doinfo doc/slime.info
+ use doc && dodoc doc/*.pdf
+}
diff --git a/app-emacs/slime/slime-2.12.ebuild b/app-emacs/slime/slime-2.12.ebuild
new file mode 100644
index 00000000000..c0a8ff26952
--- /dev/null
+++ b/app-emacs/slime/slime-2.12.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+[[ ${PV} = *9999* ]] && GIT_ECLASS="git-r3" || GIT_ECLASS=""
+
+inherit common-lisp-3 ${GIT_ECLASS} elisp eutils
+
+DESCRIPTION="SLIME, the Superior Lisp Interaction Mode (Extended)"
+HOMEPAGE="http://common-lisp.net/project/slime/"
+if [[ ${PV} != *9999* ]]; then
+ SRC_URI="https://github.com/slime/slime/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+fi
+
+LICENSE="GPL-2 xref? ( xref.lisp )"
+SLOT="0"
+if [[ ${PV} == *9999* ]]; then
+ KEYWORDS=""
+else
+ KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+fi
+IUSE="doc xref"
+RESTRICT=test # tests fail to contact sbcl
+
+RDEPEND="virtual/commonlisp
+ dev-lisp/asdf"
+DEPEND="${RDEPEND}
+ >=sys-apps/texinfo-5.1
+ doc? ( virtual/texi2dvi )"
+
+CLPACKAGE=swank
+CLSYSTEMS=swank
+SITEFILE=70${PN}-gentoo.el
+
+src_unpack() {
+ if [[ ${PV} == *9999* ]]; then
+ EGIT_REPO_URI="https://github.com/slime/slime.git"
+ ${GIT_ECLASS}_src_unpack
+ fi
+ elisp_src_unpack
+}
+
+src_prepare() {
+ if [[ "${PV}" == "2.11" ]]; then
+ epatch "${FILESDIR}"/2.11/dont-load-sbcl-pprint.patch
+ fi
+ epatch "${FILESDIR}"/2.0_p20130214/gentoo-module-load.patch
+ epatch "${FILESDIR}"/2.0_p20110617/gentoo-dont-call-init.patch
+ has_version ">=app-editors/emacs-24" && rm -f lib/cl-lib.el
+
+ # extract date of last update from ChangeLog, bug 233270
+ SLIME_CHANGELOG_DATE=$(awk '/^[-0-9]+ / { print $1; exit; }' ChangeLog)
+ [ -n "${SLIME_CHANGELOG_DATE}" ] || die "cannot determine ChangeLog date"
+
+ # SLIME uses the changelog date to make sure that the emacs side and the CL side
+ # are in sync. We hardcode it instead of letting slime determine it at runtime
+ # because ChangeLog doesn't get installed to $EMACSDIR
+ epatch "${FILESDIR}"/2.11/gentoo-changelog-date.patch
+
+ # When starting slime in emacs, slime looks for ${S}/swank/backend.lisp as
+ # /usr/share/common-lisp/source/swank/swank-backend.lisp
+ pushd swank || die
+ for i in *.lisp
+ do
+ mv ${i} ../swank-${i}
+ done
+ popd
+
+ sed -i "/(defvar \*swank-wire-protocol-version\*/s:nil:\"${SLIME_CHANGELOG_DATE}\":" swank.lisp \
+ || die "sed swank.lisp failed"
+ sed -i "s:@SLIME-CHANGELOG-DATE@:${SLIME_CHANGELOG_DATE}:" slime.el \
+ || die "sed slime.el failed"
+ sed -i "s/@itemx INIT-FUNCTION/@item INIT-FUNCTION/" doc/slime.texi \
+ || die "sed doc/slime.texi failed"
+
+ # Remove xref.lisp (which is non-free) unless USE flag is set
+ use xref || rm -f xref.lisp
+}
+
+src_compile() {
+ elisp-compile *.el || die
+ BYTECOMPFLAGS="${BYTECOMPFLAGS} -L contrib -l slime" \
+ elisp-compile contrib/*.el lib/*.el || die
+ emake -j1 -C doc slime.info || die "Cannot build info docs"
+
+ if use doc; then
+ VARTEXFONTS="${T}"/fonts \
+ emake -j1 -C doc slime.pdf || die "emake doc failed"
+ fi
+}
+
+src_install() {
+ ## install core
+ elisp-install ${PN} *.{el,elc} "${FILESDIR}"/swank-loader.lisp \
+ || die "Cannot install SLIME core"
+ sed "s:/usr/:${EPREFIX}&:g" "${FILESDIR}"/2.0_p20110617/${SITEFILE} \
+ >"${T}"/${SITEFILE} || die "sed failed"
+ elisp-site-file-install "${T}"/${SITEFILE} || die
+ cp "${FILESDIR}"/2.0_p20110617/swank.asd "${S}"
+ # remove upstream swank-loader, since it won't be used
+ rm "${S}"/swank-loader.lisp
+ common-lisp-install-sources *.lisp
+ common-lisp-install-asdf swank.asd
+
+ ## install contribs
+ elisp-install ${PN}/contrib/ contrib/*.{el,elc,scm,goo} \
+ || die "Cannot install contribs"
+ common-lisp-install-sources contrib/*.lisp
+
+ ## install lib
+ elisp-install ${PN}/lib/ lib/*.{el,elc} \
+ || die "Cannot install libs"
+
+ ## install docs
+ dodoc README.md ChangeLog CONTRIBUTING.md NEWS PROBLEMS
+ newdoc contrib/README.md README-contrib.md
+ newdoc contrib/ChangeLog ChangeLog.contrib
+ doinfo doc/slime.info
+ use doc && dodoc doc/*.pdf
+}