From mboxrd@z Thu Jan 1 00:00:00 1970 From: Toon Claes Subject: Re: [PATCH] Suggestion to self-link headlines exported to HTML Date: Fri, 28 Dec 2018 22:32:16 +0100 Message-ID: <87o9951gnz.fsf@iotcl.com> References: <874lbdw4h1.fsf@iotcl.com> <871s6dyz6o.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:42648) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gd06X-0003uK-MN for emacs-orgmode@gnu.org; Fri, 28 Dec 2018 16:55:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gczuq-0002kQ-5A for emacs-orgmode@gnu.org; Fri, 28 Dec 2018 16:43:39 -0500 Received: from g03s01.soverin.net ([88.99.97.36]:59441) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gczk2-0004QW-CY for emacs-orgmode@gnu.org; Fri, 28 Dec 2018 16:32:26 -0500 In-Reply-To: <871s6dyz6o.fsf@nicolasgoaziou.fr> (Nicolas Goaziou's message of "Wed, 19 Dec 2018 22:38:39 +0100") 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: emacs-orgmode@gnu.org --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Thanks Nicolas for taking time to have look at my patch. I'm a attaching a second version of the patch. Please have another look. -- Toon --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-ox-html-Make-it-possible-to-self-link-headlines-v02.patch Content-Transfer-Encoding: quoted-printable Content-Description: Patch to self-link headlines From=20094576d4c082fc384aa56bf2f4ec2749fec540a7 Mon Sep 17 00:00:00 2001 From: Toon Claes Date: Sun, 16 Dec 2018 21:55:40 +0100 Subject: [PATCH] ox-html: Make it possible to self link headlines * lisp/ox-html.el (org-html-self-link-headlines): New variable. (org-html-headline): Create a hyperlink on headlines when :html-self-link-headlines is set. =2D-- doc/org-manual.org | 16 ++++++++++++++++ etc/ORG-NEWS | 5 +++++ lisp/ox-html.el | 18 +++++++++++++++--- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index 59e31d8b3..884975d8f 100644 =2D-- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -12495,6 +12495,21 @@ For larger raw HTML code blocks, use these HTML ex= port code blocks: ,#+END_EXPORT #+end_example =20 +*** Headlines in HTML export +:PROPERTIES: +:DESCRIPTION: Formatting headlines. +:END: +#+cindex: headlines, in HTML export + +Headlines are exported to ~

~, ~

~, etc. Each headline will get +the ~id~ attribute from =3DCUSTOM_ID=3D property, or a unique generated +value, see [[*Internal Links]]. + +#+vindex: org-html-self-link-headlines +When ~org-html-self-link-headlines~ is set to a non-~nil~ value, the +text of the headlines is also wrapped in ~~ tags. These tags have +a ~href~ attribute making the headlines link to the headline itself. + *** Links in HTML export :PROPERTIES: :DESCRIPTION: Inserting and formatting links. @@ -15610,6 +15625,7 @@ Settings]]), however, override everything. | ~:html-postamble~ | ~org-html-postamble~ = | | ~:html-preamble-format~ | ~org-html-preamble-form= at~ | | ~:html-preamble~ | ~org-html-preamble~ = | +| ~:html-self-link-headlines~ | ~org-html-self-link-hea= dlines~ | | ~:html-table-align-individual-field~ | ~de{org-html-table-alig= n-individual-fields~ | | ~:html-table-attributes~ | ~org-html-table-default= -attributes~ | | ~:html-table-caption-above~ | ~org-html-table-caption= -above~ | diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 811e98147..817d6eacc 100644 =2D-- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -312,6 +312,11 @@ beginning of a headline when using Org speed commands.= Now, if there is already a restriction at point, hitting =3D<=3D again (or =3DC-x C-x <= =3D) will remove it. =20 +*** Headlines can now link to themselves in HTML export + +When enabling ~org-html-self-link-headlines~ the headlines exported to +HTML contain a hyperlink to themselves. + ** New commands and functions =20 *** ~org-insert-structure-template~ diff --git a/lisp/ox-html.el b/lisp/ox-html.el index b4ec25786..728e156f1 100644 =2D-- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -152,6 +152,7 @@ (:html-metadata-timestamp-format nil nil org-html-metadata-timestamp-f= ormat) (:html-postamble-format nil nil org-html-postamble-format) (:html-preamble-format nil nil org-html-preamble-format) + (:html-self-link-headlines nil nil org-html-self-link-headlines) (:html-table-align-individual-fields nil nil org-html-table-align-individual-fields) (:html-table-caption-above nil nil org-html-table-caption-above) @@ -802,6 +803,13 @@ but without \"name\" attribute." :package-version '(Org . "8.0") :type 'boolean) =20 +(defcustom org-html-self-link-headlines nil + "When non-nil, the headlines contain a hyperlink to themselves." + :group 'org-export-html + :package-version '(Org . "9.3") + :type 'boolean + :safe #'booleanp) + ;;;; Inlinetasks =20 (defcustom org-html-format-inlinetask-function @@ -2592,7 +2600,11 @@ holding contextual information." todo todo-type priority text tags info)) (contents (or contents "")) (id (or (org-element-property :CUSTOM_ID headline) =2D (org-export-get-reference headline info)))) + (org-export-get-reference headline info))) + (formatted-text + (if (plist-get info :html-self-link-headlines) + (format "%s" id full-text) + full-text))) (if (org-export-low-level-p headline info) ;; This is a deep sub-tree: export it as a list item. (let* ((html-type (if numberedp "ol" "ul"))) @@ -2603,7 +2615,7 @@ holding contextual information." (org-html-format-list-item contents (if numberedp 'ordered 'unordered) nil info nil =2D (concat (org-html--anchor id nil nil info) full-text)) "\n" + (concat (org-html--anchor id nil nil info) formatted-text)) "\n" (and (org-export-last-sibling-p headline info) (format "\n" html-type)))) ;; Standard headline. Export it as a section. @@ -2625,7 +2637,7 @@ holding contextual information." "%s " level (mapconcat #'number-to-string numbers "."= ))) =2D full-text) + formatted-text) level) ;; When there is no section, pretend there is an ;; empty one to get the correct