freenode/#clim - IRC Chatlog
Search
10:31:46
jackdaniel
can you confirm that primary selection paste (nor copy) doesn't work between clim and other applications?
10:32:21
jackdaniel
(as in setting markings and middle clicking somewhere - and other way around - selecting some text and shift+mouse-m
10:33:30
jackdaniel
another question: why pasting requires separate (shift+insert) gesture and can't work fine with yank command?
10:34:14
jackdaniel
yeah, I'm testing it and it doesn't seem to work. I thought that during rewrite I've introduced a regression, but it doesn't work on your branch either
10:36:01
loke
The reason Control-Y doesn't paste from the clipboard is because iin DREI, C-y is pasting from its own internal kill-ring.
10:37:13
ecraven
jackdaniel: for me, pasting in emacs is a definite mess... it seems copy/paste is a mess in general on X :-/
10:37:22
loke
It monitors when the clipboard is taken, and if the most recent global clipboard update happened before the most recent addition to Emacs own internal kill-ring,
10:37:38
jackdaniel
ecraven: thanks to loke's changes peer review I know more about copy/paste on X11 than I would want to ,-)
10:37:48
loke
(and, a paste from the clipboard in Emacs will also cause the kill-ring to be updated)
10:38:42
loke
jackdaniel: Well. I'm not sure. There are two ways: One is to listen for some specific X-event. There is one sent when the ownership changes.
10:39:17
loke
The other would be to check the timestamp of the clipboard object (that takes a roundtrip to the owner though, and would have to be done every time a paste is made, so I doubt that's what happens)
10:40:17
jackdaniel
ecraven: querying wouldn't work without violating abstraction barrier between backend and client code
10:40:55
loke
jackdaniel: Yeah. I'm also not entirely sure you can get the timestamp when the object was placed on the clipboard, so you'd probably have to monitor the clipboard notification events.
10:41:47
loke
Anyway, I didn't feel like trying to get that working, so I settled on implementing an alternative way of pasting.
10:42:32
ecraven
ah, have you thought about the different types of pastes? like firefox supports plain text, html, and multiple others, when you select something?
10:43:07
loke
ecraven: That is supported alrady. And I have a work-in-progress branch where you can select rich text from a stream pane. Didyou see the video clip I made?
10:43:39
loke
ecraven: https://peertube.mastodon.host/videos/watch/69576e81-f76a-42ec-b130-836ffe8b4f9d
10:43:42
ecraven
one of these days I'll switch back to CL, but I just love Lisp-1 too much so far :-/
10:45:17
ecraven
from what I tried, chromium and firefox for example send totally different html paste content when selecting the same text, so it's really hard to have "generic" html pasting support :-/
10:45:47
loke
ecraven: It's supported, but I haven't implemented anything that uses it because I'd need to link Closure-HTML :-)
10:46:33
jackdaniel
re primary selection not working: it doesn't work *with my touchpad* which has three physical buttons
10:47:54
loke
jackdaniel: Why don't you rebase your changes on top of mine, and then it can all be pushed together?
10:48:37
jackdaniel
and I'm going to push a branch with one big change commit, but I still think that these things will need to be reset and organized into commits again
10:51:03
jackdaniel
but pull requests should be as clean as possible to keep "official" branches history clean and easy to reason about
11:42:54
jackdaniel
loke made a demo with xrender extension where it works nicely, but this change is disabled because we want to introduce proper xrender support (not one-functionality kludge)
12:18:41
jackdaniel
ebrasca: please report the issue on github with the code you've mentioned. also include these images and explain the values there
12:24:27
jackdaniel
if you ask if I did go through all of them a minute ago to check – no, I'm not sure. if you encounter it please paste a link. that said I do not recall such issue being reported.
12:51:52
jackdaniel
ebrasca: I'd prefer if you had put all resources on the issue ticket (instead of providing links to them)
13:06:16
jackdaniel
for the reference: to put image on github, you copy the image and then paste it in a buffer (with standard bindings like C-c, or in case of images by right mouse click and select "copy" and C-v)
13:06:50
jackdaniel
markdown provides comment for blocks of code (with optional symbol highlight), so when you paste snippets you may put them
13:22:23
jackdaniel
there is an image viewer demo in clim-examples, but I think that's what you've derived your code from
13:44:55
ebrasca
I have try with image-transform-demo.lisp and image-viewer.lisp. My code is from image-transform-demo.lisp .
14:57:50
jackdaniel
loke: more I think about clipboard more I'm convinced request should return synchronously (nb: I have a clear idea about implementation)
14:59:18
loke
You can see what happens if you put a SLEEP in the function that returns the clipboard content
14:59:35
loke
Then try to paste into... hmm... I think Chrome, or was it Firefox? One of them uses a synchronous API
15:00:39
jackdaniel
also when user wants to paste something, then he clearly wants synchronous operation
15:01:21
loke
As you may have seen from my previous questions and things I talked about while building this, it's not as straightforward as one might think, and there is often no "obvious" best way to do things.
15:12:30
loke
jackdaniel: I just thought of a problem with synchronous access though... What if the owner and requestor is in the same process, and the requestor holds a lock that is needed when the "supplier" generates the output. You'll end up with a deadlock.
15:14:29
jackdaniel
publish and request is always called from CLIM process, events are processed as always only in port process
15:18:18
jackdaniel
it may be much faster as it is specified, it is a matter of optimizing slow code paths
15:19:29
beach
ebrasca: CLIM is a big specification. Getting it right is already hard, and many people are still working on that. Making it faster is important but less so that getting it right.
15:20:39
jackdaniel
we do not support double buffering, so they are very apparent for frames which have many output records
15:21:23
jackdaniel
many things are suboptimal as well (like patterns – images included); rendering images will be improved when we switch to xrender
15:21:43
jackdaniel
instead of transforming them in software they will be rendered by x11 with transformation
15:23:33
jackdaniel
like xf86-video-intel which provides hardware support for some drawing primitives
15:25:47
jackdaniel
having hardware capable of speeding operations 100x is just a half of the story, you need to have apis to access this hardware capabilities
15:31:22
loke
With X11 you get hardware acceleration for Xrender. You can see the incredible difference in performance between the software and Xrender version of of image transform for example.
15:32:10
loke
So clearly Xrender is the way to go to improve performance in general. I also did a prototype implementation that used Xrender for scrolling. It was very fast. Hoewever, it was unreliable, and requires double-buffering to to work correct, so I never finished that work.
15:33:18
loke
ebrasca: But with it, the image-transform demo is realtime (well, it rotates at 60 fps :-) )
15:39:46
loke
ebrasca: https://peertube.mastodon.host/video-channels/41fdcc1b-a5c3-4f4b-95bb-e5358597c25d/videos
15:44:07
TMA
because the mindset to understand maths is of the same ilk as the mindset of deliberate programming (as opposed to accidental programming, which is "just" some random poking around without understanding or mental model)
15:45:21
jackdaniel
it is called mental discipline. looking at some (very popular software) I have my doubts about that though
15:46:15
jackdaniel
but there is not much value in such differentiation then except saying: programmers with mental discipline have mental discipline and we call that "deliberely programming"
15:57:57
ebrasca
With (ql:quickload :maxima) I get "Failed to find the TRUENAME of /home/ebrasca/quicklisp/local-projects/maxima-code/src/autoconf-variables.lisp:"
16:03:43
loke
ebrasca: Take a look at how the launcher works when you install it normally (using make/make install)
16:06:26
loke
It's slightly different from regular CL applications. The main entry point for text-based Maxima is CL-USER::RUN
18:07:19
jackdaniel
could someone help me interpret process-next-event wait-function behavior? (http://bauhh.dyndns.org:8000/clim-spec/8-1.html#_303)
18:08:30
jackdaniel
why "if the wait function returns true, the predicate should return two values false and :timeout"?