Tengo una tabla en la org-mode
que tiene el siguiente formato:
| Name | email | number |
|------------+-----------------+--------|
| Doe, John | [email protected] | 7 |
| Doe, Jane | [email protected] | |
|------------+-----------------+--------|
| Foo, Pete | [email protected] | 5 |
|------------+-----------------+--------|
| Bar, Mary | [email protected] | 3 |
| Quux, Mike | [email protected] | |
|------------+-----------------+--------|
Pero quiero que la tabla esté formateada para que se vea así:
| Name | email | number |
|------------+-----------------+--------|
| Bar, Mary | [email protected] | 3 |
| Quux, Mike | [email protected] | |
|------------+-----------------+--------|
| Doe, John | [email protected] | 7 |
| Doe, Jane | [email protected] | |
|------------+-----------------+--------|
| Foo, Pete | [email protected] | 5 |
|------------+-----------------+--------|
Esta tabla se debe ordenar alfabéticamente. Entonces las dos últimas filas deberían ser las primeras. La separación con las líneas horizontales debe permanecer. Si hay diferentes palabras en columnas agrupadas, no importa cómo se ordenen. Entonces, el último grupo en la tabla anterior puede ser Bar
seguido por Baz
o Baz
seguido por Bar
. ¿Cómo puedo hacer esto con Emacs org-mode
?
Respuestas:
Desafortunadamente,
org-mode
no mantiene una estructura de datos alrededor que pueda usarse para realizar modificaciones que luego se reflejan directamente en la tabla, por lo que tenemos que arrastrar las líneas a una lista, hacer un procesamiento de la lista y luego convertir la lista resultante nuevamente en texto.En general, el enfoque es el siguiente:
org-table-hlines
; esta variable contiene los números de fila de líneas horizontalesalmacenar las líneas relacionadas con cada grupo en una lista y poner cada grupo en una lista
ordena esta lista por el valor
car
de cada elemento, obteniendo algo como esto:luego reconstruya la tabla de esta lista iterando sobre cada grupo
EDITAR:
Aquí hay algo para comenzar. Es bastante incómodo, pero es solo para ilustrar la idea. (en
rows-by-group
realidad contiene duplicados, por lo que esto no es completamente correcto).fuente