Science Score: 64.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
4 of 30 committers (13.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.6%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
fortls - Fortran Language Server
Basic Info
- Host: GitHub
- Owner: fortran-lang
- License: mit
- Language: Python
- Default Branch: master
- Homepage: https://fortls.fortran-lang.org/
- Size: 21.9 MB
Statistics
- Stars: 306
- Watchers: 10
- Forks: 48
- Open Issues: 50
- Releases: 55
Topics
Metadata Files
README.md

fortls - Fortran Language Server

fortls is an implementation of the Language Server Protocol
(LSP) for Fortran using Python (3.7+).
All code editors that support LSP can integrate with fortls see the section
Editor Integration in the documentation.
Some supported code editors include:
Visual Studio Code,
Atom,
Sublime Text,
(Neo)Vim,
and Emacs.
Features
- Project-wide and Document symbol detection and Renaming
- Hover support, Signature help and Auto-completion
- GoTo/Peek implementation and Find/Peek references
- Preprocessor support
- Documentation parsing (Doxygen and FORD styles)
- Access to multiple intrinsic modules and functions
ISO_FORTRAN_ENVGCC 11.2.0ISO_C_BINDINGGCC 11.2.0IEEE_EXCEPTIONS,IEEE_ARITHMETIC,IEEE_FEATURESGCC 11.2.0- OpenMP
OMP_LIB,OMP_LIB_KINDSv5.0 - OpenACC
OPENACC,OPENACC_KINDSv3.1
- Diagnostics
- Multiple definitions with the same variable name
- Variable definition masks definition from parent scope
- Missing subroutine/function arguments
- Unknown user-defined type used in
TYPE/CLASSdefinition (only if visible in project) - Unclosed blocks/scopes
- Invalid scope nesting
- Unknown modules in
USEstatement - Unimplemented deferred type-bound procedures
- Use of non-imported variables/objects in interface blocks
- Statement placement errors (
CONTAINS,IMPLICIT,IMPORT)
- Code actions
- Generate type-bound procedures and implementation templates for deferred procedures
Notes/Limitations
- Signature help and hover does not handle elegantly overloaded functions i.e. interfaces
Documentation
The full documentation for fortls can be found at
fortls.fortran-lang.org.
Installation
PyPi
sh
pip install fortls
Anaconda
sh
conda install -c conda-forge fortls
for more information about the Anaconda installation see
Common installation problems
It is NOT recommended having fortls and fortran-language-server
simultaneously installed, since they use the same executable name. If you are having trouble
getting fortls to work try uninstalling fortran-language-server and reinstalling fortls.
With pip
sh
pip uninstall fortran-language-server
pip install fortls --upgrade
or with Anaconda
sh
conda uninstall fortran-language-server
conda install -c conda-forge fortls
Settings
fortls can be configured through both the command line e.g.
fortls --hover_signature or through a Configuration json file.
The two interfaces are identical and a full list of the available options can
be found in the Documentation
or through fortls -h
An example for a Configuration file is given below
json
{
"incremental_sync": true,
"lowercase_intrinsics": true,
"hover_signature": true,
"use_signature_help": true,
"excl_paths": ["tests/**", "tools/**"],
"excl_suffixes": ["_skip.f90"],
"include_dirs": ["include/**"],
"pp_suffixes": [".F90", ".h"],
"pp_defs": { "HAVE_HDF5": "", "MPI_Comm": "integer" }
}
Implemented server requests
| Request | Description |
| -------------------------------- | ------------------------------------------------------ |
| workspace/symbol | Get workspace-wide symbols |
| textDocument/documentSymbol | Get document symbols e.g. functions, subroutines, etc. |
| textDocument/completion | Suggested tab-completion when typing |
| textDocument/signatureHelp | Get signature information at a given cursor position |
| textDocument/definition | GoTo definition/Peek definition |
| textDocument/references | Find all/Peek references |
| textDocument/documentHighlight | Same as textDocument/references |
| textDocument/hover | Show messages and signatures upon hover |
| textDocument/implementation | GoTo implementation/Peek implementation |
| textDocument/rename | Rename a symbol across the workspace |
| textDocument/didOpen | Document synchronisation upon opening |
| textDocument/didSave | Document synchronisation upon saving |
| textDocument/didClose | Document synchronisation upon closing |
| textDocument/didChange | Document synchronisation upon changes to the document |
| textDocument/codeAction | Experimental Generate code |
Future plans
fortls has reached a point where it is feature complete and stable enough to be used in many modern Fortran projects without any issues.
It does however still have fundamental limitations,
namely its ability to understand all Fortran syntax and semantics that has been used throughout the 65+ years of the language. The good news is that we have a plan to address this issue!
We are excited to announce that we are working on creating a new Fortran Language Server based on the actively developed LFortran compiler 🎉. The new Language Server will be able to understand all Fortran syntax, be faster, and give more accurate autocompletion, hover and diagnostic information. That means we plan on investing any future funding on creating our new language server and ultimately creating a better user experience for everyone.
What about fortls?
Not to worry, fortls will continue to be here. We will keep fortls in active maintenance mode with bug fixes and new features from volunteer contributors, but otherwise we will be focusing our efforts into making the new language server using LFortran's parser a reality.
fortls vs fortran-language-server
This project was originally based on fortran-language-server LSP implementation, but the two projects have since diverged.
fortls (this project) is now developed independently of the upstream hansec/fortran-language-server project and contains numerous new features and bug fixes
the original fortran-language-server does not.
For a complete and detailed list of the differences between the two Language Servers see the Documentation section: Unique fortls features (not in fortran-language-server)
The name of executable for this project has been chosen to remain fortls
to allow for integration with pre-existing plugins and workflows, but it could
change in the future.
Acknowledgements
This project would not have been possible without the original work of @hansec
in fortran-language-server
Support
You can support Fortran-lang as a whole by donating at Fortran-lang - NumFOCUS.
Bug reports
When filing bugs please provide example code to reproduce the observed issue.
Security Policy
To report a security vulnerability please follow the instructions in our Security page.
License
This project is made available under the MIT License.
Owner
- Name: The Fortran Programming Language
- Login: fortran-lang
- Kind: organization
- Website: https://fortran-lang.org
- Twitter: fortranlang
- Repositories: 24
- Profile: https://github.com/fortran-lang
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: fortls - Fortran Language Server
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- family-names: Nikiteas
name-suffix: Ioannis
email: gnikit@duck.com
affiliation: Imperial College London
orcid: 'https://orcid.org/0000-0001-9811-9250'
GitHub Events
Total
- Create event: 24
- Release event: 3
- Issues event: 33
- Watch event: 51
- Delete event: 23
- Issue comment event: 72
- Push event: 36
- Pull request review event: 4
- Pull request event: 57
- Fork event: 11
Last Year
- Create event: 24
- Release event: 3
- Issues event: 33
- Watch event: 51
- Delete event: 23
- Issue comment event: 72
- Push event: 36
- Pull request review event: 4
- Pull request event: 57
- Fork event: 11
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| gnikit | g****s@g****m | 540 |
| Chris Hansen | h****c@u****u | 371 |
| pre-commit-ci[bot] | 6****] | 37 |
| dependabot[bot] | 4****] | 22 |
| Aljen Uitbeijerse | a****e@v****l | 8 |
| Albert Ziegenhagel | a****l@a****m | 6 |
| Randy Eckman | r****n@n****v | 4 |
| JHenneberg | H****g@r****e | 3 |
| Sergey M | m****n@g****m | 3 |
| Tomoto Shimizu Washio | t****o@g****m | 3 |
| Peter Hill | p****l@y****k | 3 |
| Azzam Husain | 6****5 | 3 |
| Julian Andrej | a****1@l****v | 2 |
| Andre Smit | f****d@g****m | 2 |
| Philippe Blain | l****n@g****m | 2 |
| JHenneberg | J****g@g****m | 2 |
| Edmundod | 2****d | 1 |
| ssnnoo | 4****o | 1 |
| sanjay-cpu | s****2@g****m | 1 |
| lixiang810 | 1****0 | 1 |
| github-actions[bot] | 4****] | 1 |
| gbogopolsky | g****9@g****m | 1 |
| Sebastian Ehlert | 2****k | 1 |
| Pål Levold | P****d@s****o | 1 |
| PaulXiCao | 2****o | 1 |
| Oskar Weser | o****r@g****m | 1 |
| Ondřej Čertík | o****j@c****s | 1 |
| Michael Konečný | k****e@g****m | 1 |
| Julian Hofer | j****t@m****g | 1 |
| Eisuke Kawashima | e****m | 1 |
Committer Domains (Top 20 + Academic)
Packages
- Total packages: 2
-
Total downloads:
- pypi 11,012 last-month
- Total docker downloads: 30
-
Total dependent packages: 1
(may contain duplicates) -
Total dependent repositories: 2
(may contain duplicates) - Total versions: 78
- Total maintainers: 2
pypi.org: fortls
fortls - Fortran Language Server
- Documentation: https://fortls.fortran-lang.org
- License: MIT
-
Latest release: 3.2.2
published 11 months ago
Rankings
Maintainers (2)
conda-forge.org: fortls
- Homepage: https://github.com/fortran-lang/fortls
- License: MIT
-
Latest release: 2.13.0
published over 3 years ago
Rankings
Dependencies
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- actions/checkout v3 composite
- peaceiris/actions-gh-pages v3 composite
- sphinx-toolbox/sphinx-action master composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- codecov/codecov-action v3 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- pypa/gh-action-pypi-publish release/v1 composite
- softprops/action-gh-release master composite
- actions/checkout v3 composite
- peter-evans/create-pull-request v4 composite