Dear Tim, On Tuesday, July 6, 2021 3:30:40 AM EDT Tim Cross wrote: > Jacopo De Simoi via "General discussions about Org-mode." writes: > > Hi Greg, > > > > thanks for your comments! > > > > On Tuesday, July 6, 2021 12:43:54 AM EDT Greg Minshall wrote: > >> hi, Jacopo, > >> > >> i'm not convinced this is needed over and above your old "solution" of > >> using <> witn N-different source blocks, each :tangle'ing to a > >> different file. > > > > To be honest I never quite managed to get it work... =) > > > > My point here is to be able to have one org file tangle'ing to several, > > slightly different outputs. Ideally I want to use one readable literate > > config for all my machines; the config can then be published (or > > exported) to html > > > > Say I want to create an org file to tangle .tmux.conf (or .zshrc) for > > different machines; then most of the conf file would be the same (and > > each such block would be tangled to all files) whereas some specifics > > could be tangled to corresponding files only (e.g. ALIASes or EDITORs) > > > > Even if a solution using noweb could work, I find being able to tangle to > > a > > list of files more readable and elegant. Especially when exporting the org > > in an external format, I think the noweb solution would look like a hack, > > whereas a solution with tangle-to-list would be much easier to parse. > > > >> but, i'm curious -- in the example you sent, did you miss a ":tangle" on > >> the "#+begin_src" line? > > > > Yikes! of course I did! Good catch. > > > >> > #+begin_src sh '("filename1" "filename2") > >> > #my script > >> > #+end_src > > I'm not sure I fully understand the rationale behind this patch. It > seems to be very niche oriented and not a terribly useful general > feature. It feels like it is just a partial solution to a problem (i.e. > generate multiple different files from the same org file). If this is > the case, then you probably need some additional control structures to > determine which bits/blocks go into which files. From what I can see, > all the patch is doing is creating multiple files, which I imagine would > then need to be modified anyway? > > If I understand it correctly, all the files will end up with the same > content. This seems odd to me. Am I missing something (like some ability > to have different contents tangled to different files)? > > If it is just generating multiple copies of the same file, I don't > really see the value. It would be less processing/overhead to just > create one file and then copy it (possibly copying it to different > locations, such as a tramp filespec). Using the 'devops' style of org > files, this could even be coded into a script block which could be > executed after tangling. In fact the files are different, since each source block is tangled to a possibly different subset of files. The logic for which files to tangle according to which parameter or tags can be implemented by some lisp magic such as #+begin_src sh :tangle (filenames-according-to-situation) #+end_src So my patch provides the framework to do this, but the implementation is left to the author. I agree that if you tangle to shell or to any programming language, you can set up the checks for each usecase in the programming language itself. I developed this solution for plaintext config files (e.g. xkb maps, or KDE shortcut config files) which are static and parsed as a single chunk. I admit that the use case is quite specific, but it seemed to me a quite natural generalization of the current behavior, and worth adding. Thanks for the discussion! It's really helpful to put things in perspective. > > Personally, I've used a different approach to a similar problem. For > example, my .zshrc and init.el files have conditional tests which check > either the hostname or platform type and set things accordingly. This > way, I only ever have one .zshrc and one init.el file for all systems, > but they behave differently based on the system they are running on. > When the config does not support conditional tests, then I'll have > different source blocks included in the tangle. Currently, I just turn > off blocks I don't want (:tangle no), but I guess I could do something > more sophisticated using noweb or tags, but the manual setting has > worked fine so far as I don't have many files requiring this. > > -- > Tim Cross