Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

clcon - emerging Common Lisp IDE

746 views
Skip to first unread message

budden

unread,
Aug 24, 2015, 6:21:52 PM8/24/15
to
Hi!

I have started a new attempt on
Common Lisp IDE, it is named clcon.
See screenshots at

https://bitbucket.org/budden/clcon/wiki/Screenshots

Goal is a cross-platform Common Lisp IDE with
more "modern" look and feel, under permissive license.

It is intended first of all for beginners.
Also it can be used as a GUI for using CL as a
scripting language. E.g. it can be embedded
into commercial application, you can add your
own menus, graphics, etc.

IDE is built as a client/server application.

On server side, SWANK server on SBCL is
responsible for most of the work. I
add thin wrappers on the lisp side
as necessary.

Client (IDE itself) is in plain tcl/tk
(not generated from Lisp). Some client
code is generated from server.

Client-server dialog organisation
did not take its final shape yet.
Different parts of IDE may use different
ways to communicate.

I use bits of cl-tk to communicate
from client to server. Also I use
my own set of functions to pass conses
to tcl/tk.

Features currently demonstrated:

- SWANK-based REPL with command history
- completion
- go to definition
- inspector (like slime-inspect)
- concept of IDE command. IDE commands are
typed at lisp REPL with "." escape character
at first position of line and share their history
with lisp REPL requests. I found it rather convinient,
maybe better than M-x in EMACS.

Compilation messages highlighting and hyperlinking
is now under development.

All this was done in less than two weeks.
I believe using client/server architecture
without attempt to use "wrappers" or "bindings"
around Tk is a key to success. Sockets turned
out to be the only reliable cross-platform IPC
mean.

Current state of code is "development". Not
even pre-alpha. E.g. we have hardcode cl-user
package in REPL. But some parts of IDE really
work.

You are welcome to participate.
Tracker is full of tasks :)

budden

unread,
Aug 31, 2015, 8:24:45 PM8/31/15
to
Hi!

Project goes on merrily. Screenshots are here:

https://bitbucket.org/budden/clcon/wiki/Screenshots

Feature list is now about twice as big as at my previous post:

Old features:
- REPL with command history
- symbol completion
- go to definition
- inspector (like slime-inspect)
- concept of IDE command.
New features:
- history substitution (use .NNN to run previous command)
- debugger prototype (show condition, list frames, invoke restarts)
- compilation conditions browser
- multiple-buffer editor (no save file command yet)
- run tcl code with special "escapes"
- keyboard shortcuts to switch between tools
- user manual https://bitbucket.org/budden/clcon/src/default/doc/user-manual.md

Most of the features are still prototypes, but development goes on.
After finishing debugger, I'll try to deploy one-click installation
bundle for Windows.

Issue list is also about doubled since my previous post.
Your help is welcome!

budden

unread,
Sep 5, 2015, 5:27:49 PM9/5/15
to
Hi!

Declared https://bitbucket.org/budden/clcon/overview
project goals:
- Simple, lightweight, embeddable CL IDE for using CL as an application exptension scripting language
- Simple, one-click installable CL environment for beginners

I'd like to know, which goal is more actual for the community?





Pascal J. Bourguignon

unread,
Sep 5, 2015, 7:31:04 PM9/5/15
to
If we have to choose between the two, the later.

Have fun.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk

budden

unread,
Sep 7, 2015, 6:59:58 PM9/7/15
to
Thanks, Pascal!

I have one more opinion which coincides with yours. So I left just one project goal: CL IDE for beginners.

Meanwhile I have finished debugger prototype. It now can inspect frames, goto frame source, inspect condition, invoke restarts. Also there is a search on printed representation.

I plan to do pre-alpha release in a month or so. Goal of pre-release is to receive feedback from potential users.

There are some optional features some of which can be included. Please let me choose what is more useful:

1. tabbed interface for switching windows in editor
2. documentation page (hyperspec, docstring, quickdoc)
3. cross-reference information (similar to slime-who-calls)
4. find in files
5. automatical window layout
6. autoindent

I think I can implement no more than 3 of those features. Please let me know which features are most useful in your opinion.

Pascal J. Bourguignon

unread,
Sep 7, 2015, 7:52:26 PM9/7/15
to
Most useful are:

6. autoindent
2. documentation page (hyperspec, docstring, quickdoc)
4. find in files

Marco Antoniotti

