la fuente org-block-background no tiene efecto


9

Yo uso variable-pitch-modecon orgtampones. Normalmente me puse org-blocka fixed-pitchy el código entre #+BEGIN_SRCy #+END_SRCque se efectúan correctamente como fuentes de ancho fijo, también con resaltado de sintaxis correcta. Sin embargo, a partir de la semana pasada, por alguna razón, aunque la fuente del bloque de código todavía tenía el resaltado de sintaxis adecuado, la cara se volvió igual a la de variable-pitch-facelos textos normales del modo de organización. Actualizo mis paquetes periódicamente y creo que una actualización org-modecausó el problema, pero no estoy seguro de qué sucedió.


Actualizar:

Resulta que esto está realmente relacionado con la org-block-backgroundcara, que se ha eliminado en la versión 8.3.1 de la organización en commit f8b42e8, por lo tanto, el error. No estoy seguro si hay una solución todavía. /programming/26290924/fontify-r-code-blocks-in-org-mode-8 https://lists.gnu.org/archive/html/emacs-orgmode/2015-08/msg00510 .html

Actualmente solo estoy bloqueando mi versión del modo org. A la anterior.


Actualización 2:

La versión más reciente del modo org, versión 9.0.0, aparentemente permite src-blocksheredar la org-blockcara, mientras que la org-block-backgroundcara se vuelve obsoleta. Así que ahora, simplemente configurando la org-blockcara, debería poder tener fuentes de ancho fijo para todos los códigos.



@rasmus Gracias por el parche. Sin embargo, esto parece funcionar en un #BEGIN_EXAMPLEbloque, pero ¿no funciona #BEGIN_SRC language_name? Una vez que el lenguaje debe tener su propio resaltado de sintaxis, la fuente vuelve a tono variable en mi caso.
xji

Debe usar la versión maestra, que eventualmente será Org-9.
rasmus

@rasmus Solo para confirmar, en esta versión, la cara entre #BEGIN_SRC lang_namey #END_SRCdebería ser algo diferente default, ¿verdad? Actualmente cuando ejecuto describe-facedentro del bloque, obtengo default, que es la misma fuente que el texto normal de orgmode. Mientras entre #BEGIN_EXAMPLEy #END_EXAMPLEes org-blocky para ~text~es org-code, para =text=es org-verbatimy , por lo tanto, esos textos se muestran correctamente como tono fijo.
xji

@rasmus Ya que sigue defaultenfrentan beween #BEGIN_SRC lang_namey #END_SRC, parece imposible establecerlo a-paso fijo, manteniendo el contenido de paso variable normal. Sin embargo, no estoy seguro de haber instalado correctamente la rama maestra.
xji

Respuestas:


7

Resulta que esto está realmente relacionado con org-block-background face, que se ha eliminado en org versión 8.3.1 en commit f8b42e8, por lo tanto, el error. La justificación parece ser

  1. causa un error con la psexportación
  2. es ineficiente

Quizás en el futuro haya una alternativa, pero aún no.

/programming/26290924/fontify-r-code-blocks-in-org-mode-8

https://lists.gnu.org/archive/html/emacs-orgmode/2015-08/msg00510.html

Actualmente parece que la única forma de recuperar el comportamiento anterior es revertir manualmente los cambios introducidos en commit f8b42e8. Puedes ver el commit aquí:

http://orgmode.org/cgit.cgi/org-mode.git/commit/?id=f8b42e8

diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index e693dab..83453e8 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -537,9 +537,6 @@ follows a #+DATE:, #+AUTHOR: or #+EMAIL: keyword."
   :group 'org-faces
   :version "22.1")

-(defface org-block-background '((t ()))
-  "Face used for the source block background.")
-
 (org-copy-face 'org-meta-line 'org-block-begin-line
   "Face used for the line delimiting the begin of source blocks.")

diff --git a/lisp/org.el b/lisp/org.el
index a153151..7e30061 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5930,15 +5930,7 @@ by a #."
          (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
+       (add-text-properties beg1 block-end '(src-block t)))
           (quoting
        (add-text-properties beg1 (min (point-max) (1+ end1))
                     '(face org-block))) ; end of source block
@@ -21828,9 +21820,7 @@ and end of string."
 When INSIDE is non-nil, don't consider we are within a src block
 when point is at #+BEGIN_SRC or #+END_SRC."
   (let ((case-fold-search t) ov)
-    (or (and (setq ov (overlays-at (point)))
-        (memq 'org-block-background
-          (overlay-properties (car ov))))
+    (or (and (eq (get-char-property (point) 'src-block) t))
    (and (not inside)
         (save-match-data
           (save-excursion

Gracias por desenterrar eso, es una pena, ya que realmente no había visto ninguno de los problemas.
Stuart Hickinbottom

@stuarthickinbottom Sí, supongo que ese cambio solo se produjo después de que mi modo de organización se actualizó a 8.3.1
xji

2

No estoy seguro de cuándo cambió, pero también lo estoy viendo.

Al usar C-u C-x =dentro de un bloque de este tipo, puedo ver que en realidad tiene la cara org-block-backgroundahora, en lugar de org-block. Personalizar esa cara para heredar de fixed-pitchtrabajos para mí.

Probado de la siguiente manera:

(set-face-attribute 'org-block-background nil :inherit 'fixed-pitch)

Si desea preservar cualquier herencia existente en esa cara, puede hacer lo siguiente (adaptado del original aquí: /programming/3758139/variable-pitch-for-org-mode-fixed-pitch-for -tables / 16819449 # 16819449 ):

(defun my-adjoin-to-list-or-symbol (element list-or-symbol)
    (let ((list (if (not (listp list-or-symbol))
                    (list list-or-symbol)
                  list-or-symbol)))
      (require 'cl-lib)
      (cl-adjoin element list)))

(set-face-attribute 'org-block-background nil :inherit
            (my-adjoin-to-list-or-symbol
             'fixed-pitch
             (face-attribute 'org-block-background :inherit)))

He estado usando este método antes de que ocurriera este problema. Resulta que la org-block-backgroundcara se ha eliminado en la versión 8.3.1 de la organización, por lo que probablemente el error. stackoverflow.com/questions/26290924/… lists.gnu.org/archive/html/emacs-orgmode/2015-08/msg00523.html
xji

+1 para Cu Cx = Nunca supe que existía, y he estado buscando algo como esto por un tiempo.
Julien Chastang
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.