« first day (31 days earlier)      last day (23 days later) » 

08:18
@cfr I haven't yet pushed any updates to GitHub, because the intermediate stages of the code were a mess. It should happen during this week.
@cfr Interesting idea. The problem is that most of the time, Memoize doesn't know the reason for abortion, either. The only time Memoize aborts of "its own free will" is when an error occurs, which should be clearly visible from the log. But most of the time, from its perspective, someone (like some package) requests the abortion, and Memoize obeys. So the burden of explanation would be on whoever calls \mmzAbort, and I'm not sure I want to have an obligatory explanation as a part of UI.
 
5 hours later…
cfr
cfr
13:28
@SašoŽivanović OK, so if I'm the one enabling memoization, how do I issue a message if I'm using something like auto={chronos}{memoize}?
@SašoŽivanović Thanks.
@cfr Well, you can always say \PackageInfo or whatever to give extra info to the author ...
13:46
@cfr On second thought, Memoize already informs the user about activate=chronos, if that happens. Also, I guess you should not enable memoization in your package, as you don't want to force the author to use Memoize; but here I might be only overly precise about terminology, as auto does not enable memoization.
 
3 hours later…
cfr
cfr
16:20
@SašoŽivanović It's all conditional. None of it runs unless memoize is already loaded. I have this in \AtEndPreamble:
  \@ifpackageloaded{memoize}{%
    \mmzset{%
      auto={chronos}{memoize},
    }%
  }{% nid yw hyn yn memoizable byth bynnag
    \pgfkeys{/handlers/.meaning to context/.code={}}%
  }%
Everything in chronos.sty is conditionalised, but I want .meaning to context unconditionally for use in style definitions just to simplify things. At least, it works fine when I don't load memoize, so I'm not forcing anything. But I think something I've done has changed the number of compilations required and I can't figure out what.
@SašoŽivanović If the context changes during memoization, does memoization get aborted? On the first compilation, say a style is added using .meaning to context would memoization be aborted and take place only on the second run?
@SašoŽivanović 'Enable' in the 'making able' sense rather than the 'switching on' sense.
16:38
@cfr you could say foo/.meaning to context/.try btw, have I defined this handler? (I'm mobile at the moment)
cfr
cfr
@SašoŽivanović Yes, but then users have to remember to always use /.try.
@cfr no, if context changes during memoization, we don't abort. Some contexts can obly be figured out by compiling the code (so memoizing), \refs are an example of this.
@cfr have you tried trace to help you figure out the culprit?
cfr
cfr
@SašoŽivanović No. I've been thinking about Marx.
In other news, I managed to clean up most of the changes today, so I believe I'll push the wip version to github tomorrow.
cfr
cfr
Plus it does work. I just don't understand why it takes another run.
16:46
@cfr well, that's why i wrote memoizable which noone wants to use 😁
@cfr admirable 🤪. Trace helps me with funny "delays" a lot.
cfr
cfr
17:22
@SašoŽivanović I was teaching it.
@SašoŽivanović I did try memoizable. Once. ;)
@SašoŽivanović I can't even come up with conditions to reproduce it. Maybe I should just leave the tracing code around a figure and wait.
@SašoŽivanović So I got a trace from an aborted case followed by a non-aborted one. If I delete the memos after running makeindex, maybe? But I'm not sure what I'm meant to learn from the output
Package memoize Warning: Memoization was aborted on input line 3099.

[tracing memoize] Entering \Memoize (enabled, normal mode) on line 3130
[tracing memoize]   Code: \begin {chronos} [ lines on line, chronos coords={1,5
00,750,1000}, heading={heading}{chronos year 1}{chronos year 1000}, subheading=
{upper subheading}{chronos year 1}{chronos year 500}{chronos upper subheadings}
, subheading={lower subheading}{chronos year 1}{chronos year 750}{chronos lower
 subheadings}, ] \chronosperiod {dates=1000:1999,name=period below} \chronoslif
In this case, it produces 12 rather than 30 externs. A lot of the failures are from a sequence of images, but it memoizes the final one.
\mmzTracingOn
\begin{figure}
  \begin{adjustwidth}{-\tewadjust}{0pt}
    \centering
    \subcaptionbox{\Chronosstylelabelname{}: \keyname[type=chronosstyle,idx post=sample output\string\idxeg]{lines on line}.\label{subfig:lines-on-line}}
    {%
      % ateb: tex.stackexchange.com/a/324453
      \begin{chronos}
        [
          lines on line,
          chronos coords={1,500,750,1000},
          heading={heading}{chronos year 1}{chronos year 1000},
          subheading={upper subheading}{chronos year 1}{chronos year 500}{chronos upper subheadings},

« first day (31 days earlier)      last day (23 days later) »