Se você deseja que os símbolos sejam pré-modificados em todo o arquivo organizacional, basta definir prettify-symbols-alist
no buffer e ativar prettify-symbols-mode
.
Mas uma solução melhor garantiria que esses símbolos sejam prettificados apenas nos blocos src (e de acordo com o modo de idioma). Observe que eles estão ao editar o bloco de origem org-edit-src-code
(já que o bloco src é copiado em um buffer no modo principal correspondente).
Examinando como a fonte do bloco src funciona (função org-src-font-lock-fontify-block
no arquivo org-src.el
:
- extrair bloco como uma string
- insira-o em um buffer dedicado
- definir modo principal de idioma
- chame font-lock-fontify-buffer
- copiar 'propriedades de face do buffer para o buffer organizacional
- marcar o texto no buffer organizacional como font-lock-fontified
E vendo (função enter prettify-symbols-mode
no arquivo prog-mode.el
) que a pré-identificação de símbolos depende de 'composition
propriedades, pode-se deduzir que precisamos mudar org-src-font-lock-fontify-block
para fazer com que as 'composition
propriedades também sejam copiadas .
Aqui está a função modificada (consulte a seção 'Adição'):
(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)))))
Você deve garantir que isso seja carregado após a definição org-src.el
.