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 Using Guile in Emacs em Manual de referência do GNU Guile). 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

O Geiser permite desenvolvimento interativo e incremental de dentro do Emacs: compilação e avaliação de código de dentro de buffers, acesso à documentação on-line (docstrings), conclusão sensível ao contexto, M-. para pular para uma definição de objeto, um REPL para testar seu código e muito mais (veja Introduction em Manual do Usuário do Geiser). Se você permitir que o Emacs carregue o arquivo .dir-locals.el na raiz do checkout do projeto, isso fará com que o Geiser adicione automaticamente as fontes locais do Guix ao caminho de carregamento do Guile.

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
   ;; Certifique-se de que tempel-path seja uma lista — também pode ser uma 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")
;; Supondo que o checkout do Guix esteja em ~/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: Configurações alternativas, Anterior: Executando guix antes dele ser instalado, Acima: Contribuindo   [Conteúdo][Índice]