Hello, I've written this patch that makes use of prettify-symbols-mode to show the stars in org headings as nice UTF bullets. There's already org-bullet-mode[1] but that seems to have been abandoned, plus it isn't included in org mode itself. The one bug right now is that it'll show an asterisk as a UTF bullet if it's _anywhere_ on a heading line. Is there an easy way to check if a character is a part of the beginning stars? If this is something you'd be interested in adding to org-mode, I can fix this part before the change gets applied. I've checked it out with and without org-indent-mode and hiding leading stars. Everything seems to work well for me. I've already signed the FSF copyright assignment papers. Please cc me on replies since I'm not subscribed to the devel list :-) Thanks, Alex Footnotes: [1] https://github.com/sabof/org-bullets ------------------------------------------------------------ From 8ab48ccd43446bbe447108153c2dbb742d81895b Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Sun, 1 Apr 2018 15:49:31 -0500 Subject: [PATCH] Add support for showing stars as UTF bullets * lisp/org.el(org-mode): Add local variables * lisp/org.el(org-pretty-compose-p): New function * lisp/org.el(org-prettify-alist): New variable * etc/ORG-NEWS: Document new feature. --- etc/ORG-NEWS | 3 +++ lisp/org.el | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 0edd77115..bb57e9e82 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -228,6 +228,9 @@ parameters. See example bellow. select sysdate from dual; ,#+END_SRC #+END_SRC +*** Add support for showing header stars as UTF-8 bullets +This relies on ~prettify-symbols-mode~. To activate, either add this to +~org-mode-hook~ or enable it globally with ~global-prettify-symbols-mode~. ** New functions *** ~org-insert-structure-template~ diff --git a/lisp/org.el b/lisp/org.el index 5e5087a59..35cc33c00 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5487,6 +5487,9 @@ The following commands are available: (when org-startup-truncated (setq truncate-lines t)) (when org-startup-indented (require 'org-indent) (org-indent-mode 1)) (org-refresh-effort-properties))) + ;; Setup prettify mode + (setq-local prettify-symbols-alist org-prettify-alist) + (setq-local prettify-symbols-compose-predicate #'org-pretty-compose-p) ;; Try to set `org-hide' face correctly. (let ((foreground (org-find-invisible-foreground))) (when foreground @@ -9551,6 +9554,18 @@ The cdr of LINK must be either a link description or nil." (concat (format "%-45s" (substring desc 0 (min (length desc) 40))) "<" (car link) ">"))) +(defvar-local org-prettify-alist '(("*" . ?•)) + "An alist of symbols to prettify, see `prettify-symbols-alist'. +Whether the symbol actually gets prettified is controlled by +`org-pretty-compose-p', which see.") + +(defun org-pretty-compose-p (_start _end match) + "Return t if the symbol should be prettified. +MATCH is the string match. See also +`prettify-symbols-compose-predicate'." + (when (string= match "*") + (org-at-heading-p))) + ;;;###autoload (defun org-insert-link-global () "Insert a link like Org mode does. -- 2.16.3