Skip to content

Commit

Permalink
add redshank (for lisps) to repository
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Peddie committed Dec 27, 2011
1 parent f265f13 commit 8f3fc84
Show file tree
Hide file tree
Showing 6 changed files with 1,425 additions and 1 deletion.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ site-lisp/emacs-w3m/
site-lisp/gccsense/
site-lisp/mingus/
site-lisp/predictive/
site-lisp/redshank/
site-lisp/rudel/
site-lisp/undo-tree/
site-lisp/yasnippet/
Expand Down
48 changes: 48 additions & 0 deletions site-lisp/redshank/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Redshank - Common Lisp Editing Extensions (for Emacs) -*- outline -*-

* Installation Instructions
See file redshank.el for setting up Redshank mode.

* External Dependencies
Redshank is developed and tested with GNU Emacs 22.2.50.1. Patches to
ensure interoperability with other versions of GNU Emacs and XEmacs
are welcome.

The number of Elisp library dependencies is fairly small:

** Paredit
Version 21 is required. Download from
<http://mumble.net/~campbell/emacs/paredit.el>.

** cl, skeleton, easymenu
These come with GNU Emacs 22.

** SLIME
SLIME is optional, but recommended to activate all features of
Redshank. As of this writing, the latest release of SLIME (2.0) is
very outdated, thus Redshank requires a recent CVS snapshot of SLIME.
Instructions can be found at <http://common-lisp.net/project/slime/>.

* Common Lisp
Some features require interoperation with a Common Lisp
implementation, via SLIME. This has been tested and is known to work
with at least SBCL 1.0.19, OpenMCL 1.1-pre-070722 (DarwinX8664), and
CLISP 2.40, albeit with varying degrees of support.

The currently best supported implementation is SBCL. Support for
other implementations is very welcome. (See file redshank.lisp for the
Lisp side support.)

** Steel Bank Common Lisp (SBCL)
Download SBCL from <http://www.sbcl.org/>.

** OpenMCL
Download OpenMCL from <http://openmcl.clozure.com/>.

** CLISP
Download CLISP from <http://clisp.cons.org/>.

* Contact
Send questions, bug reports, comments and feature suggestions to
Michael Weber <[email protected]>. New versions can be
found at <http://www.foldr.org/~michaelw/lisp/redshank/>.
72 changes: 72 additions & 0 deletions site-lisp/redshank/TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# -*- outline -*-

* Bugs

`redshank-complete-form' on a slot
(defclass a ()
((%foo |)))

does not remove the leading ?%. Refactor
`redshank-canonical-slot-name', `redshank-accessor-name', etc.

* Ideas

These are random ideas which I want to implement at some point.
Contributors looking to help out are very welcome to get inspired.
New ideas are welcome, too, of course.

** break points
<mathrick> is there any special reason SLIME doesn't have "insert breakpoint
on this form" functionality?

(beginning-of-defun) (down-list) (forward-sexp) ;name
(set-marker ...)
keep track of break points, redshank-unbreak-all

Perhaps this is better done with break-on-enter (if the implementation
supports it?)

** redshank-extract-{flet,labels}
(let ((context (parse-context)))
(while (not (endp context))
(when (and (null (pop context))
(member (first context) '(flet labels)))
; this is the beginning of the flet
)

A better way would be a more general partial parsing framework...

** (declare (ignore ...))
<antifuchs> michaelw: declaring things to be ignored/ignorable is one thing
redshank could do (:
<tcr> michaelw: redshank-make-symbol-at-point-ignored

** inline function/variable definitions
This is the "inverse" operation to extract.

** rename variables

** mouse copy
http://www.clozure.com/pipermail/openmcl-devel/2007-November/004092.html
http://lispm.dyndns.org/news?ID=NEWS-2007-11-18-1

Add support to insert form templates with S-M-mouse-1.

** COND to IF
<antifuchs> michaelw: btw, could redshank include a command for turning a
one-condition (+ optional T) cond back into an IF form? (:

** DOLIST/DOTIMES to LOOP (and back?)

** Treat DEFINE-CONDITION similar to DEFCLASS
except the default slot accessor should be :reader

** DEFCLASS vertical layout
<Xach> michaelw: slot name on its own line, and every slot option/value pair
on their own lines.

** import symbols with explicitly mentioned package (add :import-from clause
to defpackage form), and shorten them.

** Context menus
<http://web.media.mit.edu/~lieber/Lieberary/Softviz/CACM-Debugging/Already-Full/Already-Full.html>
50 changes: 50 additions & 0 deletions site-lisp/redshank/redshank-loader.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
;;; redshank-loader.el --- Loader for Redshank

;; Copyright (C) 2008 Michael Weber

;; Author: Michael Weber <[email protected]>
;; Keywords: languages, lisp

;;; Setup
;; See file redshank.el

;;; Code
(let* ((redshank-file (or (locate-library "redshank")
load-file-name))
(redshank-path (and redshank-file
(file-name-directory redshank-file))))
(when redshank-path
(add-to-list 'load-path redshank-path)))

(autoload 'redshank-mode "redshank"
"Minor mode for editing and refactoring (Common) Lisp code."
t)
(autoload 'turn-on-redshank-mode "redshank"
"Turn on Redshank mode. Please see function `redshank-mode'."
t)

(autoload 'asdf-mode "redshank"
"Minor mode for editing ASDF files." t)
(autoload 'turn-on-asdf-mode "redshank"
"Turn on ASDF mode. Please see function `asdf-mode'." t)

;;;###autoload
(defun redshank-setup (hooks &optional autoinsertp)
"Installs `redshank-mode' on major mode hooks listed in HOOKS.
If AUTOINSERTP is non-nil and `auto-insert-mode' is available,
activate support for that, too."
(dolist (hook hooks)
(add-hook hook 'turn-on-redshank-mode))
(add-to-list 'auto-mode-alist '("\\.asdf?\\'" . asdf-mode))
(when autoinsertp
(eval-after-load "autoinsert"
'(progn
(add-to-list 'auto-insert-alist
'(lisp-mode . [redshank-mode-line-skeleton
redshank-in-package-skeleton]))
(add-to-list 'auto-insert-alist
'(asdf-mode . [redshank-mode-line-skeleton
redshank-asdf-defsystem-skeleton]))))))

(provide 'redshank-loader)
;;; redshank-loader.el ends here
Loading

0 comments on commit 8f3fc84

Please sign in to comment.