unread,
Sep 8, 2015, 3:45:27 AM9/8/15
to
On Tuesday, September 8, 2015 at 1:52:26 AM UTC+2, informatimago wrote:
> budden <budde...@mail.ru> writes:
>
> > Thanks, Pascal!
> >
> > I have one more opinion which coincides with yours. So I left just one
> > project goal: CL IDE for beginners.
> >
> > Meanwhile I have finished debugger prototype. It now can inspect
> > frames, goto frame source, inspect condition, invoke restarts. Also
> > there is a search on printed representation.
> >
> > I plan to do pre-alpha release in a month or so. Goal of pre-release
> > is to receive feedback from potential users.
> >
> > There are some optional features some of which can be included. Please
> > let me choose what is more useful:
> >
> > 1. tabbed interface for switching windows in editor
> > 2. documentation page (hyperspec, docstring, quickdoc)
> > 3. cross-reference information (similar to slime-who-calls)
> > 4. find in files
> > 5. automatical window layout
> > 6. autoindent
> >
> > I think I can implement no more than 3 of those features. Please let
> > me know which features are most useful in your opinion.
>
> Most useful are:
>
> 6. autoindent

Auto indent yes, but using the one and only right indentation engine and style: that of Emacs.

> 2. documentation page (hyperspec, docstring, quickdoc)

HELAMBDAP

> 4. find in files

Cheers
--

MA

budden

unread,
Sep 8, 2015, 8:21:46 AM9/8/15
to
Hi Marco!

You quoted only three features. What about another three? Your list coincides with Pascal's?

> Auto indent yes, but using the one and only right indentation engine and style: that of Emacs.


> > 2. documentation page (hyperspec, docstring, quickdoc)
>
> HELAMBDAP
Thanks, I will know! But for the beginner, more important is an interface to existing documentation. As I understood, helambdap is not a documentation collection, but a tool. Am I right? Best thing would be a search engine. I enter "unregister-event" (maybe even without package prefix)
and get to relevant pieces of

http://marijnhaverbeke.nl/cl-tk/ ,
http://quickdocs.org/cl-tk/api ,
https://github.com/marijnh/cl-tk/search?utf8=%E2%9C%93&q=unregister-event

budden

unread,
Sep 21, 2015, 4:56:13 PM9/21/15
to
Hi!

We get some slowdown. Autoindent code is completely written, but there are bugs so I can not say it really "works".

Concept is that I didn't implement lisp mode, but wrote an interface to oduvanchik (spiritually transformed hemlock).

As user edits Tk's text widget, I incrementally sync buffer contents of oduvanchik's buffer to that of tk's text widget.

When user calls auto-indent command, it is evaluated in oduvanchik with some special variable bound to t. This indicates special mode of oduvanchik's operation. As oduvanchik tries to do elementary text operations, such is insert-string, nothing is done. Instead, event is sent to tk with instructions what to do. tk's text widget does string insertion and then oduvanchik's buffer resynched. So, insert-string is called twice in oduvanchik, first time with special var bound to t, second time with var bound to nil to sync oduvanchik to tk.

This is rather complex sequence of phenomena occuring in distributed environment (partly at client, partly at server). It "works", but somewhere synchronization between text or between marks is lost and results are buggy.

Currently I develop a toolbox to diagnose this kind of problems, and have some success. I hope autoindent will be finished this week.

Marco Antoniotti

unread,
Sep 22, 2015, 4:23:53 AM9/22/15
to
On Monday, September 21, 2015 at 10:56:13 PM UTC+2, budden wrote:
> Hi!
>
> We get some slowdown. Autoindent code is completely written, but there are bugs so I can not say it really "works".
>

It will work if a diff on two copies of the same source, one indented by your IDE and the other indented by Emacs, will show no discrepancies.

Naturally, Emacs is the baseline and control :)

Cheers
--
MA

Matthew Carter

unread,
Sep 22, 2015, 9:00:14 AM9/22/15
to
Agreed

--
Matthew Carter (m...@ahungry.com)
http://ahungry.com

budden

unread,
Sep 22, 2015, 5:57:37 PM9/22/15
to
Hi!

First of all, autoindent now works. Not in your sence, it just simply works.
Coersion to EMACS's style is a must have, but it is not first on the list of goals. Also there are some more lisp commands, see screenshot:

https://bitbucket.org/repo/E4aRar/images/3689321281-lispmode.png

Closest goals are:

- remove Linux dependency we received recently
- make one-click-installable distribution

Your help is appreciated :)

Marco Antoniotti

unread,
Sep 23, 2015, 5:47:38 PM9/23/15
to
On Tuesday, September 22, 2015 at 11:57:37 PM UTC+2, budden wrote:
> Hi!
>
> First of all, autoindent now works. Not in your sence, it just simply works.
> Coersion to EMACS's style is a must have, but it is not first on the list of goals.

