From 847d2ad4c6da462c26c50af1ef7d9cd697f3a5d2 Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 19 Jul 2020 22:41:22 +0100 Subject: 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). --- AUTHORS | 37 ------ COPYING | 29 ----- ChangeLog | 6 - HACKING | 26 ----- INSTALL | 115 ------------------ Makefile.am | 59 ---------- NEWS | 285 --------------------------------------------- NEWS.org | 1 - README.elpa | 40 ------- README.org | 249 --------------------------------------- THANKS | 46 -------- autogen.sh | 5 - bin/Makefile.am | 15 --- bin/geiser-racket.sh | 24 ---- configure.ac | 32 ----- doc/Makefile.am | 40 ------- doc/makefile | 24 ++++ elisp/Makefile.am | 42 ------- elisp/geiser-install.el.in | 5 - elisp/geiser-version.el.in | 20 ---- elisp/geiser.el | 13 +-- license | 29 +++++ makefile | 23 ++++ news.org | 285 +++++++++++++++++++++++++++++++++++++++++++++ readme.org | 274 +++++++++++++++++++++++++++++++++++++++++++ 25 files changed, 637 insertions(+), 1087 deletions(-) delete mode 100644 AUTHORS delete mode 100644 COPYING delete mode 100644 ChangeLog delete mode 100644 HACKING delete mode 100644 INSTALL delete mode 100644 Makefile.am delete mode 100644 NEWS delete mode 120000 NEWS.org delete mode 100644 README.elpa delete mode 100644 README.org delete mode 100644 THANKS delete mode 100755 autogen.sh delete mode 100644 bin/Makefile.am delete mode 100755 bin/geiser-racket.sh delete mode 100644 configure.ac delete mode 100644 doc/Makefile.am create mode 100644 doc/makefile delete mode 100644 elisp/Makefile.am delete mode 100644 elisp/geiser-install.el.in delete mode 100644 elisp/geiser-version.el.in create mode 100644 license create mode 100644 makefile create mode 100644 news.org create mode 100644 readme.org 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 designed and implemented Geiser and -is its active maintainer. For more boring details about him, see -. - -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 . diff --git a/COPYING b/COPYING deleted file mode 100644 index f894f6f..0000000 --- a/COPYING +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2009, 2010, 2011, 2012, 2013, 2015, Jose Antonio Ortega Ruiz -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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 . - - In your .emacs: - - (load-file "/elisp/geiser.el") - -* Byte-compiled - - Create a build directory, `build', say: - $ cd - $ 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 "/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 b/NEWS deleted file mode 100644 index 32c52ee..0000000 --- a/NEWS +++ /dev/null @@ -1,285 +0,0 @@ -* Version 0.12 (July 2020) - - - New project.el and projectile support (Andrew Whatson) - - Improved Chez support (Jay Xu, Aaron Marks, Julian Herrera) - - Improved Chicken support (Ricardo G. Herdt, Noam Postavsky) - - Bug fixes (Philip K, spellcard199) - - Linting and clean ups (Jonas Bernoulli) - - Documentation updates - -* Version 0.11.2 (February 2020) - - - Bug fixes - -* Version 0.11.1 (February 2020) - - - Bug fixes - -* Version 0.11 (February 2020) - - - Bug fixes for all supported implementations - - New support for Gambit - -* Version 0.10 (March 2018) - - - Better support for Guile 2.2 - - Better support for Chicken (Dan Leslie, John Whitbeck) - - Better support for Chez (Chaos Eternal) - - Bug fixes (Peter Wang, Diog F. S. Ramos, Mario Rodas, Jordan Brown) - - Documentation fixes (Jonas Bernoulli, Andrew Sackville-West, Ziyi - Yan, James C. De Ricco, George D. Plymale II) - -* Version 0.9 (Oct 2016) - - - Chicken: improvements by Dan Leslie. - - Guile: support for Guile 2.2 (with help from Raffik Naccache and - David Thompson). - - Preliminary support for GNU/MIT, Chibi and Chez by Peter Feigl. - - Lots of bug fixes. - -* Version 0.8.1 (Oct 13, 2015) - - Bug fix: font-lock-ensure is from the future. - -* Version 0.8 (Oct 12, 2015) - - Improved features: - - - Lots of improvements to Chicken support, by Dan Leslie. - - Better interoperability with xscheme. - - Much better performance for long lists of completions or - evaluated values. - - Better highlighting and indentation rules, by Alex Kost and Dan - Leslie. - - Make completion work for quoted symbols. - - Bug fixes: - - - geiser-connect-local working again. - -* Version 0.7 "Freija" (Feb 21, 2015) - - This release is dedicated to Dan's three-months-old daughter Freija, - who shared her dad's lap with his laptop while he was hacking on the - new Chicken scheme support for Geiser. - - New features: - - - Chicken support, by Dan Leslie. - - Improved features: - - - `company-mode' support completed with a method for `doc-buffer'. - - Support for multiple image display in Racket, including image - objects embedded in structured values (thanks to Greg Hendershott). - -* Version 0.6 (Aug 9, 2014) - - New features: - - - New customizable variables `geiser-debug-jump-to-debug-p` and - `geiser-debug-show-debug-p`. - - Better fontification of some scheme keywords (thanks to Diogo - F. S. Ramos). - - Bug fixes: - - - Better support for Typed Racket: (re)definitions now work for - typed/racket modules (thanks to Sam Tobin-Hochstadt). - - Better behaviour for geiser-eval-buffer in racket - buffers that contain a #lang directive. But you'd better use C-c - C-k instead. - - Better behaviour of C-c C-c when interrupting looping functions - in the REPL. - - Fixes for Makefile target html-am (as in now it works). - -* Version 0.5 (Dec 9, 2013) - - New features: - - - Geiser is now available from MELPA, with the help of Steve Purcell. - - Racket: new commands geiser-racket-{show, hide, toggle}-submodules, - for folding submodule forms in code buffers. - - Racket: interaction with submodules (entering them and evaluation - within their scope). - - New commands geiser-eval-buffer (C-c C-b) and - geiser-eval-buffer-and-go (C-c M-b), by Nick Parker. - - Pressing return on a previous expression in the REPL will resend - it, by Darren Hoo. - - Improvements to syntax highlighting (define/match in racket). - - Version checks for the underlying Scheme process, thanks to an - idea of B Batsov. - - Bug fixes: - - - Autodoc for Guile 2.0.9+'s subr fixed, thanks to Ludovic Courtès. - - Fixed problem when saving REPL history that contained non-ASCII - chars: all UTF-8 characters should be fair game now. - - Fixed problems with geiser-doc's history being handled by - session.el (by not letting the latter handle it). - - Paths in `geiser-load-path' are now also added to - `%load-compiled-path'. Ditto for paths added via - `geiser-add-to-load-path`. - - Compatibility fixes for Emacs snapshots. - -* Version 0.4 (May 2, 2013) - - New features: - - - New command geiser-insert-lambda, bound to C-c \ in Scheme - buffers (thanks to Ray Racine). - - Configurable case-sensitivity when highlighting keywords (thanks - to Diogo F.S. Ramos), via geiser-guile-case-sensitive-p and - geiser-racket-case-sensitive-pp - - C-u C-x C-e to insert evaluation result in buffer (thanks to - Diogo). - - New flag geiser-repl-query-on-kill-p to control whether emacs - will ask for confirmation before killing a buffer with a live - REPL process. - - New flag geiser-mode-start-repl-p to tell Geiser to start a new - REPL if one isn't active when geiser-mode is activated. - - Bug fixes: - - - Filename completion should also work in emacs 23.2 now. - - Racket filenames with spaces no longer break Geiser when entering - them (thanks to Diogo). - - The REPL no longer hangs when company-mode is active (thanks to - Aleix Conchillo). - - Help manual lookup in Racket fixed for #lang racket/base modules. - -* Version 0.3 (Jan 19, 2013) - - New features: - - - TAB in a string context in the REPL and Scheme buffers triggers - filename completion. - - User manual lookup command (C-c C-d i) available also in the - REPL. - - New REPL command, geiser-repl-clear-buffer (C-c M-o), to remove - all scheme output (thanks to Jonas Rodrigues). - - Indentation of scheme forms improved.. - - Bug fixes: - - - Racket: fixes for problems entering modules sans main.rkt. - - Racket: image support in Windows fixed. - -* Version 0.2.2 (Sep 30, 2012) - - - ELPA support. We have now ELPA packages. Thanks to Grant Rettke - and Daniel Hackney. - -* Version 0.2.1 (Sep 15, 2012) - - Bug fixes: - - - Racket: correctly reloading modules that contain submodules (this - one was breaking for instance code based on plai-typed). - - Racket: correctly jumping to symbols defined in files with .ss - extension. - - New features: - - - Racket: autodoc now displays argument names for constructors - defined by define-type (from either plai or plai-type). - - Racket: the included geiser-racket.sh script takes a new switch, - -n, to specify the network interface to listen to. - -* Version 0.2 (Sep 3, 2012) - - New features: - - - Support for images in Racket, both in the REPL and during - evaluations. Thanks to Michael Wilber for code, discussion and - testing. - - Support for Racket 5.3. Older Rackets not actively supported. - - ,cd command in Racket's REPL. - - New customizable variable, geiser-guile-manual-lookup-nodes, to - specify the name of Guile's info nodes, if need be. - - Bug fixes: - - - We don't deactivate autodoc in the REPL unless requested. - - Indentation for syntax-id-rules and for/hash. - - Highlighting of [else forms in scheme buffers. - - Indentation for all 'for' forms in Racket. - - Correctly buttonizing paths with leading spaces in DBG buffers - - Autodoc was being deactivated in REPLs. - -* Version 0.1.4 (Nov 26, 2011) - - New features: - - - Indentation for Racket's splicing-let and friends. - - Customizable prompt waiting time (geiser-repl-startup-time). - - New customizable faces: geiser-font-lock-repl-prompt and - geiser-font-lock-repl-input. - - Bug fixes: - - - C-c C-r and friends won't send unbalanced sexps to Scheme. - - C-c C-z works after run-geiser in a Scheme buffer. - - REPL: TAB indenting around whitespace. - - Racket: correct display of output to standard error (such as - rackunit's). - - Guile: ditto. - - Elisp: compatibility problems with filladapt fixed. - - Racket: autodoc in R5RS modules. - -* Version 0.1.3 (Jun 24, 2011) - - Bug fixes: - - - The REPL doesn't break when one calls read (fixes bug #33090). - - In Guile buffers, C-c C-a (a.k.a C-u C-c C-z) recognizes the - current module even before the define-module form (fixes bug - #33497). - - Racket can now use the GUI libraries (see bug #32844). - - Texinfo formatting fixes. - -* Version 0.1.2 (Mar 9, 2011) - - New features: - - - New C-c C-e C-l (or C-c C-r in REPL) to add a directory to - Scheme's load path. - - Guile 2.0 as lowest Guile version supported. - - New custom variable, geiser-guile-load-init-file-p, to allow - loading of ~/.guile. - - Bug fixes: - - - We no longer ignore geiser-repl-use-other-window. - - Company mode integration fixes (including #32231). - - M-x geiser-edit-module in REPL buffers fixed. - - We now respect user customizations of geiser-implementations-alist. - - Interaction with Guile's debugger fixed. - - "Clickable" paths in warnings buffer also for Guile 2.0. - - Fix for errors when entering r5rs modules in Racket. - -* Version 0.1.1 (Jan 24, 2011) - - New features: - - - "Manual autodoc" command; C-c C-d s. - - Autodoc retrieval is now asynchronous, for better behaviour in - remote connections. - - New C-c C-a to switch to REPL and enter module (C-c C-Z was broken). - - Racket: ',enter "foo"' as a synonym of ',enter (file "foo")'. - - Documentation typos, and grammar and layout fixes. - - - Bug fixes: - - - Avoiding *spurious* buffers in case of communication errors. - - REPL: fixed problem with input history navigation in Racket. - - Autodoc no longer skips non-alphanumeric identifiers. - - Autodoc messages no longer interfere with active minibuffer. - - Fix for module name completion in Guile. - - Quack compatibility: avoiding problems with #f &c. - - -* Version 0.1 (Dec 20, 2010) - - Initial release. 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/README.org b/README.org deleted file mode 100644 index 8ee4fb6..0000000 --- a/README.org +++ /dev/null @@ -1,249 +0,0 @@ -* Overview - - Geiser is a generic Emacs/Scheme interaction mode, featuring an - enhanced REPL and a set of minor modes improving Emacs' basic scheme - major mode. The main functionalities provided are: - - - 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. - - Access to documentation (including docstrings when the - implementation provides it). - - Listings of identifiers exported by a given module. - - Listings of callers/callees of procedures. - - 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. - - NOTE: if you're not in a hurry, [[http://www.nongnu.org/geiser/][Geiser's website]] contains a much - nicer manual. - -* Requirements - - Geiser needs Emacs 24 or better, and at least one of the supported - scheme implementations: - - - Guile 2.2 or better. - - Chicken 4.8.0 or better. - - MIT/GNU Scheme 9.1.1 or better. - - Chibi 0.7.3 or better. - - Gambit 4.9.3 or better. - - Racket 6.0 or better. - - Chez 9.4 or better. - -* Installation - - The easiest way is to use MELPA, and just type - =M-x package-install RET geiser= inside emacs. - - Geiser can be used either directly from its uninstalled source tree - or byte-compiled and installed after performing the standard - configure/make/make install dance. See the INSTALL file for more details. - -** Chicken 5 Addendum - These steps are necessary to fully support Chicken Scheme, but are - not required for any other scheme. - - - Install the necessary support eggs: - #+BEGIN_EXAMPLE - $ chicken-install -s apropos chicken-doc srfi-18 srfi-1 - #+END_EXAMPLE - - Update the Chicken documentation database: - #+BEGIN_EXAMPLE - $ cd `csi -R chicken.platform -p '(chicken-home)'` - $ curl https://3e8.org/pub/chicken-doc/chicken-doc-repo-5.tgz | sudo tar zx - #+END_EXAMPLE - -** Chicken 4 Addendum - These steps are necessary to fully support Chicken Scheme, but are - not required for any other scheme. - - - Install the necessary support eggs: - -#+BEGIN_EXAMPLE - $ chicken-install -s apropos chicken-doc -#+END_EXAMPLE - - - Update the Chicken documentation database: - -#+BEGIN_EXAMPLE - $ cd `csi -p '(chicken-home)'` - $ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx -#+END_EXAMPLE - -** Gambit Addendum - These steps are necessary to fully support Gambit Scheme. - - 1 - clone the last version of gambit - 2 - configure gambit using --enable-rtlib-debug-source to activate autodoc -#+BEGIN_EXAMPLE - $ 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 -#+END_EXAMPLE - -* Basic configuration - - The loading invocations above install all supported Scheme - implementations. You can list explicitly the ones that you want by - setting the variable =geiser-active-implementations= *before* loading - geiser.el. For instance: - -#+BEGIN_SRC elisp - (setq geiser-active-implementations '(chicken guile)) -#+END_SRC - - On opening a scheme file, Geiser will try to guess its Scheme, - defaulting to the first in the list. Use =C-c C-s= to select the - implementation by hand (on a per file basis). - - Check the geiser customization group for some options with: - -#+BEGIN_EXAMPLE - M-x customize-group RET geiser RET -#+END_EXAMPLE - - In particular, customize =geiser--binary=, which should point - to an executable in your path. - - To start a REPL, =M-x geiser=. - -** Completion with company-mode - - Geiser offers identifier and module name completion, bound to - =M-TAB= and =M-`= respectively. Only names visible in the current - module are offered. - - While that is cool and all, things are even better: if you have - [[http://company-mode.github.io/][company mode]] installed, Geiser's completion will use it. Just - require company-mode and, from then on, any new scheme buffer or - REPL will use it. - -* Quick key reference - - (See also [[file:///home/jao/usr/jao/geiser/web/geiser_5.html#Cheat-sheet][the manual]]'s cheat sheet) - -** In Scheme buffers: - - |-------------+--------------------------------------------------| - | C-c C-s | Specify Scheme implementation for buffer | - | C-c C-z | Switch to REPL | - | C-c C-a | Switch to REPL and current module | - | | | - |-------------+--------------------------------------------------| - | M-. | Go to definition of identifier at point | - | M-, | Go back to where M-. was last invoked | - | C-c C-e m | Ask for a module and open its file | - | C-c C-e C-l | Add a given directory to Scheme's load path | - | C-c C-e [ | Toggle between () and [] for current form | - | c-c C-e \ | Insert λ | - | | | - |-------------+--------------------------------------------------| - | C-M-x | Eval definition around point | - | C-c C-c | Eval definition around point | - | C-c M-e | Eval definition around point and switch to REPL | - | C-x C-e | Eval sexp before point | - | C-c C-r | Eval region | - | C-c M-r | Eval region and switch to REPL | - | C-c C-b | Eval buffer | - | C-c M-b | Eval buffer and switch to REPL | - | | | - |-------------+--------------------------------------------------| - | C-c C-m x | Macro-expand definition around point | - | C-c C-m e | Macro-expand sexp before point | - | C-c C-m r | Macro-expand region | - | | | - |-------------+--------------------------------------------------| - | C-c C-k | Compile and load current buffer | - | C-c C-l | Load scheme file | - | C-u C-c C-k | Compile and load current buffer, restarting REPL | - | | | - |-------------+--------------------------------------------------| - | C-c C-d d | See documentation for identifier at point | - | C-c C-d s | See short documentation for identifier at point | - | C-c C-d i | Look up manual for identifier at point | - | C-c C-d m | See a list of a module's exported identifiers | - | C-c C-d a | Toggle autodoc mode | - | | | - |-------------+--------------------------------------------------| - | C-c < | Show callers of procedure at point | - | C-c > | Show callees of procedure at point | - | | | - |-------------+--------------------------------------------------| - | M-TAB | Complete identifier at point | - | M-`, C-. | Complete module name at point | - | TAB | Complete identifier at point or indent | - | | (If geiser-mode-smart-tab-p is t) | - |-------------+--------------------------------------------------| - -** In the REPL - - |-------------+----------------------------------------------------| - | C-c C-z | Start Scheme REPL, or jump to previous buffer | - | C-c M-o | Clear scheme output | - | C-c C-q | Kill Scheme process | - | C-c C-l | Load scheme file | - | C-c C-k | Nuke REPL: use it if the REPL becomes unresponsive | - | | | - |-------------+----------------------------------------------------| - | M-. | Edit identifier at point | - | TAB, M-TAB | Complete identifier at point | - | M-`, C-. | Complete module name at point | - | M-p, M-n | Prompt history, matching current prefix | - | | | - |-------------+----------------------------------------------------| - | C-c \ | Insert λ | - | C-c [ | Toggle between () and [] for current form | - | | | - |-------------+----------------------------------------------------| - | C-c C-m | Set current module | - | C-c C-i | Import module into current namespace | - | C-c C-r | Add a given directory to scheme's load path | - | | | - |-------------+----------------------------------------------------| - | C-c C-d C-d | See documentation for symbol at point | - | C-c C-d C-m | See documentation for module | - | C-c C-d C-a | Toggle autodoc mode | - |-------------+----------------------------------------------------| - -** In the documentation browser: - - |----------+----------------------------------------------| - | f | Next page | - | b | Previous page | - | | | - |----------+----------------------------------------------| - | TAB, n | Next link | - | S-TAB, p | Previous link | - | N | Next section | - | P | Previous section | - | | | - |----------+----------------------------------------------| - | k | Kill current page and go to previous or next | - | g, r | Refresh page | - | c | Clear browsing history | - | | | - |----------+----------------------------------------------| - | ., M-. | Edit identifier at point | - | z | Switch to REPL | - | | | - |----------+----------------------------------------------| - | q | Bury buffer | - |----------+----------------------------------------------| - -** In backtrace (evaluation/compile result) buffers: - - - =M-g n=, =M-g p=, =C-x `= for error navigation. - - =q= to bury buffer. 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.am deleted file mode 100644 index 863c2df..0000000 --- a/doc/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (C) 2010 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 -# 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. - -# 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 - -web: - rm -f $(output_dir)/*.html - texi2html --output=$(output_dir) \ - --split=chapter \ - --noheader \ - --nonumber-section \ - --init-file=$(top_srcdir)/doc/site.conf \ - --top-file=index.html \ - $(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/doc/makefile b/doc/makefile new file mode 100644 index 0000000..1d3bb63 --- /dev/null +++ b/doc/makefile @@ -0,0 +1,24 @@ +# 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 +# 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. + +top_srcdir=.. +output_dir=html + +web: + rm -f $(output_dir)/*.html + texi2html --output=$(output_dir) \ + --split=chapter \ + --noheader \ + --nonumber-section \ + --init-file=$(top_srcdir)/doc/site.conf \ + --top-file=index.html \ + $(top_srcdir)/doc/web.texi + cp $(top_srcdir)/doc/geiser.css ${output_dir} + cp -r $(top_srcdir)/doc/img ${output_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 . - - - -(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/license b/license new file mode 100644 index 0000000..f894f6f --- /dev/null +++ b/license @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2009, 2010, 2011, 2012, 2013, 2015, Jose Antonio Ortega Ruiz +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 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.org b/news.org new file mode 100644 index 0000000..32c52ee --- /dev/null +++ b/news.org @@ -0,0 +1,285 @@ +* Version 0.12 (July 2020) + + - New project.el and projectile support (Andrew Whatson) + - Improved Chez support (Jay Xu, Aaron Marks, Julian Herrera) + - Improved Chicken support (Ricardo G. Herdt, Noam Postavsky) + - Bug fixes (Philip K, spellcard199) + - Linting and clean ups (Jonas Bernoulli) + - Documentation updates + +* Version 0.11.2 (February 2020) + + - Bug fixes + +* Version 0.11.1 (February 2020) + + - Bug fixes + +* Version 0.11 (February 2020) + + - Bug fixes for all supported implementations + - New support for Gambit + +* Version 0.10 (March 2018) + + - Better support for Guile 2.2 + - Better support for Chicken (Dan Leslie, John Whitbeck) + - Better support for Chez (Chaos Eternal) + - Bug fixes (Peter Wang, Diog F. S. Ramos, Mario Rodas, Jordan Brown) + - Documentation fixes (Jonas Bernoulli, Andrew Sackville-West, Ziyi + Yan, James C. De Ricco, George D. Plymale II) + +* Version 0.9 (Oct 2016) + + - Chicken: improvements by Dan Leslie. + - Guile: support for Guile 2.2 (with help from Raffik Naccache and + David Thompson). + - Preliminary support for GNU/MIT, Chibi and Chez by Peter Feigl. + - Lots of bug fixes. + +* Version 0.8.1 (Oct 13, 2015) + + Bug fix: font-lock-ensure is from the future. + +* Version 0.8 (Oct 12, 2015) + + Improved features: + + - Lots of improvements to Chicken support, by Dan Leslie. + - Better interoperability with xscheme. + - Much better performance for long lists of completions or + evaluated values. + - Better highlighting and indentation rules, by Alex Kost and Dan + Leslie. + - Make completion work for quoted symbols. + + Bug fixes: + + - geiser-connect-local working again. + +* Version 0.7 "Freija" (Feb 21, 2015) + + This release is dedicated to Dan's three-months-old daughter Freija, + who shared her dad's lap with his laptop while he was hacking on the + new Chicken scheme support for Geiser. + + New features: + + - Chicken support, by Dan Leslie. + + Improved features: + + - `company-mode' support completed with a method for `doc-buffer'. + - Support for multiple image display in Racket, including image + objects embedded in structured values (thanks to Greg Hendershott). + +* Version 0.6 (Aug 9, 2014) + + New features: + + - New customizable variables `geiser-debug-jump-to-debug-p` and + `geiser-debug-show-debug-p`. + - Better fontification of some scheme keywords (thanks to Diogo + F. S. Ramos). + + Bug fixes: + + - Better support for Typed Racket: (re)definitions now work for + typed/racket modules (thanks to Sam Tobin-Hochstadt). + - Better behaviour for geiser-eval-buffer in racket + buffers that contain a #lang directive. But you'd better use C-c + C-k instead. + - Better behaviour of C-c C-c when interrupting looping functions + in the REPL. + - Fixes for Makefile target html-am (as in now it works). + +* Version 0.5 (Dec 9, 2013) + + New features: + + - Geiser is now available from MELPA, with the help of Steve Purcell. + - Racket: new commands geiser-racket-{show, hide, toggle}-submodules, + for folding submodule forms in code buffers. + - Racket: interaction with submodules (entering them and evaluation + within their scope). + - New commands geiser-eval-buffer (C-c C-b) and + geiser-eval-buffer-and-go (C-c M-b), by Nick Parker. + - Pressing return on a previous expression in the REPL will resend + it, by Darren Hoo. + - Improvements to syntax highlighting (define/match in racket). + - Version checks for the underlying Scheme process, thanks to an + idea of B Batsov. + + Bug fixes: + + - Autodoc for Guile 2.0.9+'s subr fixed, thanks to Ludovic Courtès. + - Fixed problem when saving REPL history that contained non-ASCII + chars: all UTF-8 characters should be fair game now. + - Fixed problems with geiser-doc's history being handled by + session.el (by not letting the latter handle it). + - Paths in `geiser-load-path' are now also added to + `%load-compiled-path'. Ditto for paths added via + `geiser-add-to-load-path`. + - Compatibility fixes for Emacs snapshots. + +* Version 0.4 (May 2, 2013) + + New features: + + - New command geiser-insert-lambda, bound to C-c \ in Scheme + buffers (thanks to Ray Racine). + - Configurable case-sensitivity when highlighting keywords (thanks + to Diogo F.S. Ramos), via geiser-guile-case-sensitive-p and + geiser-racket-case-sensitive-pp + - C-u C-x C-e to insert evaluation result in buffer (thanks to + Diogo). + - New flag geiser-repl-query-on-kill-p to control whether emacs + will ask for confirmation before killing a buffer with a live + REPL process. + - New flag geiser-mode-start-repl-p to tell Geiser to start a new + REPL if one isn't active when geiser-mode is activated. + + Bug fixes: + + - Filename completion should also work in emacs 23.2 now. + - Racket filenames with spaces no longer break Geiser when entering + them (thanks to Diogo). + - The REPL no longer hangs when company-mode is active (thanks to + Aleix Conchillo). + - Help manual lookup in Racket fixed for #lang racket/base modules. + +* Version 0.3 (Jan 19, 2013) + + New features: + + - TAB in a string context in the REPL and Scheme buffers triggers + filename completion. + - User manual lookup command (C-c C-d i) available also in the + REPL. + - New REPL command, geiser-repl-clear-buffer (C-c M-o), to remove + all scheme output (thanks to Jonas Rodrigues). + - Indentation of scheme forms improved.. + + Bug fixes: + + - Racket: fixes for problems entering modules sans main.rkt. + - Racket: image support in Windows fixed. + +* Version 0.2.2 (Sep 30, 2012) + + - ELPA support. We have now ELPA packages. Thanks to Grant Rettke + and Daniel Hackney. + +* Version 0.2.1 (Sep 15, 2012) + + Bug fixes: + + - Racket: correctly reloading modules that contain submodules (this + one was breaking for instance code based on plai-typed). + - Racket: correctly jumping to symbols defined in files with .ss + extension. + + New features: + + - Racket: autodoc now displays argument names for constructors + defined by define-type (from either plai or plai-type). + - Racket: the included geiser-racket.sh script takes a new switch, + -n, to specify the network interface to listen to. + +* Version 0.2 (Sep 3, 2012) + + New features: + + - Support for images in Racket, both in the REPL and during + evaluations. Thanks to Michael Wilber for code, discussion and + testing. + - Support for Racket 5.3. Older Rackets not actively supported. + - ,cd command in Racket's REPL. + - New customizable variable, geiser-guile-manual-lookup-nodes, to + specify the name of Guile's info nodes, if need be. + + Bug fixes: + + - We don't deactivate autodoc in the REPL unless requested. + - Indentation for syntax-id-rules and for/hash. + - Highlighting of [else forms in scheme buffers. + - Indentation for all 'for' forms in Racket. + - Correctly buttonizing paths with leading spaces in DBG buffers + - Autodoc was being deactivated in REPLs. + +* Version 0.1.4 (Nov 26, 2011) + + New features: + + - Indentation for Racket's splicing-let and friends. + - Customizable prompt waiting time (geiser-repl-startup-time). + - New customizable faces: geiser-font-lock-repl-prompt and + geiser-font-lock-repl-input. + + Bug fixes: + + - C-c C-r and friends won't send unbalanced sexps to Scheme. + - C-c C-z works after run-geiser in a Scheme buffer. + - REPL: TAB indenting around whitespace. + - Racket: correct display of output to standard error (such as + rackunit's). + - Guile: ditto. + - Elisp: compatibility problems with filladapt fixed. + - Racket: autodoc in R5RS modules. + +* Version 0.1.3 (Jun 24, 2011) + + Bug fixes: + + - The REPL doesn't break when one calls read (fixes bug #33090). + - In Guile buffers, C-c C-a (a.k.a C-u C-c C-z) recognizes the + current module even before the define-module form (fixes bug + #33497). + - Racket can now use the GUI libraries (see bug #32844). + - Texinfo formatting fixes. + +* Version 0.1.2 (Mar 9, 2011) + + New features: + + - New C-c C-e C-l (or C-c C-r in REPL) to add a directory to + Scheme's load path. + - Guile 2.0 as lowest Guile version supported. + - New custom variable, geiser-guile-load-init-file-p, to allow + loading of ~/.guile. + + Bug fixes: + + - We no longer ignore geiser-repl-use-other-window. + - Company mode integration fixes (including #32231). + - M-x geiser-edit-module in REPL buffers fixed. + - We now respect user customizations of geiser-implementations-alist. + - Interaction with Guile's debugger fixed. + - "Clickable" paths in warnings buffer also for Guile 2.0. + - Fix for errors when entering r5rs modules in Racket. + +* Version 0.1.1 (Jan 24, 2011) + + New features: + + - "Manual autodoc" command; C-c C-d s. + - Autodoc retrieval is now asynchronous, for better behaviour in + remote connections. + - New C-c C-a to switch to REPL and enter module (C-c C-Z was broken). + - Racket: ',enter "foo"' as a synonym of ',enter (file "foo")'. + - Documentation typos, and grammar and layout fixes. + + + Bug fixes: + + - Avoiding *spurious* buffers in case of communication errors. + - REPL: fixed problem with input history navigation in Racket. + - Autodoc no longer skips non-alphanumeric identifiers. + - Autodoc messages no longer interfere with active minibuffer. + - Fix for module name completion in Guile. + - Quack compatibility: avoiding problems with #f &c. + + +* Version 0.1 (Dec 20, 2010) + + Initial release. diff --git a/readme.org b/readme.org new file mode 100644 index 0000000..368a9b7 --- /dev/null +++ b/readme.org @@ -0,0 +1,274 @@ +* Overview + + Geiser is a generic Emacs/Scheme interaction mode, featuring an + enhanced REPL and a set of minor modes improving Emacs' basic scheme + major mode. The main functionalities provided are: + + - 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. + - Access to documentation (including docstrings when the + implementation provides it). + - Listings of identifiers exported by a given module. + - Listings of callers/callees of procedures. + - 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. + + NOTE: if you're not in a hurry, [[http://www.nongnu.org/geiser/][Geiser's website]] contains a much + nicer manual. + +* Requirements + + Geiser needs Emacs 24 or better, and at least one of the supported + scheme implementations: + + - Guile 2.2 or better. + - Chicken 4.8.0 or better. + - MIT/GNU Scheme 9.1.1 or better. + - Chibi 0.7.3 or better. + - Gambit 4.9.3 or better. + - Racket 6.0 or better. + - Chez 9.4 or better. + +* Installation + + The easiest way is to use MELPA, and just type + =M-x package-install RET geiser= inside emacs. + + Geiser can be used either directly from its uninstalled source tree + or byte-compiled and installed after performing the standard + configure/make/make install dance. See the INSTALL file for more details. + +** Chicken 5 Addendum + These steps are necessary to fully support Chicken Scheme, but are + not required for any other scheme. + + - Install the necessary support eggs: + #+BEGIN_EXAMPLE + $ chicken-install -s apropos chicken-doc srfi-18 srfi-1 + #+END_EXAMPLE + - Update the Chicken documentation database: + #+BEGIN_EXAMPLE + $ cd `csi -R chicken.platform -p '(chicken-home)'` + $ curl https://3e8.org/pub/chicken-doc/chicken-doc-repo-5.tgz | sudo tar zx + #+END_EXAMPLE + +** Chicken 4 Addendum + These steps are necessary to fully support Chicken Scheme, but are + not required for any other scheme. + + - Install the necessary support eggs: + +#+BEGIN_EXAMPLE + $ chicken-install -s apropos chicken-doc +#+END_EXAMPLE + + - Update the Chicken documentation database: + +#+BEGIN_EXAMPLE + $ cd `csi -p '(chicken-home)'` + $ curl http://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx +#+END_EXAMPLE + +** Gambit Addendum + These steps are necessary to fully support Gambit Scheme. + + 1 - clone the last version of gambit + 2 - configure gambit using --enable-rtlib-debug-source to activate autodoc +#+BEGIN_EXAMPLE + $ 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 +#+END_EXAMPLE + +* Basic configuration + + The loading invocations above install all supported Scheme + implementations. You can list explicitly the ones that you want by + setting the variable =geiser-active-implementations= *before* loading + geiser.el. For instance: + +#+BEGIN_SRC elisp + (setq geiser-active-implementations '(chicken guile)) +#+END_SRC + + On opening a scheme file, Geiser will try to guess its Scheme, + defaulting to the first in the list. Use =C-c C-s= to select the + implementation by hand (on a per file basis). + + Check the geiser customization group for some options with: + +#+BEGIN_EXAMPLE + M-x customize-group RET geiser RET +#+END_EXAMPLE + + In particular, customize =geiser--binary=, which should point + to an executable in your path. + + To start a REPL, =M-x geiser=. + +** Completion with company-mode + + Geiser offers identifier and module name completion, bound to + =M-TAB= and =M-`= respectively. Only names visible in the current + module are offered. + + While that is cool and all, things are even better: if you have + [[http://company-mode.github.io/][company mode]] installed, Geiser's completion will use it. Just + require company-mode and, from then on, any new scheme buffer or + REPL will use it. + +* Quick key reference + + (See also [[file:///home/jao/usr/jao/geiser/web/geiser_5.html#Cheat-sheet][the manual]]'s cheat sheet) + +** In Scheme buffers: + + |-------------+--------------------------------------------------| + | C-c C-s | Specify Scheme implementation for buffer | + | C-c C-z | Switch to REPL | + | C-c C-a | Switch to REPL and current module | + | | | + |-------------+--------------------------------------------------| + | M-. | Go to definition of identifier at point | + | M-, | Go back to where M-. was last invoked | + | C-c C-e m | Ask for a module and open its file | + | C-c C-e C-l | Add a given directory to Scheme's load path | + | C-c C-e [ | Toggle between () and [] for current form | + | c-c C-e \ | Insert λ | + | | | + |-------------+--------------------------------------------------| + | C-M-x | Eval definition around point | + | C-c C-c | Eval definition around point | + | C-c M-e | Eval definition around point and switch to REPL | + | C-x C-e | Eval sexp before point | + | C-c C-r | Eval region | + | C-c M-r | Eval region and switch to REPL | + | C-c C-b | Eval buffer | + | C-c M-b | Eval buffer and switch to REPL | + | | | + |-------------+--------------------------------------------------| + | C-c C-m x | Macro-expand definition around point | + | C-c C-m e | Macro-expand sexp before point | + | C-c C-m r | Macro-expand region | + | | | + |-------------+--------------------------------------------------| + | C-c C-k | Compile and load current buffer | + | C-c C-l | Load scheme file | + | C-u C-c C-k | Compile and load current buffer, restarting REPL | + | | | + |-------------+--------------------------------------------------| + | C-c C-d d | See documentation for identifier at point | + | C-c C-d s | See short documentation for identifier at point | + | C-c C-d i | Look up manual for identifier at point | + | C-c C-d m | See a list of a module's exported identifiers | + | C-c C-d a | Toggle autodoc mode | + | | | + |-------------+--------------------------------------------------| + | C-c < | Show callers of procedure at point | + | C-c > | Show callees of procedure at point | + | | | + |-------------+--------------------------------------------------| + | M-TAB | Complete identifier at point | + | M-`, C-. | Complete module name at point | + | TAB | Complete identifier at point or indent | + | | (If geiser-mode-smart-tab-p is t) | + |-------------+--------------------------------------------------| + +** In the REPL + + |-------------+----------------------------------------------------| + | C-c C-z | Start Scheme REPL, or jump to previous buffer | + | C-c M-o | Clear scheme output | + | C-c C-q | Kill Scheme process | + | C-c C-l | Load scheme file | + | C-c C-k | Nuke REPL: use it if the REPL becomes unresponsive | + | | | + |-------------+----------------------------------------------------| + | M-. | Edit identifier at point | + | TAB, M-TAB | Complete identifier at point | + | M-`, C-. | Complete module name at point | + | M-p, M-n | Prompt history, matching current prefix | + | | | + |-------------+----------------------------------------------------| + | C-c \ | Insert λ | + | C-c [ | Toggle between () and [] for current form | + | | | + |-------------+----------------------------------------------------| + | C-c C-m | Set current module | + | C-c C-i | Import module into current namespace | + | C-c C-r | Add a given directory to scheme's load path | + | | | + |-------------+----------------------------------------------------| + | C-c C-d C-d | See documentation for symbol at point | + | C-c C-d C-m | See documentation for module | + | C-c C-d C-a | Toggle autodoc mode | + |-------------+----------------------------------------------------| + +** In the documentation browser: + + |----------+----------------------------------------------| + | f | Next page | + | b | Previous page | + | | | + |----------+----------------------------------------------| + | TAB, n | Next link | + | S-TAB, p | Previous link | + | N | Next section | + | P | Previous section | + | | | + |----------+----------------------------------------------| + | k | Kill current page and go to previous or next | + | g, r | Refresh page | + | c | Clear browsing history | + | | | + |----------+----------------------------------------------| + | ., M-. | Edit identifier at point | + | z | Switch to REPL | + | | | + |----------+----------------------------------------------| + | q | Bury buffer | + |----------+----------------------------------------------| + +** In backtrace (evaluation/compile result) buffers: + + - =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. -- cgit v1.2.3