Recuo do bloco de cotação do modo de organização (destaque)

8

O recuo do bloco de cotação do modo Org pode ser configurado? Gostaria de destacar blocos de cotação com margens recuadas, esquerda e direita, se possível:

insira a descrição da imagem aqui

O exemplo acima demonstra as propriedades da org-quote face (por exemplo: :height :foregroundetc.) modificadas no meu tema. No entanto, as margens esquerda e direita mostradas no bloco de cotação são falsificadas usando espaços. Talvez o recuo seja definido por wrap-prefix, que é uma propriedade de texto especial ? Se essa for a direção certa, como eu poderia definir um costume apenas wrap-prefixpara blocos de cotação organizacional?

Snelephant
fonte

Respostas:

1

Isso pode ser feito facilmente durante o bloqueio da fonte, adicionando uma função personalizada a org-font-lock-hook. Isso funciona bem, a menos que você use org-indent-mode, que recalcula e substitui line-prefixe wrap-prefixapós as alterações no buffer.

(add-hook 'org-font-lock-hook #'aj/org-indent-quotes)

(defun aj/org-indent-quotes (limit)
  (let ((case-fold-search t))
    (while (search-forward-regexp "^[ \t]*#\\+begin_quote" limit t)
      (let ((beg (1+ (match-end 0))))
        ;; on purpose, we look further than LIMIT
        (when (search-forward-regexp "^[ \t]*#\\+end_quote" nil t)
          (let ((end (1- (match-beginning 0)))
                (indent (propertize "    " 'face 'org-hide)))
            (add-text-properties beg end (list 'line-prefix indent
                                               'wrap-prefix indent))))))))

Eu não acho que exista uma maneira fácil de fazê-lo quebrar mais cedo no final da linha, ou seja, recuo correto (não há wrap-suffixpropriedade " ").

Anders Johansson
fonte
0

Eu acho que o recurso que você deseja ainda não existe. Além disso, acho que a resposta de Anders Johansson é ótima.

Este é um ansatz um pouco diferente e apenas um começo usando o elemento org api:

(defun mw-org-left-margin-for-quote-blocks ()
"Insert a tab as left margin for every org quote block."
(interactive)
(let ((data (org-element-parse-buffer)))
    (org-element-map data 'quote-block
      (lambda (ele)
        (put-text-property
         (save-excursion
           (goto-char (org-element-property :begin ele))
           (beginning-of-line 2)
           (point))
         (save-excursion
           (goto-char (org-element-property :end ele))
           (end-of-line -1)
           (point))
         'line-prefix "\t")))))
Marco Wahl
fonte