freenode/#clim - IRC Chatlog
Search
7:45:36
loke
https://github.com/mcclim/McCLIM/blob/clipboard2/Core/clim-core/presentation-defs.lisp#L557
7:46:51
jackdaniel
as I said in the pull request comment: if there is no need to make presentation-history-* generics please don't
7:47:08
jackdaniel
and if there is such a need, all functions in a group should be generic, not only the one which you need
7:48:12
loke
Also this: https://github.com/mcclim/McCLIM/blob/clipboard2/Core/clim/input-editing-drei.lisp#L167
7:48:34
loke
jackdaniel: Yes. I'm taking that to heart, and doing more research first before proposing anything.
7:49:22
loke
I'm experimenting with implementing an alternative presentation history class altogether. That should, at least in theiory, be possible as far as I can tell.
7:51:02
jackdaniel
they won't disappear if you close it. if you keep it please add tag [draft] so nobody will merge it by accident
7:52:22
loke
Hmm... Github has support for draft PR's, but it seems as though you can't downgrade a PR to draft. Only the other way around.
8:43:12
jackdaniel
I'm going to postpone page alignment feature for much later because I'll never get out of this rabbit hole
8:57:34
loke
After some more time looking at the presentation history stuff, I still argue that the original function should be generic. But also that you are right that _all_ of the presentation history functions should be generic.
8:58:01
loke
Nisar's suggestion is somewhat orthogonal, and I don't agree with him tthat that is a valid substitute.
8:58:09
jackdaniel
given it is an internal protocol they shouldn't be anything until internal mechanisms require them to be generic
8:59:00
jackdaniel
I think that Nisar is right, history is history and it should not be changed. if you want to skip some entries in yank, then yank is the place to do it
8:59:04
loke
That said, making them generic should be harmless,and allows us to experiment with the capabilituies before exposing the API
9:00:10
loke
jackdaniel: It's not just that. Look at the existing implementation. It checks if the new object is EQL to the old one, and if so, it odesn't add it. What if you _want_ to have duplicates? Or what if you want to skip duplicates if they are EQUAL, not just EQL?
9:00:15
jackdaniel
harmless-ish; each time I find a generic function with only one method I stop and think if this may be defun
9:02:12
loke
If not, I have to remap M-n and M-p and implement my own infrastructure on top of this, but that would just mean I replicate 95% of the existing functionality.
9:03:32
loke
The problem with me doing this is that I will end up modifying the _glboal_ definition of M-p and M-n, which stops history from working in CLIM-Listener, for example.
9:05:03
jackdaniel
imagine I change it in 2 weeks to defun (forgetting about all this), first thing happening: bug report that it doesn't work for you
9:05:42
jackdaniel
either way if it is not critical to climaxima I'd save it for another time. I've spending all my free time past few days on reviewing your code, so lets get done with it first
9:06:09
jackdaniel
nb: you've removed protocols from text-selection (like selection-bind), but you didn't remove them from Null backend
9:06:40
loke
jackdaniel: Well, it is kinda critical. Because right now, if you mix commands and maxima instrcutions in the command history, the application crashes when pressing M-p because “special commands” can be handled by the interactor (complicated long story)
9:13:02
jackdaniel
I think this is the only remaining place, but I didn't investigate. they are also mentioned in developer manual
9:17:05
jackdaniel
also please remove all new commands from builtin-commands and put them directly in the example
9:17:30
jackdaniel
we may change it later, but as I've said earlier, copy shouldn't be a command but rather action
9:17:59
jackdaniel
note, that it is possible (in principle, I'm not sure if it works on McCLIM), to have menu-button (which is a gadget, not command trigger)
9:34:26
TMA
loke: there is. I think it can be done by deleting the line specifying the commit during interactive rebase