summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2020-07-19 22:41:22 +0100
committerjao <jao@gnu.org>2020-07-19 22:41:22 +0100
commit847d2ad4c6da462c26c50af1ef7d9cd697f3a5d2 (patch)
tree29cdda38fe12e399e36830bd25bd7ac5cb83011e
parent02e228f312483fc78af1c2a1e93f706f774788fa (diff)
downloadgeiser-847d2ad4c6da462c26c50af1ef7d9cd697f3a5d2.tar.gz
geiser-847d2ad4c6da462c26c50af1ef7d9cd697f3a5d2.tar.bz2
scheme and autotools removals
The plan is to have geiser-core contain only, well, the elisp core engine. The autotools scafolding is no really worth it, so it's gone too (and in the process, i'll look younger).
-rw-r--r--AUTHORS37
-rw-r--r--ChangeLog6
-rw-r--r--HACKING26
-rw-r--r--INSTALL115
-rw-r--r--Makefile.am59
l---------NEWS.org1
-rw-r--r--README.elpa40
-rw-r--r--THANKS46
-rwxr-xr-xautogen.sh5
-rw-r--r--bin/Makefile.am15
-rwxr-xr-xbin/geiser-racket.sh24
-rw-r--r--configure.ac32
-rw-r--r--doc/makefile (renamed from doc/Makefile.am)22
-rw-r--r--elisp/Makefile.am42
-rw-r--r--elisp/geiser-install.el.in5
-rw-r--r--elisp/geiser-version.el.in20
-rw-r--r--elisp/geiser.el13
-rw-r--r--license (renamed from COPYING)0
-rw-r--r--makefile23
-rw-r--r--news.org (renamed from NEWS)0
-rw-r--r--readme.org (renamed from README.org)25
21 files changed, 53 insertions, 503 deletions
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index b583db1..0000000
--- a/AUTHORS
+++ /dev/null
@@ -1,37 +0,0 @@
-Jose A. Ortega Ruiz <jao@gnu.org> designed and implemented Geiser and
-is its active maintainer. For more boring details about him, see
-<http://jao.io>.
-
-Daniel J. Leslie implemented and maintains Geiser's support for
-Chicken.
-
-Peter Feigl implemented and maintins Geiser's support for GNU/MIT
-Scheme, Chibi and Chez.
-
-Contributors:
-
-Michael Wilber
-Diogo F. S. Ramos
-Jonas Rodrigues
-Ray Racine
-Nick Parker
-Darren Hoo
-Ludovic Courtès
-Alex Kost
-Mario Rodas
-Christoph Egger
-Chunyang Xu
-Fice T
-Syohei Yoshida
-Mario Domenech
-Chaos Eternal
-Peter Wang
-John Whitbeck
-Ziyi Yan
-George D. Plymale II
-Jordan Brown
-Edwin Whatkeys
-Alexander Konstantinov
-Aaron Marks
-
-See also <https://gitlab.com/jaor/geiser/graphs/master>.
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 09d790c..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,6 +0,0 @@
-## The contents of this file will be generated during 'make dist' by the
-## shell command:
-
- git log --summary --stat
-
-# which you can run using 'sh ChangeLog'
diff --git a/HACKING b/HACKING
deleted file mode 100644
index 5be4cb2..0000000
--- a/HACKING
+++ /dev/null
@@ -1,26 +0,0 @@
-## How to support a new Scheme implementation
-
-Geiser works by running an instance of a REPL, or remotely connecting
-to one, and evaluating the scheme code it sees there. Then, every time
-it needs to perform some operation (like, say, printing autodoc,
-jumping to a source location or expanding a macro), it asks the
-running scheme instance for that information.
-
-So supporting a new scheme usually means writing a small scheme
-library that provides that information on demand, and then some
-standard elisp functions that invoke the procedures in that
-library.
-
-To see what elisp functions one needs to implement, just execute the
-command `M-x geiser-implementation-help` inside emacs with a recent
-version of geiser installed. And then take a look at, say,
-geiser-guile.el or geiser-racket.el for examples of how those
-functions are implemented for concrete schemes (those are the most
-featureful implementations we have, so perhaps it's easier to begin
-with something like geiser-chicken.el or geiser-chibi.el).
-
-Not all schemes can provide introspective information to implement all
-the functionality that geiser tries to offer. That is okay: you can
-leave as many functions unimplemented as you see fit (there is even an
-explicit list of unsupported features), and geiser will still know how
-to use the ones that are implemented.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index c17c059..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,115 +0,0 @@
-Installing Geiser.
-------------------
-
-Geiser is usable from its source tree, with no configuration
-whatsoever, or can be installed from ELPA with `M-x install-package'
-is Marmalade is in your list of archives. You can also (byte) compile
-and install it with the usual configure/make/make install dance.
-
-* From ELPA
-
-Add Marmalade to your `package-archives' list:
-
- (require 'package)
- (add-to-list 'package-archives
- '("marmalade" . "http://marmalade-repo.org/packages/"))
- (package-initialize)
-
-and run `M-x install-package RET geiser`. You can also use
-http://download.savannah.gnu.org/releases/geiser/packages as a repo,
-or download directly the package from there and use M-x
-package-install-file.
-
-* In place
- - Extract the tarball or clone the git repository anywhere in your
- file system. Let's call that place <path-to-geiser>.
- - In your .emacs:
-
- (load-file "<path-to-geiser>/elisp/geiser.el")
-
-* Byte-compiled
- - Create a build directory, `build', say:
- $ cd <path-to-geiser>
- $ mkdir build; cd build
- - Configure and make:
- $ ../configure && make
-
- Now, you can use the byte-compiled Geiser in place by adding to
- your .emacs:
-
- (load "<path-to-geiser>/build/elisp/geiser-load")
-
- or, alternatively, install it with:
-
- $ make install
-
- (you might need to get root access, depending on your installation
- directory) and, instead of the above load forms, require
- 'geiser-install (not 'geiser, mind you) in your emacs
- initialization file:
-
- (require 'geiser-install)
-
-* Chicken Addendum
- These steps are necessary to fully support Chicken Scheme, but are
- not required for any other scheme.
-
- - Install the necessary support eggs:
- $ chicken-install -s apropos chicken-doc
- - Update the Chicken documentation database:
- $ cd `csi -p '(chicken-home)'`
- $ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx
-
- You're ready to go!
-
-* Gambit Addendum
- These steps are necessary to fully support all Gambit Scheme functionalities,
- but are not required for any other scheme.
-
- # SETUP :
- 1 - clone the last version of gambit and of this repo
- 2 - configure gambit using --enable-rtlib-debug-source to activate autodoc
- ``` bash
- $ cd ~/
- $ git clone "the gambit repo address"
- $ cd gambit
- $ ./configure --enable-single-host --enable-debug --enable-rtlib-debug-source
- $ make bootstrap
- $ make bootclean
- $ make -j
- $ make install
- ```
- 3 - put a link to geiser/elisp/geiser.el in your init file
- in your init file paste :
- ``` elisp
- (load-file "~/geiser/elisp/geiser.el")
- ```
- (the path is your path to geiser.el.)
-
- # setup REMOTE CONNECT TO A GAMBIT REPL
- 1 - you need to enable the gambit/geiser module
- ( if you can't, substitute the command below
- with the PS: at the end of the readme )
- ``` bash
- $ mkdir ~/gambit/lib/gambit/geiser
- $ cp ~/geiser/geiser-module/* ~/gambit/lib/geiser/
- ```
- 2 - now that you have the module you start gsi with it and using the -:d@
- ``` bash
- $ gsi -:d gambit/geiser -
- ```
- 3 - you can now open emacs and write
- ```
- M-x geiser-connect gambit
- ```
- Enjoy !
-
-By the way, if you are unable to use gambit modules,
-open gsi with the gambit.scm file
-located in geiser/scheme/gambit/geiser/gambit.scm
-
-something like : gsi -:d@ ~/geiser/scheme/gambit/geiser/gambit.scm -
-
-Geiser's makefile accepts also all those other standard autotools
-targets that you've come to know and love and that are documented
-in virtually all boilerplate INSTALL files out there.
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 6e1b49b..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,59 +0,0 @@
-SUBDIRS = . elisp scheme bin doc
-
-EXTRA_DIST = THANKS README.org README.elpa
-
-README: README.org
- cp $(top_srcdir)/README.org README
-
-dist-hook:
- $(SHELL) $(top_srcdir)/ChangeLog > $(top_distdir)/ChangeLog
-
-elpa_name = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
-elpa_dir = $(abs_top_builddir)/$(elpa_name)
-elpa_slogan = "GNU Emacs and Scheme talk to each other"
-geiser_el = $(elpa_dir)/geiser.el
-bin_dir = $(elpa_dir)/bin
-scheme_dir = $(elpa_dir)/scheme
-
-elpa: README.elpa info
- rm -rf $(elpa_dir)
- $(mkdir_p) $(elpa_dir)
-
- echo '(define-package "geiser" "$(PACKAGE_VERSION)" $(elpa_slogan))' \
- > $(elpa_dir)/geiser-pkg.el
-
- $(INSTALL_DATA) $(abs_top_srcdir)/elisp/*.el \
- $(elpa_dir)
-
- $(mkdir_p) $(scheme_dir)/chez/geiser
- $(mkdir_p) $(scheme_dir)/guile/geiser
- $(mkdir_p) $(scheme_dir)/gambit/geiser
- $(mkdir_p) $(scheme_dir)/racket/geiser
- $(mkdir_p) $(scheme_dir)/chicken/geiser
- $(mkdir_p) $(scheme_dir)/chibi/geiser
- $(mkdir_p) $(scheme_dir)/mit/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/chez/geiser/* \
- $(scheme_dir)/chez/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/guile/geiser/* \
- $(scheme_dir)/guile/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/gambit/geiser/* \
- $(scheme_dir)/gambit/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/racket/geiser/* \
- $(scheme_dir)/racket/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/chibi/geiser/* \
- $(scheme_dir)/chibi/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/chicken/geiser/* \
- $(scheme_dir)/chicken/geiser
- $(INSTALL_DATA) $(abs_top_srcdir)/scheme/mit/geiser/* \
- $(scheme_dir)/mit/geiser
-
- $(INSTALL_DATA) $(srcdir)/doc/geiser.info $(elpa_dir)
- (cd $(elpa_dir) && install-info --dir=dir geiser.info 2>/dev/null)
-
- $(INSTALL_DATA) $(top_srcdir)/README.elpa $(elpa_dir)/README
-
- $(mkdir_p) $(bin_dir)
- $(INSTALL) $(top_srcdir)/bin/geiser-racket.sh $(bin_dir)
-
- rm -f $(elpa_name).tar
- tar cf $(elpa_name).tar $(elpa_name)
diff --git a/NEWS.org b/NEWS.org
deleted file mode 120000
index 3d70ee3..0000000
--- a/NEWS.org
+++ /dev/null
@@ -1 +0,0 @@
-NEWS \ No newline at end of file
diff --git a/README.elpa b/README.elpa
deleted file mode 100644
index a2d717a..0000000
--- a/README.elpa
+++ /dev/null
@@ -1,40 +0,0 @@
-Geiser is a generic Emacs/Scheme interaction mode, featuring an
-enhanced REPL and a set of minor modes improving Emacs' basic scheme
-major mode.
-
-Geiser supports Guile, Chicken, Chibi, MIT-Scheme, Gambit, Racket, and Chez.
-
-Main functionalities:
-
- - Evaluation of forms in the namespace of the current module.
-
- - Macro expansion.
-
- - File/module loading.
-
- - Namespace-aware identifier completion (including local bindings,
- names visible in the current module, and module names).
-
- - Autodoc: the echo area shows information about the signature of
- the procedure/macro around point automatically.
-
- - Jump to definition of identifier at point.
-
- - Direct access to documentation, including docstrings (when the
- implementation provides them) and user manuals.
-
- - Listings of identifiers exported by a given module (Guile).
-
- - Listings of callers/callees of procedures (Guile).
-
- - Rudimentary support for debugging (list of
- evaluation/compilation error in an Emacs' compilation-mode
- buffer).
-
- - Support for inline images in schemes, such as Racket, that treat
- them as first order values.
-
-See http://www.nongnu.org/geiser/ for the full manual in HTML form, or
-the the info manual installed by this package.
-
-Author: http://jao.io
diff --git a/THANKS b/THANKS
deleted file mode 100644
index 565d4a8..0000000
--- a/THANKS
+++ /dev/null
@@ -1,46 +0,0 @@
-Dan Leslie, with the help of his three-months old daughter Freija,
-proved there's a smidgen of sense in this madness by adding support
-for Chicken to version 0.7 of Geiser, several years after it was born.
-
-Andy Wingo, Geiser's first user, has been a continuous source of
-encouragement and suggestions, and keeps improving Guile and heeding
-my feature requests.
-
-The nice thing about collaborating with Andreas Rottmann over all
-these years is that he will not only make your project better with
-insightful comments and prodding: he'll send you patches galore too.
-
-Ludovic Courtès, #geiser's citizen no. 1, joined the fun after a
-while, and has since then been a continuous source of encouragement,
-ideas and bug reports.
-
-Michael Wilber convinced me that image support for Racket was not only
-fun, but easy, with the best argument: actual code!
-
-Daniel Hackney and Grant Rettke created the first ELPA packages for
-Geiser and taught me to fish.
-
-Diogo F. S. Ramos is Geiser's most indefatigable user and bug
-reporter, and the mailing list has been a far less lonely place since
-he came.
-
-Aleix Conchillo has been my favourite spammer, beta tester and patch
-sender during more years and for more projects than i can remember.
-
-Eduardo Cavazos' contagious enthusiasm has helped in many ways to keep
-Geiser alive, and he's become its best evangelist in R6RS circles.
-
-Alex Kost has contributed with many bug reports and improved Geiser
-with several patches.
-
-Eli Barzilay took the time to play with an early alpha and made many
-valuable suggestions, besides answering all my 'how do you in PLT'
-questions.
-
-Matthew Flatt, Robby Findler and the rest of the PLT team did not only
-answer my inquiries, but provided almost instant fixes to the few
-issues i found.
-
-Thanks also to the PLT and Guile communities, for showing me that
-Geiser was not only possible, but a pleasure to hack on. And to the
-Slime hackers, who led the way.
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 781eabd..0000000
--- a/autogen.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-[ -f elisp/geiser.el ] || exit 1
-
-autoreconf -Wall -i
diff --git a/bin/Makefile.am b/bin/Makefile.am
deleted file mode 100644
index 9f6ee2b..0000000
--- a/bin/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-EXTRA_DIST = geiser-racket.sh
-dist_bin_SCRIPTS = geiser-racket
-noinst_SCRIPTS = geiser-racket-noinst
-
-CLEANFILES = $(dist_bin_SCRIPTS) $(noinst_SCRIPTS)
-
-geiser-racket: $(srcdir)/geiser-racket.sh
- @sed -e "s|top=\".*\"|top=$(datarootdir)/geiser|" \
- $(srcdir)/geiser-racket.sh >$@
- @chmod +x $@
-
-geiser-racket-noinst: $(srcdir)/geiser-racket.sh
- @sed -e "s|top=\".*\"|top=$(abs_top_srcdir)/scheme|" \
- $(srcdir)/geiser-racket.sh >$@
- @chmod +x $@
diff --git a/bin/geiser-racket.sh b/bin/geiser-racket.sh
deleted file mode 100755
index 4ac7712..0000000
--- a/bin/geiser-racket.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-#|
-topdir=$(dirname $0)
-elpa_scheme=$topdir/scheme
-in_scheme=$topdir/../scheme
-top=$(if [ -d $elpa_scheme ]; then echo $elpa_scheme; else echo $in_scheme; fi)
-exec racket -i -S "$top/racket" -l errortrace -cu "$0" ${1+"$@"}
-|#
-
-#lang racket/base
-
-(require (lib "cmdline.rkt"))
-(require geiser/server)
-
-(define port (make-parameter 0))
-(define host (make-parameter #f (lambda (h) (and (string? h) h))))
-
-(command-line
- "run-racket.sh" (current-command-line-arguments)
- (once-each
- (("-n" "--hostname") n "Network hostname, or #f for all interfaces" (host n))
- (("-p" "--port") p "Geiser server port" (port (string->number p)))))
-
-(printf "Geiser server running at port ~a~%" (start-geiser (port) (host)))
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index b1fd3c3..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2018, 2020 Jose A Ortega Ruiz.
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-AC_INIT([Geiser],[0.12],[geiser-users@nongnu.org],geiser)
-AC_CONFIG_SRCDIR([elisp/geiser.el])
-AM_INIT_AUTOMAKE
-
-AC_PROG_MAKE_SET
-AC_PROG_INSTALL
-AC_PROG_MKDIR_P
-AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, no)
-
-AM_PATH_LISPDIR
-
-AC_CONFIG_FILES([
-Makefile
-elisp/Makefile
-elisp/geiser-version.el
-elisp/geiser-load.el
-scheme/Makefile
-bin/Makefile
-doc/Makefile
-])
-
-AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/makefile
index 863c2df..1d3bb63 100644
--- a/doc/Makefile.am
+++ b/doc/makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2010 Jose Antonio Ortega Ruiz
+# Copyright (C) 2010, 2020 Jose Antonio Ortega Ruiz
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
@@ -8,22 +8,8 @@
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# SUBDIRS = img
-SUFFIXES = .html
-
-info_TEXINFOS = geiser.texi
-geiser_TEXINFOS = \
- macros.texi \
- top.texi \
- intro.texi \
- install.texi \
- repl.texi \
- parens.texi \
- cheat.texi \
- thanks.texi \
- index.texi
-
-output_dir=$(top_builddir)/doc/html
+top_srcdir=..
+output_dir=html
web:
rm -f $(output_dir)/*.html
@@ -36,5 +22,3 @@ web:
$(top_srcdir)/doc/web.texi
cp $(top_srcdir)/doc/geiser.css ${output_dir}
cp -r $(top_srcdir)/doc/img ${output_dir}
-
-EXTRA_DIST = dir
diff --git a/elisp/Makefile.am b/elisp/Makefile.am
deleted file mode 100644
index 3d09946..0000000
--- a/elisp/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-EXTRA_DIST = geiser-install.el.in geiser-load.el.in
-
-dist_lisp_LISP = \
- geiser-autodoc.el \
- geiser-base.el \
- geiser-company.el \
- geiser-compile.el \
- geiser-completion.el \
- geiser-connection.el \
- geiser-custom.el \
- geiser-debug.el \
- geiser-doc.el \
- geiser-edit.el \
- geiser.el \
- geiser-eval.el \
- geiser-guile.el \
- geiser-image.el \
- geiser-impl.el \
- geiser-log.el \
- geiser-menu.el \
- geiser-mit.el \
- geiser-mode.el \
- geiser-racket.el \
- geiser-gambit.el \
- geiser-chicken.el \
- geiser-chez.el \
- geiser-chibi.el \
- geiser-popup.el \
- geiser-reload.el \
- geiser-repl.el \
- geiser-syntax.el \
- geiser-xref.el \
- geiser-version.el
-
-lisp_LISP = geiser-install.el
-noinst_LISP = geiser-load.el
-
-CLEANFILES = geiser-install.el geiser-load.el
-
-geiser-install.el: $(srcdir)/geiser.el $(srcdir)/geiser-install.el.in
- @sed -e "s|@SCHEME_DIR[@]|$(datarootdir)/geiser|" \
- $(srcdir)/geiser-install.el.in >$@
diff --git a/elisp/geiser-install.el.in b/elisp/geiser-install.el.in
deleted file mode 100644
index da9f28f..0000000
--- a/elisp/geiser-install.el.in
+++ /dev/null
@@ -1,5 +0,0 @@
-(require 'geiser)
-
-(setq geiser-scheme-dir "@SCHEME_DIR@")
-
-(provide 'geiser-install)
diff --git a/elisp/geiser-version.el.in b/elisp/geiser-version.el.in
deleted file mode 100644
index f5a1348..0000000
--- a/elisp/geiser-version.el.in
+++ /dev/null
@@ -1,20 +0,0 @@
-;;; geiser-version.el.in -- geiser's version
-
-;; Copyright (C) 2009 Jose Antonio Ortega Ruiz
-
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the Modified BSD License. You should
-;; have received a copy of the license along with this program. If
-;; not, see <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>.
-
-
-
-(defvar geiser-version-string "@PACKAGE_STRING@"
- "Geiser's version as a string.")
-
-(defun geiser-version ()
- "Echoes Geiser's version."
- (interactive)
- (message "%s" geiser-version-string))
-
-(provide 'geiser-version)
diff --git a/elisp/geiser.el b/elisp/geiser.el
index 837fb24..eb5e975 100644
--- a/elisp/geiser.el
+++ b/elisp/geiser.el
@@ -1,6 +1,6 @@
;;; geiser.el --- GNU Emacs and Scheme talk to each other
-;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2015, 2018 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2011, 2012, 2013, 2015, 2018, 2020 Jose Antonio Ortega Ruiz
;; URL: http://www.nongnu.org/geiser/
;; This program is free software; you can redistribute it and/or
@@ -157,14 +157,7 @@
geiser-debug
geiser-faces
geiser-mode
- geiser-guile
- geiser-gambit
geiser-image
- geiser-racket
- geiser-chicken
- geiser-chez
- geiser-chibi
- geiser-mit
geiser-implementation
geiser-xref))
@@ -173,10 +166,8 @@
;;;###autoload
(add-hook 'scheme-mode-hook 'geiser-mode--maybe-activate)
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.rkt\\'" . scheme-mode))
-
+
(provide 'geiser)
;;; geiser.el ends here
diff --git a/COPYING b/license
index f894f6f..f894f6f 100644
--- a/COPYING
+++ b/license
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..ebddc0d
--- /dev/null
+++ b/makefile
@@ -0,0 +1,23 @@
+elpa_name = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
+elpa_dir = $(elpa_name)
+elpa_slogan = "GNU Emacs and Scheme talk to each other"
+geiser_el = $(elpa_dir)/geiser.el
+bin_dir = $(elpa_dir)/bin
+scheme_dir = $(elpa_dir)/scheme
+
+elpa: info
+ rm -rf $(elpa_dir)
+ mkdir -p $(elpa_dir)
+
+ echo '(define-package "geiser" "$(PACKAGE_VERSION)" $(elpa_slogan))' \
+ > $(elpa_dir)/geiser-pkg.el
+
+ cp $(abs_top_srcdir)/elisp/*.el $(elpa_dir)
+
+ cp doc/geiser.info $(elpa_dir)
+ (cd $(elpa_dir) && install-info --dir=dir geiser.info 2>/dev/null)
+
+ cp readme.org $(elpa_dir)/README
+
+ rm -f $(elpa_name).tar
+ tar cf $(elpa_name).tar $(elpa_name)
diff --git a/NEWS b/news.org
index 32c52ee..32c52ee 100644
--- a/NEWS
+++ b/news.org
diff --git a/README.org b/readme.org
index 8ee4fb6..368a9b7 100644
--- a/README.org
+++ b/readme.org
@@ -247,3 +247,28 @@
- =M-g n=, =M-g p=, =C-x `= for error navigation.
- =q= to bury buffer.
+* How to support a new scheme implementation
+ Geiser works by running an instance of a REPL, or remotely connecting
+ to one, and evaluating the scheme code it sees there. Then, every time
+ it needs to perform some operation (like, say, printing autodoc,
+ jumping to a source location or expanding a macro), it asks the
+ running scheme instance for that information.
+
+ So supporting a new scheme usually means writing a small scheme
+ library that provides that information on demand, and then some
+ standard elisp functions that invoke the procedures in that
+ library.
+
+ To see what elisp functions one needs to implement, just execute the
+ command `M-x geiser-implementation-help` inside emacs with a recent
+ version of geiser installed. And then take a look at, say,
+ geiser-guile.el or geiser-racket.el for examples of how those
+ functions are implemented for concrete schemes (those are the most
+ featureful implementations we have, so perhaps it's easier to begin
+ with something like geiser-chicken.el or geiser-chibi.el).
+
+ Not all schemes can provide introspective information to implement all
+ the functionality that geiser tries to offer. That is okay: you can
+ leave as many functions unimplemented as you see fit (there is even an
+ explicit list of unsupported features), and geiser will still know how
+ to use the ones that are implemented.