Then it does not work.

Cheers
--
MA

budden

unread,
Sep 24, 2015, 6:05:09 AM9/24/15
to
> Then it does not work.
Or, if you want to be correct, it does not match professional's requirements.

There are also students who learn lisp in the university and then forget about it (or not forget). Exact match to EMACS does not matter there. All we have to do is to leave overall good impression about CL.

Professional IDE was not my goal. I work solo and timeframe is limited. It is impossible to compete all the features of EMACS/SLIME. So I won't even check the match against EMACS indent style in the near future. When I have at least 10 young users who are going to use lisp in their career, and the indentation is the only obstacle to use clcon everywhere, I'll consider that question. Feel free to send me a pull requst, lisp mode defined here:

https://bitbucket.org/budden/oduvanchik/src/default/src/lispmode.lisp?at=default&fileviewer=file-view-default

Meanwhile I removed X-dependent and Linux-dependent code from the lisp mode implementation. Clcon returned to initial cross-platform state. You can see it on the screenshots page https://bitbucket.org/budden/clcon/wiki/Screenshots
Now we must fix some bugs so that ide won't crash at any wrong key press and then prepare some kind of file release.

Matthew Carter

unread,
Sep 24, 2015, 12:00:57 PM9/24/15
to
Indenting Lisp:
"Lisp, Scheme and other similar languages have well established
indentation rules. Don’t change them. "

http://www.emacswiki.org/emacs/IndentingLisp

I can't find a good source (maybe the emacs .el file source code for
lisp-mode?) for the full indentation rules, but you could at least write
some tests that take a sample of common lisp programs, run through a
file wide indentation call with your editor, do the same on emacs (use
the emacs in batch mode) and compare the results?

Then fine tune as needed.

budden

unread,
Sep 30, 2015, 3:39:09 PM9/30/15
to
Hi!
> ...but you could at least write
> some tests that take a sample of common lisp programs...
> Then fine tune as needed.
Yes, I know how to do that, but I have limited resources and some specific goals. You can do that yourself and send me pull request with bug fixes.

