doom-emacs/modules/lang/fortran
2024-05-21 17:16:44 +02:00
..
autoload.el feat(fortran): SPC m f o opens project config 2024-05-21 17:15:52 +02:00
config.el fix(fortran): remove executable-find formatter check 2024-05-21 17:16:04 +02:00
doctor.el feat(format): add :lang fortran formatter 2024-05-21 17:15:59 +02:00
README.org docs(fortran): show how to customize fprettier 2024-05-21 17:16:44 +02:00

:lang fortran

Description   unfold

This module enables a complete, modern development environment for the Fortran language. Initially released in 1956 (a year before Lisp 1.0), Fortran is the original high-performance computation language and is still widely used in science and academia. Popular versions of the language include Fortran 77 and Fortran 90, with further extensions in the 1995 and 2008 varieties. Today, Fortran has joined the modern age with its own package manager, package registry and Discourse community.

In particular, this module features:

  • Support for all major Fortran varieties.
  • Auto-formatting via fprettier.
  • Integration with the fpm package manager.
  • LSP support via fortls.
  • Optional Intel Fortran support via the doom-module:+intel flag.

󰟶 After a career of writing Fortran on Mainframes and Windows machines, my now-retired Dad is switching to Linux. Imagine my surprise when I learned that off-the-shelf setups for Fortran on Linux basically don't exist! Well, until now… Cheers Dad, hope this helps. fosskers

Module flags

+lsp
Enable LSP support for fortran-mode. Requires doom-module::tools lsp and a langserver (fortls).
+intel
Use the ifort compiler by default.

Packages

This module doesn't install any packages.

Hacks

No hacks documented for this module.

TODO Changelog

This module does not have a changelog yet.

Installation

Enable this module in your doom! block.

General

For minimum functionality, this module requires gfortran. For most project management tasks you will also need fpm, the Fortran Package Manager.

Arch Linux

gfortran is available from the official repositories:

$ sudo pacman -S gcc-fortran

Whereas fpm and fortls are available from the AUR and thus must be installed with an AUR-compatible tool like Aura:

$ sudo aura -A fortran-fpm fortls

Installing Intel Fortran

Activating the doom-module:+intel flag won't automatically install Intel Fortan for you. Here's how to do it on *nix systems.

You can of course install the entire High-performance Computing kit from Intel, which includes Fortran, but the installation footprint is quite large. Instead, you're able to install just Fortran and its core facilities on their own as a standalone component. Download this script, and make it executable via:

$ chmod +x l_fortran-compiler_p_2022.0.3.83_offline.sh

The filepath will of course change with time, so alter the above command accordingly. Now run the script as a normal user (non-sudo) and follow the instructions of the installer. This will install ifort, etc., in a local filepath of your choosing.

To actually use ifort and have it link to its libraries properly, we must run a script provided by Intel to set certain environment variables:

$ . ~/intel/oneapi/setvars.sh

(Modify according to where you installed Intel Fortran.) Now ifort should be runnable in your terminal as you'd expect. To persist this, add that line to your Bash Profile, etc., and log out and in again. Now Doom will be able to use ifort too.

Good luck and happy computing!

Auto-formatting

When doom-module::editor format is enabled and doom-executable:fprettify is installed, buffers can be formatted with fn:apheleia-format-buffer.

Enable doom-module::editor format +onsave to format the buffer on save.

See below for advanced configuration.

TODO Usage

󱌣 This module has no usage documentation yet. Write some?

Configuration

Customising fprettier

If you want different arguments to be passed to fprettier, follow this example:

(after! f90
  (set-formatter! 'fprettify '("fprettify" "--enable-decl" "-w" "4" "-") :modes '(f90-mode fortran-mode)))

Troubleshooting

There are no known problems with this module. Report one?

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

󱌣 This module has no appendix yet. Write one?