From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: "Gustav Wikström" <gustav@whil.se>
Cc: "emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org>
Subject: Re: FW: [RFC] Link-type for attachments, more attach options
Date: Sun, 04 Nov 2018 23:37:19 +0100 [thread overview]
Message-ID: <87muqo8o68.fsf@nicolasgoaziou.fr> (raw)
In-Reply-To: <PR1PR02MB47323A141AE248937F2FA7D4DAFB0@PR1PR02MB4732.eurprd02.prod.outlook.com> ("Gustav Wikström"'s message of "Sun, 21 Oct 2018 07:53:38 +0000")
Hello,
Gustav Wikström <gustav@whil.se> writes:
> I’ve attached a patch with some suggested additions to org-attach.
> Patch comments below. Please review.
Thank you. Some comments follow.
> * Add new linktype "attached" for attachments
This seem a bit long. Why not "att" links?
> * Add further options for ATTACH_DIR
>
> When working with ATTACH_DIR there are now a couple of new options available:
> - org-attach-dir-inherit-by-default
What is the difference between this and `org-attach-allow-inheritance'?
> - org-attach-dir-create-if-not-exist
What is the use-case for this one? It doesn't seem terribly useful at
first glance.
> - org-attach-dir-relative
I'm not sure to understand this one.
>
> +This list shows the full set of built-in external link types:
> +| http | web |
> +| https | secure web |
> +| doi | DOI for electronic resources |
> +| file | file-links |
> +| file+sys | file-links forced to open via OS |
> +| file+emacs | file-links forced to open via emacs |
> +| attached | links to attachments for nodes |
> +| docview | doc-view mode |
> +| id | Link to heading by id |
> +| news | Usenet link |
> +| mailto | mail link |
> +| mhe | MH-E folder link |
> +| rmail | Rmail link |
> +| gnus | Gnus link |
> +| bbdb | BBDB link |
> +| irc | IRC link |
> +| info | Info link |
> +| shell | shell command |
> +| elisp | interactive elisp command link |
> +
> +The following list shows examples for each link type.
> +
> +| =http://www.astro.uva.nl/=dominik= | on the web |
> +| =doi:10.1000/182= | DOI for an electronic resource |
> +| =file:/home/dominik/images/jupiter.jpg= | file, absolute path |
> +| =/home/dominik/images/jupiter.jpg= | same as above |
> +| =file:papers/last.pdf= | file, relative path |
> +| =./papers/last.pdf= | same as above |
> +| =file:/ssh:me@some.where:papers/last.pdf= | file, path on remote machine |
> +| =/ssh:me@some.where:papers/last.pdf= | same as above |
> +| =file:sometextfile::NNN= | file, jump to line number |
> +| =file:projects.org= | another Org file |
> +| =file:projects.org::some words= | text search in Org file[fn:28] |
> +| =file:projects.org::*task title= | heading search in Org file |
> +| =file+sys:/path/to/file= | open via OS, like double-click |
> +| =file+emacs:/path/to/file= | force opening by Emacs |
> +| =attached:projects.org= | file in folder attached to headline |
> +| =attached:projects.org::some words= | text search in attached file |
> +| =docview:papers/last.pdf::NNN= | open in doc-view mode at page |
> +| =id:B7423F4D-2E8A-471B-8810-C40F074717E9= | link to heading by ID |
> +| =news:comp.emacs= | Usenet link |
> +| =mailto:adent@galaxy.net= | mail link |
> +| =mhe:folder= | MH-E folder link |
> +| =mhe:folder#id= | MH-E message link |
> +| =rmail:folder= | Rmail folder link |
> +| =rmail:folder#id= | Rmail message link |
> +| =gnus:group= | Gnus group link |
> +| =gnus:group#id= | Gnus article link |
> +| =bbdb:R.*Stallman= | BBDB link (with regexp) |
> +| =irc:/irc.com/#emacs/bob= | IRC link |
> +| =info:org#External links= | Info node link |
> +| =shell:ls *.org= | shell command |
> +| =elisp:org-agenda= | interactive Elisp command |
> +| =elisp:(find-file "Elisp.org")= | Elisp form to evaluate |
I'm not sure to like the change above. It introduces a lot of
redundancy.
> Here is the syntax of the different ways to attach a search to a file
> link, together with explanations for each:
>
> #+begin_example
> -[[file:~/code/main.c::255]]
> -[[file:~/xx.org::My Target]]
> -[[file:~/xx.org::*My Target]]
> -[[file:~/xx.org::#my-custom-id]]
> -[[file:~/xx.org::/regexp/]]
> + [[file:~/code/main.c::255]]
> + [[file:~/xx.org::My Target]]
> + [[file:~/xx.org::*My Target]]
> + [[file:~/xx.org::#my-custom-id]]
> + [[file:~/xx.org::/regexp/]]
> + [[attached:~/code/main.c::255]]
> #+end_example
Please discard this change.
> +Another method is /attachments/, which are files located in a
> +directory belonging to an outline node. Org uses directories either
> +named by the unique ID of each entry, or by the =ATTACH_DIR= property.
> +ID-based directories are by default located in the ~data~ directory
... =data/= directory, which ...
> +(defcustom org-attach-dir-inherit-by-default nil
> + "Defines whether ATTACH_DIR-directories should be inherited by
> + subheadings by default when created. Defaults to not being
> + inherited."
> + :group 'org-attach
> + :type 'boolean)
First line in a docstring must be a full sentence. Indentation is wrong
in the subsequent lines. Also, the `defcustom' is missing keywords,
e.g., :package-version and :safe.
> +(defcustom org-attach-dir-create-if-not-exists t
> + "Choose whether ATTACH_DIR-directories should be created if
> +they do not exist since before. Default is to create them."
> + :group 'org-attach
> + :type 'boolean)
> +
> +(defcustom org-attach-dir-relative nil
> + "Choose whether ATTACH_DIR-directories should be added as
> +relative links or not. Defaults to not relative."
> + :group 'org-attach
> + :type 'boolean)
Ditto.
> (defcustom org-attach-commit t
> "If non-nil commit attachments with git.
> This is only done if the Org file is in a git repository."
> @@ -280,20 +299,26 @@ Throw an error if we cannot root the directory."
> "Set the ATTACH_DIR node property and ask to move files there.
> The property defines the directory that is used for attachments
> of the entry. When called with `\\[universal-argument]', reset \
> -the directory to
> -the default ID based one."
> +the directory to the default ID based one. Creates relative links
You need to use two spaces to separate sentences.
> + (let ((old (org-attach-dir nil))
> + (new
> + (progn
> + (if arg (org-entry-delete nil "ATTACH_DIR")
> + (let* ((attach-dir (read-directory-name
> + "Attachment directory: "
> + (org-entry-get nil
> + "ATTACH_DIR")))
> + (current-dir (file-name-directory (or load-file-name
> + buffer-file-name)))
Why `load-file-name'? Why not using `default-directory'?
> +(defun org-attach-open-link (link &optional in-emacs)
> + "LINK is expanded with the attached directory and opened the same
> +way as file-links are."
You need to expound the arguments in the docstring.
> + (file-types-re (format "[][]\\[\\(?:file\\|attached\\|[./~]%s\\)"
> (if (not link-abbrevs) ""
> (format "\\|\\(?:%s:\\)"
> (regexp-opt link-abbrevs))))))
Why is it needed? "attached" link type is already registered, so you
don't need to also hard-code it here.
> + (when (and (or (equal "file" (org-element-property :type link))
> + (equal "attached" (org-element-property :type link)))
Ditto.
> + (let ((file (if (equal "attached" (org-element-property :type link))
> + (require 'org-attach)
> + (org-attach-expand
> + (org-link-unescape
> + (org-element-property :path link)))
> + (expand-file-name
> + (org-link-unescape
> + (org-element-property :path link))))))
Ditto.
Regards,
--
Nicolas Goaziou
next prev parent reply other threads:[~2018-11-04 22:37 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-21 7:53 FW: [RFC] Link-type for attachments, more attach options Gustav Wikström
2018-11-01 1:45 ` tumashu
2018-11-02 22:40 ` Gustav Wikström
2018-11-01 16:00 ` Marco Wahl
2018-11-02 23:07 ` Gustav Wikström
2018-11-03 3:37 ` Ihor Radchenko
2018-11-17 12:13 ` Gustav Wikström
2018-11-18 0:42 ` Ihor Radchenko
2018-11-18 8:57 ` Gustav Wikström
2018-11-20 14:00 ` Ihor Radchenko
2018-11-24 13:56 ` Gustav Wikström
2018-12-14 2:16 ` Ihor Radchenko
2019-05-26 22:24 ` Gustav Wikström
2018-11-04 22:37 ` Nicolas Goaziou [this message]
2018-11-17 11:58 ` Gustav Wikström
[not found] ` <PR1PR02MB47322711B7F7B7142D156F54DADE0@PR1PR02MB4732.eurprd02.prod.outlook.com>
2018-11-19 23:52 ` Nicolas Goaziou
2018-11-25 21:13 ` Gustav Wikström
2018-11-27 9:39 ` Nicolas Goaziou
2019-05-26 23:05 ` Gustav Wikström
2019-06-15 13:29 ` Nicolas Goaziou
2019-06-15 15:38 ` Bastien
2019-06-30 6:03 ` Gustav Wikström
2019-07-06 21:46 ` Nicolas Goaziou
2019-07-07 18:38 ` Gustav Wikström
2019-07-08 10:47 ` Marco Wahl
2019-07-09 10:16 ` Nicolas Goaziou
2019-07-27 14:56 ` Ihor Radchenko
2019-07-28 20:39 ` Gustav Wikström
2019-07-28 23:20 ` Ihor Radchenko
2019-01-04 12:21 ` FW: " Feng Shu
2019-05-26 23:15 ` Gustav Wikström
2019-12-12 5:21 ` stardiviner
2019-12-12 6:12 ` Gustav Wikström
2019-12-12 9:52 ` stardiviner
2019-12-12 19:42 ` Gustav Wikström
2019-12-13 13:38 ` stardiviner
2019-12-13 21:37 ` Gustav Wikström
2019-12-13 22:15 ` Gustav Wikström
2019-12-15 4:14 ` stardiviner
2019-12-15 9:29 ` stardiviner
2019-12-15 10:06 ` Gustav Wikström
2019-12-15 14:26 ` stardiviner
2019-12-15 20:41 ` Gustav Wikström
2019-12-16 3:38 ` stardiviner
2019-12-16 11:21 ` stardiviner
2019-12-17 4:27 ` stardiviner
2020-01-13 12:24 ` attachment: link type export to HTML invalid attach dir stardiviner
2020-01-14 3:27 ` Gustav Wikström
2020-01-14 5:04 ` stardiviner
2020-01-14 20:58 ` Gustav Wikström
2020-01-15 5:53 ` stardiviner
2020-01-15 19:48 ` Gustav Wikström
2020-01-16 11:06 ` stardiviner
2020-01-16 13:18 ` Nicolas Goaziou
2020-01-16 21:42 ` Gustav Wikström
2020-01-16 23:07 ` Gustav Wikström
2020-01-17 0:39 ` Nicolas Goaziou
2020-01-17 14:29 ` Gustav Wikström
2020-01-17 18:36 ` Gustav Wikström
2020-01-18 1:13 ` Gustav Wikström
2020-01-18 11:34 ` Nicolas Goaziou
2020-01-18 15:14 ` Gustav Wikström
2020-01-19 21:12 ` Nicolas Goaziou
2020-01-19 23:29 ` Gustav Wikström
2020-01-20 1:25 ` Nicolas Goaziou
2020-01-25 11:34 ` Gustav Wikström
2020-02-05 16:54 ` Nicolas Goaziou
2020-02-06 20:55 ` Gustav Wikström
2020-02-07 14:28 ` Nicolas Goaziou
2020-02-08 15:39 ` Gustav Wikström
2020-02-13 20:41 ` Nicolas Goaziou
2020-02-13 21:11 ` Gustav Wikström
2020-02-13 21:37 ` Nicolas Goaziou
2020-02-13 22:07 ` Gustav Wikström
2020-02-14 0:16 ` Nicolas Goaziou
2020-02-14 7:23 ` Gustav Wikström
2020-02-14 2:42 ` Kyle Meyer
2020-02-14 7:35 ` Gustav Wikström
2020-02-14 7:41 ` Gustav Wikström
2020-02-14 11:06 ` Bastien
2020-02-14 17:12 ` Nicolas Goaziou
2020-02-14 20:33 ` Bastien
2020-02-15 18:08 ` Nicolas Goaziou
2020-02-15 23:04 ` Kyle Meyer
2020-02-16 8:51 ` Nicolas Goaziou
2020-02-16 23:59 ` Bastien
2020-02-17 9:37 ` Nicolas Goaziou
2020-02-17 10:25 ` Bastien
2020-02-16 23:58 ` Bastien
2020-02-17 10:32 ` Nicolas Goaziou
2020-02-17 10:53 ` Bastien
2020-02-20 9:20 ` Nicolas Goaziou
2020-02-20 10:20 ` Bastien
2020-02-22 12:58 ` Nicolas Goaziou
2020-02-22 13:32 ` Bastien
2020-02-25 23:36 ` Gustav Wikström
2020-02-26 15:22 ` Nicolas Goaziou
2020-02-27 19:02 ` Gustav Wikström
2020-02-28 0:37 ` Nicolas Goaziou
2020-02-13 21:57 ` Gustav Wikström
2020-02-14 10:02 ` Bastien
2020-01-13 13:41 ` FW: [RFC] Link-type for attachments, more attach options stardiviner
2020-01-14 21:17 ` Gustav Wikström
2020-01-15 6:20 ` stardiviner
2020-01-15 22:42 ` Gustav Wikström
2020-01-16 11:15 ` stardiviner
2020-01-18 14:56 ` stardiviner
2020-01-18 15:30 ` Gustav Wikström
2020-01-19 4:28 ` stardiviner
2020-01-19 9:53 ` Gustav Wikström
2020-01-17 7:39 ` Missing `org-attach-set-inherit' function stardiviner
2020-01-17 16:31 ` Gustav Wikström
2020-01-18 14:54 ` stardiviner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87muqo8o68.fsf@nicolasgoaziou.fr \
--to=mail@nicolasgoaziou.fr \
--cc=emacs-orgmode@gnu.org \
--cc=gustav@whil.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).