freenode/#clim - IRC Chatlog
Search
3:18:57
beach
When I was in Sweden, I saw posters for some commercial product saying "Who cares about beach in 2018?" I can't remember the product, though.
3:20:27
loke
beach: I think that refers to a popular saying in winter that they are about to get ready for “Beach 2018”, by eating more healthily or workout or whatever. I.e. referring to their upcoming beach body
3:22:24
loke
beach: Anyway, I am really stuck... I spent several hours last night trying to make sense of input histories.
3:22:40
loke
When I thought I figured it out, the behaviour still doesn't fully match expetcattions.
3:26:11
loke
The ACCEPT call on line 179 calls a custom acceptor that calls into one of two separate accceptors depengind on if the first character typed is a :
3:26:59
loke
Now, I have lots of problems all over the place, but I'll just concentrate on one of them right now, because that's the one I have been able to work around:
3:28:09
loke
The call on line 179 ends with :history 'maxima-native-expr. As best as I can tell, that should allow me to browse the input history for all inputs of that type. However, the code as written gives me _NO_ input history.
3:28:45
loke
However, if I change that line to read: :history 'maxima-expression-or-command, then I will get all the history, BUT also including the :-commands, which I do not want.
3:29:45
loke
I've traced internal DREI calls that adds the results to the input history, and I notice each entered command is added to _two_ separate histories. One under the type 'maxima-native-expr and another one user the type 'maxima-expression-or-command
3:30:43
beach
loke: I am having a private conversation with someone. I'll get back to reading this is a little while.
3:55:42
loke
Issue one: Load the file into emacs in a freshly started SBCL and type C-c C-k to compile it. Then run (cmdline-test:open-foo-frame)
3:56:04
loke
At the prompt type anything, like “foo” or whatever. And press Return. You should now get an error.
3:56:54
loke
Then, restart SBCL fully, and recompile the file again using C-c C-k. Then press C-C C-k again to compile it again (i.e. compile the file twice after restarting SBCL). Then start the program again and type something. notice how you don't get an error this time.
4:13:13
beach
It is a bit after 6am. The cleaning lady comes in two hours. I must get rid of all the junk that prevents her from working, and I must make sure I have had my shower, that the dishwasher is empty, etc., etc.
4:16:01
beach
loke: My guess is that your EVAL-WHEN are not sufficient for the presentation types and such.
4:17:05
beach
I mean, put the code that depends on the type existing in a separate file to be loaded later.
4:17:30
loke
Yeah. I do that in climaxima, but in this case I wantd to create a simple singe-file test case for you :-)
4:18:50
beach
There are a bunch of phrases in the CLIM spec, like "Implementation are allowed to...." that might be taken advantage of by McCLIM and that make this example not work.
4:20:40
beach
loke: I grepped for :history in the McCLIM source code, and I don't see it used the way you use it here. Not even in the listener.
4:22:21
loke
If you look at like 142 for example, the use of :HISTORY there is superflouous. It becaically replicates the default behvaiour
4:22:43
loke
Anyway, If you type a few commands in the test case, and then type M-p you'll see the weird behaviour
4:25:30
loke
Also, press M-p a few times, and you'll find yourself with an error because it tries to display NIL from the history
4:25:52
loke
When I added some tracing I noted that it alwas seems to add a NIL to the history no matter what I do. I have no idea where that one comes from
4:26:42
loke
However, the CLIM code has some special-casing for the type CLIM:EXPRESSION (which is a supertype of CLIM:FORM)
4:27:52
loke
It seems to me that much of the input framework is centred around the idea that you will always type Lisp forms. EVen doing plain text input isn't part of the standard infrstructure (hence, by READ-PLAIN-TEXT function in my example)
4:29:13
loke
I'm starting to think that I might be the first person in history to try to create a CLIM REPL which is not Lisp :-)
4:33:09
loke
If I get the history working, the main strangeness right now is that I would like to be able to click on a Maxima expression and in doing so insert the formula into the expression that is being typed. CLIM-Listener can do it, but when I click on one now, it simply replaces what I'm typing with the forumla and immediately submits the command.
4:36:16
loke
The solution might be relating to PRESENTATION-REPLACE-INPUT. You can see that I already had to implement that one. Note how I had to specialise on DREI:DREI-INPUT-EDITING-MIXIN so that my version gets called. I think that this generic function should probably have the OBJECT as its first argument rather than the STREAM, for this reason.
5:37:53
beach
Thanks. I'll research it later too. Only half an hour until all hell breaks loose here.
5:41:01
loke
Found a picture of Beach: https://www.gettyimages.co.uk/detail/photo/office-worker-wearing-astronaut-space-helmet-royalty-free-image/878003694
5:43:19
pillton
That is it except the facial expression is wrong. It should be a scowl or show angst.
7:51:01
beach
loke: The listener also stores commands that start with `,' on the history. I understood that you were saying that it didn't. I must have misunderstood.
7:53:29
loke
In more general terms; I'd like to have some degree of control as to what and how the entries are displayed.
8:19:04
beach
loke: The listener also calls CLIMI:PRESENTATION-HISTORY-ADD when I think it shouldn't. But it deals with it by defining it to enter something of type EMPTY-INPUT. Se the method on read-frame-command in listener.lisp
8:26:41
loke
I just put a breakpoint on PRESENTATION-HISTORY-ADD, and it's funny thast this function is called before I even type a single command.
8:27:27
beach
So it somehow avoids putting it on the history by using the type empty-input, whereas you are using foo-argument.
8:27:47
loke
And if I type a command, it adds _three_ entries to history: the EXPR, the COMMAND-OR-EXPR, and a NIL
8:28:49
loke
I believe those are added to different histories, because of I dump the historyes I get different content. _either_ an EXPR or EXPR-OR-COMMAND. So either the historyes are begine completely rewritten, or there is more than one active.
8:29:25
loke
(well, “it” refers to the code path inside clim/drei that eventually leads to PRESENTATION-HISTORY-ADD being called)
8:31:19
loke
beach: I don't know... I could rewrite the sentence as: “when I type a command, PRESENTATION-HISTORY-ADD is called three times with different arguments”
8:32:09
loke
But I beliebe it happens in my test application too, although I haven't tested... Let me check that.
8:32:11
beach
And the difference between the listener is that in your application NIL is of the correct type to be added.
8:32:30
beach
But in the listener, the "hello" (the default) is of a different type, namely empty-input.
8:32:57
beach
I think that is why your NIL gets added, whereas the "hello" of the listener does not.
8:33:03
loke
Right. But maxima-empty-input in my code, corresponds to empty-imput in the CLIM-Listener.
8:34:35
loke
But in climaxima I do that, and I have the same behaviour there. Let me change my test code to better emulate.
8:41:13
beach
What happens if you use something other than NIL. There must be a reason the listener uses "hello".
8:42:21
beach
Like, I don't understand why presentation-history-add is called before anyone is typing anything.
8:42:55
loke
hmm... Wait a second... I now recall seeing something in the ocmments that might explain that... Hang on
9:00:09
beach
loke: Do you want me to investigate further, or can I count on you to make some progress first?
9:02:25
beach
OK, I'll see what I can do. I can't really work on it full time as you probably understand.
9:03:43
loke
And I am grateful. I would never have gotten to the point where I am right now without your help.
9:04:21
beach
The new "purpose" is to do less coding, more specification, more delegation, and more of helping others getting their work done.
9:35:51
beach
loke: There is a special variable *active-history-type* that lets you filter the types that you get from the history with M-p.
9:36:18
beach
Perhaps if you restrict that type to exclude commands, it will do something closer to what you want.