#+title:    :lang nim
#+subtitle: Python + lisp at the speed of C
#+created:  May 08, 2018
#+since:    21.12.0 (#568)

* Description :unfold:
This module adds [[https://nim-lang.org][Nim]] support to Doom Emacs.

- Code completion ([[doom-package:nimsuggest]] + [[doom-package:company]])
- Syntax checking ([[doom-package:nimsuggest]] + [[doom-package:flycheck]])
- Org babel support ([[doom-package:ob-nim]])

** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]

** Module flags
/This module has no flags./

** Packages
- [[doom-package:flycheck-nim]] if [[doom-module::checkers syntax]]
- [[doom-package:nim-mode]]

** Hacks
- [[doom-package:nimsuggest]] was modified to strip invalid characters from its temp file paths
  (which would break nimsuggest on Windows systems).
- [[doom-package:nim-mode]] was modified to fail gracefully if =nimsuggest= (the executable)
  isn't available.

** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
/This module does not have a changelog yet./

* Installation
[[id:01cffea4-3329-45e2-a892-95a384ab2338][Enable this module in your ~doom!~ block.]]

This module requires:
- ~nim~, for building & evaluation.
- ~nimsuggest~, for code completion, syntax checking, and jump-to-definition
  functionality.

** Nim
=choosenim= is an installer and version manager for the Nim programming
language. You can install the latest stable release of Nim by running the
following in your terminal and following the onscreen instructions:
#+begin_src sh
curl https://nim-lang.org/choosenim/init.sh -sSf | sh
#+end_src

Alternatively, nim is usually available through your OS's package manager:
- MacOS: ~$ brew install nim~
- Arch Linux: ~$ pacman --needed --noconfirm -S nim nimble~
- openSUSE: ~$ zypper install nim~

** Formatter
Formatting is handled using the [[doom-module::editor format]] module via nimpretty
(included with Nim).

* TODO Usage
#+begin_quote
 󱌣 This module has no usage documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote

* TODO Configuration
#+begin_quote
 󱌣 This module has no configuration documentation yet. [[doom-contrib-module:][Write some?]]
#+end_quote

* Troubleshooting
/There are no known problems with this module./ [[doom-report:][Report one?]]

* Frequently asked questions
/This module has no FAQs yet./ [[doom-suggest-faq:][Ask one?]]

* TODO Appendix
#+begin_quote
 󱌣 This module has no appendix yet. [[doom-contrib-module:][Write one?]]
#+end_quote
