doc: contributing: Add alternative setups section.

Start with Guile Studio and Vim/NeoVim.

* doc/contributing.texi (Alternative Setups): Add section explaining
other setups that are similar to the one in The Perfect Setup.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
This commit is contained in:
Ekaitz Zarraga 2023-09-25 16:16:28 +02:00 committed by Efraim Flashner
parent eeb7132ec3
commit 044a76c280
No known key found for this signature in database
GPG Key ID: 41AAE7DCCA3D8351
1 changed files with 78 additions and 7 deletions

View File

@ -23,6 +23,7 @@ choice.
* Building from Git:: The latest and greatest.
* Running Guix Before It Is Installed:: Hacker tricks.
* The Perfect Setup:: The right tools.
* Alternative Setups:: Other posible tools that do the job.
* Packaging Guidelines:: Growing the distribution.
* Coding Style:: Hygiene of the contributor.
* Submitting Patches:: Share your work.
@ -453,6 +454,83 @@ For more information, refer to @ref{Bug Reference,,, emacs, The GNU
Emacs Manual} and @ref{Minor Mode,,, debbugs-ug, The Debbugs User
Guide}.
@node Alternative Setups
@section Alternative Setups
Alternative setups than Emacs may let you work on Guix with a
similar development experience and they might work better with the
tools you currently use or help you make the transition to Emacs.
The options listed below only provide the alternatives to the Emacs
based setup, which is the most widely used in the Guix community. If
you want to really understand how is the perfect setup for Guix
development supposed to work, we encourage you to read the section
before this regardless the editor you choose to use.
@menu
* Guile Studio:: First step in your transition to Emacs.
* Vim and NeoVim:: When you are evil to the root.
@end menu
@node Guile Studio
@subsection Guile Studio
Guile Studio is a pre-configured Emacs with mostly everything you need
to start hacking in Guile. If you are not familiar with Emacs it makes
the transition easier for you.
@example
guix install guile-studio
@end example
Guile Studio comes with Geiser preinstalled and prepared for action.
@node Vim and NeoVim
@subsection Vim and NeoVim
Vim (and NeoVim) are also packaged in Guix, just in case you decided
to go for the evil path.
@example
guix install vim
@end example
If you want to enjoy a similar development experience to that in the perfect
setup, you should install several plugins to configure the editor. Vim (and
NeoVim) have the equivalent to Paredit,
@uref{https://www.vim.org/scripts/script.php?script_id=3998,
@code{paredit.vim}}, that will help you with the structural editing of Scheme
files (the support for very large files is not great, though).
@example
guix install vim-paredit
@end example
We also recommend that you run @code{:set autoindent} so that your code is
automatically indented as you type.
For the interaction with Git,
@uref{https://www.vim.org/scripts/script.php?script_id=2975
@code{fugitive.vim}} is the most commonly used plugin:
@example
guix install vim-fugitive
@end example
And of course if you want to interact with Guix directly from inside of
vim, using the built-in terminal emulator, we have our very own
@code{guix.vim} package!
@example
guix install vim-guix-vim
@end example
In NeoVim you can even make a similar setup to Geiser using
@url{https://conjure.fun/, Conjure} that lets you connect to a running Guile
process and inject your code there live (sadly it's not packaged in Guix yet).
@node Packaging Guidelines
@section Packaging Guidelines
@ -1257,13 +1335,6 @@ rules. To automatically indent a package definition, you can also run:
@noindent
@xref{Invoking guix style}, for more information.
@cindex Vim, Scheme code editing
If you are editing code with Vim, we recommend that you run @code{:set
autoindent} so that your code is automatically indented as you type.
Additionally,
@uref{https://www.vim.org/scripts/script.php?script_id=3998,
@code{paredit.vim}} may help you deal with all these parentheses.
We require all top-level procedures to carry a docstring. This
requirement can be relaxed for simple private procedures in the
@code{(guix build @dots{})} name space, though.