emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Support showing stars as pretty bullets
@ 2018-04-01 20:59 Alex Branham
  2018-04-02 18:47 ` Nicolas Goaziou
  0 siblings, 1 reply; 13+ messages in thread
From: Alex Branham @ 2018-04-01 20:59 UTC (permalink / raw)
  To: Org Mode List

[-- Attachment #1: Type: text/plain, Size: 3351 bytes --]

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 <branham@utexas.edu>
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



[-- Attachment #2: 0001-Add-support-for-showing-stars-as-UTF-bullets.patch --]
[-- Type: text/x-patch, Size: 2398 bytes --]

From 8ab48ccd43446bbe447108153c2dbb742d81895b Mon Sep 17 00:00:00 2001
From: Alex Branham <branham@utexas.edu>
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


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2018-04-14 13:10 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-01 20:59 Support showing stars as pretty bullets Alex Branham
2018-04-02 18:47 ` Nicolas Goaziou
2018-04-03  0:41   ` Alex Branham
2018-04-03  1:11     ` William Denton
2018-04-03  6:39     ` Nicolas Goaziou
2018-04-03 14:30       ` Alex Branham
2018-04-03 20:33         ` Nicolas Goaziou
2018-04-04 22:14           ` Alex Branham
2018-04-05 12:50             ` Nicolas Goaziou
2018-04-10 16:00               ` Alex Branham
2018-04-14 10:20                 ` Nicolas Goaziou
2018-04-14 13:10                   ` Rasmus
2018-04-06 20:22         ` Rasmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).