From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel P Gomez Subject: Re: How to keep correct filepaths when using the #+INCLUDE derivative? Date: Thu, 1 Mar 2018 02:01:13 +0100 Message-ID: References: <87woyxhuk2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11488b9072e57405664f659c" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60511) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erCax-0003oS-Rt for emacs-orgmode@gnu.org; Wed, 28 Feb 2018 20:01:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1erCaw-00083k-Sl for emacs-orgmode@gnu.org; Wed, 28 Feb 2018 20:01:15 -0500 Received: from mail-qk0-x229.google.com ([2607:f8b0:400d:c09::229]:42196) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1erCaw-00082X-Ls for emacs-orgmode@gnu.org; Wed, 28 Feb 2018 20:01:14 -0500 Received: by mail-qk0-x229.google.com with SMTP id b130so5519303qkg.9 for ; Wed, 28 Feb 2018 17:01:14 -0800 (PST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-orgmode@gnu.org --001a11488b9072e57405664f659c Content-Type: text/plain; charset="UTF-8" If there is any interest, I've created a patch adding support for a :absolute-paths functionality. As I said, I don't have much experience writing Elisp, so any suggestions on how to improve the code would be appreciated. If there is any interest in adding this feature to Org I could try to clean it up. Patch attached. On Wed, Feb 28, 2018 at 9:11 PM, Daniel P Gomez wrote: > Sorry for the ignorance, but where could I look up how to use a parse > tree filter? And where would these modifications make sense? > Any pointers towards documentation, functions, or any help of any kind > would be appreciated. I must say I am a bit lost. > > Thank you in advance, > > Daniel > > On Wed, Feb 28, 2018 at 6:51 PM, Nicolas Goaziou wrote: >> Hello, >> >> Daniel P Gomez writes: >> >>> If I include a file child.org in parent.org using the #+INCLUDE >>> derivative, and the following two conditions are true: >>> >>> 1. child.org and parent.org are not in the same directory nor share >>> directory structure, >>> 2. child.org contains file links with relative file paths, >>> >>> then exporting parent.org will produce a file with broken links. >>> >>> Is there a way to have org sort this out? >>> >>> Or even make this optional, >>> say by using: >>> >>> #+INCLUDE: child.org :fix-paths t >>> >>> I guess the quickest (but perhaps not cleanest) way to have this >>> feature would be to convert relative paths in file links into absolute >>> paths within `org-export-expand-include-keyword`. I'm not that well >>> versed in Elisp yet to do this yet, though. >>> >>> Are there any known solutions to this, or suggestions on how to get it >>> working? >> >> As you suggest, I would use a parse tree filter that turns every >> relative file link into an absolute one. >> >> Regards, >> >> -- >> Nicolas Goaziou --001a11488b9072e57405664f659c Content-Type: application/octet-stream; name="0001-Add-support-for-absolute-paths-in-INCLUDE-derivative.patch" Content-Disposition: attachment; filename="0001-Add-support-for-absolute-paths-in-INCLUDE-derivative.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_je7szt8f0 RnJvbSBjNTJhOTkzZjkxNTY3ZDg3ZWI4N2RlZDkwN2RjY2NkODNhMGYyZWQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR29tZXogPGQuZ29tZXpAcG9zdGVvLm9yZz4KRGF0 ZTogVGh1LCAxIE1hciAyMDE4IDAxOjQ5OjU0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxLzFdIEFk ZCBzdXBwb3J0IGZvciA6YWJzb2x1dGUtcGF0aHMgaW4gIytJTkNMVURFIGRlcml2YXRpdmVzLgoK LS0tCiBsaXNwL294LmVsIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2xpc3Avb3guZWwgYi9saXNwL294LmVsCmluZGV4IGJkNDlhOGEyNi4uYjZmNmU1NzZlIDEw MDY0NAotLS0gYS9saXNwL294LmVsCisrKyBiL2xpc3Avb3guZWwKQEAgLTMzMDIsNiArMzMwMiwx MSBAQCBzdG9yaW5nIGFuZCByZXNvbHZpbmcgZm9vdG5vdGVzLiAgSXQgaXMgY3JlYXRlZCBhdXRv bWF0aWNhbGx5LiIKIAkJCQkgICAgICAgdmFsdWUpCiAJCQkgKHByb2cxIChvcmctbm90LW5pbCAo bWF0Y2gtc3RyaW5nIDEgdmFsdWUpKQogCQkJICAgKHNldHEgdmFsdWUgKHJlcGxhY2UtbWF0Y2gg IiIgbmlsIG5pbCB2YWx1ZSkpKSkpCisJCSAgIChhYnNvbHV0ZS1wYXRocworICAgICAgICAgICAg ICAgICAgICAoYW5kIChzdHJpbmctbWF0Y2ggIjphYnNvbHV0ZS1wYXRocyAqXFwoW146IFxyXHRc bl1cXFMtKlxcKT8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1 ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZzEgKG9yZy1ub3QtbmlsIChtYXRjaC1z dHJpbmcgMSB2YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB2YWx1ZSAo cmVwbGFjZS1tYXRjaCAiIiBuaWwgbmlsIHZhbHVlKSkpKSkKIAkJICAgKGxpbmVzCiAJCSAgICAo YW5kIChzdHJpbmctbWF0Y2gKIAkJCSAgIjpsaW5lcyArXCJcXChcXCg/OlswLTldK1xcKT8tXFwo PzpbMC05XStcXCk/XFwpXCIiCkBAIC0zMzczLDcgKzMzNzgsOCBAQCBzdG9yaW5nIGFuZCByZXNv bHZpbmcgZm9vdG5vdGVzLiAgSXQgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiIKIAkJCSAob3IK IAkJCSAgKGdldGhhc2ggZmlsZSBmaWxlLXByZWZpeCkKIAkJCSAgKHB1dGhhc2ggZmlsZSAoY2wt aW5jZiBjdXJyZW50LXByZWZpeCkgZmlsZS1wcmVmaXgpKQotCQkJIGZvb3Rub3RlcykpKQorCQkJ IGZvb3Rub3RlcworCQkJIGFic29sdXRlLXBhdGhzKSkpCiAJCSAgICAgKG9yZy1leHBvcnQtZXhw YW5kLWluY2x1ZGUta2V5d29yZAogCQkgICAgICAoY29ucyAobGlzdCBmaWxlIGxpbmVzKSBpbmNs dWRlZCkKIAkJICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkKQEAgLTM0NTEsNyArMzQ1 Nyw3IEBAIFJldHVybiBhIHN0cmluZyBvZiBsaW5lcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZm9y bWF0IGV4cGVjdGVkIGJ5CiAJCSAgICAgICBjb3VudGVyKSkpKSkpKSkKIAogKGRlZnVuIG9yZy1l eHBvcnQtLXByZXBhcmUtZmlsZS1jb250ZW50cwotICAgIChmaWxlICZvcHRpb25hbCBsaW5lcyBp bmQgbWlubGV2ZWwgaWQgZm9vdG5vdGVzKQorICAgIChmaWxlICZvcHRpb25hbCBsaW5lcyBpbmQg bWlubGV2ZWwgaWQgZm9vdG5vdGVzIGFic29sdXRlLXBhdGhzKQogICAiUHJlcGFyZSBjb250ZW50 cyBvZiBGSUxFIGZvciBpbmNsdXNpb24gYW5kIHJldHVybiBpdCBhcyBhIHN0cmluZy4KIAogV2hl biBvcHRpb25hbCBhcmd1bWVudCBMSU5FUyBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIGEgcmFuZ2Ug b2YKQEAgLTM0NzMsNyArMzQ3OSwxMCBAQCBUaGlzIGlzIHVzZWZ1bCB0byBhdm9pZCBjb25mbGlj dHMgd2hlbiBtb3JlIHRoYW4gb25lIE9yZyBmaWxlCiB3aXRoIGZvb3Rub3RlcyBpcyBpbmNsdWRl ZCBpbiBhIGRvY3VtZW50LgogCiBPcHRpb25hbCBhcmd1bWVudCBGT09UTk9URVMgaXMgYSBoYXNo LXRhYmxlIHRvIHN0b3JlIGZvb3Rub3RlcyBpbgotdGhlIGluY2x1ZGVkIGRvY3VtZW50LiIKK3Ro ZSBpbmNsdWRlZCBkb2N1bWVudC4KKworT3B0aW9uYWwgYXJndW1lbnQgQUJTT0xVVEUtUEFUSFMs IHdoZW4gbm9uLW5pbCwgdG9nZ2xlcyB0aGUgY29udmVydGlvbgorb2YgYWxsIHJlbGF0aXZlIHBh dGhzIGluIHRoZSBpbmNsdWRlZCBkb2N1bWVudCBpbnRvIGFic29sdXRlIHBhdGhzLiIKICAgKHdp dGgtdGVtcC1idWZmZXIKICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKICAgICAod2hl biBsaW5lcwpAQCAtMzUzMyw2ICszNTQyLDIzIEBAIHRoZSBpbmNsdWRlZCBkb2N1bWVudC4iCiAJ CShsYW1iZGEgKCkKIAkJICAoaWYgKDwgb2Zmc2V0IDApIChkZWxldGUtY2hhciAoYWJzIG9mZnNl dCkpCiAJCSAgICAoaW5zZXJ0IChtYWtlLXN0cmluZyBvZmZzZXQgPyopKSkpKSkpKSkpKQorICAg IDs7OyBXaGVuIEFCU09MVVRFLVBBVEhTIGlzIHNwZWNpZmllZCwgYWxsIHBhdGhzIGZyb20gbGlu a3Mgb2YgdHlwZQorICAgIDs7OyAiZmlsZSIgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgZmlsZSBi ZWluZyBpbmNsdWRlZCBhcmUKKyAgICA7OzsgY29udmVydGVkIHRvIGFic29sdXRlIGFuZCBjYW5v bmljYWxpemVkLgorICAgICh3aGVuIGFic29sdXRlLXBhdGhzCisgICAgICAoZ290by1jaGFyIChw b2ludC1taW4pKQorICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCBvcmctYW55LWxpbmst cmUgbmlsIHQpCisgICAgICAgIChsZXQgKChsaW5rIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAg ICAgICAgICAgICAgIChiYWNrd2FyZC1jaGFyKQorICAgICAgICAgICAgICAgICAgICAgIChvcmct ZWxlbWVudC1jb250ZXh0KSkpKQorICAgICAgICAgICh3aGVuIChzdHJpbmc9IChvcmctZWxlbWVu dC1wcm9wZXJ0eSA6dHlwZSBsaW5rKSAiZmlsZSIpCisgICAgICAgICAgICAobGV0KiAoKG9sZC1w YXRoIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cGF0aCBsaW5rKSkKKyAgICAgICAgICAgICAgICAg ICAobmV3LXBhdGggKGV4cGFuZC1maWxlLW5hbWUgb2xkLXBhdGgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgZmlsZSkp KQorICAgICAgICAgICAgICAgICAgIChyZW1vdmUgKGxpc3QgKG9yZy1lbGVtZW50LXByb3BlcnR5 IDpiZWdpbiBsaW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1lbGVt ZW50LXByb3BlcnR5IDplbmQgbGluaykpKSkKKyAgICAgICAgICAgICAgKGFwcGx5ICMnZGVsZXRl LXJlZ2lvbiByZW1vdmUpCisgICAgICAgICAgICAgIChpbnNlcnQgIltbZmlsZToiIG5ldy1wYXRo ICJdXSIpKSkpKSkKICAgICA7OyBBcHBlbmQgSUQgdG8gYWxsIGZvb3Rub3RlIHJlZmVyZW5jZXMg YW5kIGRlZmluaXRpb25zLCBzbyB0aGV5CiAgICAgOzsgYmVjb21lIGZpbGUgc3BlY2lmaWMgYW5k IGNhbm5vdCBjb2xsaWRlIHdpdGggZm9vdG5vdGVzIGluIG90aGVyCiAgICAgOzsgaW5jbHVkZWQg ZmlsZXMuICBGdXJ0aGVyLCBjb2xsZWN0IHJlbGV2YW50IGZvb3Rub3RlIGRlZmluaXRpb25zCi0t IAoyLjE2LjIKCg== --001a11488b9072e57405664f659c--