Wenn Sie möchten, dass die Symbole in der gesamten Organisationsdatei verschönert werden, definieren Sie sie einfach prettify-symbols-alist
im Puffer und aktivieren Sie sie prettify-symbols-mode
.
Eine bessere Lösung würde jedoch sicherstellen, dass diese Symbole nur in den src-Blöcken (und entsprechend dem Sprachmodus) hübsch sind . Beachten Sie, dass dies beim Bearbeiten des org-edit-src-code
Quellblocks der Fall ist (da der src-Block im entsprechenden Hauptmodus in einen Puffer kopiert wird).
Schauen Sie sich an, wie die Schriftart von src-Blöcken funktioniert (Funktion org-src-font-lock-fontify-block
in Datei org-src.el
:
- Block als Zeichenfolge extrahieren
- Fügen Sie es in einen dedizierten Puffer ein
- Sprachhauptmodus einstellen
- Rufen Sie font-lock-fontify-buffer auf
- Kopieren Sie die Gesichtseigenschaften vom Puffer in den Organisationspuffer
- Markieren Sie den Text im Organisationspuffer als font-lock-fontified
Und wenn man sieht (Funktion enter prettify-symbols-mode
in Datei prog-mode.el
), dass die Prettifizierung von Symbolen von 'composition
Eigenschaften abhängt , kann man ableiten, dass wir nur Änderungen org-src-font-lock-fontify-block
vornehmen müssen, damit auch 'composition
Eigenschaften kopiert werden.
Hier ist die geänderte Funktion (siehe markierten Teil 'Addition'):
(defun org-src-font-lock-fontify-block (lang start end)
"Fontify code block.
This function is called by emacs automatic fontification, as long
as `org-src-fontify-natively' is non-nil."
(let ((lang-mode (org-src--get-lang-mode lang)))
(when (fboundp lang-mode)
(let ((string (buffer-substring-no-properties start end))
(modified (buffer-modified-p))
(org-buffer (current-buffer)) pos next)
(remove-text-properties start end '(face nil))
(with-current-buffer
(get-buffer-create
(concat " org-src-fontification:" (symbol-name lang-mode)))
(delete-region (point-min) (point-max))
(insert string " ") ;; so there's a final property change
(unless (eq major-mode lang-mode) (funcall lang-mode))
;; Avoid `font-lock-ensure', which does not display fonts in
;; source block.
(font-lock-fontify-buffer)
(setq pos (point-min))
(while (setq next (next-single-property-change pos 'face))
(put-text-property
(+ start (1- pos)) (1- (+ start next)) 'face
(get-text-property pos 'face) org-buffer)
(setq pos next))
;; Addition: also copy 'composition info for prettified symbols
(setq pos (point-min))
(while (setq next (next-single-property-change pos 'composition))
(put-text-property
(+ start (1- pos)) (1- (+ start next)) 'composition
(get-text-property pos 'composition) org-buffer)
(setq pos next))
;; End addition
)
(add-text-properties
start end
'(font-lock-fontified t fontified t font-lock-multiline t))
(set-buffer-modified-p modified)))))
Sie müssen sicherstellen, dass dies nach der Definition in geladen wird org-src.el
.