Próximo: , Anterior: , Acima: Contribuindo   [Conteúdo][Índice]


22.5 A configuração perfeita

A configuração perfeita para hackear no Guix é basicamente a configuração perfeita usada para hackear o Guile (veja Usando o Guile no Emacs em Guile Reference Manual). Primeiro, você precisa de mais do que um editor, você precisa de Emacs, capacitado pelo maravilhoso Geiser. Para configurar isso, execute:

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

Geiser allows for interactive and incremental development from within Emacs: code compilation and evaluation from within buffers, access to on-line documentation (docstrings), context-sensitive completion, M-. to jump to an object definition, a REPL to try out your code, and more (veja Introduction em Geiser User Manual). If you allow Emacs to load the .dir-locals.el file at the root of the project checkout, it will cause Geiser to automatically add the local Guix sources to the Guile load path.

Para realmente editar o código, o Emacs já possui um modo Scheme bacana. Mas além disso, você não deve perder Paredit. Ele fornece recursos para operar diretamente na árvore sintática, como aumentar ou agrupar uma expressão simbólica (S-expression), engolir ou rejeitar a expressão simbólica seguinte, etc.

Também fornecemos modelos para mensagens comuns de commit do git e definições de pacotes no diretório etc/snippets. Esses modelos podem ser usados para expandir sequências curtas de gatilho para trechos de texto interativos. Se você usar YASnippet, você pode querer adicionar o diretório de snippets etc/snippets/yas ao yas-snippet-dirs variável. Se você usar Tempel, você pode querer adicionar o caminho etc/snippets/tempel/* à variável tempel-path no Emacs.

;; Assuming the Guix checkout is in ~/src/guix.
;; Yasnippet configuration
(with-eval-after-load 'yasnippet
  (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets/yas"))
;; Tempel configuration
(with-eval-after-load 'tempel
   ;; Ensure tempel-path is a list -- it may also be a string.
   (unless (listp 'tempel-path)
     (setq tempel-path (list tempel-path)))
   (add-to-list 'tempel-path "~/src/guix/etc/snippets/tempel/*"))

Os trechos de mensagens de commit dependem de Magit para exibir arquivos "staged". Ao editar uma mensagem de commit, digite add seguido por TAB para inserir um modelo de mensagem de commit para adicionar um pacote; digite update seguido por TAB para inserir um modelo para atualizar um pacote; digite https seguido por TAB para inserir um modelo para alterar a URI da página inicial de um pacote para HTTPS.

O trecho principal para scheme-mode é acionado digitando package ... seguido de TAB. Esse trecho também insere a string de acionamento origin..., que pode ser expandida ainda mais. O trecho origin, por sua vez, pode inserir outras strings acionadoras que terminam em ..., que também podem ser expandidas.

Além disso, fornecemos inserção e atualização automática de direitos autorais em etc/copyright.el. Você pode definir seu nome completo, e-mail e carregar um arquivo.

(setq user-full-name "Alice Doe")
(setq user-mail-address "alice@mail.org")
;; Assuming the Guix checkout is in ~/src/guix.
(load-file "~/src/guix/etc/copyright.el")

Para inserir um copyright na linha atual, invoque M-x guix-copyright.

Para atualizar um copyright você precisa especificar um copyright-names-regexp.

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

Você pode verificar se seus direitos autorais estão atualizados avaliando M-x copyright-update. Se você quiser fazer isso automaticamente após cada salvamento de buffer, adicione (add-hook 'after-save-hook 'copyright-update) no Emacs.


Próximo: Alternative Setups, Anterior: Executando guix antes dele ser instalado, Acima: Contribuindo   [Conteúdo][Índice]