darwin / plastic

An experimental structural editor for ClojureScript
MIT License
147 stars 4 forks source link

GIF / screenshots / videos? #2

Closed atroche closed 9 years ago

atroche commented 9 years ago

Or even a description of what it does differently to paredit?

darwin commented 9 years ago

It is too early. I'm still experimenting. A content produced today would become obsolete really quickly.

It will implement paredit operations. I hope to provide better editing model by designing the editor around tree operations, not editing underlying text buffer.

GetContented commented 9 years ago

@darwin I'll be very excited to see some progress around this. A tiny progress video would be awesome.

I've been long thinking about structural editing. So far nothing has come close to how things should be! :) this holds promise! :+1:

darwin commented 9 years ago

@GetContented I'm glad you are interested. I'm sorry, I'm not ready to demo it yet.

There were many attempts to bring structural code editing to mainstream and all failed before AFAIK. This one will probably fail too. The fundamental problem which is still unsolved is described here, I think: http://boxbase.org/entries/2015/feb/2/bottom-up-down-dissonance. I have some ideas, I would like to try in this prototype, but I'm not there yet. Need to build some foundation first.

Think about it.

GetContented commented 9 years ago

I've been thinking about this problem for the last ten or twenty years. You're right in that the navigation and operations are the most tricky part. However, I think perhaps the problem is that the types of things we call "edits" are much more complicated than one would ordinarily think about.

For example, in clojure, it's often a fairly common thing to "wrap in a let form". This is a compound operation in a normal text editor, involving many operations. It really should only be one operation, though, and if one had a structural editor, it would be. "editing" becomes a kind of a programming language (sequences of operations).

If one pays a lot of attention to the intent of what one is doing as one is doing it, one notices these intention semantics all the time. It's not just limited to programming, either. It's any writing I do.

However, I've also been thinking about a model for expressing any programming intent in. I program in several languages, and I'm usually pretty annoyed that I have to rewrite the same code over and over, at different abstraction levels.

Anyway, that's another story.

Thanks for the reply. :) I'll look forward to what you might do.