You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lispworks.md
+53-4Lines changed: 53 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -102,7 +102,7 @@ At the time of writing, the licence of the hobbyist edition costs 750 USD, the p
102
102
103
103
## LispWorks IDE
104
104
105
-
The LispWorks IDE is self-contained, but it is also possible to use LispWorks-the-implementation from Emacs and Slime (see below).
105
+
The LispWorks IDE is self-contained, but it is also possible to use LispWorks-the-implementation from Emacs and Slime (see below). The IDE runs *inside* the Common Lisp image, unlike Emacs which is an external program that communicates with the Lisp image through Swank and Slime. User code runs in the same process.
106
106
107
107
### The editor
108
108
@@ -117,8 +117,9 @@ again.
117
117
- there are no plugins similar to ~~Paredit~~ (there is a brand new (2021) [Paredit for LispWorks](https://github.com/g000001/lw-paredit) or Lispy, nor a Vim layer.
118
118
119
119
We also had an issue, in that the go-to-source function bound to `M-.`
120
-
did not work out for built-in Lisp symbols. This is probably a free
121
-
edition limitation too.
120
+
did not work out for built-in Lisp symbols. Apparently, LispWorks
121
+
doesn't provide much source code, and mostly code of the editor. Some
122
+
other commercial Lisps, like Allegro CL, provide more source code
122
123
123
124
The editor provides an interesting tab: Changed Definitions. It lists the functions and methods that were redefined since, at our choosing: the first edit of the session, the last save, the last compile.
124
125
@@ -235,7 +236,21 @@ See also:
235
236
236
237
### The listener
237
238
238
-
The listener is the REPL.
239
+
The listener is the REPL we are expecting to find, but it has a slight
240
+
difference from Slime.
241
+
242
+
It doesn't evaluate the input line by line or form by form, instead it
243
+
parses the input while typing. So we get some errors instantly. For
244
+
example, we type `(abc`. So far so good. Once we type a colon to get
245
+
`(abc:`, an error message is printed just above our input:
246
+
247
+
```
248
+
Error while reading: Reader cannot find package ABC.
249
+
250
+
CL-USER 1 > (abc:
251
+
```
252
+
253
+
Indeed, now `abc:` references a package, but such a package doesn't exist.
239
254
240
255
Its interactive debugger is primarily textual but you can also
241
256
interact with it with graphical elements. For example, you can use the
@@ -258,6 +273,26 @@ error.
258
273
<strong>NB:</strong> this is equivalent of pressing <code>M-v</code> in Slime.
259
274
</div>
260
275
276
+
It is possible to choose the graphical debugger to appear by default, instead of the textual one.
277
+
278
+
The listener provides some helper commands, not unlike Slime's ones starting with a comma `,`:
279
+
280
+
```
281
+
CL-USER 1 > :help
282
+
283
+
:bug-form <subject> &key <filename>
284
+
Print out a bug report form, optionally to a file.
285
+
:get <variable> <command identifier>
286
+
Get a previous command (found by its number or a symbol/subform within it) and put it in a variable.
287
+
:help Produce this list.
288
+
:his &optional <n1> <n2>
289
+
List the command history, optionally the last n1 or range n1 to n2.
290
+
:redo &optional <command identifier>
291
+
Redo a previous command, found by its number or a symbol/subform within it.
292
+
:use <new> <old> &optional <command identifier>
293
+
Do variant of a previous command, replacing old symbol/subform with new symbol/subform.
294
+
```
295
+
261
296
262
297
### The stepper. Breakpoints.
263
298
@@ -428,6 +463,20 @@ See more:
428
463
429
464
*[Chapter 28: the Process Browser](http://www.lispworks.com/documentation/lw71/IDE-U/html/ide-u-178.htm#pgfId-852666)
430
465
466
+
### Misc
467
+
468
+
We like the `Search Files` functionality. It is like a recursive
469
+
`grep`, but we get a typical LispWorks graphical window
470
+
that displays the results, allows to double-click on them and that offers
471
+
some more actions.
472
+
473
+
Last but not least, have a look at the **compilation conditions
474
+
browser**. LispWorks puts all warnings and errors into a special
475
+
browser when we compile a system. From now on we can work on fixing
476
+
them and see them disappear from the browser. That helps keeping track
477
+
of warnings and errors during development.
478
+
479
+
431
480
## Using LispWorks from Emacs and Slime
432
481
433
482
To do that, start LispWorks normally, start a Swank server and connect to it from Emacs (Swank is the backend part of Slime).
0 commit comments