Tengo una columna en una tabla de modo org con números en cada celda. Me gustaría cambiar el color de fondo de la celda a rojo si el número es inferior a 1 o superior a 2.
¿Cómo puedo hacer eso?
org-table
formatting
formula
Trevoke
fuente
fuente
org-table-edit-formulas
akaC-c '
comoorg-table-toggle-coordinate-overlays
akaC-c }
proporcionan pistas sobre cómo implementar este tipo de función de resaltado. Quizás un gurú de elisp proporcionará algunos consejos o ejemplos adicionales.Respuestas:
Obtuve el formato de tabla completa para trabajar con algunos Elisp:
Se evalúa una fórmula para el contenido de las celdas y se convierte a un color usando un gradiente.
Archivo de la organización que incluye el código:
fuente
cs/itpl
realiza una interpolación lineal simple y lacs/gradient
utiliza para interpolar un color usando una lista de puntos de datos y paradas de color. A partir de ahí, solo agrega una superposición como en su respuesta. El ejemplo es un poco trivial, ya que consulta datos de otras partes de la tabla.org-table-map-tables
.Usar una superposición es cómo voy a querer hacerlo. Puedo conectarme a org-ctrl-c-ctrl-c-hook. Significa que puedo presionar Cc Cc para ejecutar la verificación.
Necesito verificar adecuadamente que estoy dentro de una tabla y ejecutar esto para todas las celdas.
Entonces probablemente necesito conectarme a la función de alineación para rehacer las superposiciones o al menos borrarlas.
Este código hará que el fondo de la celda sea rojo para la celda en la que estoy si el valor es menor que 1 o mayor que 2 cuando presiono Cc Cc ... Pero todavía tiene errores y borrará las superposiciones si una de ellas no lo hace. No coincide con las reglas.
fuente
Todavía no es una respuesta, pero quiero hacer un seguimiento de las cosas que descubro aquí, ya que pueden darle una idea a otra persona.
Es posible modificar condicionalmente el valor de la celda en sí :
Podemos crear una función de formato en elisp y luego llamarla desde la línea de fórmula:
Y se puede usar así:
Creo que lo que quiero puede requerir la creación de una superposición.
fuente
Emacs proporciona la función
hi-lock-face-buffer
M-s h rque resalta una expresión regular en el búfer a medida que escribe.Todo lo que necesitamos es una expresión regular que coincida con cualquier número que no sea 1 o 2 y esté dentro de la celda de una tabla. Prueba esto:
(Puede recordar expresiones anteriores con M-ny M-p.)
fuente