Next: , Previous: , Up: Contribuir   [Contents][Index]


22.3 La configuración perfecta

La configuración perfecta para hackear en Guix es básicamente la configuración perfecta para hacerlo en Guile (see Using Guile in Emacs in Guile Reference Manual). Primero, necesita más que un editor, necesita Emacs, con su potencia aumentada gracias al maravilloso Geiser. Para conseguir esta configuración ejecute:

guix install emacs guile emacs-geiser emacs-geiser-guile

Geiser permite desarrollo incremental e interactivo dentro de Emacs: compilación y evaluación de código dentro de los buffers, acceso a documentación en línea (docstrings), completado dependiente del contexto, M-. para saltar a la definición de un objeto, una consola interactiva (REPL) para probar su código, y más (see Introduction in Geiser User Manual). Para desarrollar Guix adecuadamente, asegúrese de aumentar la ruta de carga de Guile (load-path) para que encuentre los archivos fuente de su copia de trabajo:

;; Suponiendo que la copia de trabajo de Guix está en ~/src/guix.
(with-eval-after-load 'geiser-guile
  (add-to-list 'geiser-guile-load-path "~/src/guix"))

Para realmente editar el código, Emacs tiene un modo para Scheme muy limpio. Pero además de eso, no debe perderse Paredit. Provee de facilidades para operar directamente en el árbol sintáctico como elevar una expresión-S o recubrirla, embeber o expulsar la siguiente expresión-S, etc.

We also provide templates for common git commit messages and package definitions in the etc/snippets directory. These templates can be used to expand short trigger strings to interactive text snippets. If you use YASnippet, you may want to add the etc/snippets/yas snippets directory to the yas-snippet-dirs variable. If you use Tempel, you may want to add the etc/snippets/tempel/* path to the tempel-path variable in Emacs.

;; Suponiendo que el checkout de Guix está en ~/src/guix.
;; Configuración de yasnippet
(with-eval-after-load 'yasnippet
   (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
;; Tempel configuration
(con-eval-after-load 'tempel
    ;; Asegúrese de que tempel-path es una lista -- también puede ser una cadena.
    (unless (listp 'tempel-path)
       (setq tempel-path (list tempel-path))
    (add-to-list 'tempel-path "~/src/guix/etc/snippets/tempel/*"))

Los fragmentos de mensajes de la revisión dependen de Magit para mostrar los archivos preparados. En la edición del mensaje de la revisión teclee add seguido de TAB (el tabulador) para insertar la plantilla del mensaje de la revisión de adición de un paquete; teclee update seguido de TAB para insertar una plantilla de actualización de un paquete; teclee https seguido de TAB para insertar una plantilla para cambiar la URI de la página de un paquete a HTTPS.

El fragmento principal para scheme-mode es activado al teclear package... seguido de TAB. Este fragmento también inserta el lanzador origin... que puede ser expandido de nuevo. El fragmento origin puede a su vez insertar otros identificadores de lanzado terminando en ..., que pueden ser expandidos de nuevo.

También proporcionamos herramientas para la inserción y actualización automática del copyright en etc/copyright.el. Puede proporcionar su nombre completo, correo electrónico y cargar el archivo.

(setq user-full-name "Alicia Díaz")
(setq user-mail-address "alicia@correo.org")
;; Se asume que la copia trabajo de guix está en ~/src/guix.
(load-file "~/src/guix/etc/copyright.el")

Para insertar el aviso de copyright en la línea actual invoque M-x guix-copyright.

Para actualizar el aviso de copyright debe especificar una expresión regular de nombres en la variable copyright-names-regexp.

(setq copyright-names-regexp
      (format "%s <%s>" user-full-name user-mail-address))

Puede comprobar si su copyright está actualizado evaluando M-x copyright-update. Si desea hacerlo de manera automática tras guardar un archivo añada (add-hook 'after-save-hook 'copyright-update) en Emacs.


Next: Pautas de empaquetamiento, Previous: Ejecución de Guix antes de estar instalado, Up: Contribuir   [Contents][Index]