freenode/#clim - IRC Chatlog
Search
3:14:46
beach
I think I finally finished the CST-to-AST system. There might be a few problems to handle, but it passes a lot of tests, so it can't be too bad.
3:30:01
beach
In terms of Second Climacs, I will now be working on turning a parse result of the Common Lisp syntax module into a CST. From there I will compute indentation, and convert the CST to an AST to detect compilation errors.
4:05:48
beach
Not only is it an interesting problem, It is also the minimum requirement for replacing Emacs for editing Common Lisp code.
4:22:58
loke
beach: It also uses SLIME to look at the specific function signatures of the macros, which is why the &body part indents correctly.
4:24:00
beach
It also doesn't know that something that looks like (let ....) is actually a LET special form.
4:25:04
beach
I don't even think that it checks that an occurrence of LET is actually the Common Lisp symbol with that name.
4:29:00
loke
I just checked. A bare LABELS gives the labels-style indentation, even in a compilation unit that does not import the CL symbols.
4:31:59
nyef
Mmm. I'm also not a fan of the way that emacs indents quasiquoted constructions, but I also realize that the correct way to do so actually depends on what's going on, and some of that may not be possible to determine automatically.
4:34:41
nyef
I'm doing some parsing. I have a (defun parse-whatever (input &key ...) `(,@(parse-field ...) ,@(parse-field ...) ,@(parse-field ...))).
4:36:48
nyef
Actually, now that I'm thinking about it, I need to do something about the repetition here. Not sure what yet, though.
4:39:43
slyrus
beach: all this knowledge of the language environment won't require the code be running in the same process as second climacs well it? i.e. will there some sort of protocol for connecting to other processes?
4:40:58
beach
slyrus: I am not planning a protocol to communicate with a different process. That means that some people, like Shinmera "will never use it".
4:41:53
slyrus
and there is the use case of a single editor talking to multiple processes, which I use from time to time.
4:42:29
slyrus
and my other goal for the ultimate editor is not just awesome CL support but "modes" for other languages, which would require some sort of inter-process communication.
4:42:40
beach
slyrus: That can still be the case, but it won't do that at typing speed, whereas the features I am considering are all at typing speed.
4:43:15
nyef
Somewhere in my pile of project ideas is a CLIM Listener that uses an "inferior" Lisp process.
4:43:47
slyrus
120 wpm? = 600 CPM = 10 CPS? I can't imagine you couldn't round-trip that to an external process, but what do I know.
4:44:12
beach
slyrus: I have to make priorities. I don't have the time to cater to other languages, especially since I use Common Lisp exclusively myself.
4:44:32
slyrus
true, but it would be nice if it were designed in such a way that others could add that support for other languages
4:48:01
beach
slyrus: The features I am planning now for editing Common Lisp are significantly better than what Emacs has. If you accept bad indentation, approximate knowledge of what symbols mean, having to hit a key in order to figure out indentation, and having to type C-c C-c to figure out what errors you made, then communicating with a different process is probably acceptable.
4:49:43
beach
slyrus: So I can very well see support for separate processes and for other languages that have these limitations. But my primary goal now is to make a very good Common Lisp editor.
4:53:02
beach
The downside, of course, is that, if a significant number of people are as determined as Shinmera is, then I will be the only user.
5:05:45
loke
beach: That said, there is the practicality aspect as well, witht he main issue being that some of my projects depend of CFFI, and that inherently makes the system unsafe.
5:07:46
loke
That said, the CFFI projects that I use tend to be really quite stable these days, so it might be less of a problem that one might think.
5:10:00
beach
Well, even McCLIM has a few lines of FFI. The problem happens when the application programmer uses FFI directly, as opposed to through a stable library that takes care of interfacing between Common Lisp and the foreign code.
5:15:48
beach
Right. That programmer is not an "application programmer" according to my terminology.
5:20:31
nyef
The required tools may well be different, but should not be gratuitously different. Having to change editors when changing from application code to core library code to system code is a bit much.
5:25:18
loke
I have written a few CFFI libs (on QL, now). After some initial hard crashes, I can now use them without general fear of crashes and resource leaks.
5:27:25
pillton
The entire purpose of Webassembly is to provide a compilation target which can be executed in an environment which is isolated from other components.