Uwe Stöhr wrote: > Am 03.12.2015 um 21:57 schrieb Georg Baum: > >>> The system for saving relative paths, etc, seems a bit...delicate. >> >> Maybe, maybe not (so far only Uwe saw this). > > Also others have this problem as well, see e.g. Kornel's commits: > http://www.lyx.org/trac/changeset/d879599cec4902a1a3ea7aa7a8d7d24815701036/lyxgit > or > http://www.lyx.org/trac/changeset/42536a561606290ebdb90c46badbb451487f5293/lyxgit
None of these did change a path. >> One thing is clear however: Files with \origin /systemlyxdir/doc/ must be >> edited with a LyX binary that belongs to the directory where the file is >> located: > > Why is this clever? clear, not clever. > I don't see the benefit. There is no reason in my > opinion that the path is changed because all dependencies of the file > are existent and correct. So there is no obvious reason why the relative > paths are automatically converted to absolute ones. I was now able to reproduce the changed paths. According to http://www.lyx.org/trac/ticket/9815 this works as designed: If a document contains a valid \origin tag, then all relative paths are changed to absolute ones constructed from \origin on saving. This is in general the wanted behaviour (and the reason for having \origin at all), except for one case: Editing LyX documentation in a directory which is not the system dirctory as determined by the Package class in src/support. In this case, the \origin machinery assumes that the user did copy the doc to some other location, and that he wants to keep it separate from the LyX installation. This assumption is wrong if one edits the docs in the source tree, and I agree that something needs to be done for this case. Unfortunately I am not sure what to do. Here are the alternatives I can imagine: - Set \origin to unavailable for all docs in the sources. This would be easy to do, but also mean that we need to change it during installation (which is currently only implemented for autotools, not in cmake and not in the windows installer) - Implement some heuristic to recognize if docs in a LyX in lib/doc directory of a source tree are edited, and do not change paths if that is the case. Not very transparent for the user, and strange things can happen if the heuristic is wrong. - Do not change the paths in general if the files can be found using the relative paths. Has the additional benefit that this is also the wanted behaviour if I copy a whole directory of LyX files (including referenced graphics) to a new location. Disadvantage would be that the machinery does now depend on the presence of external files, and it is not guaranteed that the file that is found is the correct one. Are there other possible solutions? I prefer the last one, since it does not get into the way of people who know what they are doing and copy a LyX file including all needed dependencies. The current solution punishes these people by requiring them to repair the incorrectly changed paths by hand, or by forcing them to disallow setting \origin in the preferences (but the latter does not work if you receive files from collaborators which have \origin set). >> Uwe says he cannot run LyX from the build dir. I believe that this is a >> major time sink (installation is needed for testing a tiny source change, >> using the debugger is not possible etc), and I offered my help for >> investigation, but so far he did not want to investigate why running from >> the build dir does not work. > > That is not true. I know why this doesn't work. That is why the > installer exists: you need to specify the PATH variable linking to Perl > (e.g for texindy), Python (for our scripts), ImageMagick which needs > also Ghostscript, rsvg and/or Inkscape. If this is the only issue then you can run LyX from within MSVC easily: You can specify environment variables for debugging in MSVC, so you can set the correct PATH once in MSVC and then save a lot of time by not requiring installation for each tiny source change. I don't know by heart how to do it, but I can look it up if you want. Georg