On Tue 03 Apr 2018 at 01:39, Nicolas Goaziou wrote: > Hello, > > Alex Branham writes: > >> Why not, if you don't mind me asking? Other major modes (python, elisp, >> and latex off the top of my head) setup prettify-symbols themselves. > > Because "org.el" file is already 23 kloc long, and I'm trying to put it > on a diet. Fair enough. How about the attached patch instead? It only sets up the two local variables in org.el and puts the rest in org-entities.el since that file is also concerned with replacing characters with "prettier" versions of themselves. Alex ------------------------------------------------------------ From fda030b62e4cf28e25fd3264472b01f498749d5a Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Tue, 3 Apr 2018 09:25:33 -0500 Subject: [PATCH] Add support for showing stars as UTF bullets * lisp/org.el(org-mode): Add local variables * lisp/org-entities.el(org-pretty-compose-p): New function * lisp/org-entities.el(org-prettify-alist): New variable * etc/ORG-NEWS: Document new feature. --- etc/ORG-NEWS | 4 +++- lisp/org-entities.el | 17 +++++++++++++++++ lisp/org.el | 3 +++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 0edd77115..267ab336a 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -228,7 +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-entities.el b/lisp/org-entities.el index e291b521f..f4bdf9de8 100644 --- a/lisp/org-entities.el +++ b/lisp/org-entities.el @@ -29,6 +29,7 @@ (declare-function org-toggle-pretty-entities "org" ()) (declare-function org-table-align "org-table" ()) +(declare-function prettify-symbols-default-compose-p "prog-mode" (start end match)) (defgroup org-entities nil "Options concerning entities in Org mode." @@ -589,6 +590,22 @@ This first checks the user list, then the built-in list." (org-toggle-pretty-entities))) (select-window (get-buffer-window "*Org Entity Help*"))) +;; prettify-mode +(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. +START and END are the start and end points, MATCH is the string +match. See also `prettify-symbols-compose-predicate'." + (if (string= match "*") + ;; prettify asterisks in headings + (org-at-heading-p) + ;; else rely on the default function + (funcall #'prettify-symbols-default-compose-p start end match))) + (provide 'org-entities) diff --git a/lisp/org.el b/lisp/org.el index 5e5087a59..6bf7fef2d 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 -- 2.16.3