Meanwhile I added some prototype of syntax highlight (see screenshot at https://bitbucket.org/budden/clcon/wiki/Home ) and "open recent" menu.

Next goal is file release (for developers only).

budden

unread,
Oct 1, 2015, 1:03:12 PM10/1/15
to
Hi! Arranged a file release. Now you can install tcl/tk from ActiveTcl, then download file release from here https://bitbucket.org/budden/clcon/downloads/clcon-0.2.2.zip
unpack it and start IDE with just double-click.

You'll get SBCL with installed Quicklisp.

Note that clcon is alpha quality software, do not use it for editing files. Consider the release just as a demo. Unfortunately, lisp mode commands as auto-indent shown too many bugs and they are not included in the demo tour (https://bitbucket.org/budden/clcon/src/default/doc/demo-tour.md)

But you still can try them - it is possible that auto-indent will work sometimes.

budden

unread,
Oct 10, 2015, 5:25:11 PM10/10/15
to
Accidentally, I have a tiny example of interfacing Common Lisp to VTK. This is due to precense of tcl to lisp interface in clcon.
See "screenshot of the day" at

https://bitbucket.org/budden/clcon/wiki/Home

Tcl source with use instructions is here:

https://bitbucket.org/budden/clcon/src/default/examples/vtk1.tcl


budden

unread,
Oct 14, 2015, 5:28:19 PM10/14/15
to
Hi!

> I have started a new attempt on
> Common Lisp IDE, it is named clcon.
> Goal is a cross-platform Common Lisp IDE with
> more "modern" look and feel, under permissive license.

Added stepper interface. Editor now is multi-tabbed. See
https://bitbucket.org/budden/clcon/wiki/Home

budden

unread,
Oct 15, 2015, 8:54:41 AM10/15/15
to
> I have started a new attempt on
> Common Lisp IDE, it is named clcon.
> Goal is a cross-platform Common Lisp IDE with
> more "modern" look and feel, under permissive license.
New file release for windows - 0.2.4 - https://bitbucket.org/budden/clcon/downloads/clcon-0.2.4.zip

Current feature list:

- REPL for Lisp and Tcl with history
- Debugger
- Stepper
- Multitabbed Editor (currenty have no save confirmation when quitting, beware!) with syntax highlight
- Some commands of lisp mode (navigate through forms, auto-indent, but bugs...)
- Completion for Lisp, Tcl and filenames in REPL
- Find Source for Lisp and Tcl. Find source for TCL seem to be rather unique feature of clcon
- Inspector
- Compilation error browser

Still prototype quality, but is already used for self development sometimes. Download file release if you want to take a "demo tour" or to participate in the development.

Matthew Carter

unread,
Oct 15, 2015, 9:21:12 PM10/15/15
to
Just downloaded the zip, you may want to clean it up a little bit (for
instance, look at clcon/quicklisp/local-projects/budden-tools).

You have a lot of temporary files and other gibberish in there.

In clcon/quicklisp/local-projects/oduvanchik you have some files with
unicode in their file names.

Also - what's with the mix of .cmd files for Windows and then .sh
scripts down in the directories?

budden

unread,
Oct 16, 2015, 4:56:29 PM10/16/15
to
Hi!

> Just downloaded the zip, you may want to clean it up a little bit (for
> instance, look at clcon/quicklisp/local-projects/budden-tools).
That's nice. But hmm, there are even things that I should not have published at all... Removed file release from the net, cleaned up a bit, wait for a next file release in about a week (with some new features of course :)

> You have a lot of temporary files and other gibberish in there.
I have cleaned some things now, but inevitably it will occur again. After all, it is alpha, total alpha in all respects :) Just ignore existance of temporary files and useless fasls for now. In a time I'll make a command to clear them out.

> In clcon/quicklisp/local-projects/oduvanchik you have some files with
> unicode in their file names.
I found just one and removed it. Am I right?

> Also - what's with the mix of .cmd files for Windows and then .sh
> scripts down in the directories?
That's simple: development is cross-platform. I keep all stuff relevant to development processes in the repo. E.g. readmypipe.sh is used for logging. If something is undocumented and unclear, just don't run it. Special case is SBCL source. It does contain many command files, but I didn't run them. I only unpacked SBCL sources to have them at hand and to see how my IDE locates definitions from them. SBCL sources do not necessarily match exactly sbcl executable included. Also there was some messing with contribs dir which presents both in source and in binary SBCL distributions.

P.S. Meanwhile I have added find-and-replace facility to editor.
But problems with oduvanchik-backend still persist. I guess problem is in my glue code.

budden

unread,
Oct 20, 2015, 2:05:27 PM10/20/15
to
Hi! I have downloaded a new release 0.2.6 of clcon - cross-platform, tcl/tk based common lisp IDE.

News are scant at this release:

- Added "find in files" tool. When compared to EMACS, I found a great advantage having as many search result sets as I want. Normally, grep command in EMACS has only one buffer, when you do new search, old results are discarded, which is very inconvinent. Also I need less keystrokes to invoke search on my project sources.
- Rather primitive Replace command for editor
- Modified bufferes in the editor are marked with asterik
- Сleaned up some trash files in the release
- One nasty bug in editor was fixed, and some other bugs too

File release for Windows: https://bitbucket.org/budden/clcon/downloads/clcon-0.2.6.zip

Screenshots: https://bitbucket.org/budden/clcon/wiki/Screenshots

Homepage: https://bitbucket.org/budden/clcon

budden

unread,
Oct 27, 2015, 6:11:24 PM10/27/15
to
Hi! We have version 0.3.0 of clcon - cross-platform, Common Lisp IDE.
News:
- editor is robust enough to say that it really does work
- background syntax highlight (editor opens 5mb file in two secons)
- added "list file definitions" tool
- opening paren highlighting
- warnings when closing modified file or exiting with modified files

File release for Windows: https://bitbucket.org/budden/clcon/downloads/clcon-0.3.0.zip

Marco Antoniotti

unread,
Oct 28, 2015, 5:35:19 AM10/28/15
to
On Tuesday, October 27, 2015 at 11:11:24 PM UTC+1, budden wrote:
> Hi! We have version 0.3.0 of clcon - cross-platform, Common Lisp IDE.
> News:
> - editor is robust enough to say that it really does work

Does it indent like Emacs does? 3:)

Cheers
--
MA

Madhu

unread,
Oct 28, 2015, 5:46:51 AM10/28/15
to

* Marco Antoniotti <7ae01dcd-cff2-4086...@googlegroups.com> :
Wrote on Wed, 28 Oct 2015 02:35:14 -0700 (PDT):

| Does it indent like Emacs does? 3:)

I don't know why you think cl-indent does a good job, or why you think
it is a good thing, or why you think that emacs indentiion of Common
Lisp code is somehow "canonical". I assume you've used the lispworks
editor, and so have had something better to compare cl-indent with. So
there is really no excuse for championing cl-indent. I can give you a
list of more than a dozen bugs and inconsistencies in cl-indent and a
catalogue of inconsistencies between changes to cl-indent, including
changes where I notified the committer introducing the bug, but these
seem to have been introduced precisely for those disruptive
reasons. ---Madhu


