+
Modified: branches/trunk-reorg/projects/scrabble/website/scrabble.js
==============================================================================
--- branches/trunk-reorg/projects/scrabble/website/scrabble.js (original)
+++ branches/trunk-reorg/projects/scrabble/website/scrabble.js Thu Jan 17 11:36:28 2008
@@ -1,386 +1,380 @@
// -*- JavaScript -*-
-var boardScoring = [["triple-word",null,null,"double-letter",null,null,null,"triple-word",
- null,null,null,"double-letter",null,null,"triple-word"],
- [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
- null,null,null,"double-word",null],
- [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
- null,null,null,"double-word",null,null],
- ["double-letter",null,null,"double-word",null,null,null,"double-letter",
- null,null,null,"double-word",null,null,"double-letter"],
- [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
- null,null,null,null],
- [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
- null,null,null,"triple-letter",null],
- [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
- null,null,null,"double-letter",null,null],
- ["triple-word",null,null,"double-letter",null,null,null,"double-word",
- null,null,null,"double-letter",null,null,"triple-word"],
- [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
- null,null,null,"double-letter",null,null],
- [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
- null,null,null,"triple-letter",null],
- [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
- null,null,null,null],
- ["double-letter",null,null,"double-word",null,null,null,"double-letter",
- null,null,null,"double-word",null,null,"double-letter"],
- [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
- null,null,null,"double-word",null,null],
- [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
- null,null,null,"double-word",null],
- ["triple-word",null,null,"double-letter",null,null,null,"triple-word",
- null,null,null,"double-letter",null,null,"triple-word"]];
-
-// for now
-function requestError (error) {
- alert("Request error: " + error.message)
-}
+var scrabbleRules = {
+ boardScoring: [["triple-word",null,null,"double-letter",null,null,null,"triple-word",
+ null,null,null,"double-letter",null,null,"triple-word"],
+ [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"double-word",null],
+ [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-word",null,null],
+ ["double-letter",null,null,"double-word",null,null,null,"double-letter",
+ null,null,null,"double-word",null,null,"double-letter"],
+ [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
+ null,null,null,null],
+ [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"triple-letter",null],
+ [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-letter",null,null],
+ ["triple-word",null,null,"double-letter",null,null,null,"double-word",
+ null,null,null,"double-letter",null,null,"triple-word"],
+ [null,null,"double-letter",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-letter",null,null],
+ [null,"triple-letter",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"triple-letter",null],
+ [null,null,null,null,"double-word",null,null,null,null,null,"double-word",
+ null,null,null,null],
+ ["double-letter",null,null,"double-word",null,null,null,"double-letter",
+ null,null,null,"double-word",null,null,"double-letter"],
+ [null,null,"double-word",null,null,null,"double-letter",null,"double-letter",
+ null,null,null,"double-word",null,null],
+ [null,"double-word",null,null,null,"triple-letter",null,null,null,"triple-letter",
+ null,null,null,"double-word",null],
+ ["triple-word",null,null,"double-letter",null,null,null,"triple-word",
+ null,null,null,"double-letter",null,null,"triple-word"]],
-// Scrabble rule enforcement
+ // Scrabble rule enforcement
-function checkMoveLegality(placedTiles)
-{
+ checkMoveLegality : function (placedTiles) {
// Given the board and list of placed tiles, either throw an error or
// return if the move is legal.
var positions = map(function (placement) { return [ placement.x, placement.y ] }, placedTiles)
- .sort(function (a, b) { return (a[0] - b[0]) || (a[1] - b[1])});
+ .sort(function (a, b) { return (a[0] - b[0]) || (a[1] - b[1])});
if (filter(partial(operator.ne, positions[0][0]), map(function (position) { return position[0] }, positions)).length
- && filter(partial(operator.ne, positions[0][1]), map(function (position) { return position[1] }, positions)).length) {
- throw "not-in-a-row";
+ && filter(partial(operator.ne, positions[0][1]), map(function (position) { return position[1] }, positions)).length) {
+ throw "not-in-a-row";
}
var startOfPlacement = positions[0];
var endOfPlacement = positions[positions.length - 1];
for (var x = startOfPlacement[0]; x <= endOfPlacement[0]; x++) {
- for (var y = startOfPlacement[1]; y <= endOfPlacement[1]; y++) {
- if (!letterAt(x, y) && (findValue(positions, [ x, y ]) == -1)) {
- throw "placement-with-holes";
- }
- }
+ for (var y = startOfPlacement[1]; y <= endOfPlacement[1]; y++) {
+ if (!letterAt(x, y) && (findValue(positions, [ x, y ]) == -1)) {
+ throw "placement-with-holes";
+ }
+ }
}
if (findValue(positions, [ 7, 7 ]) == -1) {
- var found = false;
- for (var x = startOfPlacement[0]; !found && (x <= endOfPlacement[0]); x++) {
- for (var y = startOfPlacement[1]; !found && (y <= endOfPlacement[1]); y++) {
- if (((x > 0) && letterAt(x - 1, y))
- || ((x < 14) && letterAt(x + 1, y))
- || ((y > 0) && letterAt(x, y - 1))
- || ((y < 14) && letterAt(x, y + 1))) {
- found = true;
- }
- }
- }
- if (!found) {
- throw "not-touching-other-tile";
- }
+ var found = false;
+ for (var x = startOfPlacement[0]; !found && (x <= endOfPlacement[0]); x++) {
+ for (var y = startOfPlacement[1]; !found && (y <= endOfPlacement[1]); y++) {
+ if (((x > 0) && letterAt(x - 1, y))
+ || ((x < 14) && letterAt(x + 1, y))
+ || ((y > 0) && letterAt(x, y - 1))
+ || ((y < 14) && letterAt(x, y + 1))) {
+ found = true;
+ }
+ }
+ }
+ if (!found) {
+ throw "not-touching-other-tile";
+ }
}
-}
+ },
-//
+ //
-function getFieldScore(x, y) {
+ fieldScore : function(x, y) {
return boardScoring[x][y] || 'standard';
-}
+ }
+};
var theirTrays;
var tray = [];
+var gameID = 108;
var board;
-var border = 10;
-
function makeBoard() {
- var container = $('playfield');
- board = [];
- for (x = 0; x < 15; x++) {
- board[x] = [];
- for (y = 0; y < 15; y++) {
- var element = DIV();
- element.style.position = 'absolute';
- element.style.width = '40px';
- element.style.height = '40px';
- var imageName = (x == 7 && y == 7) ? "start-field" : getFieldScore(x, y);
- element.style.backgroundImage = 'url(images/' + imageName + '.png)';
- element.x = x;
- element.y = y;
- setElementPosition(element, { x: border + x * 44, y: border + y * 44 });
- YAHOO.util.Event.on(element, 'click', emptyTileClicked)
- board[x][y] = element;
- }
- appendChildNodes(container, board[x]);
- }
-
- var shuffleButton = DIV(null, "shuffle");
- shuffleButton.style.color = 'white';
- shuffleButton.style.position = 'absolute';
- shuffleButton.onclick = shuffleMyTray;
- setElementPosition(shuffleButton, { x: border + 480, y: border + 665 });
- appendChildNodes(container, shuffleButton);
-
- var gameLog = DIV({ id: 'gameLog' }, "");
- gameLog.style.position = 'absolute';
- gameLog.style.width = '280px';
- gameLog.style.height = '250px';
- gameLog.style.textAlign = 'left';
- gameLog.style.overflowY = 'scroll';
- setElementPosition(gameLog, { x: border + 680, y: border + 400 });
- appendChildNodes($('playfield'), gameLog);
-
- var nextTurn = DIV({ id: 'nextTurn' }, "");
- nextTurn.style.position = 'absolute';
- nextTurn.style.width = '280px';
- nextTurn.style.textAlign = 'left';
- setElementPosition(nextTurn, { x: border + 680, y: border + 665 });
- appendChildNodes($('playfield'), nextTurn);
-
- var nextTurn = DIV({ id: 'status' }, "");
- nextTurn.style.position = 'absolute';
- nextTurn.style.width = '280px';
- nextTurn.style.textAlign = 'left';
- setElementPosition(nextTurn, { x: border + 680, y: border + 680 });
- appendChildNodes($('playfield'), nextTurn);
+ var container = $('playfield');
+ board = [];
+ for (x = 0; x < 15; x++) {
+ board[x] = [];
+ for (y = 0; y < 15; y++) {
+ var element = DIV();
+ element.style.position = 'absolute';
+ element.style.width = '40px';
+ element.style.height = '40px';
+ var imageName = (x == 7 && y == 7) ? "start-field" : scrabbleRules.fieldScore(x, y);
+ element.style.backgroundImage = 'url(images/' + imageName + '.png)';
+ element.x = x;
+ element.y = y;
+ setElementPosition(element, { x: x * 44, y: y * 44 });
+ YAHOO.util.Event.on(element, 'click', emptyTileClicked)
+ board[x][y] = element;
+ }
+ appendChildNodes(container, board[x]);
+ }
+
+ var shuffleButton = DIV(null, "shuffle");
+ shuffleButton.style.color = 'white';
+ shuffleButton.style.position = 'absolute';
+ shuffleButton.onclick = shuffleMyTray;
+ setElementPosition(shuffleButton, { x: 480, y: 665 });
+ appendChildNodes(container, shuffleButton);
+
+ var gameLog = DIV({ id: 'gameLog' }, "");
+ gameLog.style.position = 'absolute';
+ gameLog.style.width = '280px';
+ gameLog.style.height = '250px';
+ gameLog.style.textAlign = 'left';
+ gameLog.style.overflowY = 'scroll';
+ setElementPosition(gameLog, { x: 680, y: 400 });
+ appendChildNodes($('playfield'), gameLog);
+
+ var nextTurn = DIV({ id: 'nextTurn' }, "");
+ nextTurn.style.position = 'absolute';
+ nextTurn.style.width = '280px';
+ nextTurn.style.textAlign = 'left';
+ setElementPosition(nextTurn, { x: 680, y: 665 });
+ appendChildNodes($('playfield'), nextTurn);
+
+ var nextTurn = DIV({ id: 'status' }, "");
+ nextTurn.style.position = 'absolute';
+ nextTurn.style.width = '280px';
+ nextTurn.style.textAlign = 'left';
+ setElementPosition(nextTurn, { x: 680, y: 680 });
+ appendChildNodes($('playfield'), nextTurn);
}
function setLetter(x, y, letter, isBlank) {
- var image = IMG({ src: 'images/' + letter + (isBlank ? "-blank" : "") + '.png'});
- image.style.position = 'absolute';
- image.style.top = '3px';
- image.style.left = '3px';
- setElementPosition(image, { x: border + x * 44 + 3, y: border + y * 44 + 3 });
- appendChildNodes($('playfield'), image);
- board[x][y].letterNode = image;
- board[x][y].letter = letter;
-}
-
-function placeLetter(x, y, tile) {
+ var image = IMG({ src: 'images/' + letter + (isBlank ? "-blank" : "") + '.png'});
+ image.style.position = 'absolute';
+ image.style.top = '3px';
+ image.style.left = '3px';
+ setElementPosition(image, { x: x * 44 + 3, y: y * 44 + 3 });
+ appendChildNodes($('playfield'), image);
+ board[x][y].letterNode = image;
+ board[x][y].letter = letter;
}
function removeLastLetterFromMove() {
}
function letterAt(x, y) {
- return board[x][y].letter && !board[x][y].justPlaced;
+ return board[x][y].letter && !board[x][y].justPlaced;
}
function Cursor()
{
- var image = new IMG({ src: 'images/cursor.png' });
- image.style.position = 'absolute';
- image.style.top = '-3px';
- image.style.left = '-3px';
-
- this.image = image;
- this.x = -1;
- this.y = -1;
- this.direction = 0;
-
- this.set = function(x, y) {
- this.x = x;
- this.y = y;
- appendChildNodes(board[x][y], this.image);
- board[x][y].cursor = this.image;
- };
-
- this.clear = function() {
- if (this.x != -1) {
- removeElement(board[this.x][this.y].cursor);
- board[this.x][this.y].cursor = undefined;
- this.x = this.y = -1;
- this.direction = 0;
- }
- };
-
- this.advance = function(isHoriz) {
- var horizontal = 1;
- var vertical = 2;
- var direction = this.direction;
- if (direction == 0) {
- // Direction not determined
- if (isHoriz != undefined) {
- direction = isHoriz ? horizontal : vertical;
- } else if (((this.y < 14) && letterAt(this.x, this.y + 1))
- || ((this.y > 1)
- && letterAt(this.x, this.y - 1)
- && !letterAt(this.x, this.y - 2))
- || ((this.x > 1)
- && letterAt(this.x - 1, this.y)
- && letterAt(this.x - 2, this.y))) {
- direction = vertical;
- } else {
- direction = horizontal;
- }
- }
- var x = this.x;
- var y = this.y;
- this.clear();
- this.direction = direction;
- if (this.direction == horizontal) {
- x++;
- } else {
- y++;
- }
- if ((x != 15) && (y != 15)) {
- this.set(x, y);
- }
- };
+ var image = new IMG({ src: 'images/cursor.png' });
+ image.style.position = 'absolute';
+ image.style.top = '-3px';
+ image.style.left = '-3px';
+
+ this.image = image;
+ this.x = -1;
+ this.y = -1;
+ this.direction = 0;
+
+ this.set = function(x, y) {
+ this.x = x;
+ this.y = y;
+ appendChildNodes(board[x][y], this.image);
+ board[x][y].cursor = this.image;
+ };
+
+ this.clear = function() {
+ if (this.x != -1) {
+ removeElement(board[this.x][this.y].cursor);
+ board[this.x][this.y].cursor = undefined;
+ this.x = this.y = -1;
+ this.direction = 0;
+ }
+ };
+
+ this.advance = function(isHoriz) {
+ var horizontal = 1;
+ var vertical = 2;
+ var direction = this.direction;
+ if (direction == 0) {
+ // Direction not determined
+ if (isHoriz != undefined) {
+ direction = isHoriz ? horizontal : vertical;
+ } else if (((this.y < 14) && letterAt(this.x, this.y + 1))
+ || ((this.y > 1)
+ && letterAt(this.x, this.y - 1)
+ && !letterAt(this.x, this.y - 2))
+ || ((this.x > 1)
+ && letterAt(this.x - 1, this.y)
+ && letterAt(this.x - 2, this.y))) {
+ direction = vertical;
+ } else {
+ direction = horizontal;
+ }
+ }
+ var x = this.x;
+ var y = this.y;
+ this.clear();
+ this.direction = direction;
+ if (this.direction == horizontal) {
+ x++;
+ } else {
+ y++;
+ }
+ if ((x != 15) && (y != 15)) {
+ this.set(x, y);
+ }
+ };
}
var cursor = new Cursor;
function emptyTileClicked() {
- cursor.clear();
- cursor.set(this.x, this.y);
+ cursor.clear();
+ cursor.set(this.x, this.y);
}
var move = [];
function makeMask()
{
- var mask = IMG({ src: 'images/mask.png'});
- mask.style.position = 'absolute';
- mask.style.top = '3px';
- mask.style.left = '3px';
- mask.style.zIndex = '20';
- return mask;
-}
-
-function addLetterToMove(x, y, tile) {
- mask = makeMask();
- appendChildNodes(board[x][y], mask);
- board[x][y].letterNode = tile;
- board[x][y].letter = tile.letter;
- board[x][y].justPlaced = true;
- tile.mask = mask;
- tile.anim = new YAHOO.util.Motion(tile, { points: { to: [ border + x * 44 + 3,
- border + y * 44 + 3 ]}},
- 0.15,
- YAHOO.util.Easing.easeBoth);
- tile.anim.animate();
-
- move[move.length] = { x: x, y: y, tile: tile };
- try {
- checkMoveLegality(move);
- $('move').onclick = submitMove;
- $('move').innerHTML = "submit move";
- displayStatus('');
- }
- catch (e) {
- if (typeof e != 'string') {
- alert(e.message);
- } else {
- displayStatus(e);
- }
- $('move').onclick = undefined;
- $('move').innerHTML = e.toString();
+ var mask = IMG({ src: 'images/mask.png'});
+ mask.style.position = 'absolute';
+ mask.style.top = '3px';
+ mask.style.left = '3px';
+ mask.style.zIndex = '20';
+ return mask;
+}
+
+function addLetterToMove(x, y, tile, letter) {
+ mask = makeMask();
+ appendChildNodes(board[x][y], mask);
+ board[x][y].letterNode = tile;
+ if (!tile.letter) {
+ tile.letter = letter;
+ }
+ board[x][y].justPlaced = true;
+ tile.mask = mask;
+ tile.anim = new YAHOO.util.Motion(tile, { points: { to: [ x * 44 + 3,
+ y * 44 + 3 ]}},
+ 0.15,
+ YAHOO.util.Easing.easeBoth);
+ tile.anim.animate();
+
+ move[move.length] = { x: x, y: y, tile: tile };
+ try {
+ checkMoveLegality(move);
+ $('move').onclick = submitMove;
+ $('move').innerHTML = "submit move";
+ displayStatus('');
+ }
+ catch (e) {
+ if (typeof e != 'string') {
+ alert(e.message);
+ } else {
+ displayStatus(e);
}
+ $('move').onclick = undefined;
+ $('move').innerHTML = e.toString();
+ }
}
function confirmMove() {
- for (var i = 0; i < move.length; i++) {
- removeElement(move[i].tile.mask);
- move[i].tile.mask = undefined;
- }
- cursor.clear();
- move = [];
- $('move').onclick = null;
- $('move').innerHTML = '';
-
+ for (var i = 0; i < move.length; i++) {
+ removeElement(move[i].tile.mask);
+ move[i].tile.mask = undefined;
+ }
+ cursor.clear();
+ move = [];
+ $('move').onclick = null;
+ $('move').innerHTML = '';
+
}
function moveAsString() {
- // We internally keep the move as array of objects, but send it to the server rather unstructured:
- var serverMessage = [];
- for (var i = 0; i < move.length; i++) {
- serverMessage.push(move[i].x);
- serverMessage.push(move[i].y);
- serverMessage.push(move[i].tile.letterName);
- serverMessage.push(move[i].tile.letterName == undefined);
- }
- return serverMessage.toString();
+ // We internally keep the move as array of objects, but send it to the server rather unstructured:
+ var serverMessage = [];
+ for (var i = 0; i < move.length; i++) {
+ serverMessage.push(move[i].x);
+ serverMessage.push(move[i].y);
+ serverMessage.push(move[i].tile.letterName || move[i].tile.letter);
+ serverMessage.push(move[i].tile.letterName == undefined);
+ }
+ return serverMessage.toString();
}
function submitMove()
{
- var queryString = MochiKit.Base.queryString({ move: moveAsString() });
- var res = MochiKit.Async.doXHR("/place-tiles",
- { method: 'POST',
+ var queryString = MochiKit.Base.queryString({ move: moveAsString(), game: gameID });
+ var res = MochiKit.Async.doXHR("/place-tiles",
+ { method: 'POST',
sendContent: queryString,
headers: { "Content-Type": "application/x-www-form-urlencoded" } });
- res.addCallbacks(moveSuccess, moveFailure);
+ res.addCallbacks(moveSuccess, moveFailure);
}
function moveSuccess(result)
{
+ try {
+ var response;
try {
- var response;
- try {
- response = eval('(' + result.responseText + ')');
- }
- catch (e) {
- alert("invalid JSON reply: " + result.responseText);
- return;
- }
- if (response.error) {
- alert(response.error);
- } else {
- confirmMove();
- alert(response.move.playerScore);
- $('playfield')['score-' + response.move.participantLogin].innerHTML = response.move.playerScore.toString();
- displayMyTray(response.tray);
- }
+ response = eval('(' + result.responseText + ')');
}
catch (e) {
- alert('error during moveSuccess: ' + e.message);
+ alert("invalid JSON reply: " + result.responseText);
+ return;
}
+ if (response.error) {
+ alert(response.error);
+ } else {
+ confirmMove();
+ alert(response.move.playerScore);
+ $('playfield')['score-' + response.move.participantLogin].innerHTML = response.move.playerScore.toString();
+ displayMyTray(response.tray);
+ }
+ }
+ catch (e) {
+ alert('error during moveSuccess: ' + e.message);
+ }
}
function moveFailure(e)
{
- alert('failed: ' + e);
+ alert('failed: ' + e);
}
function letterKeyPressed(e) {
- if (e.which == 0 || e.altKey || e.ctrlKey || e.shiftKey) {
- // not a letter key
- return;
+ if (e.which == 0 || e.altKey || e.ctrlKey || e.shiftKey) {
+ // not a letter key
+ return;
+ }
+
+ var letter = String.fromCharCode(e.which).toUpperCase();
+
+ var x = cursor.x;
+ var y = cursor.y;
+ var tilePosition = -1;
+ for (var i = 0; (tilePosition == -1) && (i < tray.length); i++) {
+ if (tray[i].letter == letter) {
+ tilePosition = i;
}
-
- var letter = String.fromCharCode(e.which).toUpperCase();
-
- var x = cursor.x;
- var y = cursor.y;
- var tilePosition = -1;
+ }
+ if (tilePosition == -1) {
for (var i = 0; (tilePosition == -1) && (i < tray.length); i++) {
- if (tray[i].letter == letter) {
- tilePosition = i;
- }
- }
- if (tilePosition == -1) {
- for (var i = 0; (tilePosition == -1) && (i < tray.length); i++) {
- if (tray[i].letter == undefined) {
- tilePosition = i;
- }
- }
- }
- if (tilePosition == -1) {
- displayStatus('you-dont-have-that-letter', letter);
- } else {
- var isHoriz;
- if (move.length > 0) {
- isHoriz = (move[0].x != x);
- }
- cursor.advance(isHoriz);
- if (!letterAt(x, y)) {
- var tile = tray[tilePosition];
- tray.splice(tilePosition, 1);
- addLetterToMove(x, y, tile);
- }
+ if (tray[i].letter == undefined) {
+ tilePosition = i;
+ }
+ }
+ }
+ if (tilePosition == -1) {
+ displayStatus('you-dont-have-that-letter', letter);
+ } else {
+ var isHoriz;
+ if (move.length > 0) {
+ isHoriz = (move[0].x != x);
+ }
+ cursor.advance(isHoriz);
+ if (!letterAt(x, y)) {
+ var tile = tray[tilePosition];
+ tray.splice(tilePosition, 1);
+ addLetterToMove(x, y, tile, letter);
}
+ }
}
var leftKey = 37;
@@ -390,439 +384,200 @@
var backspaceKey = 8;
function functionKeyPressed(type, args, obj) {
- var x = cursor.x;
- var y = cursor.y;
+ var x = cursor.x;
+ var y = cursor.y;
- switch (args[0]) {
- case rightKey:
- while (x < 14)
- if (!letterAt(++x, y))
- break;
- break;
- case leftKey:
- while (x > 0)
- if (!letterAt(--x, y))
- break;
- break;
- case upKey:
- while (y > 0)
- if (!letterAt(x, --y))
- break;
- break;
- case downKey:
- while (y < 14)
- if (!letterAt(x, ++y))
- break;
- break;
- case backspaceKey:
- if (move.length) {
- removeLastLetterFromMove();
- }
- }
- if ((x >= 0) && (x <= 14) && (y >= 0) && (y <= 14)) {
- cursor.clear();
- cursor.set(x, y);
+ switch (args[0]) {
+ case rightKey:
+ while (x < 14)
+ if (!letterAt(++x, y))
+ break;
+ break;
+ case leftKey:
+ while (x > 0)
+ if (!letterAt(--x, y))
+ break;
+ break;
+ case upKey:
+ while (y > 0)
+ if (!letterAt(x, --y))
+ break;
+ break;
+ case downKey:
+ while (y < 14)
+ if (!letterAt(x, ++y))
+ break;
+ break;
+ case backspaceKey:
+ if (move.length) {
+ removeLastLetterFromMove();
}
- YAHOO.util.Event.preventDefault(args[1]);
+ }
+ if ((x >= 0) && (x <= 14) && (y >= 0) && (y <= 14)) {
+ cursor.clear();
+ cursor.set(x, y);
+ }
+ YAHOO.util.Event.preventDefault(args[1]);
}
function clearBoard() {
- for (x = 0; x < 15; x++) {
- for (y = 0; y < 15; y++) {
- var letterNode = board[x][y].letterNode;
- if (letterNode) {
- letterNode.anim = new YAHOO.util.Motion(letterNode, { points: { to: [ border + 7 * 44 + 3,
- border + 7 * 44 + 3 ]}},
- 0.15);
- letterNode.anim.onComplete.subscribe(function () { removeElement(this); });
- letterNode.anim.animate();
- }
- }
+ for (x = 0; x < 15; x++) {
+ for (y = 0; y < 15; y++) {
+ var letterNode = board[x][y].letterNode;
+ if (letterNode) {
+ letterNode.anim = new YAHOO.util.Motion(letterNode, { points: { to: [ 7 * 44 + 3,
+ 7 * 44 + 3 ]}},
+ 0.15);
+ letterNode.anim.onComplete.subscribe(function () { removeElement(this); });
+ letterNode.anim.animate();
+ }
}
+ }
}
function trayClick(letter) {
- this.clicked = !this.clicked;
- this.anim = new YAHOO.util.Motion(this, { points: { by: [ 0, (this.clicked ? 15 : -15 ) ]}}, 0.15);
- this.anim.animate();
+ this.clicked = !this.clicked;
+ this.anim = new YAHOO.util.Motion(this, { points: { by: [ 0, (this.clicked ? 15 : -15 ) ]}}, 0.15);
+ this.anim.animate();
}
function displayMyTray(letters) {
- map(removeElement, tray);
- tray = [];
- for (var i = 0; i < letters.length; i++) {
- var element = IMG({src: 'images/' + letters[i].letterName + '.png'});
- element.letter = letters[i].letter;
- element.letterName = letters[i].letterName;
- element.style.position = 'absolute';
- element.style.width = '34px';
- element.style.height = '34px';
- element.style.zIndex = '10';
- element.onclick = trayClick;
- setElementPosition(element, { x: border + i * 40, y: border + 665 });
- tray[i] = element;
- }
- appendChildNodes($('playfield'), tray);
+ map(removeElement, tray);
+ tray = [];
+ for (var i = 0; i < letters.length; i++) {
+ var element = IMG({src: 'images/' + letters[i].letterName + '.png'});
+ element.letter = letters[i].letter;
+ element.letterName = letters[i].letterName;
+ element.style.position = 'absolute';
+ element.style.width = '34px';
+ element.style.height = '34px';
+ element.style.zIndex = '10';
+ element.onclick = trayClick;
+ setElementPosition(element, { x: i * 40, y: 665 });
+ tray[i] = element;
+ }
+ appendChildNodes($('playfield'), tray);
}
function shuffleMyTray() {
- var count = tray.length;
- var newTray = [];
- for (var i = 0; i < count; i++) {
- do {
- index = Math.floor(Math.random() * count);
- } while (newTray[index]);
- newTray[index] = tray[i];
- newTray[index].anim = new YAHOO.util.Motion(tray[i], { points: { to: [ border + 194 + i * 40,
- border + 665 ] }},
- 0.5);
- newTray[index].anim.animate();
- newTray[index].clicked = false;
- }
- tray = newTray;
+ var count = tray.length;
+ var newTray = [];
+ for (var i = 0; i < count; i++) {
+ do {
+ index = Math.floor(Math.random() * count);
+ } while (newTray[index]);
+ newTray[index] = tray[i];
+ newTray[index].anim = new YAHOO.util.Motion(tray[i], { points: { to: [ 194 + i * 40,
+ 665 ] }},
+ 0.5);
+ newTray[index].anim.animate();
+ newTray[index].clicked = false;
+ }
+ tray = newTray;
}
var otherPlayerIndex = 0;
function makeTheirTray (participant) {
- var tileCount = (typeof participant.remainingTiles == 'number') ? participant.remainingTiles : participant.remainingTiles.length;
+ var tileCount = (typeof participant.remainingTiles == 'number') ? participant.remainingTiles : participant.remainingTiles.length;
- var tray = [];
- for (var i = 0; i < tileCount; i++) {
- var element = IMG({src: 'images/null.png'});
- element.style.position = 'absolute';
- element.style.width = '34px';
- element.style.height = '34px';
- element.style.zIndex = '10';
- setElementPosition(element, { x: border + 680 + i * 40, y: border + 80 * otherPlayerIndex });
- tray[i] = element;
- }
- appendChildNodes($('playfield'), tray);
-
- var nameTag = DIV(null, participant.name);
- nameTag.style.position = 'absolute';
- nameTag.style.width = '200px';
- nameTag.style.textAlign = 'left';
- setElementPosition(nameTag, { x: border + 680, y: border + 80 * otherPlayerIndex + 50 });
- appendChildNodes($('playfield'), nameTag);
-
- var scoreTag = DIV(null, participant.score);
- scoreTag.style.position = 'absolute';
- scoreTag.style.width = '80px';
- scoreTag.style.textAlign = 'right';
- setElementPosition(scoreTag, { x: border + 870, y: border + 80 * otherPlayerIndex + 50 });
- appendChildNodes($('playfield'), scoreTag);
- $('playfield')['score-' + participant.login] = scoreTag;
+ var tray = [];
+ for (var i = 0; i < tileCount; i++) {
+ var element = IMG({src: 'images/null.png'});
+ element.style.position = 'absolute';
+ element.style.width = '34px';
+ element.style.height = '34px';
+ element.style.zIndex = '10';
+ setElementPosition(element, { x: 680 + i * 40, y: 80 * otherPlayerIndex });
+ tray[i] = element;
+ }
+ appendChildNodes($('playfield'), tray);
+
+ var nameTag = DIV(null, participant.name);
+ nameTag.style.position = 'absolute';
+ nameTag.style.width = '200px';
+ nameTag.style.textAlign = 'left';
+ setElementPosition(nameTag, { x: 680, y: 80 * otherPlayerIndex + 50 });
+ appendChildNodes($('playfield'), nameTag);
+
+ var scoreTag = DIV(null, participant.score);
+ scoreTag.style.position = 'absolute';
+ scoreTag.style.width = '80px';
+ scoreTag.style.textAlign = 'right';
+ setElementPosition(scoreTag, { x: 870, y: 80 * otherPlayerIndex + 50 });
+ appendChildNodes($('playfield'), scoreTag);
+ $('playfield')['score-' + participant.login] = scoreTag;
- otherPlayerIndex++;
+ otherPlayerIndex++;
}
function renderMoveAsText(move)
{
- var retval = move.participantLogin;
- if (move.type == 'move') {
- retval += " score: " + move.score;
- for (var i = 0; i < move.words.length; i++) {
- retval += " " + move.words[i][0] + "(" + move.words[i][1] + ")";
- }
- } else {
- retval += move.type;
- }
+ var retval = move.participantLogin;
+ if (move.type == 'move') {
+ retval += " score: " + move.score;
+ for (var i = 0; i < move.words.length; i++) {
+ retval += " " + move.words[i][0] + "(" + move.words[i][1] + ")";
+ }
+ } else {
+ retval += move.type;
+ }
- return retval;
+ return retval;
}
function displayWhosTurnItIs(name) {
- replaceChildNodes($('nextTurn'),
- "Next: " + name);
+ replaceChildNodes($('nextTurn'),
+ "Next: " + name);
}
function drawGameState (gameState) {
- try {
- for (var i = 0; i < gameState.board.length; i++) {
- var x = gameState.board[i][0];
- var y = gameState.board[i][1];
- var char = gameState.board[i][2];
- setLetter(x, y, char, gameState.board[i].length > 3);
- }
- var firstParticipant = gameState.participants[0];
- displayWhosTurnItIs(firstParticipant.name);
- for (var i = 0; i < gameState.participants.length; i++) {
- var participant = gameState.participants[i];
- makeTheirTray(participant);
- if (typeof participant.remainingTiles != 'number') {
- displayMyTray(participant.remainingTiles);
- }
- }
- // small "Kilian fix" - probably there is a nicer way to do it...
- if (gameState.moves != null) {
- for (var i = 0; i < gameState.moves.length; i++) {
- appendChildNodes($('gameLog'), DIV(null, renderMoveAsText(gameState.moves[i])));
- }
- }
- }
- catch (e) {
- alert('error ' + e + ' in drawGameState');
- }
+ try {
+ for (var i = 0; i < gameState.board.length; i++) {
+ var x = gameState.board[i][0];
+ var y = gameState.board[i][1];
+ var char = gameState.board[i][2];
+ setLetter(x, y, char, gameState.board[i].length > 3);
+ }
+ var firstParticipant = gameState.participants[0];
+ displayWhosTurnItIs(firstParticipant.name);
+ for (var i = 0; i < gameState.participants.length; i++) {
+ var participant = gameState.participants[i];
+ makeTheirTray(participant);
+ if (typeof participant.remainingTiles != 'number') {
+ displayMyTray(participant.remainingTiles);
+ }
+ }
+ for (var i = 0; gameState.moves && (i < gameState.moves.length); i++) {
+ appendChildNodes($('gameLog'), DIV(null, renderMoveAsText(gameState.moves[i])));
+ }
+ }
+ catch (e) {
+ alert('error ' + e + ' in drawGameState');
+ }
}
function displayStatus(status)
{
- replaceChildNodes('status', status);
+ replaceChildNodes('status', status);
}
+function init() {
+ makeBoard();
-// Publication
-
-function Publication() {
- this.callbacks = [];
- this.object2callback = {};
-}
-
-function extendWithPublication (obj) {
- var value;
- Publication.call(obj);
- for (p in Publication.prototype) {
- value = Publication.prototype[p];
- if (value instanceof Function)
- obj[p] = value;
- }
-}
-
-Publication.prototype = {
- subscribe : function(fnOrObject, /*optional*/ method) {
- if (!(((fnOrObject instanceof Function) && (method == undefined))
- || ((fnOrObject instanceof Object) && !(fnOrObject instanceof Function)
- && (method instanceof Function))))
- throw new Error("bad args to subscribe. use either subscribe(fn) or subscribe(obj, method)");
- if (this._isAlreadySubscribed(fnOrObject))
- return null;
- var callback = this._makeCallback(fnOrObject, method);
- this._associateObjectWithCallback(fnOrObject, callback);
- this._registerCallback(callback);
- },
- unsubscribe : function(fnOrObject) {
- var callback = this._associatedCallback(fnOrObject);
- this._unregisterCallback(callback);
- },
- unsubscribeAll : function() {
- this.callbacks = [];
- this.object2callback = {};
- },
- publish : function(/*optional*/ message) {
- this.callbacks.forEach(
- function (fn) {
- fn(message);
- });
- },
- _makeCallback : function (fnOrObject, /*optional*/ method) {
- if (fnOrObject instanceof Function) {
- return fnOrObject;
- } else {
- return function (message) { method.call(fnOrObject, message) };
- }
- },
- _associateObjectWithCallback : function (fnOrObject, callback) {
- if (!(fnOrObject instanceof Function)) {
- this.object2callback[fnOrObject] = callback;
- }
- },
- _associatedCallback : function (fnOrObject) {
- if (fnOrObject instanceof Function)
- return fnOrObject;
- else
- return this.callbacks[fnOrObject];
- },
- _registerCallback : function(callback) {
- this.callbacks.push(callback);
- },
- _unregisterCallback : function(callback) {
- this.callbacks = this.callbacks.filter(
- function (c) {
- (c === callback)
- });
- },
- _isAlreadySubscribed : function (fnOrObject) {
- return (this.object2callback[fnOrObject])
- || (this.callbacks.some(function (callback) {callback === fnOrObject}))
- }
-};
-
-// loginManager
-var loginManager = {isLoggedIn:
- function () {
- return this.loginName !== null;
- },
- loggedInAs:
- function () {
- return this.loginName;
- },
- login:
- function (name, pwd) {
- loadJSONDoc("/login?login=" + name + "&password=" + pwd).addCallbacks(
- this._requestLoginName,
- this._requestError);
- },
- logout:
- function () {
- loadJSONDoc("/logout").addCallbacks(
- this._requestLoginName,
- this._requestError);
- },
- publishLoginName:
- function () {
- this._requestLoginName();
- },
- _setLoginName:
- function (loginName) {
- var oldLoginName = loginManager.loginName;
- loginManager.loginName = loginName;
- // if (oldLoginName != loginName)
- // loginManager.publish(loginName);
- loginManager.publish(loginName);
- },
- _requestLoginName:
- function () {
- loadJSONDoc("/logged-in-as").addCallbacks(
- loginManager._setLoginName,
- loginManager._requestError);
- },
- _requestError:
- function (error) {
- alert("Request error: " + error.message)
- }
- };
-extendWithPublication(loginManager);
-
-var loginView = {loginManagerCallback:
- function (loginName) {
- if (loginName)
- loginView.changeForLoggedIn(loginName);
- else
- loginView.changeForLoggedOut();
- },
- show:
- function () {
- var container = $('playfield');
- var form = FORM({id:"loginForm", action:"post", onsubmit:"return false"},
- DIV(
- null,
- LABEL({'for':"username"}, "Username: "),
- INPUT({id:"username", name:"username", size:"20", type:"text"}),
- LABEL({'for':"password"}, "Password: "),
- INPUT({id:"password", name:"password", size:"20", type:"password"}),
- P({id:"message"}),
- BUTTON({id:"button", onlick:"return false"}, "Login")
- ));
- form.style.position = 'absolute';
- setElementPosition(form, { x: 750, y: 200 });
- setElementDimensions(form, {w:200, h:150});
- loginManager.subscribe(loginView, this.loginManagerCallback);
- appendChildNodes(container, form)
- },
- hide:
- function () {
- loginManager.subscribe(loginView, loginView.loginManagerCallback);
- removeElement($('loginForm'));
- },
- changeForLoggedIn:
- function (name) {
- loginView.hide();
- gameListView.show();
- },
- changeForLoggedOut:
- function () {
- $('message').innerHTML = "Enter your username and password to log in.";
- $('button').innerHTML = "Login";
- $('button').onclick = function () { loginManager.login($('username').value, $('password').value)};
- }};
-
-var gameListManager = {logout:
- function () {
- gameListView.hide();
- loginView.show();
- loginManager.logout();
- },
- playGame:
- function (id) {
- var d = loadJSONDoc("/play-game?gameid=" + id);
- d.addCallbacks(
- function () {
- var d = loadJSONDoc("/game");
- d.addCallbacks(drawGameState, function (error) { alert("Request error: " + error.message); });
- gameListView.hide();
- returnToGameListView.show();
- },
- requestError);
- }
- };
-
-var gameListView = {show:
- function () {
- var container = $('playfield');
- var div = DIV({id:"gameListView"});
- div.innerHTML = ' ';
- div.style.position = 'absolute';
- setElementPosition(div, { x: 750, y: 200 });
- setElementDimensions(div, {w:200, h:150});
- appendChildNodes(container, div);
- },
- hide:
- function () {
- removeElement($('gameListView'));
- }};
-
-
-// a stub really
-var returnToGameListView = {show:
- function () {
- var container = $('playfield');
- var button = BUTTON({id:'returnToGameListButton'}, "return to game list");
- button.style.position = 'absolute';
- setElementPosition(button, { x: 750, y: 200 });
- setElementDimensions(button, {w:150, h:30});
- YAHOO.util.Event.on(button, 'click', this.returnToGameList, null, this);
- // loginManager.subscribe(loginView, this.loginManagerCallback);
- appendChildNodes(container, button);
- },
- hide:
- function () {
- removeElement('returnToGameListButton');
- // FIXME for now we reload
- document.location = "scrabble.html";
- },
- returnToGameList:
- function () {
- var d = loadJSONDoc("/leave-game");
- d.addCallbacks(
- function () {
- returnToGameListView.hide();
- gameListView.show();
- },
- requestError)}
- };
-
+ // does not work for ie (document.body needed)?
+ YAHOO.util.Event.on(window, 'keypress', letterKeyPressed);
-function init() {
- makeBoard();
-
- // does not work for ie (document.body needed)?
- YAHOO.util.Event.on(window, 'keypress', letterKeyPressed);
-
- var functionKeyListener = new YAHOO.util.KeyListener(document,
- { keys: [ leftKey, upKey, rightKey, downKey, backspaceKey ] },
- { fn: functionKeyPressed, scope: this, correctScope: true });
- functionKeyListener.enable();
- var moveDisplay = DIV({ id: 'move' }, "");
- moveDisplay.style.color = 'white';
- moveDisplay.style.position = 'absolute';
- setElementPosition(moveDisplay, { x: border + 550, y: border + 665 });
- appendChildNodes(document.body, moveDisplay);
- loginView.show();
- loginManager.subscribe(function (loginName) {
- if (loginName) {
- // loginView.hide();
- }
- });
- loginManager.publishLoginName();
+ var functionKeyListener = new YAHOO.util.KeyListener(document,
+ { keys: [ leftKey, upKey, rightKey, downKey, backspaceKey ] },
+ { fn: functionKeyPressed, scope: this, correctScope: true });
+ functionKeyListener.enable();
+
+ var moveDisplay = DIV({ id: 'move' }, "");
+ moveDisplay.style.color = 'white';
+ moveDisplay.style.position = 'absolute';
+ setElementPosition(moveDisplay, { x: 550, y: 665 });
+ appendChildNodes(document.body, moveDisplay);
+ loadJSONDoc("/game/" + gameID)
+ .addCallbacks(drawGameState, function (error) { alert("Request error: " + error.message); });
}
Modified: branches/trunk-reorg/thirdparty/hunchentoot-0.14.7/misc.lisp
==============================================================================
--- branches/trunk-reorg/thirdparty/hunchentoot-0.14.7/misc.lisp (original)
+++ branches/trunk-reorg/thirdparty/hunchentoot-0.14.7/misc.lisp Thu Jan 17 11:36:28 2008
@@ -180,7 +180,10 @@
(defun enough-url (url url-prefix)
"Returns the relative portion of URL relative to URL-PREFIX, similar
to what ENOUGH-NAMESTRING does for pathnames."
- (subseq url (mismatch url url-prefix)))
+ (let ((start (mismatch url url-prefix)))
+ (if start
+ (subseq url start)
+ "")))
(defun create-folder-dispatcher-and-handler (uri-prefix base-path &optional content-type)
"Creates and returns a dispatch function which will dispatch to a
Modified: branches/trunk-reorg/thirdparty/parenscript/src/js-macrology.lisp
==============================================================================
--- branches/trunk-reorg/thirdparty/parenscript/src/js-macrology.lisp (original)
+++ branches/trunk-reorg/thirdparty/parenscript/src/js-macrology.lisp Thu Jan 17 11:36:28 2008
@@ -4,7 +4,9 @@
;;; literals
(defmacro defpsliteral (name string)
- `(define-ps-special-form ,name (expecting) (list 'js-literal ,string)))
+ `(define-ps-special-form ,name (expecting)
+ (declare (ignore expecting))
+ (list 'js-literal ,string)))
(defpsliteral this "this")
(defpsliteral t "true")
@@ -15,45 +17,54 @@
(defpsliteral undefined "undefined")
(defmacro defpskeyword (name string)
- `(define-ps-special-form ,name (expecting) (list 'js-keyword ,string)))
+ `(define-ps-special-form ,name (expecting)
+ (declare (ignore expecting))
+ (list 'js-keyword ,string)))
(defpskeyword break "break")
(defpskeyword continue "continue")
(define-ps-special-form array (expecting &rest values)
+ (declare (ignore expecting))
(cons 'array-literal (mapcar (lambda (form) (compile-parenscript-form form :expecting :expression))
values)))
(define-ps-special-form aref (expecting array &rest coords)
+ (declare (ignore expecting))
(list 'js-aref (compile-parenscript-form array :expecting :expression)
(mapcar (lambda (form)
(compile-parenscript-form form :expecting :expression))
coords)))
(define-ps-special-form {} (expecting &rest arrows)
+ (declare (ignore expecting))
(cons 'object-literal (loop for (key value) on arrows by #'cddr
collect (cons key (compile-parenscript-form value :expecting :expression)))))
;;; operators
(define-ps-special-form incf (expecting x &optional (delta 1))
+ (declare (ignore expecting))
(if (equal delta 1)
(list 'unary-operator "++" (compile-parenscript-form x :expecting :expression) :prefix t)
(list 'operator '+= (list (compile-parenscript-form x :expecting :expression)
(compile-parenscript-form delta :expecting :expression)))))
(define-ps-special-form decf (expecting x &optional (delta 1))
+ (declare (ignore expecting))
(if (equal delta 1)
(list 'unary-operator "--" (compile-parenscript-form x :expecting :expression) :prefix t)
(list 'operator '-= (list (compile-parenscript-form x :expecting :expression)
(compile-parenscript-form delta :expecting :expression)))))
(define-ps-special-form - (expecting first &rest rest)
+ (declare (ignore expecting))
(if (null rest)
(list 'unary-operator "-" (compile-parenscript-form first :expecting :expression) :prefix t)
(list 'operator '- (mapcar (lambda (val) (compile-parenscript-form val :expecting :expression))
(cons first rest)))))
(define-ps-special-form not (expecting x)
+ (declare (ignore expecting))
(let ((form (compile-parenscript-form x :expecting :expression))
(not-op nil))
(if (and (eql (first form) 'operator)
@@ -72,6 +83,7 @@
(list 'unary-operator "!" form :prefix t))))
(define-ps-special-form ~ (expecting x)
+ (declare (ignore expecting))
(list 'unary-operator "~" (compile-parenscript-form x :expecting :expressin) :prefix t))
(defun flatten-blocks (body)
@@ -97,18 +109,21 @@
;;; function definition
(define-ps-special-form %js-lambda (expecting args &rest body)
+ (declare (ignore expecting))
(list 'js-lambda (mapcar (lambda (arg)
(compile-parenscript-form arg :expecting :symbol))
args)
(compile-parenscript-form `(progn , at body))))
(define-ps-special-form %js-defun (expecting name args &rest body)
+ (declare (ignore expecting))
(list 'js-defun (compile-parenscript-form name :expecting :symbol)
(mapcar (lambda (val) (compile-parenscript-form val :expecting :symbol)) args)
(compile-parenscript-form `(progn , at body))))
;;; object creation
(define-ps-special-form create (expecting &rest args)
+ (declare (ignore expecting))
(list 'js-object (loop for (name val) on args by #'cddr collecting
(let ((name-expr (compile-parenscript-form name :expecting :expression)))
(assert (or (stringp name-expr)
@@ -121,6 +136,7 @@
(list name-expr (compile-parenscript-form val :expecting :expression))))))
(define-ps-special-form %js-slot-value (expecting obj slot)
+ (declare (ignore expecting))
(if (ps::ps-macroexpand slot)
(list 'js-slot-value (compile-parenscript-form obj :expecting :expression) (compile-parenscript-form slot))
(compile-parenscript-form obj :expecting :expression)))
@@ -157,6 +173,7 @@
(compile-parenscript-form else :expecting :expression)))))
(define-ps-special-form switch (expecting test-expr &rest clauses)
+ (declare (ignore expecting))
(let ((clauses (mapcar (lambda (clause)
(let ((val (car clause))
(body (cdr clause)))
@@ -207,9 +224,11 @@
(list 'js-assign lhs rhs)))
(define-ps-special-form setf1% (expecting lhs rhs)
+ (declare (ignore expecting))
(smart-setf (compile-parenscript-form lhs :expecting :expression) (compile-parenscript-form rhs :expecting :expression)))
(define-ps-special-form defvar (expecting name &rest value)
+ (declare (ignore expecting))
(append (list 'js-defvar (compile-parenscript-form name :expecting :symbol))
(when value
(assert (= (length value) 1) () "Wrong number of arguments to defvar: ~s" `(defvar ,name , at value))
@@ -228,6 +247,7 @@
collect (compile-parenscript-form (third decl) :expecting :expression)))
(define-ps-special-form do (expecting decls termination-test &rest body)
+ (declare (ignore expecting))
(let ((vars (make-for-vars decls))
(steps (make-for-steps decls))
(test (compile-parenscript-form `(not ,(first termination-test)) :expecting :expression))
@@ -235,20 +255,24 @@
(list 'js-for vars steps test body)))
(define-ps-special-form doeach (expecting decl &rest body)
+ (declare (ignore expecting))
(list 'js-for-each
(compile-parenscript-form (first decl) :expecting :symbol)
(compile-parenscript-form (second decl) :expecting :expression)
(compile-parenscript-form `(progn , at body))))
(define-ps-special-form while (expecting test &rest body)
+ (declare (ignore expecting))
(list 'js-while (compile-parenscript-form test :expecting :expression)
(compile-parenscript-form `(progn , at body))))
(define-ps-special-form with (expecting expression &rest body)
+ (declare (ignore expecting))
(list 'js-with (compile-parenscript-form expression :expecting :expression)
(compile-parenscript-form `(progn , at body))))
(define-ps-special-form try (expecting form &rest clauses)
+ (declare (ignore expecting))
(let ((catch (cdr (assoc :catch clauses)))
(finally (cdr (assoc :finally clauses))))
(assert (not (cdar catch)) nil "Sorry, currently only simple catch forms are supported.")
@@ -260,23 +284,28 @@
:finally (when finally (compile-parenscript-form `(progn , at finally))))))
(define-ps-special-form regex (expecting regex)
+ (declare (ignore expecting))
(list 'js-regex (string regex)))
;;; TODO instanceof
(define-ps-special-form instanceof (expecting value type)
+ (declare (ignore expecting))
(list 'js-instanceof (compile-parenscript-form value :expecting :expression)
(compile-parenscript-form type :expecting :expression)))
;;; single operations
(mapcar (lambda (op) (eval `(define-ps-special-form ,op (expecting value)
+ (declare (ignore expecting))
(list 'js-named-operator ',op (compile-parenscript-form value)))))
'(throw delete void typeof new))
(define-ps-special-form return (expecting &optional value)
+ (declare (ignore expecting))
(list 'js-return (compile-parenscript-form value :expecting :expression)))
;;; conditional compilation
(define-ps-special-form cc-if (expecting test &rest body)
+ (declare (ignore expecting))
(list 'cc-if test (mapcar #'compile-parenscript-form body)))
;;; standard macros
Modified: branches/trunk-reorg/thirdparty/slime/slime.el
==============================================================================
--- branches/trunk-reorg/thirdparty/slime/slime.el (original)
+++ branches/trunk-reorg/thirdparty/slime/slime.el Thu Jan 17 11:36:28 2008
@@ -6287,7 +6287,9 @@
("*SLIME macroexpansion*" :mode lisp-mode :reusep t) package
(slime-macroexpansion-minor-mode)
(erase-buffer)
- (insert expansion)
+ (save-excursion
+ (insert expansion))
+ (indent-sexp)
(font-lock-fontify-buffer))))))
(defun slime-eval-macroexpand-inplace (expander)
@@ -6316,6 +6318,59 @@
(indent-sexp)
(goto-char point))))))))
+(defun slime-enclosing-macro-context-establishers ()
+ (flet ((establishes-context-p (form-spec)
+ (let ((operator-name (first form-spec)))
+ (when (stringp operator-name)
+ (let ((symbol-name (slime-cl-symbol-name operator-name)))
+ (or (equal symbol-name "macrolet") (equal symbol-name "symbol-macrolet")))))))
+ (multiple-value-bind (form-specs indices points)
+ (slime-enclosing-form-specs)
+ (loop for form-spec in form-specs
+ for index in indices
+ for point in points
+ when (establishes-context-p form-spec)
+ collect form-spec into form-specs* and
+ collect index into indices* and
+ collect point into points*
+ finally (return (values form-specs* indices* points*))))))
+
+(defun slime-collect-macro-context ()
+ (multiple-value-bind (form-specs indices points)
+ (slime-enclosing-macro-context-establishers)
+ (save-excursion
+ (let ((context))
+ (cl-mapc #'(lambda (form-spec index point)
+ (when (= index 2)
+ (destructuring-bind (operator-name) form-spec
+ (goto-char point)
+ (slime-forward-sexp)
+ (forward-char)
+ (push (cons operator-name (slime-parse-sexp-at-point 1 t)) context))))
+ form-specs indices points)
+ context))))
+
+(defun slime-rebuild-macro-context-around-string (string context)
+ (if (null context)
+ string
+ (destructuring-bind (let-operator . bindings) (first context)
+ (format "(%s %s %s)" let-operator bindings
+ (slime-rebuild-macro-context-around-string string (rest context))))))
+
+(defun slime-macroexpand-locally-1 (&optional repeatedly)
+ (interactive "P")
+ (let ((sexp (first (slime-sexp-at-point-for-macroexpansion)))
+ (macro-context (slime-collect-macro-context)))
+ (if repeatedly
+ (slime-eval-macroexpand 'swank:swank-macroexpand-locally
+ (slime-rebuild-macro-context-around-string
+ (format "(swank::macroexpand-locally %s)" sexp)
+ macro-context))
+ (slime-eval-macroexpand 'swank:swank-macroexpand-locally-1
+ (slime-rebuild-macro-context-around-string
+ (format "(swank::macroexpand-locally-1 %s)" sexp)
+ macro-context)))))
+
(defun slime-macroexpand-1 (&optional repeatedly)
"Display the macro expansion of the form at point. The form is
expanded with CL:MACROEXPAND-1 or, if a prefix argument is given, with
Modified: branches/trunk-reorg/thirdparty/slime/swank.lisp
==============================================================================
--- branches/trunk-reorg/thirdparty/slime/swank.lisp (original)
+++ branches/trunk-reorg/thirdparty/slime/swank.lisp Thu Jan 17 11:36:28 2008
@@ -78,7 +78,8 @@
"Abbreviate dotted package names to their last component if T.")
(defvar *swank-io-package*
- (let ((package (make-package :swank-io-package :use '())))
+ (let ((package (or (find-package :swank-io-package)
+ (make-package :swank-io-package :use '()))))
(import '(nil t quote) package)
package))
@@ -2401,6 +2402,22 @@
(let ((*print-readably* nil))
(disassemble (fdefinition (from-string name)))))))
+(defslimefun swank-macroexpand-locally (string)
+ (apply-macro-expander #'eval string))
+
+(defslimefun swank-macroexpand-locally-1 (string)
+ (apply-macro-expander #'eval string))
+
+(defmacro macroexpand-locally (form &environment env)
+ (multiple-value-bind (expansion expanded-p)
+ (macroexpand form env)
+ `(values ',expansion ',expanded-p)))
+
+(defmacro macroexpand-locally-1 (form &environment env)
+ (multiple-value-bind (expansion expanded-p)
+ (macroexpand-1 form env)
+ `(values ',expansion ',expanded-p)))
+
;;;; Simple completion
From ksprotte at common-lisp.net Thu Jan 17 16:39:37 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Thu, 17 Jan 2008 11:39:37 -0500 (EST)
Subject: [bknr-cvs] r2337 - branches/bos/projects/bos/m2
Message-ID: <20080117163937.65C5F5E12D@common-lisp.net>
Author: ksprotte
Date: Thu Jan 17 11:39:36 2008
New Revision: 2337
Modified:
branches/bos/projects/bos/m2/packages.lisp
Log:
again prefix rename
Modified: branches/bos/projects/bos/m2/packages.lisp
==============================================================================
--- branches/bos/projects/bos/m2/packages.lisp (original)
+++ branches/bos/projects/bos/m2/packages.lisp Thu Jan 17 11:39:36 2008
@@ -229,9 +229,9 @@
:bos.m2.config
:iterate)
(:import-from :bos.m2 bos.m2::point-in-polygon-p)
- (:export #:allocation-cache-find-exact-match
- #:allocation-cache-add-area
- #:allocation-cache-free-regions-count
- #:allocation-cache-free-regions-pprint
+ (:export #:find-exact-match
+ #:add-area
+ #:free-regions-count
+ #:free-regions-pprint
#:rebuild-cache))
From ksprotte at common-lisp.net Thu Jan 17 16:51:12 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Thu, 17 Jan 2008 11:51:12 -0500 (EST)
Subject: [bknr-cvs] r2338 - branches/bos-sehr-alt
Message-ID: <20080117165112.9703F6514E@common-lisp.net>
Author: ksprotte
Date: Thu Jan 17 11:51:11 2008
New Revision: 2338
Removed:
branches/bos-sehr-alt/
Log:
rm branch bos-sehr-alt
From ksprotte at common-lisp.net Thu Jan 17 16:52:37 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Thu, 17 Jan 2008 11:52:37 -0500 (EST)
Subject: [bknr-cvs] r2339 - branches/bos-ksprotte
Message-ID: <20080117165237.081ED6A03A@common-lisp.net>
Author: ksprotte
Date: Thu Jan 17 11:52:36 2008
New Revision: 2339
Added:
branches/bos-ksprotte/
- copied from r2338, branches/bos/
Log:
created new test branch for ksprotte
From hhubner at common-lisp.net Thu Jan 17 17:09:13 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Thu, 17 Jan 2008 12:09:13 -0500 (EST)
Subject: [bknr-cvs] r2340 - branches/bos/projects/bos/m2
Message-ID: <20080117170913.D66657213B@common-lisp.net>
Author: hhubner
Date: Thu Jan 17 12:09:12 2008
New Revision: 2340
Modified:
branches/bos/projects/bos/m2/map.lisp
Log:
If no background image is available, just skip the :background operation.
Modified: branches/bos/projects/bos/m2/map.lisp
==============================================================================
--- branches/bos/projects/bos/m2/map.lisp (original)
+++ branches/bos/projects/bos/m2/map.lisp Thu Jan 17 12:09:12 2008
@@ -118,8 +118,9 @@
original-image))
(defmethod image-tile-process ((tile image-tile) (operation (eql :background)))
- (with-store-image (original-image (image-tile-original-image tile))
- (copy-image original-image *default-image* 0 0 0 0 (image-width) (image-height))))
+ (when (image-tile-original-image tile)
+ (with-store-image (original-image (image-tile-original-image tile))
+ (copy-image original-image *default-image* 0 0 0 0 (image-width) (image-height)))))
(defmethod image-tile-process ((tile image-tile) (operation (eql :areas)))
(do-rows (y)
From hhubner at common-lisp.net Fri Jan 18 07:45:15 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Fri, 18 Jan 2008 02:45:15 -0500 (EST)
Subject: [bknr-cvs] r2341 - branches/bos/projects/bos
Message-ID: <20080118074515.7BD3C5B113@common-lisp.net>
Author: hhubner
Date: Fri Jan 18 02:45:07 2008
New Revision: 2341
Modified:
branches/bos/projects/bos/README
Log:
small corrections to better reflect reality
Modified: branches/bos/projects/bos/README
==============================================================================
--- branches/bos/projects/bos/README (original)
+++ branches/bos/projects/bos/README Fri Jan 18 02:45:07 2008
@@ -6,14 +6,14 @@
- CMUCL 19c installieren, so dass "lisp" im Pfad ist
- - Komplettes cvs auschecken:
- $ cvs -d :ext:bknr.net:/home/bknr/cvs co -d bknr.net .
+ - Komplettes svn auschecken:
+ $ svn co svn+ssh://common-lisp.net/project/bknr/svn/branches/bos/projects/bos bknr-svn
Image bauen
-----------
- Im BOS-Verzeichnis eingeben
- bknr.net/bos$ ./build.sh --clean
+ bknr.net/bos$ ./build.sh
(--clean loescht fasls vor dem Kompilieren.)
- Heraus kommt das Imagefile "bos.core", das auf den Kundenserver
From hhubner at common-lisp.net Fri Jan 18 07:54:02 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Fri, 18 Jan 2008 02:54:02 -0500 (EST)
Subject: [bknr-cvs] r2342 - in branches/bos/projects/bos: m2 web
worldpay-test
Message-ID: <20080118075402.1905561119@common-lisp.net>
Author: hhubner
Date: Fri Jan 18 02:53:56 2008
New Revision: 2342
Added:
branches/bos/projects/bos/worldpay-test/bos.web.asd
- copied, changed from r2337, branches/bos/projects/bos/worldpay-test/worldpay-test.asd
branches/bos/projects/bos/worldpay-test/web.lisp
- copied, changed from r2337, branches/bos/projects/bos/web/web.lisp
branches/bos/projects/bos/worldpay-test/webserver.lisp
- copied, changed from r2337, branches/bos/projects/bos/worldpay-test/worldpay-test.lisp
Removed:
branches/bos/projects/bos/web/
branches/bos/projects/bos/worldpay-test/worldpay-test.asd
branches/bos/projects/bos/worldpay-test/worldpay-test.lisp
Modified:
branches/bos/projects/bos/m2/mail-generator.lisp
branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp
branches/bos/projects/bos/worldpay-test/boi-handlers.lisp
branches/bos/projects/bos/worldpay-test/cms-links.lisp
branches/bos/projects/bos/worldpay-test/config.lisp
branches/bos/projects/bos/worldpay-test/contract-handlers.lisp
branches/bos/projects/bos/worldpay-test/contract-image-handler.lisp
branches/bos/projects/bos/worldpay-test/contract-rss.lisp
branches/bos/projects/bos/worldpay-test/daily.lisp
branches/bos/projects/bos/worldpay-test/languages-handler.lisp
branches/bos/projects/bos/worldpay-test/map-browser-handler.lisp
branches/bos/projects/bos/worldpay-test/map-handlers.lisp
branches/bos/projects/bos/worldpay-test/news-handlers.lisp
branches/bos/projects/bos/worldpay-test/news-rss.lisp
branches/bos/projects/bos/worldpay-test/news-tags.lisp
branches/bos/projects/bos/worldpay-test/packages.lisp
branches/bos/projects/bos/worldpay-test/poi-handlers.lisp
branches/bos/projects/bos/worldpay-test/reports-xml-handler.lisp
branches/bos/projects/bos/worldpay-test/rss.lisp
branches/bos/projects/bos/worldpay-test/spendenquittung.lisp
branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp
branches/bos/projects/bos/worldpay-test/tags.lisp
branches/bos/projects/bos/worldpay-test/utils.lisp
branches/bos/projects/bos/worldpay-test/web-macros.lisp
branches/bos/projects/bos/worldpay-test/web-utils.lisp
Log:
rename worldpay-test -> bos.web, step 1
Modified: branches/bos/projects/bos/m2/mail-generator.lisp
==============================================================================
--- branches/bos/projects/bos/m2/mail-generator.lisp (original)
+++ branches/bos/projects/bos/m2/mail-generator.lisp Fri Jan 18 02:53:56 2008
@@ -45,7 +45,7 @@
(defun mail-template-directory (language)
"Return the directory where the mail templates are stored"
(merge-pathnames (make-pathname :directory `(:relative "templates" ,(string-downcase language)))
- (symbol-value (find-symbol "*WEBSITE-DIRECTORY*" "WORLDPAY-TEST"))))
+ (symbol-value (find-symbol "*WEBSITE-DIRECTORY*" "BOS.WEB"))))
(defun rest-of-file (file)
(let ((result (make-array (- (file-length file)
Modified: branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/boi-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/boi-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/boi-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Copied: branches/bos/projects/bos/worldpay-test/bos.web.asd (from r2337, branches/bos/projects/bos/worldpay-test/worldpay-test.asd)
==============================================================================
--- branches/bos/projects/bos/worldpay-test/worldpay-test.asd (original)
+++ branches/bos/projects/bos/worldpay-test/bos.web.asd Fri Jan 18 02:53:56 2008
@@ -38,7 +38,15 @@
(:file "news-tags" :depends-on ("web-utils"))
(:file "news-rss" :depends-on ("web-utils"))
(:file "contract-rss" :depends-on ("web-utils"))
- (:file "worldpay-test" :depends-on ("news-tags" "tags" "map-handlers" "map-browser-handler" "poi-handlers"
- "boi-handlers" "contract-handlers" "sponsor-handlers" "news-handlers"
- "allocation-area-handlers"))
- (:file "daily" :depends-on ("config" "worldpay-test"))))
+ (:file "webserver" :depends-on ("news-tags"
+ "tags"
+ "map-handlers"
+ "map-browser-handler"
+ "poi-handlers"
+ "boi-handlers"
+ "contract-handlers"
+ "sponsor-handlers"
+ "news-handlers"
+ "allocation-area-handlers"))
+ (:file "daily" :depends-on ("config" "webserver"))
+ (:file "startup" :depends-on ("config" "webserver"))))
Modified: branches/bos/projects/bos/worldpay-test/cms-links.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/cms-links.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/cms-links.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/config.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/config.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/config.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
;; Worldpay (headcraft inst id ist 102532
(defparameter *worldpay-installation-id* 103530
Modified: branches/bos/projects/bos/worldpay-test/contract-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/contract-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/contract-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/contract-image-handler.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/contract-image-handler.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/contract-image-handler.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/contract-rss.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/contract-rss.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/contract-rss.lisp Fri Jan 18 02:53:56 2008
@@ -7,7 +7,7 @@
(contract-paidp contract))
(defmethod rss-item-title ((contract contract))
- (format nil (case (intern (worldpay-test::current-website-language))
+ (format nil (case (intern (bos.web::current-website-language))
(de "~A Quadratmeter wurden ~@[von ~A ~]gekauft")
(t "~A square meters bought~@[ by ~A~]"))
(length (contract-m2s contract))
@@ -18,11 +18,11 @@
(defmethod rss-item-link ((contract contract))
#+(or)
- (format nil "http://createrainforest.org/~A/news-extern/~A" (worldpay-test::current-website-language) (store-object-id item)))
+ (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item)))
(defmethod rss-item-guid ((item contract))
#+(or)
- (format nil "http://createrainforest.org/~A/news-extern/~A" (worldpay-test::current-website-language) (store-object-id item)))
+ (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item)))
(defmethod rss-item-pub-date ((contract contract))
(contract-date contract))
Modified: branches/bos/projects/bos/worldpay-test/daily.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/daily.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/daily.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(defun daily-cleanup ()
(format t "; performing daily cleanup run~%")
Modified: branches/bos/projects/bos/worldpay-test/languages-handler.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/languages-handler.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/languages-handler.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/map-browser-handler.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/map-browser-handler.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/map-browser-handler.lisp Fri Jan 18 02:53:56 2008
@@ -1,7 +1,7 @@
; please don't read this code, it is not pretty
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/map-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/map-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/map-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/news-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/news-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/news-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/news-rss.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/news-rss.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/news-rss.lisp Fri Jan 18 02:53:56 2008
@@ -4,19 +4,19 @@
"news")
(defmethod rss-item-published ((item news-item))
- (news-item-published item (worldpay-test::current-website-language)))
+ (news-item-published item (bos.web::current-website-language)))
(defmethod rss-item-title ((item news-item))
- (news-item-title item (worldpay-test::current-website-language)))
+ (news-item-title item (bos.web::current-website-language)))
(defmethod rss-item-description ((item news-item))
- (news-item-text item (worldpay-test::current-website-language)))
+ (news-item-text item (bos.web::current-website-language)))
(defmethod rss-item-link ((item news-item))
- (format nil "http://createrainforest.org/~A/news-extern/~A" (worldpay-test::current-website-language) (store-object-id item)))
+ (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item)))
(defmethod rss-item-guid ((item news-item))
- (format nil "http://createrainforest.org/~A/news-extern/~A" (worldpay-test::current-website-language) (store-object-id item)))
+ (format nil "http://createrainforest.org/~A/news-extern/~A" (bos.web::current-website-language) (store-object-id item)))
(defmethod rss-item-pub-date ((item news-item))
(news-item-time item))
Modified: branches/bos/projects/bos/worldpay-test/news-tags.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/news-tags.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/news-tags.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/packages.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/packages.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/packages.lisp Fri Jan 18 02:53:56 2008
@@ -1,6 +1,6 @@
(in-package :cl-user)
-(defpackage :worldpay-test
+(defpackage :bos.web
(:use :cl
:date-calc
#+cmu :extensions
Modified: branches/bos/projects/bos/worldpay-test/poi-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/poi-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/poi-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/reports-xml-handler.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/reports-xml-handler.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/reports-xml-handler.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
@@ -29,7 +29,7 @@
(not (eql *year* (contract-year contract))))))
(class-instances 'contract))
#'< :key #'contract-date)))
- (setf name (intern (string-upcase name) :worldpay-test))
+ (setf name (intern (string-upcase name) :bos.web))
(apply (or (gethash name *report-generators*)
(error "invalid report name ~A" name))
arguments)))))
Modified: branches/bos/projects/bos/worldpay-test/rss.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/rss.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/rss.lisp Fri Jan 18 02:53:56 2008
@@ -1,6 +1,6 @@
;; 2008-01-15: currently not used in the production core
-(in-package :worldpay-test)
+(in-package :bos.web)
(defmethod rss-item-channel ((item news-item))
"news")
Modified: branches/bos/projects/bos/worldpay-test/spendenquittung.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/spendenquittung.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/spendenquittung.lisp Fri Jan 18 02:53:56 2008
@@ -91,7 +91,7 @@
(with-output-to-string (s)
(pdf:write-document s))))
-(in-package :worldpay-test)
+(in-package :bos.web)
(defvar *mail-sender-name* "BOS Deutschland e.V.")
(defvar *mail-sender-address* "spendenbescheinigung at bos-deutschland.de")
Modified: branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/tags.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/tags.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/tags.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/utils.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/utils.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/utils.lisp Fri Jan 18 02:53:56 2008
@@ -1,6 +1,6 @@
;; 2008-01-15: currently not used in the production core
-(in-package :worldpay-test)
+(in-package :bos.web)
;;; date format
Modified: branches/bos/projects/bos/worldpay-test/web-macros.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/web-macros.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/web-macros.lisp Fri Jan 18 02:53:56 2008
@@ -1,4 +1,4 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Modified: branches/bos/projects/bos/worldpay-test/web-utils.lisp
==============================================================================
--- branches/bos/projects/bos/worldpay-test/web-utils.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/web-utils.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
Copied: branches/bos/projects/bos/worldpay-test/web.lisp (from r2337, branches/bos/projects/bos/web/web.lisp)
==============================================================================
--- branches/bos/projects/bos/web/web.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/web.lisp Fri Jan 18 02:53:56 2008
@@ -30,10 +30,10 @@
(defun reinit (&key debug)
(format t "~&; Publishing BOS handlers.~%")
(unpublish :all t)
- (worldpay-test::publish-worldpay-test :website-directory *website-directory*
- :vhosts *vhosts*
- :website-url *website-url*
- :worldpay-test-mode *worldpay-test-mode*)
+ (bos.web::publish-website :website-directory *website-directory*
+ :vhosts *vhosts*
+ :website-url *website-url*
+ :worldpay-test-mode *worldpay-test-mode*)
(format t "~&; Starting aserve~@[ in debug mode~].~%" debug)
(force-output)
(setq *webserver*
Copied: branches/bos/projects/bos/worldpay-test/webserver.lisp (from r2337, branches/bos/projects/bos/worldpay-test/worldpay-test.lisp)
==============================================================================
--- branches/bos/projects/bos/worldpay-test/worldpay-test.lisp (original)
+++ branches/bos/projects/bos/worldpay-test/webserver.lisp Fri Jan 18 02:53:56 2008
@@ -1,5 +1,5 @@
-(in-package :worldpay-test)
+(in-package :bos.web)
(enable-interpol-syntax)
@@ -174,7 +174,7 @@
(find-browser-prefered-language req)
*default-language*)))))
-(defun publish-worldpay-test (&key website-directory website-url (worldpay-test-mode t) (vhosts :wild))
+(defun publish-website (&key website-directory website-url (worldpay-test-mode t) (vhosts :wild))
(setf *website-directory* website-directory)
(when website-url
@@ -219,7 +219,7 @@
("/index" index-handler)
("/" worldpay-template-handler
:destination ,(namestring (merge-pathnames #p"templates/" website-directory))
- :command-packages ((:bos . :worldpay-test)
+ :command-packages ((:bos . :bos.web)
(:bknr . :bknr.web))))
:modules '(user images stats)
:navigation '(("sponsor" . "edit-sponsor/")
From hhubner at common-lisp.net Fri Jan 18 07:56:10 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Fri, 18 Jan 2008 02:56:10 -0500 (EST)
Subject: [bknr-cvs] r2343 - in branches/bos/projects/bos: web worldpay-test
Message-ID: <20080118075610.9C3C372130@common-lisp.net>
Author: hhubner
Date: Fri Jan 18 02:56:09 2008
New Revision: 2343
Added:
branches/bos/projects/bos/web/
- copied from r2337, branches/bos/projects/bos/worldpay-test/
branches/bos/projects/bos/web/allocation-area-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp
branches/bos/projects/bos/web/boi-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/boi-handlers.lisp
branches/bos/projects/bos/web/bos.web.asd
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/bos.web.asd
branches/bos/projects/bos/web/cms-links.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/cms-links.lisp
branches/bos/projects/bos/web/config.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/config.lisp
branches/bos/projects/bos/web/contract-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/contract-handlers.lisp
branches/bos/projects/bos/web/contract-image-handler.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/contract-image-handler.lisp
branches/bos/projects/bos/web/contract-rss.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/contract-rss.lisp
branches/bos/projects/bos/web/daily.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/daily.lisp
branches/bos/projects/bos/web/languages-handler.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/languages-handler.lisp
branches/bos/projects/bos/web/map-browser-handler.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/map-browser-handler.lisp
branches/bos/projects/bos/web/map-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/map-handlers.lisp
branches/bos/projects/bos/web/news-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/news-handlers.lisp
branches/bos/projects/bos/web/news-rss.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/news-rss.lisp
branches/bos/projects/bos/web/news-tags.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/news-tags.lisp
branches/bos/projects/bos/web/packages.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/packages.lisp
branches/bos/projects/bos/web/poi-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/poi-handlers.lisp
branches/bos/projects/bos/web/reports-xml-handler.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/reports-xml-handler.lisp
branches/bos/projects/bos/web/rss.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/rss.lisp
branches/bos/projects/bos/web/spendenquittung.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/spendenquittung.lisp
branches/bos/projects/bos/web/sponsor-handlers.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp
branches/bos/projects/bos/web/tags.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/tags.lisp
branches/bos/projects/bos/web/utils.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/utils.lisp
branches/bos/projects/bos/web/web-macros.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/web-macros.lisp
branches/bos/projects/bos/web/web-utils.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/web-utils.lisp
branches/bos/projects/bos/web/web.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/web.lisp
branches/bos/projects/bos/web/webserver.lisp
- copied unchanged from r2342, branches/bos/projects/bos/worldpay-test/webserver.lisp
Removed:
branches/bos/projects/bos/web/worldpay-test.asd
branches/bos/projects/bos/web/worldpay-test.lisp
branches/bos/projects/bos/worldpay-test/
Log:
rename worldpay-test -> bos.web, step 2
From hhubner at common-lisp.net Fri Jan 18 08:00:36 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Fri, 18 Jan 2008 03:00:36 -0500 (EST)
Subject: [bknr-cvs] r2344 - branches/bos/projects/bos/web
Message-ID: <20080118080036.D2F8B56225@common-lisp.net>
Author: hhubner
Date: Fri Jan 18 03:00:36 2008
New Revision: 2344
Added:
branches/bos/projects/bos/web/startup.lisp
- copied unchanged from r2343, branches/bos/projects/bos/web/web.lisp
Removed:
branches/bos/projects/bos/web/web.lisp
Modified:
branches/bos/projects/bos/web/bos.web.asd
Log:
Final tweaks to get rid of the worldpay-test package and system.
Modified: branches/bos/projects/bos/web/bos.web.asd
==============================================================================
--- branches/bos/projects/bos/web/bos.web.asd (original)
+++ branches/bos/projects/bos/web/bos.web.asd Fri Jan 18 03:00:36 2008
@@ -2,12 +2,12 @@
(in-package :cl-user)
-(defpackage :worldpay-test.system
+(defpackage :bos.web.system
(:use :cl :asdf))
-(in-package :worldpay-test.system)
+(in-package :bos.web.system)
-(defsystem :worldpay-test
+(defsystem :bos.web
:name "worldpay test"
:author "Hans Huebner "
:version "0"
From hhubner at common-lisp.net Fri Jan 18 08:32:53 2008
From: hhubner at common-lisp.net (hhubner at common-lisp.net)
Date: Fri, 18 Jan 2008 03:32:53 -0500 (EST)
Subject: [bknr-cvs] r2345 - branches/bos/projects/bos/web
Message-ID: <20080118083253.2029172130@common-lisp.net>
Author: hhubner
Date: Fri Jan 18 03:32:49 2008
New Revision: 2345
Modified:
branches/bos/projects/bos/web/packages.lisp
Log:
Add package alias so that old store can be loaded.
Modified: branches/bos/projects/bos/web/packages.lisp
==============================================================================
--- branches/bos/projects/bos/web/packages.lisp (original)
+++ branches/bos/projects/bos/web/packages.lisp Fri Jan 18 03:32:49 2008
@@ -25,6 +25,7 @@
:bknr.rss
:bos.m2
:bos.m2.config)
+ (:nicknames :web :worldpay-test)
(:shadowing-import-from :cl-interpol #:quote-meta-chars)
(:shadowing-import-from :acl-compat.mp #:process-kill #:process-wait)
(:import-from :net.html.generator #:*html-stream*)
From ksprotte at common-lisp.net Fri Jan 18 09:34:30 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Fri, 18 Jan 2008 04:34:30 -0500 (EST)
Subject: [bknr-cvs] r2346 - branches/bos/projects/bos/m2
Message-ID: <20080118093430.301945622C@common-lisp.net>
Author: ksprotte
Date: Fri Jan 18 04:34:29 2008
New Revision: 2346
Modified:
branches/bos/projects/bos/m2/allocation-cache.lisp
Log:
small ch
Modified: branches/bos/projects/bos/m2/allocation-cache.lisp
==============================================================================
--- branches/bos/projects/bos/m2/allocation-cache.lisp (original)
+++ branches/bos/projects/bos/m2/allocation-cache.lisp Fri Jan 18 04:34:29 2008
@@ -136,7 +136,7 @@
(<= 1 n +threshold+))
(defun find-exact-match (n &key remove)
- "Will return a free contigous region of size N
+ "Will return a free contiguous region of size N
as a list of m2 instances. If no such region exactly
matching N can be found, simply returns NIL.
From ksprotte at common-lisp.net Fri Jan 18 10:06:00 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Fri, 18 Jan 2008 05:06:00 -0500 (EST)
Subject: [bknr-cvs] r2347 - branches/bos/projects/bos
Message-ID: <20080118100600.2BA284F01E@common-lisp.net>
Author: ksprotte
Date: Fri Jan 18 05:05:56 2008
New Revision: 2347
Added:
branches/bos/projects/bos/Makefile
Log:
Added Makefile for building / cleaning *.core
Added: branches/bos/projects/bos/Makefile
==============================================================================
--- (empty file)
+++ branches/bos/projects/bos/Makefile Fri Jan 18 05:05:56 2008
@@ -0,0 +1,13 @@
+all: bos.core
+
+cmucl.core:
+ lisp -load make-base-lisp.lisp
+
+bos.core: cmucl.core
+ ./build.sh
+
+.PHONY: clean
+clean:
+ rm -f cmucl.core
+ rm -f bos.core
+
From ksprotte at common-lisp.net Fri Jan 18 10:27:29 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Fri, 18 Jan 2008 05:27:29 -0500 (EST)
Subject: [bknr-cvs] r2348 - branches/bos/projects/bos
Message-ID: <20080118102729.8836F72135@common-lisp.net>
Author: ksprotte
Date: Fri Jan 18 05:27:28 2008
New Revision: 2348
Modified:
branches/bos/projects/bos/Makefile
Log:
some more targets to Makefile
Modified: branches/bos/projects/bos/Makefile
==============================================================================
--- branches/bos/projects/bos/Makefile (original)
+++ branches/bos/projects/bos/Makefile Fri Jan 18 05:27:28 2008
@@ -1,4 +1,5 @@
all: bos.core
+.PHONY: all
cmucl.core:
lisp -load make-base-lisp.lisp
@@ -6,8 +7,29 @@
bos.core: cmucl.core
./build.sh
-.PHONY: clean
-clean:
+.PHONY: cleancore
+cleancore:
rm -f cmucl.core
rm -f bos.core
+.PHONY: cleanfasl
+cleanfasl:
+ (cd ../.. && find . -name '*.x86f' | xargs rm)
+
+.PHONY: cleanall
+cleanall: cleancore cleanfasl
+
+.PHONY: clean
+clean: cleancore
+
+# I once had the problem that compiling
+# and loading a lisp source was fine,
+# but loading the pre-compiled fasl failed...
+
+.PHONY: crazy_build_test
+crazy_build_test:
+ make cleanall
+ make all
+ make cleancore
+ make all
+
From ksprotte at common-lisp.net Fri Jan 18 11:03:03 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Fri, 18 Jan 2008 06:03:03 -0500 (EST)
Subject: [bknr-cvs] r2349 - branches/bos/thirdparty/emacs/slime
Message-ID: <20080118110303.08B1A3C09A@common-lisp.net>
Author: ksprotte
Date: Fri Jan 18 06:03:03 2008
New Revision: 2349
Removed:
branches/bos/thirdparty/emacs/slime/
Log:
rm slime to add new one with CVS
From ksprotte at common-lisp.net Fri Jan 18 11:07:06 2008
From: ksprotte at common-lisp.net (ksprotte at common-lisp.net)
Date: Fri, 18 Jan 2008 06:07:06 -0500 (EST)
Subject: [bknr-cvs] r2350 - in branches/bos/thirdparty/emacs/slime: . CVS
contrib contrib/CVS doc doc/CVS
Message-ID: <20080118110706.96D904F01A@common-lisp.net>
Author: ksprotte
Date: Fri Jan 18 06:05:59 2008
New Revision: 2350
Added:
branches/bos/thirdparty/emacs/slime/
branches/bos/thirdparty/emacs/slime/.cvsignore
branches/bos/thirdparty/emacs/slime/CVS/
branches/bos/thirdparty/emacs/slime/CVS/Entries
branches/bos/thirdparty/emacs/slime/CVS/Entries.Log
branches/bos/thirdparty/emacs/slime/CVS/Repository
branches/bos/thirdparty/emacs/slime/CVS/Root
branches/bos/thirdparty/emacs/slime/CVS/Template
branches/bos/thirdparty/emacs/slime/ChangeLog
branches/bos/thirdparty/emacs/slime/HACKING
branches/bos/thirdparty/emacs/slime/NEWS
branches/bos/thirdparty/emacs/slime/PROBLEMS
branches/bos/thirdparty/emacs/slime/README
branches/bos/thirdparty/emacs/slime/contrib/
branches/bos/thirdparty/emacs/slime/contrib/CVS/
branches/bos/thirdparty/emacs/slime/contrib/CVS/Entries
branches/bos/thirdparty/emacs/slime/contrib/CVS/Repository
branches/bos/thirdparty/emacs/slime/contrib/CVS/Root
branches/bos/thirdparty/emacs/slime/contrib/CVS/Template
branches/bos/thirdparty/emacs/slime/contrib/ChangeLog
branches/bos/thirdparty/emacs/slime/contrib/README
branches/bos/thirdparty/emacs/slime/contrib/bridge.el
branches/bos/thirdparty/emacs/slime/contrib/inferior-slime.el
branches/bos/thirdparty/emacs/slime/contrib/slime-asdf.el
branches/bos/thirdparty/emacs/slime/contrib/slime-autodoc.el
branches/bos/thirdparty/emacs/slime/contrib/slime-banner.el
branches/bos/thirdparty/emacs/slime/contrib/slime-c-p-c.el
branches/bos/thirdparty/emacs/slime/contrib/slime-editing-commands.el
branches/bos/thirdparty/emacs/slime/contrib/slime-fancy-inspector.el
branches/bos/thirdparty/emacs/slime/contrib/slime-fancy.el
branches/bos/thirdparty/emacs/slime/contrib/slime-fuzzy.el
branches/bos/thirdparty/emacs/slime/contrib/slime-highlight-edits.el
branches/bos/thirdparty/emacs/slime/contrib/slime-parse.el
branches/bos/thirdparty/emacs/slime/contrib/slime-presentation-streams.el
branches/bos/thirdparty/emacs/slime/contrib/slime-presentations.el
branches/bos/thirdparty/emacs/slime/contrib/slime-references.el
branches/bos/thirdparty/emacs/slime/contrib/slime-scheme.el
branches/bos/thirdparty/emacs/slime/contrib/slime-scratch.el
branches/bos/thirdparty/emacs/slime/contrib/slime-tramp.el
branches/bos/thirdparty/emacs/slime/contrib/slime-typeout-frame.el
branches/bos/thirdparty/emacs/slime/contrib/slime-xref-browser.el
branches/bos/thirdparty/emacs/slime/contrib/swank-arglists.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-asdf.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-c-p-c.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-fancy-inspector.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-fuzzy.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-listener-hooks.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-presentation-streams.lisp
branches/bos/thirdparty/emacs/slime/contrib/swank-presentations.lisp
branches/bos/thirdparty/emacs/slime/doc/
branches/bos/thirdparty/emacs/slime/doc/.cvsignore
branches/bos/thirdparty/emacs/slime/doc/CVS/
branches/bos/thirdparty/emacs/slime/doc/CVS/Entries
branches/bos/thirdparty/emacs/slime/doc/CVS/Repository
branches/bos/thirdparty/emacs/slime/doc/CVS/Root
branches/bos/thirdparty/emacs/slime/doc/CVS/Template
branches/bos/thirdparty/emacs/slime/doc/Makefile
branches/bos/thirdparty/emacs/slime/doc/slime-refcard.pdf (contents, props changed)
branches/bos/thirdparty/emacs/slime/doc/slime-refcard.tex
branches/bos/thirdparty/emacs/slime/doc/slime-small.eps
branches/bos/thirdparty/emacs/slime/doc/slime-small.pdf (contents, props changed)
branches/bos/thirdparty/emacs/slime/doc/slime.texi
branches/bos/thirdparty/emacs/slime/doc/texinfo-tabulate.awk
branches/bos/thirdparty/emacs/slime/hyperspec.el
branches/bos/thirdparty/emacs/slime/metering.lisp
branches/bos/thirdparty/emacs/slime/mkdist.sh (contents, props changed)
branches/bos/thirdparty/emacs/slime/nregex.lisp
branches/bos/thirdparty/emacs/slime/sbcl-pprint-patch.lisp
branches/bos/thirdparty/emacs/slime/slime-autoloads.el
branches/bos/thirdparty/emacs/slime/slime.el
branches/bos/thirdparty/emacs/slime/swank-abcl.lisp
branches/bos/thirdparty/emacs/slime/swank-allegro.lisp
branches/bos/thirdparty/emacs/slime/swank-backend.lisp
branches/bos/thirdparty/emacs/slime/swank-clisp.lisp
branches/bos/thirdparty/emacs/slime/swank-cmucl.lisp
branches/bos/thirdparty/emacs/slime/swank-corman.lisp
branches/bos/thirdparty/emacs/slime/swank-ecl.lisp
branches/bos/thirdparty/emacs/slime/swank-gray.lisp
branches/bos/thirdparty/emacs/slime/swank-lispworks.lisp
branches/bos/thirdparty/emacs/slime/swank-loader.lisp
branches/bos/thirdparty/emacs/slime/swank-openmcl.lisp
branches/bos/thirdparty/emacs/slime/swank-sbcl.lisp
branches/bos/thirdparty/emacs/slime/swank-scl.lisp
branches/bos/thirdparty/emacs/slime/swank-source-file-cache.lisp
branches/bos/thirdparty/emacs/slime/swank-source-path-parser.lisp
branches/bos/thirdparty/emacs/slime/swank.asd
branches/bos/thirdparty/emacs/slime/swank.lisp
branches/bos/thirdparty/emacs/slime/test-all.sh (contents, props changed)
branches/bos/thirdparty/emacs/slime/test.sh (contents, props changed)
branches/bos/thirdparty/emacs/slime/xref.lisp
Log:
Added newest SLIME (needed by FiveAM -> arnesi -> slime)
Added: branches/bos/thirdparty/emacs/slime/.cvsignore
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/.cvsignore Fri Jan 18 06:05:59 2008
@@ -0,0 +1,6 @@
+*.x86f
+*.fasl
+*.dfsl
+*.lx64fsl
+*.elc
+_darcs
Added: branches/bos/thirdparty/emacs/slime/CVS/Entries
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/CVS/Entries Fri Jan 18 06:05:59 2008
@@ -0,0 +1,34 @@
+/.cvsignore/1.5/Sun Apr 8 19:23:57 2007//
+/ChangeLog/1.1268/Thu Jan 17 05:53:44 2008//
+/HACKING/1.8/Wed Sep 19 11:08:27 2007//
+/NEWS/1.9/Tue Nov 27 11:50:13 2007//
+/PROBLEMS/1.8/Sun Nov 20 23:31:56 2005//
+/README/1.14/Tue Oct 3 21:49:13 2006//
+/hyperspec.el/1.11/Thu Dec 7 07:36:54 2006//
+/metering.lisp/1.4/Fri Apr 1 20:16:35 2005//
+/mkdist.sh/1.7/Mon Aug 29 20:02:58 2005//
+/nregex.lisp/1.4/Mon Sep 19 08:20:48 2005//
+/sbcl-pprint-patch.lisp/1.1/Fri Feb 17 01:30:21 2006//
+/slime-autoloads.el/1.3/Thu Sep 20 14:59:08 2007//
+/slime.el/1.892/Mon Jan 14 12:08:44 2008//
+/swank-abcl.lisp/1.44/Mon Oct 22 08:36:32 2007//
+/swank-allegro.lisp/1.98/Wed Sep 26 23:15:41 2007//
+/swank-backend.lisp/1.126/Mon Sep 10 15:39:05 2007//
+/swank-clisp.lisp/1.64/Thu Aug 23 19:03:37 2007//
+/swank-cmucl.lisp/1.175/Fri Nov 30 13:10:40 2007//
+/swank-corman.lisp/1.11/Thu Aug 23 19:03:37 2007//
+/swank-ecl.lisp/1.10/Sat Dec 22 02:53:58 2007//
+/swank-gray.lisp/1.10/Wed Apr 12 08:43:55 2006//
+/swank-lispworks.lisp/1.93/Sat Nov 24 08:18:59 2007//
+/swank-loader.lisp/1.75/Sat Nov 24 08:18:59 2007//
+/swank-openmcl.lisp/1.120/Mon Oct 22 08:19:58 2007//
+/swank-sbcl.lisp/1.187/Thu Jan 17 05:53:44 2008//
+/swank-scl.lisp/1.14/Sat Dec 22 13:24:49 2007//
+/swank-source-file-cache.lisp/1.8/Tue Dec 5 13:00:42 2006//
+/swank-source-path-parser.lisp/1.17/Sun Jun 25 08:33:16 2006//
+/swank.asd/1.5/Fri Sep 14 12:41:28 2007//
+/swank.lisp/1.523/Thu Dec 20 10:33:37 2007//
+/test-all.sh/1.2/Mon Aug 29 20:02:58 2005//
+/test.sh/1.9/Mon Aug 27 13:16:49 2007//
+/xref.lisp/1.2/Mon May 17 00:25:24 2004//
+D
Added: branches/bos/thirdparty/emacs/slime/CVS/Entries.Log
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/CVS/Entries.Log Fri Jan 18 06:05:59 2008
@@ -0,0 +1,2 @@
+A D/contrib////
+A D/doc////
Added: branches/bos/thirdparty/emacs/slime/CVS/Repository
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/CVS/Repository Fri Jan 18 06:05:59 2008
@@ -0,0 +1 @@
+slime
Added: branches/bos/thirdparty/emacs/slime/CVS/Root
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/CVS/Root Fri Jan 18 06:05:59 2008
@@ -0,0 +1 @@
+:pserver:anonymous:anonymous at common-lisp.net:/project/slime/cvsroot
Added: branches/bos/thirdparty/emacs/slime/CVS/Template
==============================================================================
Added: branches/bos/thirdparty/emacs/slime/ChangeLog
==============================================================================
--- (empty file)
+++ branches/bos/thirdparty/emacs/slime/ChangeLog Fri Jan 18 06:05:59 2008
@@ -0,0 +1,13454 @@
+2008-01-17 Nikodemus Siivola
+
+ * swank-sbcl.lisp (sbcl-source-file-p): When a buffer is not
+ associated with any file, M-. for names defined there ends up
+ calling SBCL-SOURCE-FILE-P with NIL -- guard against that.
+
+2008-01-14 Tobias C. Rittweiler
+
+ * slime.el (sldb-mode): Add `sldb-quit' to `kill-buffer-hook' to
+ close the debugging machinery on swank side when the SLDB buffer
+ is killed. (Notice that killing the SLDB buffer manually will not
+ restore window configuration in contrast to typing `q'.)
+
+2008-01-10 Tobias C. Rittweiler
+
+ * slime.el (slime-delete-and-extract-region): New
+ function. Portable version of `delete-and-extract-region' which
+ returned NIL instead of "", as experienced by Matthias Koeppe.
+
+2008-01-09 Matthias Koeppe
+
+ * slime.el (slime-repl-mode-map): Bind C-c C-t to
+ slime-toggle-trace-fdefinition (as in Lisp buffers) instead of
+ slime-repl-clear-buffer. This binding is useful for untracing
+ functions directly from the trace output. Move
+ slime-repl-clear-buffer to the keybinding C-c M-o.
+
+2008-01-04 Juho Snellman
+
+ * swank-sbcl.lisp (source-file-source-location): Use the
+ debootstrap readtable when appropriate (fixes occasional reader
+ errors when using "v" on debugger frames that point to functions
+ defined in SBCL). Likewise for the debootstrapping packages.
+ (code-location-debug-source-name): Ensure that we always return a
+ physical namestring, Emacs won't like a pathname or a logical
+ namestring.
+
+2008-01-02 Lu?s Oliveira
+
+ Use sane default values for slime-repl-set-package.
+
+ Previously, when typing `,!p' at the REPL, the current package
+ would have been inserted as a default (although the whole intent
+ was to /change/ the current package in the first place), now
+ nothing is inserted anymore.
+
+ * slime.el (slime-pretty-current-package): rename it to
+ slime-pretty-find-buffer-package and make it use
+ slime-find-buffer-package instead of slime-current-package.
+ (slime-repl-set-package, slime-set-package): use new function.
+
+2008-01-02 Tobias C. Rittweiler
+
+ * slime.el (slime-print-apropos): Simplified: Don't insert action
+ properties anymore for the symbol; they were ignored anyway,
+ because `apropos-follow' (bound to RET in the resulting
+ *SLIME Apropos* buffer) looks for buttons only.
+
+2008-01-02 Tobias C. Rittweiler
+
+ * slime.el (slime-apropos): Update docstring: Apropos doesn't
+ match on regular expressions anymore since 2007-11-24.
+
+2007-12-22 Douglas Crosher
+
+ * swank-scl.lisp (set-stream-timeout, make-socket-io-stream): update
+ for Scieneer CL 1.3.7.
+
+2007-12-20 Tobias C. Rittweiler
+
+ * swank.lisp (read-softly-from-string): Now actually returns all
+ three values as explained in its docstring.
+
+2007-12-14 Tobias C. Rittweiler
+
+ * slime.el (slime-insert-xref-location): New function. Tries to
+ either insert the file name a function is defined in, or inserts
+ information about the buffer a function was interactively
+ `C-c C-c'd from. Idea from Knut Olav B?hmer.
+ (slime-insert-xrefs): Use it.
+
+2007-12-04 Helmut Eller
+
+ Simplify the inspector.
+
+ * swank.lisp (inspect-object): Ignore the title value returned
+ from backends.
+
+ * slime.el (slime-open-inspector): Updated accordingly.
+
+2007-12-04 Helmut Eller
+
+ Fix slime-list-thread selector.
+
+ * slime.el (slime-list-threads): Wait for the result before
+ continuing.
+
+2007-12-04 Helmut Eller
+
+ * slime.el (slime-repl-insert-result): Use slime-repl-emit-result
+ since handling of markers has changed.
+ (slime-repl-emit-result): New argument: bol.
+
+2007-12-02 Alan Caulkins
+
+ Make it possible to close listening sockets.
+
+ * swank.lisp (stop-server, restart-server): New functions.
+ (*listener-sockets*): New variable.
+ (setup-server): Store open sockets in *listener-sockets*.
+
+2007-12-02 Helmut Eller
+
+ Add hook to customize the region used by C-c C-c.
+ Useful to recognize block declarations in CMUCL sources.
+
+ * slime.el (slime-region-for-defun-function): New variable.
+ (slime-region-for-defun-at-point): Use it.
+
+2007-11-30 Helmut Eller
+
+ Handle byte-functions without debug-info.
+
+ * swank-cmucl.lisp (byte-function-location): Return an error
+ if the component has no debug-info.
+
+2007-11-30 Helmut Eller
+
+ Disable the pretty-printer for backtraces.
+ Would be nice if we could print newlines in strings as \n.
+
+ * swank.lisp (*backtrace-printer-bindings*): New varaible.
+ (backtrace, frame-locals-for-emacs): Use it.
+
+2007-11-29 Tobias C. Rittweiler
+
+ * swank.lisp (valid-function-name-p): Fixed wrt. setf functions.
+
+2007-11-29 Helmut Eller
+
+ Prettify package names for slime-repl-set-package.
+
+ * slime.el (slime-repl-set-package): slime-current-package may
+ have leading colons. Use slime-pretty-package-name to remove
+ them. Reported by Constantine Vetoshev.
+ (slime-pretty-current-package): New function.
+ (slime-set-package): Use it.
+
+2007-11-24 Helmut Eller
+
+ Drop remaining dependencies on nregex.
+
+ * swank-lispworks.lisp (unmangle-unfun): Use sys::setf-symbol-p
+ instead of regexp matching.
+
+ * swank-loader.lisp (*sysdep-files*): Don't include nregex.
+
+2007-11-24 Helmut Eller
+
+ Mirror *modules* in Emacs.
+
+ * slime.el (slime-lisp-modules): New connction variable.
+ (slime-set-connection-info): Load requested modules.
+ (slime-required-modules): New variable.
+ (slime-require, slime-load-contribs): New functions.
+
+ * swank.lisp (connection-info): Include *modules*.
+ (swank-require): Accept a list of modules as argument.
+
+2007-11-24 Helmut Eller
+
+ * swank.lisp (parse-package): The old version didn't pass the
+ test-suite. Now use the reader directly instead of emulating it
+ half-heartedly.
+
+ * slime.el (slime-search-buffer-package): Don't remove double
+ quotes or "#:", swank:parse-package takes care of that.
+
+2007-11-24 Helmut Eller
+
+ * swank.lisp (apropos-symbols): Use simple search instead of
+ regexps.
+ (make-apropos-matcher): Used to be make-regexp-matcher.
+
+ (*sldb-printer-bindings*): Set *print-right-margin* to
+ most-positive-fixnum. This prints each frame in the backtrace in a
+ single long line. But is suboptimal for other purposes, like
+ eval-in-frame.
+
+ (setup-server): Initialize multiprocessing here, so that is also
+ done for create-server.
+
+2007-11-23 Tobias C. Rittweiler
+
+ * swank.lisp (swank-require): Fix typo (:key was used instead of
+ :test.) Reported by Stelian Ionescu.
+
+2007-11-22 Helmut Eller
+
+ * swank.lisp (swank-require): Don't search the file if the
+ module-name is present in *modules*. That should avoid problems if
+ swank is included in a core file and moved to a different
+ location. Reported by John Wiegley.
+
+2007-11-19 Tobias C. Rittweiler
+
+ * slime.el (slime-repl-mode-map, slime-repl-read-mode),
+ (slime-compiler-notes-mode-map, slime-xref-mode-map),
+ (sldb-mode-map, slime-connection-list-mode-map),
+ (slime-inspector-mode-map): Added bindings for [return] in
+ addition to (kbd "RET"). The reason is that pressing enter in X is
+ translated to (kbd "RET") only if no binding for [return] is
+ active; if [return] is bound to something, pressing enter is
+ translated to this key binding henceforth, as was explained to me
+ by Pierre Gaston, thanks! This can cause quite confusing behaviour
+ as Andreas Davour faced in his post
+ to comp.lang.lisp.
+
+2007-11-06 Helmut Eller
+
+ * slime.el (slime-events-buffer, slime-inspector-buffer): Disable
+ undo.
+
+2007-11-01 Tobias C. Rittweiler
+
+ The inspector page layout has changed slightly. Before the header
+ looked like
+
+ A proper list.
+ [type: CONS]
+ -------------------
+
+ It now looks like
+
+ #:
+ A proper list.
+ --------------------
+
+ Rationale is to have a "presentation link" to the currently
+ inspected object itself, to copy it down to the REPL via `M-RET'.
+ This is mostly useful when trying to get a value from the Slime
+ Debugger to the REPL, which you can do by inspecting the value
+ first by `i', and then using `M-RET' on the object representation
+ in the new header layout.
+
+ Such a "presentation link" existed already but was removed in
+ 2007-08-23. The old behaviour was to have the title ("A proper
+ list" in the above example) to contain the link. I decided to make
+ the link more explicit.
+
+ * swank.lisp (inspect-object): Now additionally returns a
+ string-representation of the object itself, and an inspector id
+ for it. Removed returning its type as this is implicit in the new
+ string representation.
+
+ * slime.el (slime-open-inspector): Adapted for new header layout.
+
+2007-10-22 Tobias C. Rittweiler
+
+ * swank.lisp (read-softly-from-string, unintern-in-home-package):
+ Moved from `contrib/swank-arglist.lisp'.
+ (parse-package): Use them. (Removes FIXME about interning
+ symbols.) Also changed the logic somewhat to avoid passing :|| to
+ FIND-PACKAGE as ECL chokes on that.
+
+2007-10-22 Steve Smith
+
+ * swank-loader.lisp (compile-files-if-needed-serially): Added
+ missing `load' argument to function definition on Corman Lisp /
+ ECL.
+
+2007-10-22 Mark Evenson
+
+ * swank-abcl.lisp (getpid): Implemented.
+
+2007-10-22 R. Matthew Emerson
+
+ * swank-openmcl.lisp (closure-closed-over-values): Use
+ CCL::NTH-IMMEDIATE instead of CCL::%SVREF. This makes it work on
+ x86-64 OpenMCL. (The %SVREF worked on PPC, but this will work on
+ both.)
+
+2007-09-27 Tobias C. Rittweiler
+
+ * slime.el (slime-filesystem-toplevel-directory): New function.
+ Windows doesn't have a filesystem that is as hierarchical as the
+ Unix' one. Reported by Carsten Blaauw and Stefan Kluehspies.
+ (slime-file-name-merge-source-root): Use it.
+ (slime-highlight-differences-in-dirname): Use it.
+
+2007-09-26 Utz-Uwe Haus
+
+ * swank-allegro.lisp (fspec-definition-locations): Allow the
+ POSITION datum of :top-level-form fspecs to be missing. This
+ apparently helpful for Allegro CL 8.1.
+
+2007-09-21 Tobias C. Rittweiler
+
+ * slime.el (slime-length=, slime-length>): Restore support for
+ vectors, as `slime-length=' was already used with strings in
+ `slime-parse.el'. This broke extended arglist display.
+
+2007-09-20 Helmut Eller
+
+ * slime.el (slime-setup): Call the respective init functions of
+ contribs.
+
+ * slime-autoloads.el (slime-setup-contribs): Ditto.
+
+2007-09-19 Helmut Eller
+
+ Simplify slime-compile-file.
+
+ * slime.el (slime-compile-file): Don't save window config.
+ (slime-curry, slime-rcurry): New functions.
+
+ * slime.el (slime-complete-symbol*-fancy): Move defcustom to
+ contrib/slime-c-p-c.el
+
+ * swank-version.el: Delete file. No longer used.
+
+ * bridge.el: Moved to contrib.
+
+ * tree-widget.el: File deleted. Only needed by contribs and is
+ distributed with Emacs 21.
+
+ * slime.el: Reorder some devfars and menus code so that the
+ compiler doesn't complain about free variables.
+
+ Fix apropos in Emacs 22.
+
+ * slime.el (slime-print-apropos): Add button props for Emacs 22.
+ (slime-call-describer): ARG is a marker in Emacs 22.
+
+ (def-slime-selector-method ?c): Wait until slime-list-threads
+ returns.
+
+ Remove define-slime-dialect.
+
+ * slime.el (define-slime-dialect): Deleted. Use
+ slime-lisp-implementations instead.
+
+ Introduce a slime-start-and-init function.
+
+ * slime.el (slime-start-and-init, slime-lisp-options): New
+ functions.
+ (slime-start-and-load): Use it.
+
+ Simplify slime-length=.
+
+ * slime.el (slime-length=, slime-length>): No need for vectors.
+
+ Remove explicit support for Scheme mode.
+
+ * slime.el (slime-scheme-mode-hook, slime-shared-lisp-mode-hook)
+ Deleted.
+ (slime-indentation-update-hooks): New hook.
+ (slime-handle-indentation-update): Use it.
+
+ Fix close-connection.
+
+ * swank.lisp (close-connection): Use *log-output* instead of
+ *debug-io* (which could be redirected to the to-be-closed
+ connection).
+
+2007-09-15 Helmut Eller
+
+ Let slime-setup load contribs.
+
+ * slime.el (slime-setup): Take a list of contribs to load as
+ argument.
+
+ * slime-autoloads.el (slime-setup): Ditto, but delay the actual
+ loading until slime is loaded.
+ (slime-setup-contribs): New function.
+
+2007-09-15 Tobias C. Rittweiler
+
+ * slime.el (slime-maybe-warn-for-different-source-root): Catch
+ returned NIL from `slime-file-name-merge-source-root' if the two
+ filenames don't share a common source root.
+ Reported by Frank Goenninger.
+
+2007-09-15 Tobias C. Rittweiler
+
+ * slime.el (slime-split-string): New semi-portability function.
+ The behaviour of `split-string' changed between Emacs21 and
+ Emacs22. Thanks to Christophe Rhodes for reporting this.
+ (slime-file-name-merge-source-root): Use `slime-split-string'.
+ (slime-highlight-differences-in-dirname): Likewise.
+
+2007-09-14 Helmut Eller
+
+ Some cleanups for the REPL.
+
+ * slime.el (slime-repl-write-string): Split it up into smaller
+ functions.
+ (slime-repl-emit, slime-repl-emit-result)
+ (slime-emit-string): New functions.
+
+ (slime-repl-save-history): Use prin1 instead of pp.
+
+ (repl-type-ahead): New test case.
+
+2007-09-12 Christophe Rhodes
+
+ Make ASDF:LOAD-OP (and SBCL REQUIRE) happy with swank.asd
+
+ * swank.asd: Define and use a CL-SCRIPT-FILE class for loading as
+ source, even with ASDF:LOAD-OP.
+
+2007-09-11 Tobias C. Rittweiler
+
+ * swank-loader.lisp: Aways compile-file `contrib/swank-asdf.lisp'
+ on SBCL. This fixes "Undefined function" style-warnings when using
+ `slime-asdf' in combination with SBCL. Reported by Cyrus Harmon.
+
+ * swank-sbcl.lisp: Explicitly require ASDF. (While this is not
+ strictly necessary, as it's implicitly loaded on requiring the
+ other modules, I think it's better to be explicit about it.)
+
+2007-09-10 Helmut Eller
+
+ Fix some bugs introduced while moving doc refs to contrib.
+
+ * swank-sbcl.lisp (condition-references): It's still needed.
+
+ * slime.el (sldb-dispatch-extras): Add missing quote.
+ (slime-sbcl-manual-root): Move definition to
+ contrib/slime-references.el.
+ (slime-cl-symbol-name, slime-cl-symbol-package): Move to
+ contrib/slime-parse.el.
+
+2007-09-10 Helmut Eller
+
+ Move SBCL doc references to contrib.
+
+ * slime.el (sldb-insert-condition): Merge REFERENCES and EXTRAS.
+ (sldb-extras-hooks, sldb-dispatch-extras): New hook.
+
+ * swank-backend.lisp (condition-references): Removed. Merged with
+ condition-extras.
+
+ * swank-sbcl.lisp (condition-references): Removed.
+ (condition-extras): Include references.
+ (externalize-reference): New function. Don't return plain
+ symbols.
+
+ * swank-allegro.lisp (condition-references): Removed.
+
+2007-09-10 Tobias C. Rittweiler
+
+ * slime.el (slime-cl-symbol-name, slime-cl-symbol-package):
+ Ressurected, as they're still used in this file.
+ Reported by Edward Cant.
+
+2007-09-10 Tobias C. Rittweiler
+
+ When working on multiple source trees simultaneously, the way
+ `slime-edit-definition' (M-.) works can sometimes be confusing:
+
+ `M-.' visits locations that are present in the current Lisp image,
+ which works perfectly well as long as the image reflects the
+ source tree that one is currently looking at.
+
+ In the other case, however, one can easily end up visiting a file
+ in a different source root directory (the one corresponding to the
+ Lisp image), and is thus easily tricked to modify the wrong source
+ files---which can lead to quite some stressfull cursing.
+
+ If the variable `slime-warn-when-possibly-tricked-by-M-.' is
+ T (the default), a warning message is issued to raise the user's
+ attention whenever `M-.' is about opening a file in a different
+ source root that also exists in the source root directory of the
+ user's _current buffer_.
+
+ There's no guarantee that all possible cases are covered, but if
+ you encounter such a warning, it's a strong indication that you
+ should check twice before modifying.
+
+ * slime.el (slime-file-name-merge-source-root): New function.
+ (slime-highlight-differences-in-dirname): New function.
+ (slime-maybe-warn-for-different-source-root): New function.
+ (slime-warn-when-possibly-tricked-by-M-.): New variable (T by default.)
+ (slime-goto-location-buffer): Where appropriate, call
+ `slime-maybe-warn-for-different-source-root'
+
+2007-09-08 Stelian Ionescu
+
+ * slime.el (save-restriction-if-possible): Place macro definition
+ above use of the macro, to regain ability to byte-compile-file.
+
+2007-09-08 Tobias C. Rittweiler
+
+ Fix message displaying on XEmacs. Reported by Steven E. Harris,
+ and Ken Causey.
+
+ * slime.el (slime-display-message): Resurrect secondary
+ `buffer-name' argument which got lost in 2007-08-24.
+ (slime-format-display-message): Resurrect passing "*SLIME Note*"
+ as default buffer-name to `slime-display-message'.
+
+2007-09-08 Matt Pillsbury
+
+ * swank-backend.lisp (definterface): Updated docstring.
+
+2007-09-06 Matthias Koeppe
+
+ * slime.el (slime-repl-write-string): Use case, not ecase, for
+ dispatching targets.Should fix XEmacs compatibility.
+ Reported by Steven E. Harris.
+
+2007-09-05 Didier Verna
+
+ * slime.el (slime-filename-translations): Fix custom type.
+
+2007-09-05 Helmut Eller
+
+ * slime.el (slime-toggle-trace-fdefinition): Fix typo. The
+ argument for interactive should be "P" not "p".
+
+2007-09-04 Mark Evenson
+
+ * swank-abcl.lisp: Call accessors of compiler-condition at load
+ time to work around some ABCL problems.
+
+2007-09-04 Helmut Eller
+
+ Move asdf support to contrib.
+
+ * swank-backend.lisp (operate-on-system): Moved to
+ swank-asdf.lisp. It wasn't specialized in any backend.
+
+ * swank.lisp (operate-on-system-for-emacs)
+ (list-all-systems-known-to-asdf, list-asdf-systems): Moved to
+ swank-asdf.lisp.
+
+ * slime.el: Move asdf commands to contrib slime-adsf.el.
+
+ * swank-loader.lisp: Load swank-asdf if ASDF is in
+ *FEATURES*. Also add the contrib source directory to
+ swank::*load-path*.
+
+2007-09-04 Helmut Eller
+
+ * slime.el: Move tramp support to contrib.
+
+2007-09-04 Helmut Eller
+
+ Move startup animation to contrib.
+
+ * slime.el (slime-repl-banner-function): New hook.
+ (slime-repl-update-banner): Use it and reset markers after calling
+ it.
+ (slime-set-default-directory): Don't call slime-repl-update-banner
+ here.
+ (slime-repl-insert-prompt): Set slime-repl-input-end-mark to
+ point-max.
+
+2007-09-04 Helmut Eller
+
+ * slime.el: Move inferior-slime-mode to contrib.
+
+2007-09-04 Helmut Eller
+
+ * slime.el: Fix the test suite (except for SBCL).
+
+2007-09-04 Helmut Eller
+
+ Simplify slime-process-available-input.
+
+ * slime.el (slime-process-available-input): We are called in a
+ process filter, i.e. at arbitrary times and in an aribtrary
+ buffer. So it doesn't make sense to save-and-restore the current
+ buffer here
+ (slime-eval-async): Instead, save and restore the buffer here.
+ (slime-net-read-or-lose): New.
+
+2007-09-04 Helmut Eller
+
+ Remove request-abort condition.
+
+ * swank-backend.lisp (request-abort): Removed
+ (abort-request): Removed. Replace all (3) uses with ERROR.
+ * swank.lisp (eval-for-emacs): No special case for request-abort.
+ * slime.el (slime-eval-async): Remove optional arg of :abort.
+
+2007-09-04 Helmut Eller
+
+ Rename slime-insert-possibly-as-rectangle to slime-insert-indented.
+
+ * slime.el (slime-insert-indented): Renamed. Update callers.
+
+2007-08-31 Helmut Eller
+
+ Move compound prefix completion and autodoc to contrib.
+
+ * swank.lisp (simple-completions): Rewritten for simplicity.
+ (operator-arglist): Rewritten for simplicity.
+
+ * slime.el (slime-complete-symbol-function): Make simple
+ completion the default.
+ (slime-echo-arglist-function, slime-echo-arglist): New hook.
+
+ Remove corresponding key bindigs.
+
+ * slime.el (slime-obsolete-commands): New table. Use it to bind
+ a command with an upgrade notice.
+
+2007-08-31 Andreas Fuchs
+
+ * slime.el (slime-reindent-defun): Fixed when used in lisp file
+ buffers. (Similiar patch also provided by G?bor Melis; problem
+ also reported by Jeff Cunningham.)
+
+2007-08-31 Jon Allen Boone
+
+ * swank-cmucl.lisp: CMUCL now has an x86-Darwin port as well as
+ the PPC-Darwin version. Changed to conditionalize on the
+ presence of darwin instead of ppc so that slime works with both
+ Darwin versions of CMUCL.
+
+2007-08-31 Tobias C. Rittweiler
+
+ * slime.el (slime-sexp-at-point): Explicitely set current syntax
+ table to operate in `lisp-mode-syntax-table' because
+ `thing-at-point' is used which depends on the syntax table. (E.g.
+ keywords like `:foo' aren't recognized as sexp otherwise.)
+
+ * slime.el (slime-parse-extended-operator/declare): Wrap regexp
+ stuff in `save-match-data'
+ (slime-internal-scratch-buffer): Removed again. Was only
+ introduced as a performance hack; but it turned out that the bad
+ performance was because of unneccessary recursive calls of
+ `slime-make-form-spec-from-string'. (Which was fixed on 2007-08-27
+ already.)
+ (slime-make-form-spec-from-string): Use `with-temp-buffer' instead
+ of `slime-internal-scratch-buffer'. Removed activation of
+ `lisp-mode' in the temporary buffer, because this made
+ `lisp-mode-hooks' run. This activated autodoc in the temp buffer,
+ although the temp buffer is used to compute an autodoc
+ itself (which resulted in some very mutual recursion which caused
+ the current arglist to be displayed again and again---as could
+ have been witnessed in `*Messages*'.) `Lisp-mode' was activated to
+ get the right syntax-table for `slime-sexp-at-point', but this one
+ sets the correct syntax-table itself now.
+
+2007-08-28 Matthias Koeppe
+
+ Fix user input type-ahead again (this change from 2007-08-25 got
+ lost). Testcase: Type (dotimes (i 5) (format t "Number ~A~%"
+ i) (sleep 1)) and then type ahead while the command is executing
+ and output arrives.
+
+ * slime.el (slime-repl-insert-prompt): Don't go to point-max but
+ to slime-repl-input-start-mark if there is one.
+ (slime-repl-write-string): Insert a :repl-result before the
+ prompt, not at point-max. Update markers properly.
+
+2007-08-28 Helmut Eller
+
+ * swank-cmucl.lisp (safe-definition-finding): Remove whitespace
+ around error messages.
+ (trim-whitespace): New function.
+
+2007-08-28 Helmut Eller
+
+ Fix some output related bugs.
+
+ * swank.lisp (send-repl-results-to-emacs): Emit a fresh line.
+
+ * slime.el (slime-insert-transcript-delimiter): Use
+ insert-before-markers since slime-output-end is no longer left
+ inserting. Reported by Austin Haas .
+
+2007-08-28 Helmut Eller
+
+ * slime.el (slime-display-or-scroll-completions,
+ slime-scroll-completions): New functions. Factored out of
+ slime-expand-abbreviations-and-complete.
+
+2007-08-28 Matthias Koeppe
+
+ * slime.el (slime-repl-write-string): Handle arbitrary targets
+ using slime-output-target-marker.
+ (slime-last-output-target-id, slime-output-target-to-marker)
+ (slime-output-target-marker)
+ (slime-redirect-trace-output): Move back here from slime-presentations.el.
+
+2007-08-28 Tobias C. Rittweiler
+
+ * swank.lisp (classify-symbol, symbol-classification->string):
+ Resurrected in swank.lisp. (I was bitten by cvs-pcl which
+ committed (2007-08-27) my locally changed `contribs/swank-fuzzy.lisp'
+ where I already removed these functions from.)
+
+2007-08-28 Tobias C. Rittweiler
+
+ * slime.el (slime-make-form-spec-from-string): Elisp Hacking 101:
+ Don't use `beginning-of-buffer' and `end-of-buffer' in Elisp code.
+
+ * swank.lisp (read-form-spec): Unintern just newly interned
+ symbols when an reader error occurs.
+
+2007-08-28 Helmut Eller
+
+ Move presentations to contrib. Part II.
+
+ * swank.lisp (*listener-eval-function*): New variables.
+ (listener-eval): Use it
+ (repl-eval): Used to be listener-eval.
+ (*send-repl-results-function*): New variable.
+ (eval-region): Simplify.
+ (track-package, cat): New functions.
+ (slime-repl-clear-buffer-hook): New hook.
+ (slime-repl-clear-buffer): Use it.
+
+2007-08-28 Matthias Koeppe
+
+ Remove the ID argument from :write-string protocol messages.
+ Everything, except for rigid-indentation tricks, can be achieved
+ by using :write-string in conjunction with :presentation-start and
+ :presentation-end.
+
+ * swank.lisp (present-in-emacs): Unused, removed.
+
+ * swank.lisp (make-output-function-for-target): Remove id argument
+ from :write-string.
+ (send-repl-results-to-emacs): Don't call
+ save-presented-object. Remove id argument from :write-string.
+
+ * slime.el (slime-dispatch-event): Change it here.
+ (slime-write-string, slime-repl-write-string): And here.
+
+2007-08-28 Matthias Koeppe
+
+ * swank-loader.lisp (*contribs*): Add swank-presentations.
+
+2007-08-27 Tobias C. Rittweiler
+
+ * slime.el (slime-make-extended-operator-parser/look-ahead): Move
+ to end of symbol at point.
+ (slime-make-form-spec-from-string): Fixes unexpected behaviour of
+ `save-excursion'.
+
+2007-08-27 Tobias C. Rittweiler
+
+ * slime.el (slime-sexp-at-point): Fixes a few edge cases were
+ Emacs' `(thing-at-point 'sexp)' behaves suboptimally. For example,
+ `foo(bar baz)' where point is at the ?\(.
+ (slime-internal-scratch-buffer): New. This variable holds an
+ internal scratch buffer that can be reused instead of having to
+ create a new temporary buffer again and again.
+ (slime-make-extended-operator-parser/look-ahead): Uses
+ `slime-make-form-spec-from-string' to parse nested expressions
+ properly.
+ (slime-nesting-until-point): Added docstring.
+ (slime-make-form-spec-from-string): Added new optional parameter
+ for stripping the operator off the passed string representation of
+ a form. Necessary to work in the context of
+ `slime-make-extended-operator-parser/look-ahead'. Added safety check
+ against a possible endless recursion.
+
+ * swank.lisp (parse-form-spec): Looses restriction for nesting.
+
+2007-08-27 Helmut Eller
+
+ * slime.el (slime-eval-feature-conditional): Fix typo.
+ (slime-keywordify): Simplify.
+
+2007-08-27 Helmut Eller
+
+ Move presentations to contrib. Part I.
+
+ * slime.el (slime-event-hooks, slime-dispatch-event): New hook.
+ (slime-write-string-function, slime-write-string): New hook.
+ (slime-repl-return-hooks, slime-repl-return): New hook.
+ (slime-repl-current-input-hooks, slime-repl-current-input): New hook.
+ (slime-open-stream-hooks, slime-open-stream-to-lisp): New hook.
+ (sldb-insert-locals, slime-inspector-insert-ispec)
+ (slime-last-expression): Don't use presentations.
+
+2007-08-26 Tobias C. Rittweiler
+
+ Reduces needless interning of symbols that was introduced by my
+ recent work on autodoc to a minimum. Also fixes this issue for
+ `slime-complete-form' which always interned symbols even before my
+ changes.
+
+ * slime.el (slime-sexp-at-point): If N is given, but there aren't
+ N sexps available at point, make it return a list of just as many
+ as there are.
+ (slime-make-form-spec-from-string): New. Creates a ``raw form
+ spec'' from a string that's suited for determining newly interned
+ symbols later in Swank.
+ (slime-parse-extended-operator/declare): Uses it.
+
+ * swank.lisp (parse-symbol): Returns internal knowledge, to
+ provide a means for callers to perform a sanity check.
+ (call-with-ignored-reader-errors): New. Abstracted out from
+ `read-incomplete-form-from-string.'
+
+ * swank.lisp (read-form-spec): New. Only READs elements of a form
+ spec if necessary. And if it does have to READ, it keeps track
+ of newly interned symbols which are returned as secondary
+ return value.
+ (parse-form-spec): Use it. Propagate newly interned symbols.
+ (parse-first-valid-form-spec): Likewise.
+ (arglist-for-echo-area, complete-form, completions-for-keyword):
+ Adapted to unintern the newly interned symbols.
+
+
+2007-08-26 Tobias C. Rittweiler
+
+ * slime.el (current-slime-narrowing-configuration):
+ Renamed to `slime-current-narrowing-configuration'.
+ (set-slime-narrowing-configuration):
+ Renamed to `slime-set-narrowing-configuration'.
+ (current-slime-emacs-snapshot):
+ Renamed to `slime-current-emacs-snapshot'.
+ (current-slime-emacs-snapshot-fingerprint):
+ Renamed to `slime-current-emacs-snapshot-fingerprint'.
+ (set-slime-emacs-snapshot):
+ Renamed to `slime-set-emacs-snapshot'.
+
+2007-08-26 Tobias C. Rittweiler
+
+ * slime.el (save-restriction-if-possible): Fixed another typo,
+ duh! Thanks again to Matthias Koeppe.
+
+2007-08-26 Tobias C. Rittweiler
+
+ * slime.el (slime-cl-symbol-name): Handle vertical bars (|)
+ (%slime-nesting-until-point): Renamed to `slime-nesting-until-point'.
+
+2007-08-25 Matthias Koeppe
+
+ Fix a bug where REPL results would sometimes be indented by a
+ random amount.
+
+ * slime.el (slime-insert-presentation): Make the
+ rectangle-ification of multi-line presentations, introduced
+ 2006-12-19, optional.
+ (slime-write-string): Use it here only for regular output, but not
+ for REPL results.
+ (sldb-insert-locals): Use it here.
+ (slime-inspector-insert-ispec): Use it here.
+
+2007-08-25 Matthias Koeppe
+
+ Fix handling of user-input type-ahead in the REPL.
+ Reported by Madhu on 2007-04-24.
+
+ * slime.el (slime-write-string): Make sure text properties are
+ rear-nonsticky, so typed-ahead user input does not pick up the
+ text properties. Fix up some markers.
+ (slime-reset-repl-markers): Make the marker slime-output-end of
+ insertion type nil (no automatic advances on insertions).
+ (slime-with-output-end-mark): Update the location of
+ slime-output-end here manually.
+ (slime-repl-update-banner): Use insert-before-markers.
+
+2007-08-25 Matthias Koeppe
+
+ New command slime-redirect-trace-output creates a separate Emacs
+ buffer, where all subsequent trace output is sent.
+
+ * slime.el (slime-last-output-target-id): New variable.
+ (slime-output-target-to-marker): New variable.
+ (slime-output-target-marker): New function.
+ (slime-write-string): Handle general "target" arguments using
+ slime-output-target-marker.
+ (slime-redirect-trace-output): New command.
+ (slime-easy-menu): Add a menu item for it.
+
+ * slime.el (slime-mark-presentation-start)
+ (slime-mark-presentation-end): Make "target" argument optional.
+ Use slime-output-target-to-marker.
+
+ * swank.lisp (make-output-stream-for-target): New function,
+ factored out from open-streams.
+ (open-streams): Use it here.
+
+ * swank.lisp (connection): New slot "trace-output".
+ (call-with-redirected-io): Use it here.
+ (redirect-trace-output): New slimefun; set the slot to a new
+ target stream.
+
+2007-08-25 Tobias C. Rittweiler
+
+ * slime.el (save-restriction-if-possible): Fixed typo in
+ macroexpansion. Thanks to Matthias Koeppe for reporting.
+
+2007-08-24 Matthias Koeppe
+
+ * slime.el (slime-insert-arglist): Removed, superseded by
+ slime-complete-form since 2005-02-20.
+
+ * swank.lisp (arglist-for-insertion): Now unused, removed.
+
+2007-08-24 Matthias Koeppe
+
+ Some fixes to the presentation-streams contrib.
+
+ * slime.el (slime-dispatch-event): Handle new optionals args of
+ messages :presentation-start and :presentation-end.
+
+ * slime.el (slime-mark-presentation-start)
+ (slime-mark-presentation-end): New arg "target"; record
+ presentation boundaries separately for REPL results and regular
+ process output. This fixes the presentation markup of REPL
+ results when the presentation-streams contrib is loaded.
+
+2007-08-24 Matthias Koeppe
+
+ Make the fancy presentation-streams feature a contrib.
+ Previously, it was only available if "present.lisp" was loaded
+ manually. Now it can be loaded automatically using:
+
+ (add-hook 'slime-load-hook
+ (lambda () (require 'slime-presentation-streams)))
+
+ Note that the normal presentations that are created by REPL
+ results, the inspector, and the debugger are NOT dependent on this
+ code.
+
+ * present.lisp: Moved to contrib/swank-presentation-streams.lisp.
+ * swank-loader.lisp (*contribs*): Add swank-presentation-streams.
+
+2007-08-24 Helmut Eller
+
+ Move typeout frame to contrib.
+
+ * slime.el (slime-message-function, slime-background-message-function)
+ (slime-autodoc-message-function): New variables.
+ (slime-message, slime-background-message)
+ (slime-autodoc-message): Call the function in the respective
+ variable, so that the typeout window can be plugged in.
+
+2007-08-24 Helmut Eller
+
+ Move xref and class browser to contrib.
+
+ * slime.el (slime-browse-classes, slime-browse-xrefs): Gone. The
+ Common Lisp part is still there.
+
+2007-08-24 Tobias C. Rittweiler
+
+ * slime.el (slime-forward-blanks): Wrapped w/ `ignore-errors.'
+ (slime-sexp-at-point): Return results as a list of strings, rather
+ than just one big string if called with arg > 1.
+ (slime-parse-extended-operator-name): Wrapping some movement code
+ in `ignore-errors'. Adapted to new return value of
+ `slime-enclosing-form-specs'. Minor cosmetic changes.
+ (slime-make-extended-operator-parser/look-ahead): Adapted to
+ changes of the ``raw form spec'' format; returns a form of
+ strings, instead of a string of a form.
+ (slime-parse-extended-operator/declare): Simplified. Adapted to
+ changes of the ``raw form spec'' format; passes decl-identifiers,
+ or typespec-operators respectively, along the decl/type-spec.
+ (%slime-in-mid-of-typespec-p): Removed. Replaced by an regexp
+ based approach.
+ (%slime-nesting-until-point): New helper for
+ `slime-parse-extended-operator/declare'.
+
+ * swank.lisp (parse-form-spec): Adapted to new ``raw form spec''
+ format. Updated format description in docstring accordingly. The
+ new format allows less interning of wrong symbols names comming
+ from Slime. Thanks to Matthias Koeppe for spotting this.
+
+2007-08-24 Helmut Eller
+
+ Move slime-highlight-edits-mode to contrib.
+
+2007-08-24 Helmut Eller
+
+ Move slime-scratch to contrib.
+
+ * slime.el (slime-scratch): Gone.
+
+2007-08-24 Helmut Eller
+
+ Various cleanups related to slime-insert-propertized.
+
+ * slime.el (slime-with-rigid-indentation): Fix evaluation order.
+ (slime-indent-rigidly): New.
+ (slime-insert-possibly-as-rectange): Don't set mark.
+ (slime-insert-propertized): Use plain insert instead of
+ slime-insert-possibly-as-rectange.
+
+2007-08-24 Helmut Eller
+
+ * swank-sbcl.lisp (sbcl-inspector): Fix typo.
+
+2007-08-23 Matthias Koeppe
+
+ Repair inspection of presentations.
+
+ * swank.lisp (inspect-presentation): New slimefun.
+ * slime.el (slime-inspect-presentation-at-mouse): Use it here.
+
+2007-08-23 Helmut Eller
+
+ Move Marco Baringer's inspector to contrib.
+
+ * swank.lisp (*default-inspector*): New variable. Set this
+ variable dispatch to different inspectors.
+ (inspect-object): Use it.
+
+ * swank-loader.lisp (*contribs*): Add 'swank-fancy-inspector.
+
+ * swank-backend.lisp (backend-inspector): New class. Introduce a
+ named class to give as another way to dispatch to backend methods.
+
+ * swank-cmucl.lisp: Use backend-inspector class.
+ * swank-sbcl.lisp: Use backend-inspector class.
+ * swank-clisp.lisp: Use backend-inspector class.
+ * swank-lispworks.lisp: Use backend-inspector class.
+ * swank-allegro.lisp: Use backend-inspector class.
+ * swank-openmcl.lisp: Use backend-inspector class.
+ * swank-abcl.lisp: Use backend-inspector class.
+ * swank-corman.lisp: Use backend-inspector class.
+ * swank-scl.lisp: Use backend-inspector class.
+
+2007-08-23 Tobias C. Rittweiler
+
+ Added arglist display for declaration specifiers and type
+ specifiers.
+
+ Examples:
+
+ `(declare (type' will display
+
+ (declare (type type-specifier &rest vars))
+
+ `(declare (type (float' will display
+
+ [Typespec] (float &optional lower-limit upper-limit)
+
+ `(declare (optimize' will display
+
+ (declare (optimize &any (safety 1) (space 1) (speed 1) ...))
+
+ &ANY is a new lambda keyword that is introduced for arglist
+ description purpose, and is very similiar to &KEY, but isn't based
+ upon plists; they're more based upon *FEATURES* lists. (See the
+ comment near the ARGLIST defstruct in `swank.lisp'.)
+
+ * slime.el:
+ (slime-to-feature-keyword): Renamed to `slime-keywordify'.
+ (slime-eval-feature-conditional): Adapted to use `slime-keywordify'.
+ (slime-ensure-list): New utility.
+ (slime-sexp-at-point): Now takes an argument that specify how many
+ sexps at point should be returned.
+ (slime-enclosing-operator-names): Renamed to
+ `slime-enclosing-form-specs'.
+ (slime-enclosing-form-specs): Returns a list of ``raw form specs''
+ instead of what was called ``extended operator names'' before, see
+ `swank::parse-form-spec' for more information. This is a
+ simplified superset. Additionally as tertiary return value return
+ a list of points to let the caller see where each form spec is
+ located. Adapted callers accordingly. Extended docstring.
+ (slime-parse-extended-operator-name): Adapted to changes in
+ `slime-enclosing-form-specs'. Now gets more context, and is such
+ more powerful. This was needed to allow parsing DECLARE forms.
+ (slime-make-extended-operator-parser/look-ahead): Because the
+ protocol for arglist display was simplified, it was possible to
+ replace the plethora of parsing function just by this one.
+ (slime-extended-operator-name-parser-alist): Use it. Also add
+ parser for DECLARE forms.
+ (slime-parse-extended-operator/declare): Responsible for parsing
+ DECLARE forms.
+ (%slime-in-mid-of-typespec-p): Helper function for
+ `slime-parse-extended-operator/declare'.
+ (slime-incomplete-form-at-point): New. Return the ``raw form
+ spec'' near point.
+ (slime-complete-form): Use `slime-incomplete-form-at-point'.
+
+ * swank.lisp: New Helper functions.
+ (length=, ensure-list, recursively-empty-p): New.
+ (maybecall, exactly-one-p): New.
+
+ * swank.lisp (arglist-for-echo-area): Adapted to take ``raw form
+ specs'' from Slime.
+ (parse-form-spec): New. Takes a ``raw form spec'' and returns a
+ ``form spec'' for further processing in Swank. Docstring documents
+ these two terms.
+ (split-form-spec): New. Return relevant information from a form spec.
+ (parse-first-valid-form-spec): Replaces `find-valid-operator-name'.
+ (find-valid-operator-name): Removed.
+ (operator-designator-to-form): Removed. Obsoleted by `parse-form-spec'.
+
+ (defstruct arglist): Add `any-p' and `any-args' slots to contain
+ arguments belonging to the &ANY lambda keyword.
+ (print-arglist): Adapted to also print &ANY args.
+ (print-decoded-arglist-as-template): Likewise.
+ (decode-arglist): Adapted to also decode &ANY args.
+ (remove-actual-args): Adapted to also remove &ANY args.
+ (remove-&key-args): Split out from `remove-actual-args'.
+ (remove-&any-args): New. Removes already provided &ANY args.
+ (arglist-from-form-spec): New. Added detailed docstring.
+ (arglist-dispatch): Dispatching generic function for
+ `arglist-from-form-spec' that does all the work. Renamed from
+ prior `form-completion'.
+ (arglist-dispatch) Added methods for dealing with declaration and
+ type-specifiers.
+ (complete-form): Adapted to take ``raw form specs'' from Slime.
+ (completions-for-keyword): Likewise.
+ (format-arglist-for-echo-area): Removed. Not needed anymore.
+
+ * swank-backend.lisp (declaration-arglist): New generic
+ function. Returns the arglist for a given declaration
+ identifier. (Backends are supposed to specialize it if they can
+ provide additional information.)
+ (type-specifier-arglist): New generic function. Returns the
+ arglist for a given type-specifier operator. (Backends are
+ supposed to specialize it if they can provide additional
+ information.)
+ (*type-specifier-arglists*): New variable. Contains the arglists
+ for the type specifiers in Common Lisp.
+
+ * swank-sbcl.lisp: Now depends upon sb-cltl2.
+ (declaration-arglist 'optimize): Specialize the `optimize'
+ declaration identifier to pass it to
+ sb-cltl2:declaration-information.
+
+
+2007-08-23 Helmut Eller
+
+ Some inspector cleanups.
+
+ * slime.el (slime-inspect): Remove dwim stuff and drop keyword
+ args.
+ (slime-read-object): Killed.
+ (slime-open-inspector): Drop keyword args. Update callers
+ accodordingly, expect presentation related code. Presentations no
+ longer work in the inspector.
+
+ * swank.lisp (*inspector-dwim-lookup-hooks*)
+ (default-dwim-inspector-lookup-hook): Deleted.
+ (init-inspector): Sanitize arglist.
+ (inspect-object): Don't return an :id for *inspectee-parts*.
+
+ * swank-backend (type-for-emacs): Removed. No backend implemented
+ it.
+
+2007-08-23 Helmut Eller
+
+ * slime.el (slime-fuzzy-upgrade-notice): New function. Bound to
+ the key where slime-fuzzy-complete-symbol used to be.
+
+2007-08-22 Tobias C. Rittweiler
+
+ * slime.el (slime-close-all-parens-in-sexp): Fix interplay with
+ `slime-close-parens-limit'. This should also affect
+ `slime-complete-form' (C-c C-s) in a positive way.
+
+2007-08-19 Helmut Eller
+
+ * contrib: New directory. Move fuzzy completion code to that
+ directory.
+
+ * swank.lisp (swank-require): New function to load contrib code.
+ (*find-module*, module-filename, *load-path*, merged-directory)
+ (find-module, module-canditates): New. Pathname acrobatics for
+ swank-require.
+
+ * swank-loader.lisp: Compile (but don't load) contribs.
+ (*contribs*, contrib-source-files): New.
+
+2007-08-16 Tobias C. Rittweiler
+
+ * slime.el (slime-process-available-input): Correct yesterday's
+ change: the buffer a request was originally performed in doesn't
+ necessarily exist at this time anymore, so we check for buffer
+ liveness now.
+
+ The problem arised when quitting in SLDB which would cause Swank
+ to send a `:debug-return' message before the acknowledgement
+ message for `sldb-quit' is sent. So the acknowledgement is
+ received in a context where the sldb-buffer is closed already.
+
+2007-08-15 Tobias C. Rittweiler
+
+ * slime.el (slime-process-available-input): Make sure that the
+ event received from SWANK is processed in the context of the
+ original buffer the request of the response was performed in.
+ Previously, the clauses of `slime-rex' were processed in the
+ internal *cl-connection* buffer. And as a result the continuations
+ passed to `slime-eval' and `slime-eval-async' ditto.
+
+2007-08-15 Tobias C. Rittweiler
+
+ Make `M-.' work on definitions outside the current restriction.
+ `M-,' will also properly restore the narrowing as of before the
+ jump. Similiarly for quiting from the compilation notes buffer and
+ the Xref buffers.
+
+ * slime.el (slime-narrowing-configuration, slime-emacs-snapshot),
+ (current-slime-narrowing-configuration),
+ (set-slime-narrowing-configuration),
+ (current-slime-emacs-snapshot),
+ (set-slime-emacs-snapshot),
+ (current-slime-emacs-snapshot-fingerprint): New. Emacs' window
+ configurations do not restore narrowing, so introduce a
+ snapshot facility that contains the necessary information.
+
+ * slime.el: Various renaming and adaptions in the Slime temp
+ buffer, xref, goto-definition and compilation notes section to use
+ the newly introduced snapshots instead of mere window
+ configurations.
+
+ * slime.el: (slime-highlight-notes, slime-remove-old-overlays):
+ Still operate on whole buffer, but restore previous restriction if
+ there was any.
+ (slime-goto-location-position): Now widens the buffer to properly
+ jump to definitions outside of the current restriction.
+
+ * slime.el (slime-push-definition-stack),
+ (slime-pop-find-definition-stack): Now also stores information
+ about narrowing on the definition stack, in order to properly
+ restore narrowing on `M-,'.
+
+ * slime.el (def-slime-test narrowing): Test case for properly
+ dealing with narrowing.
+
+ * slime.el (slime-buffer-narrowed-p): New function, tests whether
+ the current buffer is narrowed or not.
+ (save-restriction-if-possibly): Like `save-restriction', but not
+ as strict---see doc string.
+
+ * slime.el (slime-length=): New function; semantically the same
+ as (= (length seq) n), but more efficiently implemented for lists.
+ Changed the above pattern into a call to SLIME-LENGTH= where
+ appropriate.
+
+2007-08-05 Matthias Koeppe
+
+ * swank.lisp (backtrace): Handle printer errors while printing a
+ frame. This makes debugging print-object methods with SLIME
+ easier. Reported by Utz-Uwe Haus.
+
+2007-08-02 Tobias C. Rittweiler
+
+ * slime.el (slime-kill-all-buffers): Now also kills all buffers
+ beginning with a `*SLIME' prefix (like, for instance, `*SLIME
+ Apropos*', or `*SLIME macroexpansion*'.)
+
+2007-06-28 Helmut Eller
+
+ * slime.el (def-slime-selector-method): Revert Marco's change from
+ 2007-05-23. BODY can return a buffer name, like "*slime-events*".
+ Handle that and never ignore invalid return values. Force BODY to
+ abort if there's no suitable buffer. Why would you want to switch
+ buffers if the desired buffer doesn't exist?
+
+2007-06-27 Tobias C. Rittweiler
+
+ Fixing `C-c M-q' at the REPL. Thanks to Andr? Thieme for pointing
+ out that it has been broken since several months.
+
+ * slime.el (slime-reindent-defun): Use functions
+ `slime-beginning-of-defun' and `slime-end-of-defun' that were
+ introduced in the last changeset.
+
+2007-06-16 Tobias C. Rittweiler
+
+ * slime.el: Pressing `C-M-a' (beginning-of-defun) in midst of the
+ last REPL prompt directs the cursor to the beginning of the
+ prompt. Pressing it again, would do nothing; now it moves the
+ cursor to the start of the previous prompt (as it's consistent
+ with the behaviour when the cursor was placed midst one of the old
+ prompts.)
+
+ Likewise for `C-M-e' (end-of-defun)
+
+ Additionally fixing `C-c C-s' (slime-complete-form) at the REPL.
+
+ (slime-keys): New bindings for `C-M-a' and `C-M-e' to
+ SLIME-BEGINNING-OF-DEFUN and SLIME-END-OF-DEFUN respectively.
+ (slime-keys): Making `C-c C-q' (slime-close-parens-at-point)
+ obsolete, as it didn't work correctly on the REPL.
+ (slime-repl-mode-map): Removed bindings for `C-M-a' and `C-M-e',
+ as they're now inherited from SLIME-KEYS.
+ (slime-repl-beginning-of-defun, slime-repl-end-of-defun): Jump to
+ the previous (next) prompt if called twice in a row.
+
+ (slime-close-parens-at-point): Commented out.
+ (slime-close-all-sexp): Renamed to SLIME-CLOSE-ALL-PARENS-IN-SEXP.
+ (slime-close-all-parens-in-sexp): Modified to take
+ SLIME-CLOSE-PARENS-LIMIT into account.
+ (slime-complete-form): Use SLIME-CLOSE-ALL-PARENS-IN-SEXP.
+
+
+2007-05-24 Tobias C. Rittweiler
+
+ * swank.lisp: Fixed regression in completion: "swank[TAB]" would
+ previously be completed to "swank-backend:"; "get-internal[TAB]"
+ would be completed to "get-internal-r-time" (instead of simply
+ "get-internal-r"); and "custom:*comp[TAB]" would be completed to
+ "custom:*compiled-" on CLISP, even though there's a
+ "custom:*complile-".
+
+ Thanks to Ken Causey for helping me find the first two.
+
+ (completions): Revert changes from 2007-05-11.
+ (longest-compound-prefix): Fixed to properly generate a compound
+ _prefix_.
+
+2007-05-23 Marco Baringer
+
+ * slime.el (def-slime-selector-method): Allow the selector body to
+ not return a buffer. This means that, instead of being to forced
+ to signal an error when a choosen buffer can't be found (like
+ choosing d when there are no debugger buffers) can simply display
+ a message.
+
+ Fix handling of auto-flushing on sbcl:
+
+ * swank-sbcl.lisp (*auto-flush-interval*): New variable
+ controlling how often streams are flushed.
+ (*auto-flush-lock*): New lock guarding access to the shared
+ variable *auto-flush-streams*.
+ (make-stream-interactive): Wrapped access to *auto-flush-streams*
+ in a call-with-recursive-lock-held.
+ (flush-streams): Wrapped in call-with-recursive-lock-held.
+
+2007-05-17 Martin Simmons
+
+ * swank-lispworks.lisp (lispworks-inspect): Fix hanging caused by
+ mapcan, i.e. nconc, on a constant list returned by
+ label-value-line.
+
+2007-05-17 Tobias C. Rittweiler
+
+ * slime.el (slime-complete-form): Only insert a closing
+ parenthesis if the form is not already closed. Reported by and
+ adapted from Mac Chan.
+
+2007-05-17 Tobias C. Rittweiler
+
+ * swank.lisp: Fixed bug in completion as previously "swank:[tab]"
+ would correctly list all the symbols in SWANK, but would
+ simultaneously append a spooky dash to the original
+ string ("swank:-").
+
+ (completions): Strip off the package identifier part, and only
+ compute the longest compound prefix for the actual symbol
+ identifiers.
+ (untokenize-symbol): New function. Inverse of TOKENIZE-SYMBOL.
+ (format-completion-result): Use UNTOKENIZE-SYMBOL.
+
+2007-05-17 Dustin Long
+
+ * swank-ecl.lisp (compile-from-stream): Fixed typo that prevented
+ `slime-compile-defun' from actually compiling a function.
+
+2007-05-17 Tobias C. Rittweiler
+
+ * swank-loader.lisp (*sysdep-files*): Load the auxiliary files
+ swank-source-*.lisp before swank-sbcl.lisp to avoid
+ undefined-function style warnings.
+
+2007-05-16 Takehiko Abe
+
+ * swank.lisp (inspect-for-emacs file-stream, stream-error): Fixed
+ typo in keyword arg; it's `:refreshp', not `:refresh'.
+
+2007-05-14 Tobias C. Rittweiler
+
+ * slime.el: Fixed proper handling of the abortion of a
+ request. (For instance, when calling (SWANK::ABORT-REQUEST "FOO")
+ from the REPL.)
+
+ (sldb-quit): Updated the DESTRUCTURE-CASE clause for (:abort) to
+ take an argument.
+ (sldb-continue): Likewise.
+ (sldb-invoke-restart): Likewise.
+ (sldb-break-with-default-debugger): Likewise.
+ (sldb-return-from-frame): Likewise.
+ (sldb-restart-frame): Likewise.
+ (slime-repl-eval-string) Likewise.
+ (slime-repl-show-abort): Now also inserts the reason for the abort
+ into the REPL buffer.
+
+ * swank.lisp (eval-for-emacs): Remove code that would suggest that
+ it's possible to use the rex `(:abort ...)' with more than one
+ argument.
+
+2007-05-14 Tobias C. Rittweiler
+
+ * swank.lisp: Liberated from unnecessary style-warnings!
+
+ (eval-for-emacs): Don't use SLOT-VALUE on condition objects!
+ (inspect-bigger-piece-actions): Changed from DEFMETHOD to DEFUN.
+ (inspect-whole-thing-action): Likewise.
+ (inspect-show-more-action): Likewise.
+ (make-symbols-listing): Adds an explicit DEFGENERIC.
+ (menu-choices-for-presentation): Likewise.
+
+ (make-symbols-listing (eql :classification)): Use `(loop for k
+ being EACH hash-key ...)' rather than `(loop for k being THE
+ hash-key)', to omit the justified style-warning from CLISP.
+
+2007-05-14 Tobias C. Rittweiler
+
+ * swank.lisp (package-names): Make sure to return a fresh list.
+ (fuzzy-find-matching-packages): Use PACKAGE-NAMES.
+ (list-all-package-names): Use PACKAGE-NAMES.
+
+2007-05-13 Tobias C. Rittweiler
+
+ * slime.el (slime-pretty-lambdas): Removed. If you really want
+ this, please use one of the external ressources that provide this;
+ for instance, `pretty-lambda.el', `pretty-greek.el', or even
+ `pretty-symbols.el'. For more information, please see
+
+ http://www.emacswiki.org/cgi-bin/wiki/PrettyLambda
+
+2007-05-11 Tobias C. Rittweiler
+
+ * swank.lisp (fuzzy-find-matching-symbols): Modified to take
+ package nicknames into account. Previously, fuzzy completing on
+ nicknames did (except for some incidental cases) not work. Thanks
+ to Lu?s Oliveira and Attila Lendvai for pointing that out.
+
+2007-05-11 Tobias C. Rittweiler
+
+ Removed support for completing to the longest compound pre- and
+ suffix with the default completion method (C-c TAB, or just TAB on
+ the REPL), because it has been causing trouble all the time, but
+ didn't offer any real advantage besides niftiness. E.g.:
+
+ previous behaviour:
+
+ asdf:*com TAB => asdf:*compile-file--behaviour*
+
+ now simply:
+
+ asdf:*com TAB => asdf:*compile-file-
+
+ For discussing on this subject, please see the mail with
+ message-id <87y7l53lch.fsf at freebits.de> that was posted to
+ slime-devel 2007-04-06, or alternatively:
+
+ http://common-lisp.net/pipermail/slime-devel/2007-April/006087.html
+
+ * swank.lisp (make-compound-prefix-matcher): New function.
+ Abstracted from COMPOUND-PREFIX-MATCH.
+ (compound-prefix-match): Use MAKE-COMPOUND-PREFIX-MATCHER.
+ (compound-prefix-match/ci/underscores): Removed.
+
+ (longest-completion): Renamed to LONGEST-COMPOUND-PREFIX. Changed
+ to only return a compound prefix, instead of a concatenation of a
+ compound prefix and a compound suffix. Added an &optional
+ parameter to specify what delimeter the passed string is
+ compounded with.
+ (tokenize-completion): Takes additional parameter to specify the
+ delimeter for tokenization.
+ (longest-completion/underscores): Removed; not needed anymore.
+ (tokenize-completion/underscores): Likewise.
+ (untokenize-completion/underscores): Likewise.
+
+ (completions): Slight docstring modification, also added an
+ examplary use case; use LONGEST-COMPOUND-PREFIX instead of
+ LONGEST-COMPLETION.
+ (completions-for-character): Use LONGEST-COMPOUND-PREFIX, and
+ MAKE-COMPOUND-PREFIX-MATCHER.
+ (completions-for-keyword): Use LONGEST-COMPOUND-PREFIX.
+
+2007-05-11 Tobias C. Rittweiler
+
+ * swank.lisp (apropos-symbols): Really use MAKE-REGEXP-MATCHER.
+
+2007-05-10 Tobias C. Rittweiler
+
+ * swank.lisp: Previously when using SLIME-APROPOS-PACKAGE, only
+ those symbols were considered whose home package matched the
+ given package; this would, however, prevent all those symbols from
+ being listed that are imported from another package, and then
+ exported again in the package they got imported into. (As an
+ example, SWANK:RESTART-FRAME is actually from SWANK-BACKEND.)
+
+ (apropos-matcher): Renamed to MAKE-REGEXP-MATCHER.
+ (make-regexp-matcher): Changed to only match for a given regexp.
+ (apropos-symbols): Use MAKE-REGEXP-MATCHER.
+
+2007-05-10 Tobias C. Rittweiler
+
+ * slime.el: Fix macroexpanding on things like ",(loop ...)".
+
+ (slime-sexp-at-point-for-macroexpansion): New function; like
+ SLIME-SEXP-AT-POINT-OR-ERROR, but fixes up some misbehaviour with
+ respect to macroexpansion.
+ (slime-eval-macroexpand, slime-eval-macroexpand-inplace): Use the
+ new function.
+
+2007-05-10 Tobias C. Rittweiler
+
+ * slime.el: Within the Slime Inspector, `S-Tab' will now also work
+ on X. Furthermore `Tab' and `S-Tab' will now correctly wrap
+ around the beginning and end of the buffer; priorly it'd hang on
+ the beginning with a message "Beginning of buffer", and would
+ require an additional `S-Tab'.
+
+ (slime-inspector-mode-map): Attached `[backtab]' to
+ SLIME-INSPECTOR-PREVIOUS-INSPECTABLE-OBJECT, as Emacs translates
+ `S-Tab' to `Backtab' on X.
+ (slime-find-inspectable-object): New function; finds next or
+ previous inspectable object.
+ (slime-inspector-next-inspectable-object): Mostly rewritten. Use
+ SLIME-FIND-INSPECTABLE-OBJECT to make the code clearer.
+
+2007-04-19 Tobias C. Rittweiler
+
+ * swank-backend.lisp (label-value-line): Add :newline as &key
+ argument; if true (the default) inserts a newline.
+
+ * swank.lisp (inspect-for-emacs-list): Don't add a newline after
+ the last value of the list.
+
+2007-04-18 Marco Baringer
+
+ * swank.lisp (log-event): Setup the printer so that, no matter
+ what the global values of the *print-XYZ* variables, this function
+ works as expected.
+ (*debug-on-swank-error*): New variable.
+ (defpackage :swank): Export *debug-on-swank-error*.
+ (with-reader-error-handler): When *debug-on-swank-error* is
+ non-nil drop into a debugger.
+ (dispatch-loop): Idem.
+
+2007-04-17 Tobias C. Rittweiler
+
+ * swank.lisp: Instead of just having all the symbols of a package
+ listed alphabetically in the inspector page recently introduced
+ for that purpose, add a button to that page to group them by their
+ classification.
+
+ (%package-symbols-container): New slot GROUPING-KIND.
+ (%make-package-symbols-container): New function; wraps around
+ %%MAKE-PACKAGE-SYMBOLS-CONTAINER, which will actually create the
+ structure. We need this, to make GROUPING-KIND an entirely
+ internal affair.
+
+ (make-symbols-listing): New generic function to dispatch on
+ GROUPING-KIND.
+ (make-symbols-listing :symbol): Just the stuff that was priorly
+ wired into INSPECT-FOR-EMACS (%PACKAGE-SYMBOLS-CONTAINER).
+ (make-symbols-listing :classification): New; returns the passed
+ symbols grouped by their classification.
+ (inspect-for-emacs %package-symbols-container): Most code split
+ off into MAKE-SYMBOLS-LISTING.
+
+2007-04-17 Tobias C. Rittweiler
+
+ * swank.lisp (swank-compiler): Fix the return value to always be a
+ list of two elements even if the abort restart is invoked which
+ originally just returned NIL. (Which wouldn't play with the recent
+ change to use DESTRUCTURING-BIND in SLIME-COMPILATION-FINISHED.)
+
+2007-04-17 Tobias C. Rittweiler
+
+ * swank.lisp (inspect-for-emacs %package-symbols-container):
+ Revert Marco's change from 2007-04-08; he had the good idea of
+ adding a facility to jump to the relevant source line of a symbol,
+ but `M-.' is already bound to SLIME-FIND-DEFINITION in the
+ inspector, which is a nicer way of doing this alltogether.
+
+2007-04-16 Takehiko Abe
+
+ * swank-openmcl.lisp (accept-connection, find-external-format):
+ utf-8 support.
+
+2007-04-16 Marco Baringer
+
+ * slime.el (slime-with-xref-buffer): Added missing ,
+
+2007-04-16 Tobias C. Rittweiler
+
+ * slime.el: Pressing `q' in *compiler notes* after a `C-c C-k' or
+ `C-c M-k' would not probably restore the original window
+ configuration. Fix that.
+
+ (slime-get-temp-buffer-create): New &key arg WINDOW-CONFIGURATION.
+ (slime-with-xref-buffer): Likewise.
+
+ (slime-compilation-finished): New &optional arg WINDOW-CONFIG.
+ (slime-maybe-show-xrefs-for-notes): Likewise.
+ (slime-show-xrefs) Likewise.
+ (slime-maybe-list-compiler-notes): Likewise.
+ (slime-list-compiler-notes): Likewise.
+
+ (slime-compilation-finished-continuation): Renamed to
+ SLIME-MAKE-COMPILATION-FINISHED-CONTINUATION.
+
+ (slime-make-compilation-finished-continuation): Now takes two
+ args, the current buffer and optionally the current window config
+ to be restored.
+
+ (slime-compile-file): Save current window configuration before
+ popping up the REPL for compilation output, pass it down.
+ (slime-easy-menu): Add entry for SLIME-UNTRACE-ALL.
+
+2007-04-16 Tobias C. Rittweiler
+
+ * swank.lisp (fuzzy-find-matching-packages): Fix a small typo that
+ prevented interpreting NIL as the argument TIME-LIMIT-IN-MEC to
+ mean an infinite time limit. This bug propagated up to explicit
+ calls to FUZZY-COMPLETIONS, like
+ (swank:fuzzy-completions "mvb" "COMMON-LISP") => (NIL, T)
+
+ (format-fuzzy-completions): Renamed to FORMAT-FUZZY-COMPLETION-SET
+
+ (format-fuzzy-completion-set): Accomodated to recent changes of
+ the return value of FUZZY-COMPLETIONS; changed the docstring to
+ make it explicit that this function is supposed to take the return
+ value of FUZZY-COMPLETION-SET.
+
+ * slime.el (slime-compilation-finished): Don't use
+ MULTIPLE-VALUE-BIND for list destructuring, only because multiple
+ values happen to be implemented via lists in elisp!
+ (slime-fuzzy-completions-mode): Added an detailed explanation to
+ the docstring of how Fuzzy Completion works and how it'ss supposed
+ to be worked with.
+ (slime-fuzzy-explanation): Shortened to reference to
+ SLIME-FUZZY-COMPLETIONS-MODE for help on fuzzy completion.
+ (slime-fuzzy-choices-buffer): Set BUFFER-QUIT-FUNCTION to
+ SLIME-FUZZY-ABORT to make it correctly exit fuzzy completion when
+ pressing `Esc Esc Esc' (`M-Esc Esc').
+
+2007-04-12 Nikodemus Siivola
+
+ * swank-sbcl.lisp (emacs-buffer-source-location): Add &allow-other-keys
+ to the descructuring of the source location plist in order to accept
+ :emacs-directory.
+
+2007-04-09 Marco Baringer
+
+ * swank.lisp (inspector-content-for-emacs): Look for refresh
+ keyword argument in :action links.
+ (inspect-whole-thing-action, inspect-show-more-action): Update for
+ new :action argument handling.
+ (inspect-for-emacs stream, inspect-for-emacs stream-error): Pass
+ :refresh nil on :action links.
+ (action-part-for-emacs): Set both lambda and refresh in the
+ *inspectee-actions* array.
+ (inspector-call-nth-action): *inspectee-actions* now holds both
+ the function and the boolean specifying whether to refresh or not.
+
+ * swank-backend.lisp (inspect-for-emacs): Docstring update.
+
+ * slime.el (slime-inspector-operate-on-point): Allow the action
+ calls to return nil.
+
+2007-04-08 Marco Baringer
+
+ * .cvsignore: Added *.lx64fsl (openmcl on linux fasls).
+
+2007-04-08 Marco Baringer
+
+ * swank.lisp (inspect-for-emacs): Added 'jump to source' action
+ for symbols in the new package-symbol browser.
+
+2007-04-08 Tobias C. Rittweiler
+
+ * swank.lisp: Implemented a new special inspector page for
+ displaying internal (external, &c) symbols that display
+ classification flags additionally to each symbol, similiar to the
+ content of a *Fuzzy Completion* buffer. Furthermore, added the
+ possibility to display all symbols that are /present/ in a
+ package. Combined with cleanup of the code parts in question.
+
+ (symbol-status): New function. Returns the status of a symbol in a
+ given package (:internal, :external &c.)
+
+ (symbol-external-p): Adapted to use new function SYMBOL-STATUS.
+
+ (symbol-classification->string): New function. Converts a list of
+ classification flags into a concise string representation.
+
+ (%package-symbols-container): New struct. We need a unique type to
+ dispatch in INSPECT-FOR-EMACS for the new inspector page, use this
+ as a wrapper structure.
+
+ (inspect-for-emacs package): Reorganized to not cause too much eye
+ cancer; now with a saner maximum column width. Changed to make use
+ of new SYMBOL-STATUS, for code reuse. Also changed to make use of
+ new %PACKAGE-SYMBOLS-CONTAINER to let a new page pop up in Emacs
+ if the user wants to access the list of symbols of the package.
+ Added such a possibility to access all `present' symbols.
+
+ (inspect-for-emacs %package-symbols-container): New method.
+ Displays all symbols wrapped up in the container structure
+ combined with their classification flags as determined by
+ CLASSIFY-SYMBOL.
+
+2007-04-08 Lu?s Oliveira
+
+ * swank-backend.lisp (compute-sane-restarts): New interface.
+ * swank-clisp.lisp: Fix tabs and trailing whitespace.
+ (compute-sane-restarts): Implement new interface.
+
+2007-04-08 Takehiko Abe
+
+ * swank-openmcl.lisp (xref-locations):
+
+2007-04-08 Marco Baringer
+
+ * swank.lisp (fuzzy-completion-set): Use two check-type forms
+ instead of a place like (values limit time-limit-in-msec). While
+ sbcl seems to accept this form openmcl doesn't and it's not clear
+ from the spec that this is allowed.
+
+2007-04-07 Harald Hanche-Olsen
+
+ * slime.el (sldb-mode-map): Added key definition for follow-link.
+
+2007-04-06 Tobias C. Rittweiler
+
+ * swank.lisp: Making fuzzy completion regard the time limit
+ correctly. Also make it properly use microseconds as time
+ granularity and inform the Emacs side if the time limit has
+ exhausted. Additionally, over all minor and cosmetic changes:
+
+ (fuzzy-completions, fuzzy-completion-set): Returns now
+ additionally a flag indicating whether the time limit has
+ exhausted under the hood. Accomodated docstring accordingly.
+
+ (fuzzy-create-completion-set): Changed to correctly catch and
+ propagate the remaining time limit to the actual match functions,
+ and return once time limit has exhausted. Some aesthetical code
+ reorganization.
+
+ (get-real-time-in-msecs): New function.
+
+ (fuzzy-find-matching-symbols, fuzzy-find-matching-packages):
+ Correctly regard the time limit. Use new function
+ GET-REAL-TIME-IN-MSECS for that purpose. Return the remaining
+ time limit as second value.
+
+ * slime.el (slime-fuzzy-complete-symbol): Accomodated to deal with
+ the additionally returned flag of SWANK:FUZZY-COMPLETIONS. Pass
+ the flag by.
+ (slime-fuzzy-choices-buffer): Pass interruption flag by.
+ (slime-fuzzy-fill-completions-buffer): If time limit has exhausted
+ during completion retrieval, show an informational indication as
+ last entry in *Fuzzy Completion*.
+ (slime-fuzzy-last): New variable. To hold the last real completion
+ choice previous to the (possible) Time Limit Exhausted information.
+ (slime-fuzzy-next): Accomodated to not go beneath SLIME-FUZZY-LAST.
+
+2007-04-06 Tobias C. Rittweiler
+
+ * swank.lisp (tokenize-symbol, tokenize-symbol-thoroughly):
+ Previously these functions said a string representing a symbol is
+ internal exactly if it contained "::" as substring. Now they say
+ additionally so for symbols without any package identifier, as
+ they are internal to am implicit current package. (Otherwise
+ will break fuzzy completion.)
+
+ (tokenize-symbol): Added docstring.
+
+ * swank.lisp (format-completion-result): Fixed formation
+ for the case that PACKAGE-NAME is NIL but INTERNAL-P is T.
+
+2007-04-06 Tobias C. Rittweiler
+
+ * swank.lisp: Making fuzzy completion semantically right from a
+ user perspective. As an example on SBCL, "sb:with- C-c M-i" will
+ display all exported "with"-style macros in all sb-* packages from
+ now on. :)
+
+ (parse-completion-arguments): Replacing with a semantically-sound
+ implementation, as the previous one was a bit confused. Clarifying
+ docstring. Adding commentary table of various constellations of
+ returned values for thorough explanation.
+
+ (carefully-find-package): Removed. Obsolete by above change.
+
+ (defstruct fuzzy-matching): Introduced to make internally-used
+ datastructure explicit. Distinguishing ``completion chunks''
+ between those pertaining to the symbol itself and those to the
+ package identifier.
+
+ (convert-fuzzy-completion-result): Renamed to
+ FUZZY-CONVERT-MATCHING-FOR-EMACS.
+
+ (fuzzy-convert-matching-for-emacs): Accomodating for the new
+ datastructure. Only the chunks pertaining to the symbol itself are
+ fixed up positionally, the package-chunks are untouched.
+ Necessary for letting package identifiers be highlighted within
+ *Fuzzy Completions* in cases like "sb:with- C-c M-i."
+
+ (fuzzy-completion-set): Taking out most code to become new
+ function FUZZY-CREATE-COMPLETION-SET.
+
+ (fuzzy-create-completion-set): Doing all the hard work. Crux of
+ this changeset. so to speak. Largly rewritten to accomodate all
+ different cases of PARSE-COMPLETION-ARGUMENT.
+
+ (fuzzy-find-matching-symbols, fuzzy-find-matching-packages):
+ Accomodating to new datatstructure FUZZY-MATCHING. Adapting
+ docstring accordingly.
+
+ * swank-backend.lisp: Export WITH-STRUCT.
+
+ * swank.lisp (eval-for-emacs, fuzzy-completions):
+ Various trivia like fixing spelling and indentation.
+
+2007-04-06 Tobias C. Rittweiler
+
+ * slime.el (slime-fuzzy-highlight-current-completion): Fix
+ off-by-one error that causes the currently selected
+ completion in the *Fuzzy Completion* buffer be highlighted
+ one char too far.
+
+2007-04-06 Tobias C. Rittweiler
+
+ * swank.lisp: Cleanup of parts of the fuzzy completion code.
+ Additionally a couple of enhancements. As follows:
+
+ (fuzzy-completions, fuzzy-completion-selected): Minor
+ stylistic and clarifying modifications of the docstrings.
+
+ (fuzzy-find-matching-symbols): Huge code reorganization.
+ Organizing relevant code into local function TIME-EXHAUSTED-P,
+ renaming local function SYMBOL-MATCH to PERFORM-FUZZY-MATCH,
+ making previously required argument EXTERNAL to new &key
+ argument :EXTERNAL-ONLY, clarifying docstring.
+
+ (fuzzy-find-matching-packages): Making its return value
+ conformant to that of FUZZY-FIND-MATCHING-SYMBOLS, i.e.
+ instead of returning, among others, a package's name as
+ string, it now returns a symbol representing the package.
+ Accomodates the docstring accordingly.
+
+ (fuzzy-completion-set): Minor typographical fix in docstring.
+ Changing local function CONVERT to use MAP-INTO instead of
+ doing it essentially manually. Accomodating to changes of
+ FUZZY-FIND-MATCHING-SYMBOLS, resp. -PACKAGES.
+
+ (fuzzy-completion-set): Additional new feature:
+ The returned completions are sorted alphabetically by the
+ matched completion string before sorted by its score.
+ Affects especially the list of all possible completions when
+ the user hits fuzzy-completion on an empty string within Emacs;
+ also makes the potential limitness of the listed completions
+ clearer to the end user of SLIME.
+
+ (classify-symbol): New function. Returns a list with keywords
+ that classifies a given symbol. (E.g. :BOUNDP, :MACRO &c)
+ Supersedes parts of CONVERT-FUZZY-COMPLETION-RESULT,
+ implementing them in a more straightforward and proper way;
+ removes prior KLUDGE in that part of the original function.
+
+ (convert-fuzzy-completion-result): The above changes made
+ it possible to simplify this function drastically. Now uses
+ the newly introduced function CLASSIFY-SYMBOL.
+
+ * slime.el: Minor stylistic changes. Additionally:
+ (slime-fuzzy-insert-completion-choice):
+ (slime-fuzzy-fill-completions-buffer) : Adding use of the
+ :PACKAGE classification flag returned by SWANK:FUZZY-COMPLETIONS.
+ This flag is called "p".
+
+2007-04-06 Neil Van Dyke
+
+ * slime.el (sldb-insert-frame): Added mouse-face to frame label
+ and expression in Backtrace.
+ (sldb-insert-frames): Added mouse-face to "--more--" label in
+ Backtrace.
+
+2007-04-06 Michael Weber
+
+ * slime.el (slime-call-defun): insert the closing parenthesis for
+ the form.
+
+2007-04-06 Marco Baringer
+
+ * swank-openmcl.lisp (package swank-mop): Added
+ slot-makunbound-using-class.
+
+2007-03-29 Nikodemus Siivola
+
+ * swank-sbcl.lisp (swank-compile-string): save the original
+ directory into the source plist as :emacs-directory.
+ (make-definition-source-location): use the :emacs-directory from
+ the source plist and guess-readtable-for-filename to determine the
+ correct readtable for string-compiled definitions.
+
+2007-03-29 Nikodemus Siivola
+
+ * swank.lisp (*macroexpand-printer-bindings*): add *print-lines*
+ to defaults (NIL).
+ (find-definitions-for-emacs): use unless instead of cond.
+
+2007-03-25 Douglas Crosher
+
+ * slime.el (with-selected-window): define for compatibility with
+ Emacs 21.
+
+2007-03-24 Matthias Koeppe
+
+ * swank.lisp (menu-choices-for-presentation): Offer a
+ "disassemble" menu item for functions.
+
+2007-03-24 Helmut Eller
+
+ * slime.el (slime-read-port-and-connect): Fix race condition:
+ retry one more time if the port file is empty. Pop up the debugger
+ on other errors.
+ (slime-attempt-connection): Moved to toplevel.
+ (slime-timer-call): New. Used by slime-attempt-connection.
+ (slime-cancel-connect-retry-timer): New.
+ (slime-abort-connection): Use it.
+ (slime-repl-insert-prompt): Use insert-before-markers. This fixes
+ some redisplay problems, but I don't know why. Also: remove the
+ timer for async output.
+ (slime-repl-move-output-mark-before-prompt): Removed.
+ (slime-repl-save-merged-history): Use with-temp-message.
+ (slime-goto-location-buffer): Support Zip files.
+ (sldb-quit): Don't print "Evaluation aborted".
+
+2007-03-22 Matthias Koeppe
+
+ * slime.el (slime-scratch-buffer): Respect the syntax text
+ properties of presentations.
+
+2007-03-21 Matthias Koeppe
+
+ * swank.lisp (lookup-presented-object): The presentation id of
+ frame locals now includes the thread id; ignore it for now.
+
+ * slime.el (slime-copy-presentation-at-mouse-to-point): Manually
+ invoke the after-change function, so that the presentation overlay
+ is created even if we paste to non-REPL buffers.
+ (slime-menu-choices-for-presentation): Evaluate
+ menu-choices-for-presentation-id in the right buffer, thus in the
+ right Lisp thread. Reported by Attila Lendvai.
+ (slime-menu-choices-for-presentation): Show the id of the presentation.
+ (sldb-insert-locals): Include the thread id in the presentation id.
+
+2007-03-21 Helmut Eller
+
+ * slime.el (slime-repl-eval-string, slime-repl-insert-result):
+ Support the presentation-less old protocol.
+ (slime-goto-location-position): Use column number if available.
+
+2007-03-20 Matthias Koeppe
+
+ * swank.lisp (completion-output-symbol-converter): Fix completion
+ for mixed-case symbols that need escaping in readtable-case
+ :upcase or :downcase.
+
+ * slime.el (slime-copy-presentation-at-mouse-to-point)
+ (slime-copy-presentation-at-mouse-to-kill-ring): New commands.
+ (slime-menu-choices-for-presentation): Change interface. New
+ menu options, Copy to kill-ring, Copy to point.
+ (slime-presentation-menu): Change call to
+ slime-menu-choices-for-presentation.
+
+2007-03-20 Takehiko Abe
+
+ * swank-openmcl.lisp (hash-table-weakness): fix typo
+
+2007-03-14 Christophe Rhodes
+
+ * slime.el (slime-search-suppressed-forms): handle multiple
+ conditionals on the same line.
+
+2007-02-26 Nikodemus Siivola
+
+ * swank.lisp (inspect-for-emacs): Add support for inspecting
+ non-decodable float entities like NaNs and infinities.
+
+2007-02-25 Tobias C. Rittweiler
+
+ * swank-backend.lisp (inspect-for-emacs): Remove reference to
+ inexistent argument from docstring.
+
+2007-02-25 Harald Hanche-Olsen
+
+ * slime.el (slime-init-keymaps): Use vectors when defining keys,
+ because e.g. (define-key (string ?\C-c) ...) doesn't work in the
+ emacs-unicode-2 branch. Some strings are still there.
+
+2007-02-25 Helmut Eller
+
+ * slime.el (slime-delete-swank-port-file): Don't use
+ display-warning; that's not available everywhere.
+ (slime-repl-update-banner): Insert the date only if the buffer is
+ empty.
+ (slime-list-compiler-notes): Fetch the notes only if called
+ interactively.
+ (slime-set-query-on-exit-flag): New function, to avoid compiler
+ warnings about obsolete function process-kill-without-query.
+ (slime-defun-if-undefined): Perform the test at runtime not at
+ compile time. Reported by Lennart Staflin.
+
+ * swank.lisp (guess-package): Renamed from
+ guess-package-from-string.
+ (set-package): Use it.
+
+2007-02-22 Juho Snellman
+
+ * slime.el (slime-start-lisp): Don't cd if no directory was specified.
+ (slime-maybe-start-lisp): Pass directory argument to slime-start-lisp
+ also in other cond branch.
+ (slime-restart-sentinel): Pass a NIL directory to slime-start-lisp.
+
+2007-02-21 Marco Baringer
+
+ * slime.el (slime-start): Added :directory argument and pass it to
+ slime-maybe-start-lisp.
+ (slime-maybe-start-lisp): Added directory argument and pass it to
+ slime-start-lisp (but not slime-reinitialize-inferior-lisp-p)
+ (slime-start-lisp): Added directory argument. Used to set buffer's
+ directory before starting the inferior lisp.
+
+2007-02-17 Matthias Koeppe
+
+ * slime.el (slime-find-tag-if-tags-table-visited): New function.
+ (slime-edit-definition-fallback-function): Offer it as a value
+ for customization.
+
+2007-02-05 Matthias Koeppe
+
+ * slime.el (sldb-insert-locals): Repair presentation markup of
+ frame locals.
+
+2007-02-04 Antonio Menezes Leitao
+
+ * swank-lispworks.lisp (dspec-file-position): Bind
+ *compile-file-pathname*, *compile-file-truename*, *load-pathname*
+ and *load-truename* in dspec-file-position.
+
+2007-02-04 Matthias Koeppe
+
+ * slime.el (slime-write-string): When writing a :repl-result,
+ update the slime-output-end marker for the purpose of asynchronous
+ output (when *use-dedicated-output-stream* is true).
+ Reported by Madhu .
+
+2007-02-03 Marco Baringer
+
+ * slime.el (slime-delete-swank-port-file): Fix typo in
+ warning message.
+
+2007-02-02 Marco Baringer
+
+ Warn, as opposed to bailing out with an error, when deleting the
+ port file fails. Patch by: Samium Gromoff
+ <_deepfire at feelingofgreen.ru>
+
+ * slime.el (slime-delete-swank-port-file): New function.
+ (slime-inferior-connect): Use slime-delete-swank-port-file.
+ (slime-read-port-and-connect): Use slime-delete-swank-port-file.
+
+2007-01-31 Marco Baringer
+
+ * slime.el (slime-repl-update-banner): Restore animation.
+ (slime-startup-animation): restore.
+
+2007-01-30 Helmut Eller
+
+ * slime.el (slime-complete-symbol-function): Restore old default.
+ (set-keymap-parents): Deleted.
+ (slime-startup-animation): Deleted.
+ (slime-read-from-minibuffer): Don't use defun*.
+ (slime-repl-terminate-history-search): New.
+ (slime-repl-next-matching-input): Use it.
+
+ * slime-autoloads.el: New file.
+
+2007-01-29 Sean O'Rourke
+
+ * slime.el (slime-start): Continue even if the user, after
+ prompting, didn't recompile the stale .elc file.
+ (slime-urge-bytecode-recompile) [xemacs]: Abort immediately if the
+ user doesn't want to continue.
+ (slime-recompile-bytecode): Don't use byte-compile-warning-types;
+ it may not exist in XEmacs.
+
+2007-01-24 Helmut Eller
+
+ * slime.el (sldb-recenter-region): Use count-screen-lines instead
+ of count-lines.
+
+ * swank.lisp (unparse-name): New function.
+ (list-all-package-names): Use it. This fixes a bug related to
+ readtable-case and makes package name completions look prettier.
+ Suggested by Harald Hanche-Olsen .
+
+2007-01-24 Bill Clementson
+
+ * slime.el (slime-call-defun): Put the docstring before
+ the (interactive) form so that "C-h f slime-call-defun" will
+ return it.
+
+ * slime.el (slime-scratch-mode-map): Changed parent keymap to
+ lisp-mode-map to prevent unnecessary duplication of slime-mode-map
+ bindings and so that lisp-mode-map key bindings are present in the
+ slime scratch buffer. Change identified by Ariel Badichi.
+
+2007-01-20 Luke Gorrie
+
+ * slime.el (slime): Use COMMAND and CODING-SYSTEM parameters
+ Previously they were ignored.
+
+2007-01-17 Christian Lynbech
+
+ * slime.el (slime-init-command): Use expanded files when writing
+ the LOAD form for swank.
+
+2007-01-14 Helmut Eller
+
+ * slime.el: Cleanups for the repl history code.
+ (slime-repl-mode-map): Don't shadow M-C-d.
+ (slime-repl-history-replace): Simplified.
+ (slime-repl-history-search-in-progress-p): New.
+ (slime-repl-position-in-history): If there's no match return
+ out-of-bound positions instead of nil.
+ (slime-repl-add-to-input-history): Never modify the argument.
+ (slime-repl-previous-input): Renamed from
+ slime-repl-previous-input-starting-with-current-input.
+ (slime-repl-next-input): Renamed from
+ slime-repl-next-input-starting-with-current-input
+ (slime-repl-forward-input): Renamed from slime-repl-next-input.
+ (slime-repl-backward-input): Renamed from
+ slime-repl-previous-input.
+ (slime-repl-history-pattern): Renamed from
+ slime-repl-matching-input-regexp.
+ (slime-repl-delete-from-input-history): Simplified.
+
+ (slime-repl-history-map)
+ (slime-repl-history-navigation-neutral-commands)
+ (slime-repl-jump-to-history-item)
+ (slime-repl-previous-or-next-input)
+ (slime-repl-starting-with-current-input-regexp)
+ (slime-repl-continue-search-with-last-pattern)
+ (slime-repl-previous-or-next-matching-input): Deleted.
+
+ (sldb-list-locals, sldb-list-catch-tags): Deleted. Aren't of much
+ use anymore.
+
+2007-01-12 Helmut Eller
+
+ * swank-clisp.lisp: Better classification on frames on the stack.
+ Make variables in eval frames accessible to the debugger.
+ (frame-type, *frame-prefixes*, frame-to-string, is-prefix-p)
+ (frame-string-type, boring-frame-p): New.
+ (%frame-count-vars, %frame-var-name, %frame-var-value)
+ (frame-venv, next-venv, venv-ref, %parse-stack-values): Replaces
+ old frame-do-venv.
+ (extract-frame-line, extract-function-name, split-frame-string)
+ (string-match): New code to print frames.
+ (frame-locals, frame-var-value): Use the new stuff.
+
+ (inspect-for-emacs): Fix various bugs.
+
+ * swank-loader.lisp (compile-files-if-needed-serially): Don't wrap
+ everything in a compilation unit. If we abort on load errors and
+ it is confusing to see compiler warnings after the abort message.
+ (handle-loadtime-error): CLISP's format implements ~< differently
+ as everybody else, so use a explicit pprint-logical-block instead.
+
+ * swank.lisp (list-all-systems-in-central-registry): Don't
+ reference asdf directly, that leads to read errors in some
+ systems.
+
+2007-01-12 Juho Snellman
+
+ * slime.el (slime-read-expression-map): Switch the slime-mode-map
+ and minibuffer-local-map back the way they were. The previous change
+ was made due to a misunderstanding, caused by a keybinding for
+ [(return)] apparently being more specific than one for (kbd "RET"),
+ even when the former is in a parent keymap and the latter in the
+ child.
+
+2007-01-12 Helmut Eller
+
+ * swank.lisp (handle-request): Use 'abort as restart name, but
+ bind *sldb-quit-restart* to the restart returned by find-restart.
+ Also use a slighly friendlier message, because newbies seem to
+ invoke the ABORT restart instead of pressing q in the debugger.
+
+2007-01-12 Edi Weitz
+
+ * slime.el (slime-find-asd): Remove file extension.
+
+ (slime-read-system-name): Use SWANK:LIST-ASDF-SYSTEMS.
+
+ * swank.lisp (list-all-systems-in-central-registry): Use only
+ pathname name.
+
+ (list-all-systems-known-to-asdf): New function.
+
+ (list-asdf-systems): New function.
+
+2007-01-12 Marco Baringer
+
+ * slime.el (slime-keys): Remove binding of M-*, restore binding of
+ M-,.
+
+2007-01-11 Edi Weitz
+
+ * slime.el (slime-repl-test-system, slime-repl-test/force-system):
+ New REPL shortcuts. Patch by Kevin Rosenberg
+ .
+
+2007-01-11 Juho Snellman
+
+ * slime.el (slime-read-expression-map): restore tab completion in
+ the minibuffer. Switch the slime-mode-map and minibuffer-local-map
+ around, so that the minibuffer binding for return takes precedence
+ over the slime-mode one.
+
+2007-01-11 Marco Baringer
+
+ * swank.lisp (inspect-for-emacs integer): Don't die if the integer
+ can't be expressed as a float. Patch by Ariel Badichi
+ .
+
+ * slime.el (slime-keys): Removed binding of M-,
+
+2007-01-11 Helmut Eller
+
+ * slime.el: Some cleanups for the debugger code: add some outline
+ sections and docstrings.
+
+ (sldb-setup): Always display the beginning of the condition
+ text. Previously, we always showed the beginning of the backtrace.
+
+ (sldb-prune-initial-frames): Do what the docstring says. Reverted
+ to Luke's version.
+
+ (sldb-dispatch-extras): Fix typo.
+
+ (sldb-insert-restarts, sldb-insert-frames)
+ (sldb-insert-frame, sldb-fetch-more-frames)
+ (sldb-toggle-details, sldb-show-frame-details)
+ (sldb-insert-locals): Simplified.
+ (sldb-frame-details): New.
+
+ (slime-save-coordinates, slime-coordinates)
+ (slime-restore-coordinate, slime-count-lines): New macro and its
+ helpers.
+ (sldb-recenter-region): Renamed from slime-maybe-recenter-region.
+
+ (sldb-enable-styled-backtrace, sldb-show-catch-tags)
+ (sldb-highlight): Deleted. Seem to be obsolete.
+ (sldb-add-face): Removed, because it is now the same as
+ slime-add-face.
+
+ (sldb-help-summary): Deleted. The docstring for sldb-mode is
+ already pretty terse.
+ (define-sldb-face): Renamed from def-sldb-face.
+
+ * swank-sbcl.lisp, swank-cmucl.lisp (condition-extras): Fix typo
+
+2007-01-10 Helmut Eller
+
+ * swank.lisp (*sldb-printer-bindings*): Add *print-right-margin*.
+ (debug-in-emacs): Bind *sldb-printer-bindings* here ...
+ (backtrace, debugger-info-for-emacs, frame-locals-for-emacs):
+ ... and remove redundant bindings here.
+
+2007-01-10 Attila Lendvai
+
+ * slime.el: FIX: set-keymap-parents for GNU Emacs was bogus, fixed
+ by Ariel Badichi.
+
+2007-01-09 Helmut Eller
+
+ * slime.el (slime-repl-merge-histories): Use (setf (gethash ...)
+ instead of puthash, for Emacs 20.
+
+2007-01-09 Juho Snellman
+
+ SBCL 1.0.1.15 supports restart-frame natively, and uses a different
+ debug catch tag interface than earlier versions.
+
+ * swank-sbcl (sbcl-with-restart-frame): New function, detects SBCL
+ 1.0.1.15 or later.
+ (return-from-frame): Another version for 1.0.1.15, using
+ sb-debug:unwind-to-frame-and-call
+ (restart-frame): Another version for 1.0.1.15, using
+ sb-debug:unwind-to-frame-and-call
+
+2007-01-07 Helmut Eller
+
+ * swank.lisp (open-streams): Don't pass nil to make-fn-streams;
+ use a dummy function as workaround. Both arguments must be
+ functions and CMUCL checks the types.
+
+2007-01-06 Attila Lendvai
+
+ * slime.el: Added set-keymap-parents when not available (GNU
+ Emacs). Result: slime bindings while reading expressions from the
+ minibuffer.
+
+ * slime.el, swank.lisp: FIX: slime-insert-possibly-as-rectange and
+ sldb stuff on newer emacsen
+
+2007-01-04 Attila Lendvai
+
+ * slime.el: Added slime-insert-possibly-as-rectangle and use it
+ when inserting things here and there. The effect of this is that
+ multi-line strings coming from swank (e.g. stuff in sldb) are
+ inserted with insert-rectangle, so they are properly indented.
+
+ * swank.lisp: FIX: sort is destructive, call copy-seq at a few
+ places. FIX: bind *sldb-printer-bindings* also in
+ frame-locals-for-emacs.
+
+2007-01-03 Attila Lendvai
+
+ * swank.lisp: FIX: drop extra "Slots: " from standard-object's
+ inspector presentation
+
+ * swank.lisp: FIX: keyword symbols keep their : when travelling
+ from swank to slime
+
+ * slime.el: FIX: older Emacsen have no line-number-at-pos.
+
+ * slime.el: Convert some minibuffer reading defun's to defun* and
+ use keywords. Support extra arguments.
+
+ * slime.el: Use set-parent-keymaps when available (xemacs only for
+ now) when setting up slime-read-expression-map. The effect of this
+ is that the minibuffer will have all the slime-mode-map keys where
+ minibuffer-local-map is not overriding.
+
+ * slime.el, swank.lisp: Handle better the case when swank can not
+ read anything from the string sent to be inspected. Only bring up
+ the debugger when the inspect command is prefixed.
+
+2006-12-31 Matthias Koeppe
+
+ Restore the nested-presentations feature.
+
+ * present.lisp (slime-stream-p): Allow sending presentations to
+ the repl-results stream.
+ (make-presentations-result): Removed.
+ (send-repl-results-to-emacs): New.
+
+ * swank.lisp (connection): New slot repl-results (a stream).
+ (make-output-function-for-target): New.
+ (open-streams): Use it here to also create a stream for REPL results.
+ (initialize-streams-for-connection): Store the stream.
+
+2006-12-29 Edi Weitz
+
+ * slime.el (slime-find-asd, slime-read-system-name): Only offer
+ initial input if system is really in central registry.
+
+2006-12-29 Matthias Koeppe
+
+ Simplify the REPL-results protocol. The results are now printed
+ using special :WRITE-STRING events from the Lisp side.
+
+ * slime.el (slime-repl-insert-prompt): Don't insert a result, only
+ the prompt.
+ (slime-repl-insert-result): Removed.
+ (slime-repl-eval-string, slime-repl-show-abort)
+ (slime-repl-set-package, slime-output-buffer)
+ (slime-repl-update-banner): Change all callers.
+ (slime-dispatch-event): Event :WRITE-STRING gets an
+ optional argument TARGET, which controls where the string is
+ inserted.
+ (slime-write-string): Handle targets NIL (regular process output)
+ and :REPL-RESULT.
+
+ * swank.lisp (make-presentations-result): Removed.
+ (send-repl-results-to-emacs): New function, sends :WRITE-STRING events.
+ (listener-eval): Use it here instead of make-presentations-result.
+
+2006-12-28 Matthias Koeppe
+
+ Performance improvement for slime-autodoc-mode, in particular when
+ there are REPL results that are long lists.
+
+ * slime.el (slime-repl-mode-beginning-of-defun)
+ (slime-repl-mode-end-of-defun): New.
+ (slime-repl-mode): Use them as beginning-of-defun-function and
+ end-of-defun-function.
+ (slime-enclosing-operator-names): Bind
+ parse-sexp-lookup-properties to nil, don't parse more than 20000
+ characters before point, don't determine exact argument positions
+ larger than 64. Byte-compile this function.
+
+2006-12-24 Attila Lendvai
+
+ * slime.el, swank.lisp: Added customizable dwim lookup hook
+ support for inspect
+
+ * doc/slime.texi: Small doc fixes by Alfredo Beaumont
+
+ * swank.lisp: Change the order to [set value] [make unbound]. Sort
+ slot names in the inspector
+
+2006-12-23 Matthias Koeppe
+
+ * swank-clisp.lisp (make-weak-key-hash-table)
+ (make-weak-value-hash-table): Implement for CLISP, so that the
+ REPL results history does not cause "memory leaks".
+
+ * slime.el (slime-inspect): Add a dwim-mode keyword argument, move
+ all input handling into the interactive spec. Restore the
+ behavior of slime-inspect when point is within a presentation (no
+ prompting, no DWIM).
+ (slime-inspect-presentation-at-mouse): Don't do DWIM here, so the
+ presentation-retrieval expression does not end up on the inspector
+ stack.
+ (slime-inspector-position): New.
+ (slime-inspector-operate-on-point, slime-inspector-reinspect): Use
+ it here to make it work on GNU Emacs too.
+ (slime-open-inspector): Fix row-col addressing at end of buffer.
+
+2006-12-20 Attila Lendvai
+
+ * slime.el: FIX: inspecting presentations from the right click
+ menu broke in the inspect refactor
+
+ * slime.el: FIX: slime-fuzzy-target-buffer-completions-mode's
+ keymap must always precede other keymaps
+
+ * slime.el, swank.lisp: Extend :write-string with and &optional
+ presentation id and use this in present-in-emacs
+
+ * swank.lisp: Added present-in-emacs that prints a presentation of
+ the given object in the repl
+
+ * swank.lisp: Return the inspected object when inspecting from the
+ lisp side.
+
+ * swank.lisp: Turn off right margin for restart printing, too
+
+2006-12-19 Attila Lendvai
+
+ * HACKING: Added useful init.el piece into HACKING about
+ update-change-log
+
+ * swank.lisp: In all-slots-for-inspector pad slot names to be
+ equal length, so the result is more readable
+
+ * slime.el: Fix slime-insert-presentation to handle multi-line
+ presentations better (use insert-rectangle)
+
+ * swank.lisp: Properly bind *sldb-printer-bindings* and turn off
+ right margin while printing stuff in sldb
+
+ * slime.el: Smarten up the sldb heuristic that drops swank frames
+
+ * swank-allegro.lisp, swank-backend.lisp, swank-openmcl.lisp,
+ swank-sbcl.lisp, swank.lisp: Added hash-table-weakness and use it
+ in hash-table-inspecting
+
+ * swank.lisp: Hashtable inspecting: added [clear hashtable]
+ and [remove entry] actions
+
+ * slime.el, swank.lisp: FIX dwim inspecting to handle (setf
+ some-fun) functions, too
+
+ * slime.el: FIX: slime-sexp-at-point for foo::|bar::baz|
+
+ * slime.el: FIX: Properly keep track of slime-buffer-package in
+ the inspector
+
+ * swank.lisp: Small: get rid of notes and warnings
+
+ * slime.el, swank.lisp: Added dwim-mode to slime-inspect that
+ tries to be smart unless prefixed
+
+ * slime.el: Make slime-fuzzy-complete-symbol the default in the
+ belife that it's better for new users
+
+ * swank.lisp: Add (expt 1.2 length) higher scores for longer
+ matches in fuzzy completion. A good example: puts "make-instance"
+ before "make-string-input-stream" while completing "make-ins"
+
+ * slime.el: Set slime-fuzzy-completion-in-place enabled by default
+
+ * slime.el: Added (cons row col) addressing to
+ slime-open-inspector, use in slime-inspector-operate-on-point
+
+ * slime.el: FIX: operate the inspector in the debug thread when
+ started from sldb
+
+ * slime.el: Convert some inspector defuns to defun* and use
+ keywords. Other minor cleanups.
+
+2006-12-18 Marco Baringer
+
+ * slime.el (slime-region-for-defun-at-point): end-of-defun and
+ beginning-of-defun modify match-data, added a save-match-data to
+ prevent this from affecting callers of
+ slime-region-for-defun-at-point.
+
+2006-12-15 Edi Weitz
+
+ * swank-lispworks.lisp (make-weak-key-hash-table): Weak hash
+ tables for Lispworks.
+ (make-weak-value-hash-table): Ditto.
+
+2006-12-14 Helmut Eller
+
+ * swank.lisp (*sldb-printer-bindings*): *PRINT-LINES* is in
+ effect only if *PRINT-PRETTY* is non-NIL, so it better to enable
+ the pretty printer. Suggested by Madhu .
+
+ * slime.el (slime-expand-abbreviations-and-complete): Emacs
+ `choose-completion' (choosing a completion from the *Completions*
+ buffer) always replaces text upto (point). So the code which
+ figures out an `unambiguous-completion-length' and places the
+ point there in `slime-expand-abbreviations-and-complete' causes
+ problems: the replacement text gets garbled. Get rid of the bogus
+ `unambiguous-completion-length'. Patch by Madhu
+
+ * swank-cmucl.lisp (remove-gc-hooks): The variables
+ EXT:*GC-NOTIFY-AFTER* and EXT:*NOTIFY-BEFORE* should hold
+ functions and should be NIL. This affects the function
+ REMOVE-GC-HOOKS in swank-cmucl.lisp which sets them to
+ NIL, (should one happen to use it). Set them back to the original
+ parameters. Patch by Madhu
+
+ * slime.el (slime-repl-output-mouseover-face): Fix a pair of extra
+ parens. Patch by Madhu
+
+2006-12-14 Helmut Eller
+
+ * slime.el (slime-search-buffer-package): Remove Xemacs special
+ casing. There's already a compatibility defun for
+ match-string-no-properties.
+
+2006-12-13 Attila Lendvai
+
+ * swank.lisp: FIX: fuzzy completion for M-V-B. Fix by Madhu.
+
+2006-12-12 Nikodemus Siivola
+
+ * swank.lisp (inspect-for-emacs integer): Pad the hex formatted
+ value to eight digits, "Code-char:" instead of "Corresponding
+ character:", "Integer-length:" instead of "Length:",
+ "Universal-time:" instead of "As time".
+ (inspect-object): Use TYPE-FOR-EMACS instead of TYPE-OF.
+ (inspect-in-emacs): New function, analogous to ED-IN-EMACS.
+
+ * swank-backend.lisp (type-for-emacs): New generic function,
+ defaults to TYPE-OF for non-integers, and returns FIXNUM or BIGNUM
+ for integers.
+
+ * slime.el (destructure-case): Indicate in the error message that
+ it was the Elisp destructure-case that failed to avoid confusion.
+ (slime-check-eval-in-emacs-enabled): More verbose error message.
+
+2006-12-11 Attila Lendvai
+
+ * swank.lisp: Added [set value] command for slot inspecting
+
+ * slime.el: Work on repl history navigation, restore old M-p/M-n
+ behaviour due to #lisp demand
+
+ Also print the current regexp in the minibuffer messages. M-p/M-n
+ takes the repl input up to the point not the entire input as it
+ did before.
+ slime-repl-previous/next-input-starting-with-current-input: new
+ names for the old M-p/M-n commands History navigation commands
+ jump to the end of buffer when point is before the prompt.
+
+ * slime.el: Fix/smarten up temp-buffer-quit
+
+ Now it tries its best to remember the original window config and
+ restore it at slime-temp-buffer-quit unless it was changed
+ meanwhile. IOW, fix "q" after macroexpand in a macroexpand buffer
+ not closing the temp window.
+ Also fix the compiler notes usage of the temp buffer.
+
+ * swank-backend.lisp, swank.lisp:
+ Added inspect-slot-for-emacs to let users customize it.
+
+ Use all-slots-for-inspector everywhere, render link to both the
+ effective and direct slots when both are available. Dropped
+ slot-value-using-class-for-inspector and friends. Added
+ slot-makunbound-using-class to the swank-mop package and added
+ a [make-unbound] action to the standard slot presentation.
+
+ * slime.el: FIX: slime-symbol-name-at-point for symbols like
+ foo::|bar::baz|
+
+ * .cvsignore, swank.lisp: FIX: Drop #\. and add #\, to escaped
+ symbol chars
+
+ * slime.el: Added slime-repl-delete-from-input-history that
+ deletes the current history entry when no input is supplied
+
+ * slime.el: slime-repl-kill-input kills the entire input when
+ point is at the prompt and resets the history navigation state
+
+ * slime.el:
+ Use a hashtable to remove duplicates in slime-repl-merge-histories
+
+2006-12-07 Marco Baringer
+
+ * swank.lisp (init-inspector): Added eval parameter. If NIL we
+ don't eval FORM but limit our selves to cl:read'ing it and
+ inspecting that value.
+
+ * slime.el (slime-inspect): If a prefix argument is provided pass
+ :eval nil to swank:init-inspector.
+
+2006-12-07 Paul Collins
+
+ * hyperspec.el (common-lisp-hyperspec): Strip all text properties
+ from the symbol-at-point to avoid problems with read-only text.
+
+2006-12-06 Marco Baringer
+
+ * slime.el (slime-search-buffer-package): Don't call
+ match-string-no-properties if it's not defined (as is on some
+ xemacs')
+ (slime-repl-clear-buffer): Added optional prefix argument
+ specifying how many lines to leave.
+
+2006-12-06 Johan Bockg?rd
+
+ * swank.lisp (fuzzy-completion-set): Don't mix for clauses and
+ body clauses in loop.
+
+2006-12-05 Helmut Eller
+
+ * swank.lisp (create-swank-server): Removed. Use create-server
+ instead.
+
+ * slime.el (slime-first-change-hook): Don't do anything if buffers
+ file doesn't exist.
+ (slime-start, slime-set-connection-info): Add support for a
+ :init-function which is called after the usual initialization of the
+ connection is completed.
+
+ * swank-source-file-cache.lisp (buffer-first-change): Always
+ return nil and remove the now redundant test with probe-file.
+
+ * swank-backend.lisp (guess-external-format): Return nil if the
+ file can't be opened. Previusly we wrongly read from stdin.
+
+2006-12-05 Juho Snellman
+
+ Real xref support for SBCL (requires SBCL 1.0.0.18).
+
+ * swank-sbcl.lisp (who-calls): New function, fetch xref data from
+ sb-introspect.
+ (who-binds): Ditto.
+ (who-sets): Ditto.
+ (who-references): Ditto.
+ (who-macroexpands): Ditto.
+ (defxref): New macro, create the above functions.
+ (source-location-for-xref-data): New, map from sb-introspect xref
+ format to the Swank xref format.
+ (sanitize-xrefs): Map PCL method names to something more readable.
+ (string-path-snippet): New function, finds a more accurate source
+ snippet for definition source locations which have both an
+ :emacs-string and a full source path available. Otherwise the xref
+ location would point to the toplevel form rather than the exact
+ form for functions compiled with C-c C-c.
+ (source-file-position): New function, somewhat like
+ source-path-file-position but uses the source-file cache, handles
+ missing form-paths more gracefully.
+ (make-definition-source-location): Use the above two functions.
+ (sbcl-with-xref-p): New function, detect whether SBCL has xref support
+ for backwards compability.
+
+2006-11-26 Juho Snellman
+
+ * swank-source-file-cache.lisp (buffer-first-change): Check
+ whether a file exists before trying load it into the source cache.
+
+2006-11-26 Juho Snellman
+
+ Restore the way M-n and M-p used to work in the REPL. (cherry-picked
+ from a patch with other changes, sent by Attila Lendvai).
+
+ * slime.el (slime-repl-previous-input-starting-with-current-input)
+ (slime-repl-next-input-starting-with-current-input): New functions,
+ work like the old slime-repl-previous-input / next-input.
+ (slime-repl-matching-input-regexp): Restore old version.
+ (slime-repl-mode-map): Bind s-r-p-i-s-w-c-i and s-r-n-i-s-w-c-i
+ to M-p and M-n respectively. slime-repl-previous-input and
+ slime-repl-next-input are still accessible with C-up / C-down.
+
+2006-11-25 Helmut Eller
+
+ * slime.el (slime-repl-read-break): Use a :emacs-interrupt message
+ instead of a RPC to swank:simple-break. Suggested by Taylor R
+ Campbell.
+
+2006-11-24 Helmut Eller
+
+ * slime.el (slime-search-buffer-package): Prettify the package
+ name if it is written as string or keyword.
+
+2006-11-23 Helmut Eller
+
+ * slime.el (slime-in-expression-p): Use `read' and `eq' to test
+ the first element of the list. Previuosly, the pattern (foo)
+ wrongly matched (foobar) because we used (looking-at ).
+
+ * swank-cmucl.lisp (setf-definitions): Also include defs which
+ were created with (defun (setf NAME) ...). Previously we only
+ found definitions created with defsetf or define-setf-expander.
+
+2006-11-22 Helmut Eller
+
+ * slime.el (slime-edit-definition): Don't hide error messages.
+
+2006-11-21 Helmut Eller
+
+ * swank.lisp (*coding-system*): "Coding systems" are now strings
+ instead of keywords.
+
+2006-11-19 Helmut Eller
+
+ * slime.el (slime-compile-file): Let the Lisp side choose the
+ coding system.
+ (slime-coding): Deleted.
+
+ * swank.lisp (compile-file-for-emacs): Use guess-external-format.
+ (swank:create-server): no more accepts an :external-format 'enc ,
+ use :coding-system "enc" instead.
+
+ * swank-backend.lisp (find-external-format)
+ (guess-external-format): New.
+ (swank-compile-file): The external-format argument is now a
+ backend specific value returned by find-external-format.
+
+ * swank-cmucl.lisp, swank-sbcl.lisp, swank-clisp,
+ swank-lispworks.lisp, swank-allegro.lisp, swank-corman.lisp,
+ swank-ecl.lisp, swank-scl.lisp, swank-abcl.lisp, swank-openmcl:
+ Update implementations accordingly.
+
+ * swank-source-file-cache.lisp (read-file): Use guess-external-format.
+
+ * swank.lisp (*swank-wire-protocol-version*): Is now initialized
+ by the loader.
+ (wire-protocol-version): Removed, because it contained a reference
+ to swank-loader::*source-directory*.
+
+ * slime.el (slime-set-connection-info): On protocol version
+ mismatch, ask the user how to proceed.
+ (slime-protocol-version): New variable. Initialize it at compile
+ time to detect stale elc files.
+
+ * swank-loader.lisp (load-swank): Set the protocol version.
+
+2006-11-12 Marco Baringer
+
+ * slime.el (slime-make-tramp-file-name): Added (require 'tramp)
+ since tramp-make-tramp-file-name is not an autoloaded function.
+
+2006-11-07 Edi Weitz
+
+ * slime.el (slime-fuzzy-completion-time-limit-in-msec): Escaped
+ left parenthesis in doc string.
+
+2006-11-05 Matthias Koeppe
+
+ * slime.el (slime-complete-keywords-contextually): Unused
+ variable, removed.
+
+2006-11-05 Helmut Eller
+
+ * slime.el (sldb-sexp-highlight-mode): Remove bloat.
+
+2006-11-04 Matthias Koeppe
+
+ Support nested presentations in REPL results, when present.lisp is
+ loaded.
+
+ * swank.lisp (make-presentations-result): New, factored out from
+ listener-eval.
+ (listener-eval): Use it here.
+
+ * present.lisp (make-presentations-result): Override it here.
+
+2006-11-03 Marco Baringer
+
+ * swank.lisp (all-slots-for-inspector): Added declare ignore for
+ unused argument inspector (openmcl warns about this). Reindented.
+
+2006-11-01 Attila Lendvai