as simple as that routine is, it's too complex for me to remember and apply consistently. I would rather spend many many hours coming up with a way to avoid those 5 seconds of effort.
On Fri, Jul 4, 2014 at 2:38 PM, 'Terry Brown' via leo-editor <leo-editor@googlegroups.com> wrote: > On Fri, 4 Jul 2014 11:03:08 -0500 > Kent Tenney <kten...@gmail.com> wrote: > >> >@shadow has persistent uas and gnxs. >> >> and done in an interesting way: the @shadow <file> >> organizer node ua contains the gnx of the file. >> >> @shadow doesn't parse .py, so it doesn't meet my needs > > Hmm, I often load files in Leo using the leoserver script to load them > from the command line, which pulls them in as @edit nodes. The if it > was a python file and I want it parsed, I just change 'edit' to 'auto' > and use "refresh from disk". There are some issues with refresh from > disk but it works in this context. Longwinded way of saying you could > use @auto to load and parse the file and the switch it to @shadow. > > But if there isn't one already, we should have a command that performs > "@auto" parsing on the selected node. It could also be used if you > write a bunch of little stub function definitions in one node and then > want them parsed into separate nodes for easy navigation. > > Cheers -Terry > >> Could the @auto <file> organizer ua be convinced to persist the >> gnx's of the last parsed file? >> >> ... and, thanks for the reminder, I'll see if c.db will be sufficient >> >> >> >> On Fri, Jul 4, 2014 at 10:00 AM, 'Terry Brown' via leo-editor >> <leo-editor@googlegroups.com> wrote: >> > On Fri, 4 Jul 2014 07:32:19 -0500 >> > Kent Tenney <kten...@gmail.com> wrote: >> > >> >> the problem with UNLs is they don't allow choices which involve >> >> changing the headline. If I change the name of a method, I don't >> >> want to lose the choices for the implementation of that method. >> >> >> >> Thanks for doing the work re: gnx setting. The code you provided >> >> works a champ. >> > >> > As long as you don't go from >> > >> > Node A ('ktenney', '20110117134522', 7) >> > Node B ('ktenney', '20140807232334', 7) >> > >> > to >> > >> > Node A ('ktenney', 'init_vars', 7) >> > Node B ('ktenney', 'init_vars', 7) >> > >> > or something like that. >> > >> > Also changing gnxs might break pointers to nodes from other places. >> > >> > You could just >> > >> > p.v.u.setdefault('space_vers', {})['id'] = uuid.uuid4() >> > >> > or more readable >> > >> > if 'space_vers' not in p.v.u: >> > p.v.u['space_vers'] = {} >> > p.v.u['space_vers']['id'] = uuid.uuid4() >> > >> > using the space_vers `namespace` assuming you'll want to store more >> > than one thing on the node. Like the index of the version you're >> > currently viewing, I guess. >> > >> > Oh, doh, but that's not helping at all with the @auto stuff. >> > >> >> The idea would be a table in the companion db which, on closing >> >> the Leo file would generate key/value pairs @auto tree UNL / gnx >> >> on opening the Leo file and after parsing the @auto file, the >> >> @auto tree gnx's would be reverted to the previous ones, simulating >> >> the persistence of regular nodes. No collision issues. >> > >> > And doh again, really should have read the whole email before I >> > started replying :-} >> > >> > Sounds like you're on a reasonable path. >> > >> > @shadow has persistent uas and gnxs. >> > >> > Cheers -Terry >> > >> >> Come to think of it, the table in the companion db could also >> >> trivially save the ua of the @auto tree nodes, ... at which point >> >> the @auto tree nodes are as rich a data store as a regular node. >> >> >> >> If the file had been edited outside Leo since Leo saw it last, the >> >> nodes in the db could be tagged as obsolete, or new records created >> >> accordingly. >> >> >> >> If the db were updated on changes instead of on closing, less >> >> would be lost in a crash. >> >> >> >> I'll ruminate this approach until the reason it won't work rears >> >> it's ugly. >> >> >> >> [-: >> >> >> >> On Thu, Jul 3, 2014 at 8:50 PM, 'Terry Brown' via leo-editor >> >> <leo-editor@googlegroups.com> wrote: >> >> > On Thu, 3 Jul 2014 18:30:32 -0500 >> >> > Kent Tenney <kten...@gmail.com> wrote: >> >> > >> >> >> p.gnx is not currently writable, would it be a big >> >> >> deal to make it writeable? If not globally, for >> >> >> @auto tree nodes? >> >> > >> >> > So wow, p.v.gnx is a property which only supports get, which is >> >> > why you can't write to it, which wasn't a surprise. What is a >> >> > surprise to me, it's not just returning a hidden variable, it's >> >> > calling g.app.nodeIndices.toString(v.fileIndex), where >> >> > v.fileIndex is a tuple like ('tbrown', '20140703203404', 26811) >> >> > i.e. username, start of session timestamp, count of gnxs created >> >> > in session. >> >> > >> >> > So it looks like making it writeable would be a big deal. >> >> > Although g.app.nodeIndices.toString() shouldn't take long to >> >> > execute, I do wonder how much total CPU time it takes, given how >> >> > often it must be called. Well, having said that, maybe it's not >> >> > called that much. Other than serialization, you're usually >> >> > dealing with in memory objects directly. >> >> > >> >> > Still, interesting I'd never looked at such a fundamental piece >> >> > of Leo. >> >> > >> >> > Kent - you could write to it like this: >> >> > >> >> > p.v.fileIndex = (p.v.fileIndex[0], my_info, p.v.fileIndex[2]) >> >> > my_info = p.v.fileIndex[1] >> >> > >> >> > although that trashes the timestamp and jeopardizes the >> >> > uniqueness. >> >> > >> >> > I think you should aim to use UNLs instead, seeing they can >> >> > easily persist in @auto etc. >> >> > >> >> > Cheers -Terry >> >> > >> >> > >> >> >> Thanks, >> >> >> Kent >> >> >> >> >> >> On Thu, Jul 3, 2014 at 7:46 AM, Edward K. Ream >> >> >> <edream...@gmail.com> wrote: >> >> >> > On Thu, Jul 3, 2014 at 6:40 AM, Kent Tenney >> >> >> > <kten...@gmail.com> wrote: >> >> >> >> The version I'm developing on is using a back end with a >> >> >> >> bunch of dependencies, but I'll see about simplifying it, >> >> >> >> Sqlalchemy + sqlite should be sufficient. (someone with sql >> >> >> >> chops could eliminate sqlalchemy) >> >> >> >> >> >> >> >> Dang, I've been testing choices development with regular >> >> >> >> nodes, but day to day I'm always working in <@auto >> >> >> >> somefile.py> trees, and gnx is ephemeral. Maybe a hash of >> >> >> >> UNL would work for primary key instead of gnx >> >> >> > ... >> >> >> > >> >> >> > Interesting coincidence of several recent trains of thought: >> >> >> > >> >> >> > 1. Recently I removed almost all clones from leoProjects.txt >> >> >> > and leoNotes.txt. You could call it a matter of >> >> >> > housekeeping, but I'm moving towards a workflow in which >> >> >> > clones exist only until a project is done. So they are >> >> >> > becoming more ephemeral. >> >> >> > >> >> >> > 2. ArmageDOOM mentioned this link on #leo: >> >> >> > https://news.ycombinator.com/item?id=7511979 >> >> >> > >> >> >> > One of the comments was that Leo's file format "hadn't taken >> >> >> > off". Without gnx's, Leo's external files would be identical >> >> >> > (or nearly so) with org mode. No, this doesn't really make >> >> >> > @auto processing any easier, because @shadow doesn't >> >> >> > parse .py, so it doesn't meet my needs > > Could the @auto <file> organizer ua be convinced to persist the > gnx's of the last parsed file?even org mode sentinels >> >> >> > will be unacceptable to most non-Leonine users. >> >> >> > >> >> >> > 3. I recently realized that clones are a bit of a nuisance >> >> >> > for find/change. The more clones I have, the more duplicates >> >> >> > there are when using F3 (find-next) >> >> >> > >> >> >> > For all these reasons, I am beginning to wonder whether clones >> >> >> > can somehow be put a little more behind the scenes. >> >> >> > >> >> >> > To be sure, clones (vnodes) are likely always to exist as a >> >> >> > basic capability, but if clones can be made just slightly more >> >> >> > "ephemeral" then gnx's might not be needed in external files. >> >> >> > For example, I wonder whether my work flow could be based on a >> >> >> > combination of Terry's bookmarks and (perhaps) automatically >> >> >> > generated (and thus more ephemeral) clones. >> >> >> > >> >> >> > In this context, your comments about hashing the UNL fits >> >> >> > right into the zeitgeist. Bookmarks are, iirc, just unl's... >> >> >> > >> >> >> > In short, this could be an important new direction for Leo. >> >> >> > No, we aren't going to get rid of clones. No, we aren't >> >> >> > going to get rid of sentinels. But there might be important >> >> >> > benefits if we can convert sentinels to org-mode format, and >> >> >> > if we can make clones more of the plumbing than the porcelain >> >> >> > (to use git terminology). >> >> >> > >> >> >> > In short, it looks like you are leading the way again, Kent. >> >> >> > >> >> >> > Edward >> >> >> > >> >> >> > -- >> >> >> > You received this message because you are subscribed to the >> >> >> > Google Groups "leo-editor" group. To unsubscribe from this >> >> >> > group and stop receiving emails from it, send an email to >> >> >> > leo-editor+unsubscr...@googlegroups.com. To post to this >> >> >> > group, send email to leo-editor@googlegroups.com. Visit this >> >> >> > group at http://groups.google.com/group/leo-editor. For more >> >> >> > options, visit https://groups.google.com/d/optout. >> >> >> >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the >> >> > Google Groups "leo-editor" group. To unsubscribe from this group >> >> > and stop receiving emails from it, send an email to >> >> > leo-editor+unsubscr...@googlegroups.com. To post to this group, >> >> > send email to leo-editor@googlegroups.com. Visit this group at >> >> > http://groups.google.com/group/leo-editor. For more options, >> >> > visit https://groups.google.com/d/optout. >> >> >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "leo-editor" group. To unsubscribe from this group and stop >> > receiving emails from it, send an email to >> > leo-editor+unsubscr...@googlegroups.com. To post to this group, >> > send email to leo-editor@googlegroups.com. Visit this group at >> > http://groups.google.com/group/leo-editor. For more options, visit >> > https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "leo-editor" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to leo-editor+unsubscr...@googlegroups.com. > To post to this group, send email to leo-editor@googlegroups.com. > Visit this group at http://groups.google.com/group/leo-editor. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+unsubscr...@googlegroups.com. To post to this group, send email to leo-editor@googlegroups.com. Visit this group at http://groups.google.com/group/leo-editor. For more options, visit https://groups.google.com/d/optout.