// r : voidfunc(snippet ID), called in module queue static AutoCloseable dm_onSnippetEdited(final VF1 r) { dm_requireSnippetUpdatesModule(); final DynModule m = dm_current_mandatory(); ret dm_vmBus_onMessage('snippetUpdate, voidfunc(fL l) { switch to m.q(); S uri = getString(l, 1); new Matches m; if (swic(uri, "/edit/", m)) { S snippetID = fsI(firstIntAsString(m.rest())); callF(r, snippetID); } }); } static AutoCloseable dm_onSnippetEdited(fS snippetID, final Runnable r) { ret dm_onSnippetEdited(voidfunc(S id) { if (sameSnippetID(id, snippetID)) callF(r) }); }