Sangrado del bloque de comillas del modo Org (resaltado)

8

¿Se puede configurar la sangría del bloque de cotización del modo Org? Me gustaría resaltar bloques de comillas con márgenes sangrados, tanto a la izquierda como a la derecha si es posible:

ingrese la descripción de la imagen aquí

El ejemplo anterior muestra las propiedades org-quote faciales (p. Ej .: :height :foreground, etc.) modificadas en mi tema. Sin embargo, los márgenes izquierdo y derecho que se muestran en el bloque de comillas están falsificados usando espacios. Quizás la sangría se establece por wrap-prefix, que es una propiedad de texto especial ? Si esta es la dirección correcta, ¿cómo podría establecer una costumbre solo wrap-prefixpara bloques de presupuesto de organización?

Snelephant
fuente

Respuestas:

1

Se puede hacer con bastante facilidad durante el bloqueo de fuente agregando una función personalizada a org-font-lock-hook. Esto funciona bien a menos que lo use org-indent-mode, que recalcula y anula line-prefixy wrap-prefixdespués de los cambios de búfer.

(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))))))))

No creo que haya una manera fácil de hacer que se ajuste antes al final de la línea, es decir, la sangría correcta (no hay wrap-suffixpropiedad " ").

Anders Johansson
fuente
0

Creo que la característica que desea aún no existe. Además, creo que la respuesta de Anders Johansson es genial.

Este es un ansatz ligeramente diferente y solo comienza a usar el 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
fuente