From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Danan Subject: Re: [PATCH] org-attach: Allow attaching file from visited buffer Date: Mon, 25 Jun 2018 15:04:11 +0200 Message-ID: References: <87y3f8cfal.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000003497f4056f770500" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:60118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fXRAS-0001p3-SV for emacs-orgmode@gnu.org; Mon, 25 Jun 2018 09:04:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fXRAO-0006yO-Tr for emacs-orgmode@gnu.org; Mon, 25 Jun 2018 09:04:28 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:42777) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fXRAO-0006xy-NA for emacs-orgmode@gnu.org; Mon, 25 Jun 2018 09:04:24 -0400 Received: by mail-io0-f196.google.com with SMTP id r24-v6so12455649ioh.9 for ; Mon, 25 Jun 2018 06:04:23 -0700 (PDT) In-Reply-To: <87y3f8cfal.fsf@nicolasgoaziou.fr> 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: mail@nicolasgoaziou.fr Cc: emacs-orgmode@gnu.org --0000000000003497f4056f770500 Content-Type: text/plain; charset="UTF-8" Sorry for the slow reply. I tried something similar to your second proposal (mimicking `org-attach-dired-to-subtree'), but more convenient in my opinion and not losing the method choice. It mimicks the mechanism to store links: there is a new command `org-store-attachment' (to which one could give a global keybinding such as `C-c a`) that stores an attachment to the current buffer in a new variable `org-stored-attachments', and `org-attach-attach', when called interactively, prompts to select an attachment from this variable if it is non nil (the attachment is then removed from the variable). See attached patch (yes I've signed the FSF papers). "Storing an attachment" simply means storing the buffer file name or, if there is none, the buffer name, to the variable (there may be a better terminology for that). Then `org-attach-attach' detects if the "file" is actually the name of a non-file-visiting buffer and uses `write-file' rather than the specified or default method in that case. So we keep the method choice and don't need to add a specific command for buffers to the dispatcher. If you think it's not worth introducing complications for allowing to attach non-file-visiting buffers, we could simply prevent this in `org-store-attachment'. I also made it so that if `org-store-attachment' is called from a dired buffer, then the file at point is stored rather than the dired buffer itself. This can certainly be improved, but I hope it is sufficient for you to judge whether you think it is a good idea or not. Possible improvements I thought about: - When `org-store-attachment' is called from a dired buffer and there are marked files, we could store these rather than the file at point (similar to `org-attach-dired-to-subtree'). - We could add a mechanism for making `org-attach-attach' unconditionally read a file name, ignoring `org-stored-attachments' (i.e. a prefix argument, distinct from the one to visit the attachment directory). We could also add a command to clear `org-stored-attachments' from the dispatcher. - We could check whether the file to attach is modified and prompt the user to save it in that case (this is actually independent from the present discussion). I understand that other users may not like this mechanism and prefer different solutions (or leaving things as they are). There was a recent suggestion to make the list of commands in the attachment dispatcher customizable: http://lists.gnu.org/archive/html/emacs-orgmode/2018-06/msg00139.html Do you think it would make sense to do so? Thank you for your attention. On Thu, Jun 21, 2018 at 5:47 PM Nicolas Goaziou wrote: > > Hello, > > Eric Danan writes: > > > When the file to attach is already open in emacs, it is generally > > faster to select it from the buffer list than navigating to it through > > the file system. This patch adds a `b' command to the attach > > dispatcher that reads a buffer and writes it in the attachment > > directory. > > Thank you. > > One issue is that we're losing the method choice (symlink, copy, > hardlink). > > However, `org-attach-attach' already offers to start file system > navigation from a Dired side buffer, if any. We may extend this idea: if > there is a buffer currently displayed in another window, but no Dired > buffer, offer its default directory as a start for completion. > > Another idea is to create a new function that will attach the current > file to the subtree in another window. See > `org-attach-dired-to-subtree', for example. > > If you haven't signed FSF papers, you need to add TINYCHANGE at the end > of the commit message. > > Regards, > > -- > Nicolas Goaziou --0000000000003497f4056f770500 Content-Type: application/octet-stream; name="0001-org-attach-Add-mechanism-to-store-attachment-to-curr.patch" Content-Disposition: attachment; filename="0001-org-attach-Add-mechanism-to-store-attachment-to-curr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jiu9aqeq0 RnJvbSAzYmFmZWRhNTNjNTJjNmI5ZmMzYTYxMWNiY2IyM2JmYjQ1OTRjYTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIERhbmFuIDxlcmljLmRhbmFuQHUtY2VyZ3kuZnI+CkRh dGU6IFRodSwgMjEgSnVuIDIwMTggMTU6NDU6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBvcmct YXR0YWNoOiBBZGQgbWVjaGFuaXNtIHRvIHN0b3JlIGF0dGFjaG1lbnQgdG8gY3VycmVudAogYnVm ZmVyCgoqIGxpc3Avb3JnLWF0dGFjaC5lbCAob3JnLXN0b3JlZC1hdHRhY2htZW50cyk6IE5ldyB2 YXJpYWJsZS4KKG9yZy1zdG9yZS1hdHRhY2htZW50KTogTmV3IGF1dG9sb2FkZWQsIGludGVyYWN0 aXZlIGNvbW1hbmQgdG8gc3RvcmUKYW4gYXR0YWNobWVudCB0byB0aGUgY3VycmVudCBidWZmZXIg aW4gdGhlIGFib3ZlIHZhcmlhYmxlLgoob3JnLWF0dGFjaC1hdHRhY2gpOiBJZiBjYWxsZWQgaW50 ZXJhY3RpdmVseSBhbmQgdGhlcmUgYXJlIHN0b3JlZAphdHRhY2htZW50cywgcHJvbXB0IHRvIHNl bGVjdCBvbmUgb2YgdGhlbS4gIEFsc28gaWYgdGhlIGF0dGFjaG1lbnQgaXMKdG8gYSBidWZmZXIg bm90IHZpc2l0aW5nIGEgZmlsZSwgZmFsbGJhY2sgdG8gd3JpdGluZyB0aGUgYnVmZmVyIHJhdGhl cgp0aGFuIHVzaW5nIHRoZSBzcGVjaWZpZWQgb3IgZGVmYXVsdCBhdHRhY2htZW50IG1ldGhvZC4K LS0tCiBsaXNwL29yZy1hdHRhY2guZWwgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL29yZy1hdHRhY2guZWwgYi9saXNwL29yZy1h dHRhY2guZWwKaW5kZXggMTkyODE1ZjQuLmRmOGU0NThkIDEwMDY0NAotLS0gYS9saXNwL29yZy1h dHRhY2guZWwKKysrIGIvbGlzcC9vcmctYXR0YWNoLmVsCkBAIC0xNTIsNiArMTUyLDkgQEAgKGRl ZmN1c3RvbSBvcmctYXR0YWNoLWFubmV4LWF1dG8tZ2V0ICdhc2sKIAkgIChjb25zdCA6dGFnICJh bHdheXMgZ2V0IGZyb20gYW5uZXggaWYgbmVjZXNzYXJ5IiB0KQogCSAgKGNvbnN0IDp0YWcgIm5l dmVyIGdldCBmcm9tIGFubmV4IiBuaWwpKSkKIAorKGRlZnZhciBvcmctc3RvcmVkLWF0dGFjaG1l bnRzIG5pbAorICAiQ29udGFpbnMgdGhlIGF0dGFjaG1lbnRzIHN0b3JlZCB3aXRoIGBvcmctc3Rv cmUtYXR0YWNobWVudCcuIikKKwogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biBvcmctYXR0YWNoICgp CiAgICJUaGUgZGlzcGF0Y2hlciBmb3IgYXR0YWNobWVudCBjb21tYW5kcy4KQEAgLTE5Myw3ICsx OTYsNyBAQCAoZGVmdW4gb3JnLWF0dGFjaCAoKQogcyAgICAgICBTZXQgYSBzcGVjaWZpYyBhdHRh Y2htZW50IGRpcmVjdG9yeSBmb3IgdGhpcyBlbnRyeSBvciByZXNldCB0byBkZWZhdWx0LgogaSAg ICAgICBNYWtlIGNoaWxkcmVuIG9mIHRoZSBjdXJyZW50IGVudHJ5IGluaGVyaXQgaXRzIGF0dGFj aG1lbnQgZGlyZWN0b3J5LiIpKSkKIAkgIChvcmctZml0LXdpbmRvdy10by1idWZmZXIgKGdldC1i dWZmZXItd2luZG93ICIqT3JnIEF0dGFjaCoiKSkKLQkgIChtZXNzYWdlICJTZWxlY3QgY29tbWFu ZDogW2FjbWx6b09mRmREXSIpCisJICAobWVzc2FnZSAiU2VsZWN0IGNvbW1hbmQ6IFthY21seXVu em9PZkZkRF0iKQogCSAgKHNldHEgYyAocmVhZC1jaGFyLWV4Y2x1c2l2ZSkpCiAJICAoYW5kIChn ZXQtYnVmZmVyICIqT3JnIEF0dGFjaCoiKSAoa2lsbC1idWZmZXIgIipPcmcgQXR0YWNoKiIpKSkp CiAgICAgICAoY29uZApAQCAtMzk3LDE0ICs0MDAsMjIgQEAgKGRlZnVuIG9yZy1hdHRhY2gtYXR0 YWNoIChmaWxlICZvcHRpb25hbCB2aXNpdC1kaXIgbWV0aG9kKQogYG9yZy1hdHRhY2gtbWV0aG9k Jy4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QKLSAgICAocmVhZC1maWxlLW5hbWUgIkZpbGUg dG8ga2VlcCBhcyBhbiBhdHRhY2htZW50OiIKLSAgICAgICAgICAgICAgICAgICAgKG9yIChwcm9n bgotICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZSAnZGlyZWQtYXV4KQotICAgICAg ICAgICAgICAgICAgICAgICAgICAoZGlyZWQtZHdpbS10YXJnZXQtZGlyZWN0b3J5KSkKLSAgICAg ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtZGlyZWN0b3J5KSkKKyAgICAoaWYgb3JnLXN0b3Jl ZC1hdHRhY2htZW50cworCShsZXQgKChmaWxlIChvcmctY29tcGxldGluZy1yZWFkICJBdHRhY2ht ZW50OiAiCisJCQkJCSBvcmctc3RvcmVkLWF0dGFjaG1lbnRzKSkpCisJICAoc2V0cSBvcmctc3Rv cmVkLWF0dGFjaG1lbnRzCisJCShyZW1vdmUgZmlsZSBvcmctc3RvcmVkLWF0dGFjaG1lbnRzKSkK KwkgIGZpbGUpCisgICAgICAocmVhZC1maWxlLW5hbWUgIkZpbGUgdG8ga2VlcCBhcyBhbiBhdHRh Y2htZW50OiIKKyAgICAgICAgICAgICAgICAgICAgICAob3IgKHByb2duCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHJlcXVpcmUgJ2RpcmVkLWF1eCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZGlyZWQtZHdpbS10YXJnZXQtZGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVmYXVsdC1kaXJlY3RvcnkpKSkKICAgICBjdXJyZW50LXByZWZpeC1hcmcKICAg ICBuaWwpKQotICAoc2V0cSBtZXRob2QgKG9yIG1ldGhvZCBvcmctYXR0YWNoLW1ldGhvZCkpCisg IChzZXRxIG1ldGhvZCAoaWYgKGZpbGUtZXhpc3RzLXAgZmlsZSkKKwkJICAgKG9yIG1ldGhvZCBv cmctYXR0YWNoLW1ldGhvZCkKKwkJICdidWYpKQogICAobGV0ICgoYmFzZW5hbWUgKGZpbGUtbmFt ZS1ub25kaXJlY3RvcnkgZmlsZSkpKQogICAgICh3aGVuIChhbmQgb3JnLWF0dGFjaC1maWxlLWxp c3QtcHJvcGVydHkgKG5vdCBvcmctYXR0YWNoLWluaGVyaXRlZCkpCiAgICAgICAob3JnLWVudHJ5 LWFkZC10by1tdWx0aXZhbHVlZC1wcm9wZXJ0eQpAQCAtNDE2LDEyICs0MjcsMTUgQEAgKGRlZnVu IG9yZy1hdHRhY2gtYXR0YWNoIChmaWxlICZvcHRpb25hbCB2aXNpdC1kaXIgbWV0aG9kKQogICAg ICAgICgoZXEgbWV0aG9kICdjcCkgKGNvcHktZmlsZSBmaWxlIGZuYW1lKSkKICAgICAgICAoKGVx IG1ldGhvZCAnbG4pIChhZGQtbmFtZS10by1maWxlIGZpbGUgZm5hbWUpKQogICAgICAgICgoZXEg bWV0aG9kICdsbnMpIChtYWtlLXN5bWJvbGljLWxpbmsgZmlsZSBmbmFtZSkpCi0gICAgICAgKChl cSBtZXRob2QgJ3VybCkgKHVybC1jb3B5LWZpbGUgZmlsZSBmbmFtZSkpKQorICAgICAgICgoZXEg bWV0aG9kICd1cmwpICh1cmwtY29weS1maWxlIGZpbGUgZm5hbWUpKQorICAgICAgICgoZXEgbWV0 aG9kICdidWYpICh3aXRoLWN1cnJlbnQtYnVmZmVyIGZpbGUKKwkJCSAgICh3cml0ZS1maWxlIGZu YW1lIHQpKSkpCiAgICAgICAod2hlbiBvcmctYXR0YWNoLWNvbW1pdAogICAgICAgICAob3JnLWF0 dGFjaC1jb21taXQpKQogICAgICAgKG9yZy1hdHRhY2gtdGFnKQogICAgICAgKGNvbmQgKChlcSBv cmctYXR0YWNoLXN0b3JlLWxpbmstcCAnYXR0YWNoZWQpCiAgICAgICAgICAgICAgKG9yZy1hdHRh Y2gtc3RvcmUtbGluayBmbmFtZSkpCisJICAgICgoZXEgbWV0aG9kICdidWYpKQogICAgICAgICAg ICAgKChlcSBvcmctYXR0YWNoLXN0b3JlLWxpbmstcCB0KQogICAgICAgICAgICAgIChvcmctYXR0 YWNoLXN0b3JlLWxpbmsgZmlsZSkpKQogICAgICAgKGlmIHZpc2l0LWRpcgpAQCAtNjEzLDYgKzYy NywyMyBAQCAoZGVmdW4gb3JnLWF0dGFjaC1kaXJlZC10by1zdWJ0cmVlIChmaWxlcykKICAgICAg IChvcmctYXR0YWNoLWF0dGFjaCBmaWxlKSkKICAgICAoc2VsZWN0LXdpbmRvdyBzdGFydC13aW4p KSkKIAorOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBvcmctc3RvcmUtYXR0YWNobWVudCAoZmlsZSkK KyAiU3RvcmUgYW4gYXR0YWNobWVudCB0byB0aGUgY3VycmVudCBidWZmZXIuCitcXDxvcmctbW9k ZS1tYXA+CitUaGlzIGF0dGFjaG1lbnQgaXMgYWRkZWQgdG8gYG9yZy1zdG9yZWQtYXR0YWNobWVu dHMnIGFuZCBjYW4gbGF0ZXIgYmUgaW5zZXJ0ZWQKK2ludG8gYW4gT3JnIGJ1ZmZlciB3aXRoIGBv cmctYXR0YWNoJyAoYFxcW29yZy1hdHRhY2hdJykuCisKK0lmIHRoZSBjdXJyZW50IGJ1ZmZlciBp cyBhIGRpcmVkIGJ1ZmZlciwgc3RvcmUgYW4gYXR0YWNobWVudHMgdG8KK3RoZSBmaWxlIGF0IHBv aW50IGluc3RlYWQuIgorIChpbnRlcmFjdGl2ZQorICAobGlzdCAoaWYgKGRlcml2ZWQtbW9kZS1w ICdkaXJlZC1tb2RlKQorCSAgICAoaWdub3JlLWVycm9ycyAoZGlyZWQtZ2V0LWZpbGVuYW1lKSkK KwkgIChvciAoYnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkKKwkgICAgICAo YnVmZmVyLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKSkpKQorICh3aGVuIGZpbGUKKyAgIChw dXNoIGZpbGUgb3JnLXN0b3JlZC1hdHRhY2htZW50cykpKQorICAgCiAMCiAKIChhZGQtaG9vayAn b3JnLWFyY2hpdmUtaG9vayAnb3JnLWF0dGFjaC1hcmNoaXZlLWRlbGV0ZS1tYXliZSkKLS0gCjIu MTcuMAoK --0000000000003497f4056f770500--