Skip to content

Commit

Permalink
ox-publish: Allow linking to encrypted Org files
Browse files Browse the repository at this point in the history
* lisp/ox-html.el (org-html-link): Convert .org.gpg file links to
.html, in addition to previously performed .org -> .html convertion.
(org-html-link-org-files-as-html): Update the docstring.
* doc/org-manual.org (Publishing links):
* etc/ORG-NEWS (Publishing now supports links to encrypted Org files):
Document the new feature.
  • Loading branch information
yantar92 committed Sep 25, 2022
1 parent 3b0c4ad commit f99902e
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 13 deletions.
17 changes: 10 additions & 7 deletions doc/org-manual.org
Original file line number Diff line number Diff line change
Expand Up @@ -16472,13 +16472,16 @@ Settings]]), however, override everything.
#+cindex: links, publishing

To create a link from one Org file to another, you would use something
like =[[file:foo.org][The foo]]= or simply =[[file:foo.org]]= (see [[*External Links]]). When
published, this link becomes a link to =foo.html=. You can thus
interlink the pages of your "Org web" project and the links will work
as expected when you publish them to HTML. If you also publish the
Org source file and want to link to it, use an =http= link instead of
a =file:= link, because =file= links are converted to link to the
corresponding =.html= file.
like =[[file:foo.org][The foo]]= or simply =[[file:foo.org]]= (see
[[*External Links]]). When published, this link becomes a link to
=foo.html=. You can thus interlink the pages of your "Org web"
project and the links will work as expected when you publish them to
HTML. If you also publish the Org source file and want to link to it,
use an =http= link instead of a =file:= link, because =file= links are
converted to link to the corresponding =.html= file.

Links to encrypted Org files, like =[[file:foo.org.gpg]]= are also
supported.

You may also link to related files, such as images. Provided you are
careful with relative file names, and provided you have also
Expand Down
6 changes: 6 additions & 0 deletions etc/ORG-NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@ discouraged when working with Org files.
*** Clock table can now produce quarterly reports

=:step= clock table parameter can now be set to =quarter=.
*** Publishing now supports links to encrypted Org files

Links to other published Org files are automatically converted to the
corresponding html links. Now, this feature is also available when
links point to encrypted Org files, like
=[[file:foo.org.gpg::Heading]]=.

*** Interactive commands now support escaping text inside comment blocks

Expand Down
15 changes: 9 additions & 6 deletions lisp/ox-html.el
Original file line number Diff line number Diff line change
Expand Up @@ -839,6 +839,8 @@ are directly put into a \"href\" tag in HTML. However, links to other Org files
(recognized by the extension \".org\") should become links to the corresponding
HTML file, assuming that the linked Org file will also be converted to HTML.
Links to \"file.org.gpg\" are also converted.
When nil, the links still point to the plain \".org\" file."
:group 'org-export-html
:type 'boolean)
Expand Down Expand Up @@ -3066,12 +3068,13 @@ INFO is a plist holding contextual information. See
(lambda (raw-path info)
;; Treat links to `file.org' as links to `file.html', if
;; needed. See `org-html-link-org-files-as-html'.
(cond
((and (plist-get info :html-link-org-files-as-html)
(string= ".org"
(downcase (file-name-extension raw-path "."))))
(concat (file-name-sans-extension raw-path) dot html-ext))
(t raw-path))))
(save-match-data
(cond
((and (plist-get info :html-link-org-files-as-html)
(let ((case-fold-search t))
(string-match "\\(.+\\)\\.org\\(?:\\.gpg\\)?$" raw-path)))
(concat (match-string 1 raw-path) dot html-ext))
(t raw-path)))))
(type (org-element-property :type link))
(raw-path (org-element-property :path link))
;; Ensure DESC really exists, or set it to nil.
Expand Down

0 comments on commit f99902e

Please sign in to comment.