Marco Antoniotti

unread,
Oct 28, 2015, 8:44:52 AM10/28/15
to
Of course cl-indent is not perfect. LW is pretty good. But what *is* substandard is anything that does not even come close to those two (et similia).

Test:

1 - Write '(if (something)'
2 - hit Return
3 - hit "Tab" twice

If the second tab gets inserted regardless, the "indentation" engine is broken (at least in my book).

Cheers
--
MA

budden

unread,
Oct 28, 2015, 9:38:11 AM10/28/15
to
Hi!

>Of course cl-indent is not perfect. LW is pretty good. But what *is* >substandard is anything that does not even come close to those two (et >similia).

I use oduvanchik as an indentation engine. Oduvanchik is essentially a renamed and stripped down hemlock. It is very probable that Lispworks editor is hemlock-based too. That's it. I didn't touch the indentation code and I have no such plans. I even never look at slime.el, as I'm scared with consequences of GPL violation.

> 3 - hit "Tab" twice
Nothing happens on second hit, Tab is idempotent.

> On Wednesday, October 28, 2015 at 10:46:51 AM UTC+1, Madhu wrote:
> > * Marco Antoniotti <...7...@googlegroups.com> :

budden

unread,
Oct 28, 2015, 9:44:20 AM10/28/15
to
среда, 28 октября 2015 г., 12:35:19 UTC+3 пользователь Marco Antoniotti написал:
> Does it indent like Emacs does? 3:)
P.S. there is indent-region command in lisp menu. You can just install clcon and test it on any of your files.

I tried it just now for one of my files. THere _is_ a difference with EMACS. Obviously, clcon does not understand that bt:with-lock-held is a macro.

I put it to a tracker with "minor" priority.

https://bitbucket.org/budden/clcon/issues/117/use-semantic-information-in-indentation-eg

budden

unread,
Nov 6, 2015, 5:16:32 PM11/6/15
to
clcon 0.3.1 for Windows released. No Linux version.
clcon is packaged together with cl-stirling-engine,
second order Stirling engine analysis program.
No separate download of clcon is available in this version.

clcon has some new features:

- package is displayed in the console and is used
to find source when editing a file; previously,
cl-user was always assumed
- clco:load-system-for-tcl tries to collect
compilation notes to a browser. If some errors are
not handled by SWANK and debugger pops up, we have
two items in "file" menu to open current asdf
component and current system. This is convenient,
but my patches to asdf were rejected, so I need some
hotpatching to do that
- we are now based on a forked SWANK and forked
NAMED-READTABLES to handle readtables more correctly.
No hotpatching was developed. I hope my pull requests
will be accepted and this inconvinience will go away.
- new primitives for file search: clco:find-string-in-files
and clco:files-by-glob-list
- fixed some really nasty bugs and introduced some new bugs

I have no more goals in clcon development but closing 56 issues.

After that, 1.0 release is expected but it can take up to a
one year as I expect this will be a low-priority background job.

budden

unread,
Dec 19, 2015, 2:42:32 PM12/19/15
to
Hi!

> I have started a new attempt on
> Common Lisp IDE, it is named clcon.
> See screenshots at
>
> https://bitbucket.org/budden/clcon/wiki/Screenshots
>
> Goal is a cross-platform Common Lisp IDE with
> more "modern" look and feel, under permissive license.
>

I have just released 0.3.4 version of clcon. It is still alpha and rather unreliable, but I do all my lisp development in it so it continues to develop according to my needs.

I added only one major feature in this release, a hyperdoc lookup.
Minor feature is lisp identifier search mode (in contrast to word search mode found in editors).

I see no great interest from other people. It looks like the project is rather useless (not for me, of course).

So I'm going to localize it to Russian and to remove all English text content.

I plan to use it for some domestic projects. Keeping two versions is rather labour-intensive and I have no motive to go on with it.

If you think that clcon can be useful for you, please inform me before 01.01.2016.

Project site is https://bitbucket.org/budden/clcon/overview

Dimitri Fontaine

unread,
Dec 19, 2015, 4:41:31 PM12/19/15
to
budden <budde...@mail.ru> writes:
> I see no great interest from other people. It looks like the project is rather useless (not for me, of course).
> So I'm going to localize it to Russian and to remove all English text content.

So, you would like more interest from the outside, but as the project
still is too new to have gotten that, you're killing 99% of the chances
to get outside interest by removing English support?

I wouldn't.

Regards,
--
dim
0 new messages