emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Phil Estival <pe@7d.nz>
To: emacs-orgmode@gnu.org
Subject: [PATCH] (cosmetic) improving block declaration colors
Date: Wed, 8 Jun 2022 09:00:52 +0200	[thread overview]
Message-ID: <2b705b3c-3eec-c466-263b-1e3224f9ea84@7d.nz> (raw)

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


Hi,

from org 9.5.3-g69c588

PATCH 1/2:

Having several programming books converted to org,
I read a lot of begin/end_src expressions. The
following patch helps lessen the visibility of
those terms: they are syntax tokens and can be
replaced my colors.

So this gives different faces to the language
specifiers and begin_ words, to attenuate
begin_/end_src and emphasize the language selected.

The picture in the attachment shows how source
blocks get rendered then.  Don't mind too much
the "begin_quote" on it, as it's intended to
be "begin_src" under normal circumstances.


PATCH 2/2:
org/lisp/org.el::4966
#+begin_src elisp
   ;; Set face extension as requested. FIXME
   ;; (org--set-faces-extend '(org-block-begin-line org-block-end-line)
   ;;                        org-fontify-whole-block-delimiter-line)
#+end_src

I turned off those two lines otherwise the extend
property of org-block-begin-line and org-block-end-line
would keep coming back even after customizing them
("but I just did untick that box!")

When org-fontify-whole-block-delimiter-line is set to nil,
the block background start after /#+begin_src elisp/.
When it isn't set, an underline will run all over the line.


have a nice day,
Phil




[-- Attachment #2: org_src_block_2022-06-08.png --]
[-- Type: image/png, Size: 4885 bytes --]

[-- Attachment #3: 0001-cosmetic-distinct-faces-in-block-declaration-when-is.patch --]
[-- Type: text/x-patch, Size: 3445 bytes --]

From c6e0bf2b4753608467bf9d545f62cc1d79bda80f Mon Sep 17 00:00:00 2001
From: Phil Estival <pe@7d.nz>
Date: Wed, 8 Jun 2022 08:24:00 +0200
Subject: [PATCH 1/2] (cosmetic) distinct faces in block declaration when is
 language set

---
 lisp/org-faces.el | 12 ++++++++++++
 lisp/org.el       | 21 ++++++++++++++++-----
 2 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index d96898372..96e190a17 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -455,6 +455,18 @@ verse and quote blocks are fontified using the `org-verse' and
   "Face used for the line delimiting the end of source blocks."
   :group 'org-faces)
 
+(defface org-block-begin-src '((t (:inherit org-block-begin-line)))
+  "Face used for the begin_term of source blocks."
+  :group 'org-faces)
+
+(defface org-block-lang '((t (:inherit org-block-begin-line)))
+  "Face used for the language of source blocks."
+  :group 'org-faces)
+
+(defface org-block-switches '((t (:inherit org-block-begin-line)))
+  "Face used for the switches and headers arguments of source blocks."
+  :group 'org-faces)
+
 (defface org-verbatim '((t (:inherit shadow)))
   "Face for fixed-with text like code snippets."
   :group 'org-faces
diff --git a/lisp/org.el b/lisp/org.el
index 1fc4251a3..c7de64b81 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4964,7 +4964,7 @@ The following commands are available:
       (set-face-foreground 'org-hide foreground)))
   ;; Set face extension as requested.
   (org--set-faces-extend '(org-block-begin-line org-block-end-line)
-                         org-fontify-whole-block-delimiter-line)
+                          org-fontify-whole-block-delimiter-line)
   (org--set-faces-extend org-level-faces org-fontify-whole-heading-line))
 
 ;; Update `customize-package-emacs-version-alist'
@@ -5291,6 +5291,8 @@ by a #."
 	    ;; after the end of block content.
 	    (block-start (match-end 0))
 	    (block-end nil)
+            (lang-begin (match-beginning 7))
+            (lang-end (match-end 7))
 	    (lang (match-string 7)) ; The language, if it is a source block.
 	    (bol-after-beginline (line-beginning-position 2))
 	    (dc1 (downcase (match-string 2)))
@@ -5346,10 +5348,19 @@ by a #."
 	     ((string= block-type "verse")
 	      (add-face-text-property
 	       bol-after-beginline beg-of-endline 'org-verse t)))
-	    ;; Fontify the #+begin and #+end lines of the blocks
-	    (add-text-properties
-	     beg (if whole-blockline bol-after-beginline end-of-beginline)
-	     '(face org-block-begin-line))
+             ;; Fontify the #+begin and #+end lines of the blocks
+             (if (string= lang "")
+                 (add-text-properties
+	          beg (if whole-blockline bol-after-beginline end-of-beginline)
+                  '(face org-block-begin-line))
+               ;; when language is set, fontify separately
+               ;; begin_[src], language and switches
+              (and (add-text-properties beg lang-begin
+                                        '(face org-block-begin-src))
+                   (add-text-properties lang-begin lang-end
+                                        '(face org-block-lang))
+	           (add-text-properties lang-end bol-after-beginline
+                                        '(face org-block-switches))))
 	    (unless (eq (char-after beg-of-endline) ?*)
 	      (add-text-properties
 	       beg-of-endline
-- 
2.31.GIT


[-- Attachment #4: 0002-prevent-org-fontify-whole-block-delimiter-line-to-ov.patch --]
[-- Type: text/x-patch, Size: 1107 bytes --]

From b80d37d57d71a747e113ec56fa10aacb0bd750d4 Mon Sep 17 00:00:00 2001
From: Phil Estival <pe@7d.nz>
Date: Wed, 8 Jun 2022 08:26:56 +0200
Subject: [PATCH 2/2] prevent org-fontify-whole-block-delimiter-line to
 override extend

---
 lisp/org.el | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index c7de64b81..81f3a98f2 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -4962,9 +4962,9 @@ The following commands are available:
   (let ((foreground (org-find-invisible-foreground)))
     (when foreground
       (set-face-foreground 'org-hide foreground)))
-  ;; Set face extension as requested.
-  (org--set-faces-extend '(org-block-begin-line org-block-end-line)
-                          org-fontify-whole-block-delimiter-line)
+  ;; Set face extension as requested. FIXME
+  ;; (org--set-faces-extend '(org-block-begin-line org-block-end-line)
+  ;;                         org-fontify-whole-block-delimiter-line)
   (org--set-faces-extend org-level-faces org-fontify-whole-heading-line))
 
 ;; Update `customize-package-emacs-version-alist'
-- 
2.31.GIT


             reply	other threads:[~2022-06-08  7:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-08  7:00 Phil Estival [this message]
2022-06-08 13:50 ` [PATCH] (cosmetic) improving block declaration colors Ihor Radchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2b705b3c-3eec-c466-263b-1e3224f9ea84@7d.nz \
    --to=pe@7d.nz \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).