From: "Stefan-W. Hahn" <stefan.hahn@s-hahn.de>
To: emacs-orgmode@gnu.org, emacs-devel@gnu.org
Subject: Fontification of org code block not printed
Date: Mon, 28 Jul 2014 18:02:32 +0200 [thread overview]
Message-ID: <20140728160232.GG17977@pille.home> (raw)
Hello,
I'm using org-mode and have had some trouble with printing with faces, which
has been solved in emacs. Currently I'm using the following
version:
commit 59b20d77aec5055417eeec039af84de88cda12b2
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Mon Jun 30 22:25:52 2014 -0400
* lisp/ps-def.el (ps-generate-postscript-with-faces1): Don't mess with
buffer-invisibility-spec.
When using org blocks like:
(from org.el)
#+BEGIN_SRC elisp
(defun org-fontify-meta-lines-and-blocks-1 (limit)
"Fontify #+ lines and blocks."
..
(cond
((and lang (not (string= lang "")) org-src-fontify-natively)
(org-src-font-lock-fontify-block lang block-start block-end)
;; remove old background overlays
(mapc (lambda (ov)
(if (eq (overlay-get ov 'face) 'org-block-background)
(delete-overlay ov)))
(overlays-at (/ (+ beg1 block-end) 2)))
;; add a background overlay
(setq ovl (make-overlay beg1 block-end))
(overlay-put ovl 'face 'org-block-background)
(overlay-put ovl 'evaporate t)) ;; make it go away when empty
..
#+END_SRC
The text between #+BEGIN_SRC and #+END_SRC gets fontified with the
fontification of the given mode, in this case elisp.
A describe-text-properties at position of 'd' of defun gives:
#+BEGIN_QUOTE
Text content at position 858:
There is an overlay here:
From 857 to 1499
evaporate t
face org-block-background
There are text properties here:
face font-lock-keyword-face
font-lock-fontified t
font-lock-multiline t
fontified t
#+END_QUOTE
This all is correct and fontified visible in the emacs buffer.
But if this part is going to be postscript printed the fontifiying _is_ not
to be printed.
The face for printing is retrieved in ps-generate-postscript-with-faces1
(from ps-def.el) with 'get-char-property'.
(from ps-def.el)
#+BEGIN_SRC elisp
(defun ps-generate-postscript-with-faces1 (from to)
..
(while (< from to)
(and (< property-change to) ; Don't search for property change
; unless previous search succeeded.
(setq property-change (next-property-change from nil to)))
(and (< overlay-change to) ; Don't search for overlay change
; unless previous search succeeded.
(setq overlay-change (min (next-overlay-change from)
to)))
(setq position (min property-change overlay-change)
before-string nil
after-string nil)
(setq face
(cond ((invisible-p from)
'emacs--invisible--face)
((get-char-property from 'face))
(t 'default)))
..
#+END_SRC
The call to get-char-property gives for every position the face of the overlay,
which is org-block-background, and not the face of the propertized text.
I think this will be the same for all such #+BEGIN/#+END blocks in org-mode.
I'm sure that this is not what I expect but I'm not sure if this is a fault
in ps-def.el or org.el. Because of this I send this to both mailing lists to
get help before sending an error report.
With kind regards,
Stefan
--
Stefan-W. Hahn It is easy to make things.
It is hard to make things simple.
next reply other threads:[~2014-07-28 16:03 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-28 16:02 Stefan-W. Hahn [this message]
2014-07-28 16:57 ` Fontification of org code block not printed Bastien
2014-07-29 17:07 ` Stefan-W. Hahn
[not found] ` <87lhrdtmyq.fsf-E3UqQZAQFPqWIDz0JBNUog@public.gmane.org>
2014-08-01 7:31 ` Francesco Pizzolante
2015-05-25 12:22 ` Joe Corneli
2014-07-29 9:38 ` Stefan Monnier
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=20140728160232.GG17977@pille.home \
--to=stefan.hahn@s-hahn.de \
--cc=emacs-devel@gnu.org \
--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).