From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Branham Subject: Re: Support showing stars as pretty bullets Date: Tue, 10 Apr 2018 11:00:32 -0500 Message-ID: <87po37nja7.fsf@gmail.com> References: <874lkutzg8.fsf@gmail.com> <878ta51m3w.fsf@nicolasgoaziou.fr> <87sh8di0je.fsf@gmail.com> <87woxoztd5.fsf@nicolasgoaziou.fr> <87k1tofjlo.fsf@gmail.com> <87vad8vxld.fsf@nicolasgoaziou.fr> <87370ak4a0.fsf@gmail.com> <87r2nt4y2f.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35436) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f5vhL-0006he-2L for emacs-orgmode@gnu.org; Tue, 10 Apr 2018 12:00:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f5vhG-0001Dg-2z for emacs-orgmode@gnu.org; Tue, 10 Apr 2018 12:00:43 -0400 Received: from mail-ot0-x22b.google.com ([2607:f8b0:4003:c0f::22b]:33308) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f5vhF-0001DM-Q0 for emacs-orgmode@gnu.org; Tue, 10 Apr 2018 12:00:38 -0400 Received: by mail-ot0-x22b.google.com with SMTP id 23-v6so13323938otj.0 for ; Tue, 10 Apr 2018 09:00:37 -0700 (PDT) In-reply-to: <87r2nt4y2f.fsf@nicolasgoaziou.fr> 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: Nicolas Goaziou Cc: Org Mode List --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Thu 05 Apr 2018 at 07:50, Nicolas Goaziou wrote: Hi, and sorry for the delayed response. > I don't think users should call M-x prettify-symbols-mode. Instead, they > could call `org-art-prettify-buffer', an autoloaded function, which > would properly initialize `prettify-symbols-mode' and so on. What > mechanism is behind prettification is not important. But then users of global-prettify-symbols-mode don't see the pretty symbols in org buffers without knowing about and activating org-pretty-mode. Anyway, the attached patch moves it to org-pretty.el. > BTW, we could have a defcustom listings all eye candy > `org-art-prettify-buffer' -- or simply `org-prettify-buffer' if the > library is called "org-prettify" -- could do (e.g., headlines, > bullets...). > >> prettify-symbols-alist isn't, so I don't think this should be either. > > Of course. But Org users may want to control what symbol is used. > Anyway, I don't have a strong opinion about it. I've left it as a defvar since there's no way for us to know about what people want prettified where. Hopefully the default prettify-symbols-compose-p function does an OK job, but people will have to modify that if they customize org-pretty-alist anyway. >>> Can it be tested somehow? >> >> I'll look into it Can you see if these tests work for you? They work on my end, but I'm not sure where to put them. Should they go into a new file testing/lisp/test-org-pretty.el? (ert-deftest test-org-pretty-mode () "Test `org-pretty-mode'." (should (equal t (org-test-with-temp-text "* Test" (org-pretty-mode) (org-pretty-compose-p 1 1 "*") ))) (should-not (equal t (org-test-with-temp-text "* Test *" (org-pretty-mode) (org-pretty-compose-p 8 8 "*"))))) ------------------------------------------------------------ >From 3278c7dd9d426bf205542c78d51456a96196988b Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Tue, 10 Apr 2018 10:38:09 -0500 Subject: [PATCH] New minor mode org-pretty-mode * lisp/org-pretty.el: New file * etc/ORG-NEWS: Document new minor mode --- etc/ORG-NEWS | 9 ++++++ lisp/org-pretty.el | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 lisp/org-pretty.el diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 0edd77115..0339a2df3 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -228,7 +228,16 @@ parameters. See example bellow. select sysdate from dual; ,#+END_SRC #+END_SRC +*** New minor mode ~org-pretty-mode~ supports showing prettier characters. +By default, it replaces asterisks in headings with a utf8 bullet: =E2=80=A2 +To enable, either call M-x org-pretty-mode or add + +#+BEGIN_SRC elisp + (add-hook 'org-mode-hook #'org-pretty-mode) +#+END_SRC + +to your configuration file. ** New functions *** ~org-insert-structure-template~ diff --git a/lisp/org-pretty.el b/lisp/org-pretty.el new file mode 100644 index 000000000..2f2aaa68d --- /dev/null +++ b/lisp/org-pretty.el @@ -0,0 +1,71 @@ +;;; org-pretty.el --- Support for prettify-symbols-mode -*- lexical-bindi= ng: t; -*- + +;; Copyright (C) 2018 Free Software Foundation, Inc. +;; +;; Author: J. Alexander Branham +;; Maintainer: emacs-orgmode@gnu.org +;; +;; This file is part of GNU Emacs. +;; +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . +;; +;;; Commentary: +;; +;; This file adds support for `prettify-symbols-mode' in Org buffers. +;; To use, call M-x org-prettify-mode or put +;; +;; (add-hook 'org-mode-hook #'org-prettify-mode) +;; +;; in your configuration file. + +;;; Code: + +(require 'org) + +(defvar-local org-pretty-alist '(("*" . ?=E2=80=A2)) + "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 non-nil if the symbol between START and END is to be prettified. +MATCH is the string match. See also +`prettify-symbols-compose-predicate'." + (if (string=3D match "*") + ;; Prettify asterisks in headings. + (and (org-match-line org-outline-regexp-bol) + (< end (match-end 0))) + ;; Else rely on the default function. + (funcall #'prettify-symbols-default-compose-p start end match))) + +;;;###autoload +(define-minor-mode org-pretty-mode + "Set up `prettify-symbols-mode' in org buffers." + :lighter nil + :keymap nil + (if org-pretty-mode + ;; Turn on. + (when (eq major-mode 'org-mode) + (setq-local prettify-symbols-alist org-pretty-alist) + (setq-local prettify-symbols-compose-predicate #'org-pretty-compose-p) + (prettify-symbols-mode)) + ;; Turn off. + (when (eq major-mode 'org-mode) + (setq-local prettify-symbols-alist nil) + (setq-local prettify-symbols-compose-predicate #'prettify-symbols-de= fault-compose-p) + (prettify-symbols-mode -1)))) + +(provide 'org-pretty) + +;;; org-pretty.el ends here -- 2.17.0 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0001-New-minor-mode-org-pretty-mode.patch Content-Transfer-Encoding: quoted-printable >From 3278c7dd9d426bf205542c78d51456a96196988b Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Tue, 10 Apr 2018 10:38:09 -0500 Subject: [PATCH] New minor mode org-pretty-mode * lisp/org-pretty.el: New file * etc/ORG-NEWS: Document new minor mode --- etc/ORG-NEWS | 9 ++++++ lisp/org-pretty.el | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 lisp/org-pretty.el diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 0edd77115..0339a2df3 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -228,7 +228,16 @@ parameters. See example bellow. select sysdate from dual; ,#+END_SRC #+END_SRC +*** New minor mode ~org-pretty-mode~ supports showing prettier characters. +By default, it replaces asterisks in headings with a utf8 bullet: =E2=80=A2 =20 +To enable, either call M-x org-pretty-mode or add + +#+BEGIN_SRC elisp + (add-hook 'org-mode-hook #'org-pretty-mode) +#+END_SRC + +to your configuration file. ** New functions *** ~org-insert-structure-template~ =20 diff --git a/lisp/org-pretty.el b/lisp/org-pretty.el new file mode 100644 index 000000000..2f2aaa68d --- /dev/null +++ b/lisp/org-pretty.el @@ -0,0 +1,71 @@ +;;; org-pretty.el --- Support for prettify-symbols-mode -*- lexical-bindi= ng: t; -*- + +;; Copyright (C) 2018 Free Software Foundation, Inc. +;; +;; Author: J. Alexander Branham +;; Maintainer: emacs-orgmode@gnu.org +;; +;; This file is part of GNU Emacs. +;; +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . +;; +;;; Commentary: +;; +;; This file adds support for `prettify-symbols-mode' in Org buffers. +;; To use, call M-x org-prettify-mode or put +;; +;; (add-hook 'org-mode-hook #'org-prettify-mode) +;; +;; in your configuration file. + +;;; Code: + +(require 'org) + +(defvar-local org-pretty-alist '(("*" . ?=E2=80=A2)) + "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 non-nil if the symbol between START and END is to be prettified. +MATCH is the string match. See also +`prettify-symbols-compose-predicate'." + (if (string=3D match "*") + ;; Prettify asterisks in headings. + (and (org-match-line org-outline-regexp-bol) + (< end (match-end 0))) + ;; Else rely on the default function. + (funcall #'prettify-symbols-default-compose-p start end match))) + +;;;###autoload +(define-minor-mode org-pretty-mode + "Set up `prettify-symbols-mode' in org buffers." + :lighter nil + :keymap nil + (if org-pretty-mode + ;; Turn on. + (when (eq major-mode 'org-mode) + (setq-local prettify-symbols-alist org-pretty-alist) + (setq-local prettify-symbols-compose-predicate #'org-pretty-compose-p) + (prettify-symbols-mode)) + ;; Turn off. + (when (eq major-mode 'org-mode) + (setq-local prettify-symbols-alist nil) + (setq-local prettify-symbols-compose-predicate #'prettify-symbols-de= fault-compose-p) + (prettify-symbols-mode -1)))) + +(provide 'org-pretty) + +;;; org-pretty.el ends here --=20 2.17.0 --=-=-=--