From mboxrd@z Thu Jan 1 00:00:00 1970 From: Toon Claes Subject: [PATCH] Suggestion to self-link headlines exported to HTML Date: Sun, 16 Dec 2018 22:23:38 +0100 Message-ID: <874lbdw4h1.fsf@iotcl.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34716) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gYdtB-0002uI-6w for emacs-orgmode@gnu.org; Sun, 16 Dec 2018 16:23:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gYdt8-00031o-1v for emacs-orgmode@gnu.org; Sun, 16 Dec 2018 16:23:53 -0500 Received: from g03s01.soverin.net ([88.99.97.36]:38895) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gYdt7-0002yw-Jb for emacs-orgmode@gnu.org; Sun, 16 Dec 2018 16:23:49 -0500 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 Hi, Recently I wrote a blog post on making headlines clickable when Org mode is exported to HTML: https://writepermission.com/org-blogging-clickable-headlines.html With this mail, I'd like to suggest a change to bring this feature to the Org mode core. It's my first contribution to Org mode, but I've already completed the paperwork to contribute to Emacs core in the past. Of course any comment is welcome. -- Toon --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-ox-html-Make-it-possible-to-self-link-headlines.patch Content-Transfer-Encoding: quoted-printable Content-Description: patch to self link headlines in html From=205b279778326d844b6dd2895dba7eae2c096056cc 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 | 1 + etc/ORG-NEWS | 5 +++++ lisp/ox-html.el | 18 +++++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index 59e31d8b3..4f00655fa 100644 =2D-- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -15610,6 +15610,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..826d97a5d 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 set, the headlines contain a hyperlink to themselves." + :group 'org-export-html + :version "27.1" + :package-version '(Org . "9.2") + :type 'boolean) + ;;;; 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 (and id (plist-get info :html-self-link-headlines)) + (format "%s" id full-text) + 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