[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.lisp

clcon - emerging Common Lisp IDE

budden

8/24/2015 10:22:00 PM

Hi!

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

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

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 :)
31 Answers

budden

9/1/2015 12:25:00 AM

0

Hi!

Project goes on merrily. Screenshots are here:

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

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...

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

9/5/2015 9:28:00 PM

0

Hi!

Declared https://bitbucket.org/budden/clco...
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

9/5/2015 11:31:00 PM

0

budden <budden-lisp@mail.ru> writes:

> Declared https://bitbucket.org/budden/clco...
> 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?

If we have to choose between the two, the later.

Have fun.
--
__Pascal Bourguignon__ http://www.informat...
â??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

9/7/2015 11:00:00 PM

0

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

9/7/2015 11:52:00 PM

0

budden <budden-lisp@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
2. documentation page (hyperspec, docstring, quickdoc)
4. find in files

--
__Pascal Bourguignon__ http://www.informat...
â??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

Marco Antoniotti

9/8/2015 7:45:00 AM

0

On Tuesday, September 8, 2015 at 1:52:26 AM UTC+2, informatimago wrote:
> budden <budden-lisp@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

9/8/2015 12:22:00 PM

0

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... ,
http://quickdocs.org... ,
https://github.com/marijnh/cl-tk/search?utf8=%E2%9C%93&q=unregi...

budden

9/21/2015 8:56:00 PM

0

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

9/22/2015 8:24:00 AM

0

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

9/22/2015 1:00:00 PM

0

Marco Antoniotti <marcoxa@gmail.com> writes:

> 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
>

Agreed

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