Escribo mi propio modo en Elisp. Básicamente es una aplicación simple crud mostrando filas de datos que pueden ser manipulados a través del minibúfer. Me gustaría crear una vista para estas filas que se parece al administrador de paquetes de emacs: columnas de datos bien alineadas. ¿Cuál es la mejor manera de implementar una vista así?¿Cómo crear una vista de columna en Emacs Lisp?
13
A
Respuesta
18
La respuesta de phils me consiguió en la pista. Sin embargo, no hay tutoriales ni ejemplos sencillos en ninguna parte, así que creé uno. Aquí está un ejemplo de un derivado modo de lista tabulada que tiene datos estáticos y puede imprimir el ID de la columna actual:
(define-derived-mode mymode tabulated-list-mode "mymode" "Major mode My Mode, just a test"
(setq tabulated-list-format [("Col1" 18 t)
("Col2" 12 nil)
("Col3" 10 t)
("Col4" 0 nil)])
(setq tabulated-list-padding 2)
(setq tabulated-list-sort-key (cons "Col3" nil))
(tabulated-list-init-header))
(defun print-current-line-id()
(interactive)
(message (concat "current line ID is: " (tabulated-list-get-id))))
(defun my-listing-command()
(interactive)
(pop-to-buffer "*MY MODE*" nil)
(mymode)
(setq tabulated-list-entries (list
(list "1" ["1" "2" "3" "4"])
(list "2" ["a" "b" "c" "d"])))
(tabulated-list-print t))
1
Si observa el código para la función de listado de paquetes que menciona, verá que emplea package-menu-mode
que deriva de tabulated-list-mode
.
- M-x
find-function
RETpackage-menu-mode
RET - C-hf
tabulated-list-mode
RET
0
utilizo org-mode para este tipo de tarea todo el tiempo.
Esto debería ser un punto de partida para su desarrollo, porque ya tiene buenas tablas.
Cuestiones relacionadas
- 1. Cómo crear una función temporal en Emacs Lisp
- 2. Columna de la posición del buffer en Emacs Lisp?
- 3. Análisis en Emacs Lisp
- 4. PINTURA en Emacs Lisp?
- 5. emacs - autocompletado en modo Emacs Lisp
- 6. Reemplazando una función en Emacs Lisp
- 7. envuelve una función en emacs lisp
- 8. lisp en emacs: ¿cómo comentar una expresión de varias líneas?
- 9. Cómo copiar al portapapeles en Emacs Lisp
- 10. ¿Qué significa [...] # en emacs-lisp?
- 11. Emacs Lisp resaltado de sintaxis
- 12. ¿Cómo agrego las fechas en Emacs usando Emacs Lisp?
- 13. Cómo "decodificar URL" una cadena en Emacs Lisp?
- 14. ¿Cómo comprobar si una cadena está vacía en Emacs Lisp?
- 15. Emacs sin Lisp
- 16. ejecuta continuamente una función emacs lisp
- 17. multiplicación de lista vacía en emacs lisp
- 18. Esquema dialecto de Lisp en Emacs
- 19. emacs lisp: ¿Cómo eliminar/eliminar un elemento de una lista?
- 20. Orden de Evaluación en Emacs Lisp
- 21. ¿qué comando de shell en emacs lisp?
- 22. ¿Uso correcto de aplicar en Emacs Lisp?
- 23. ¿Cómo agregar una nueva columna en una vista en sqlite?
- 24. Diferencia de estructura entre lisp común y emacs lisp
- 25. ¿Qué tan viable es emacs LISP además de editar emacs?
- 26. intérprete Lisp/Scheme sin Emacs?
- 27. Emacs Lisp: evaluar la variable en alist
- 28. Depurar Emacs Lisp modo principal
- 29. awk '{print $ 2, ",", $ 1}' en Emacs Lisp?
- 30. Fechas y horas en Emacs Lisp