Search
Wednesday, 13th of June 2018, 13:57:46 UTC
15:50:14
loke
I have started to understand more of the DREI stuff. At least how it works with input eidting.
15:50:24
loke
It's... well... customising this stuff isn't pretty
16:08:07
beach
Not sure what to do about it.
16:21:05
loke
https://github.com/lokedhs/McCLIM/blob/master/Libraries/Drei/input-editor.lisp#L799
16:21:07
beach
Not very alert. Tired after a long day.
16:21:17
loke
That's where the magic happens for the Lisp reader
16:21:48
loke
TO get something working for Climaxima, I had to rework that code a bit, and ended upw ith this:
16:23:39
loke
https://github.com/lokedhs/maxima-client/blob//src/cmdline.lisp#L122
16:25:00
loke
https://github.com/lokedhs/maxima-client/blob/new-reader/src/cmdline.lisp#L122
16:25:47
beach
There is a lot of overlap there, right?
16:25:55
beach
Might call for some code factoring?
16:26:50
loke
Sorry, I committed to the wrong branch
16:30:56
loke
https://github.com/lokedhs/maxima-client/blob/new-reader/src/cmdline.lisp#L111
16:31:32
loke
Specifically, look at the hack I had to come up with in order to detect when Shift-Return was pressed so that I can support multiline input
16:33:53
loke
It would be really nice if some of the stuff I do there could be done through official API's
16:34:18
beach
You are uniquely well placed to start designing such an API.
16:34:30
loke
I had to dig quite deep into private API's, and I have no idea if my LOGAND with 256 is even going to work on all platforms :-)
16:35:45
beach
You would not be on your own. You could do what I do. I write things down, submit the suggestion for review, revise, iterate.
16:36:45
loke
Yeah. I'll look into it :-0
16:37:25
beach
One more thing. I think it natural for APIs to be invented this way.
16:37:37
beach
Initially, there is only one application, so it doesn't matter.
16:37:51
beach
Then, more applications come along who want to do similar things.
16:38:13
beach
So then it is time to think, generalize, design, etc.
16:39:28
beach
What I am trying to say is that I am not accusing the authors of that code of bad design.
16:39:54
beach
moore33 and Athas was it?
16:40:28
loke
But what has become very clear to me (as I mentioned earlier) the code suffers from two things:
16:40:49
loke
1) It's almost purely focused on supporting Lisp interactions
16:41:17
loke
2) It's apparently written on very slow machines, because there is a lot of optimisations that might not be needed.
16:42:40
loke
You can take a look at the Lisp parser that is part of DREI.
16:43:12
beach
People also have a tendency to optimize without having done the work, i.e. either tested it or having a back-of-envelope calculation.
16:43:22
beach
Oh, I think I know that one.
16:43:36
loke
This is the function that returns the (possibly incomplete) form at point:
16:43:38
loke
https://github.com/lokedhs/McCLIM/blob/master/Libraries/Drei/lisp-syntax.lisp#L2011
16:44:25
beach
I wrote the initial version for sure.
16:44:51
loke
OK, am I correct in guessing that this is the origins of your parser stuff?
16:44:53
beach
Athas modified it of course. It used to be part of (first) Climacs. The Athas extracted the Drei part.
16:47:37
beach
Actually, I don't recognize it much. Must have been modified a lot by Athas.
16:49:44
beach
Sorry. Got to go. My (admittedly small) family announced that dinner is ready.
16:49:45
loke
beach: I mean that structural editing stuff you built for second climacs.
16:49:49
loke
I can't remember what you called it.
16:49:59
beach
Oh, no that's completely different.
16:50:04
beach
Everything in Second Climacs is new.
16:50:20
loke
Could we use second climacs for LCIM editing instead of DREI?
16:50:35
beach
That would be a good thing.
17:44:23
ym
Is McCLIM from quicklisp repo is broken?
17:45:10
ym
Trying to eval examples from documentation gives errors of different kinds.
17:47:39
jackdaniel
did you follow them verbatim? is the package correct?
17:47:51
jackdaniel
also, if you did copy-paste from pdf, then you'll get all sorts of errors
17:48:18
jackdaniel
[ pdf is known as a bad medium for having code copied from]
18:09:43
ym
You mean the CLIM 2 User Guide PDF is not the right source of examples or when copy-pasting from PDF-file it's possibly adds some extra characters which may cause errors?
18:10:31
ym
I tried different sources, HTML, PDF, writing myself.
18:11:03
jackdaniel
I mean that when copy-pasting from PDF-file it is possible to add some extra characters
18:11:08
jackdaniel
and it is nothing I could help with
18:11:31
jackdaniel
as of examples that doesn't work for you, mind sharing an example?
18:15:02
ym
http://bauhh.dyndns.org:8000/clim-spec/28-6.html#_1576
18:15:37
ym
This one for example gives: "The slot CLIM-INTERNALS::MAX-VALUE is unbound in the object"
18:16:16
jackdaniel
the first one (puzzle) is not a valid Common Lisp program (notice "...")
18:17:27
Inline
ym: watch out for apostrophes
18:17:44
Inline
ym: most are replaced with normal quotation marks
18:18:08
jackdaniel
regarding second example, it indeed seems to be broken
18:18:15
Inline
btw some of the examples in the pdf are broken yes
18:18:15
jackdaniel
please report issue on github
18:18:42
jackdaniel
I'd recommend looking at Examples/ directory in McCLIM sources
18:18:53
jackdaniel
they are better tested than snippets in the spec
18:19:18
ym
(defclass hello-world-pane (clim-stream-pane) ())
18:19:18
ym
(make-pane 'hello-world-pane)
18:19:38
jackdaniel
make-pane must be invoked in a dynamic context of application
18:19:50
jackdaniel
so you may call it for instance in :panes option for define-application-frame
18:20:03
jackdaniel
calling make-pane "outside" such context will lead to an error
18:21:13
jackdaniel
this coerced second example will work: http://hellsgate.pl/files/a6ee470d
18:21:49
jackdaniel
this decision is caused by the fact, that when you create a pane it must be associated with something it may be drawn on
18:22:05
jackdaniel
when you don't have a dynamic context of the application, then you have no windowing context
18:22:09
jackdaniel
so making pane doesn't make sense
18:22:28
jackdaniel
you may make-instance of your hello-world-pane (though I'm not sure if this would be useful for anything)
18:23:33
jackdaniel
as of being lispy, I don't know what is and what is not lispy. for instance whole CLOS-ology seems unlispy to me, but I'm sure 90% of lispers would agree that I'm wrong on that ;-)
18:24:18
ym
It makes sense for experiencing and learning. I'd prefer it return any kind of lisp object and REPL print it.
18:27:34
jackdaniel
ym: bright side of it is that if you run make-pane in clim-listener (which features repl) it shall work
18:27:53
jackdaniel
because you are indeed in a dynamic context of the CLIM application
18:33:12
jackdaniel
I tend to believe, that "proper" lisp programs tend more to be like frameworks than libraries
18:33:40
jackdaniel
the difference is that framework is something you build your applicaiton "in", while library is something you use "from outside"
18:35:18
ym
Definitely not a choice of mine then.
18:47:36
jackdaniel
I've added annotation to this example in clim spec
18:47:47
jackdaniel
slider should have initargs provided (because it is range-gadget)
18:48:00
jackdaniel
for instance – (c slider :min-value 0 :max-value 200 :value 25)
Thursday, 14th of June 2018, 1:57:46 UTC