Unique fortls features (not in fortran-language-server)

Added

  • Added support for changing the default Python recursion depth (#312)

  • Added support for preprocessor macro expansions (#368)

  • Added support for leading white spaces in preprocessor directives (#297)

  • Added hover messages for Types and Modules (#208)

  • Added support for Markdown intrinsics from the M_intrinsics repository (#215)

  • Added and create a schema for fortls configuration files (#204)

  • Added dependabot alers for PyPi (#222)

  • Added CITATION.cff file to project roots

  • Added additional default configuration file names .fortlsrc, .fortls.json (#184)

  • Added coverage testing for multiple Python versions (#168)

  • Added pre-commit.ci to fortls (#168)

  • Added support for comments in the json configuration files (#137)

  • Added sitemap.xml to documentation webpage (#134)

  • Added doctests in the pytest test suite (#131)

  • Added textDocument/documentHighlight request for Vim and EMACS (#43)

  • Added pre-commit hook with flake, black, isort and pyupgrade (#106)

  • Added test support for diagnostic messages

  • Added multiple unittests for diagnostic messages

  • Added pre-commit hook to the project (#106)

  • Added Code of Conduct

  • Added basic support for hovering over ASSOCIATE blocks (#62)

  • Added keywords to the PyPi manifest (#99)

  • Added unittests for intrinsics and improved overall coverage

  • Automated the update for GitHub Actions

  • Added coverage reporting for Unix + Windows

  • Improved autocompletion for Fortran statements F2018 compliant (#63)

  • Added the capability for fortls to auto-update use --disable_autoupdate to disable (#76)

  • Deprecated --variable_hover option and now is always enabled (#46)

  • Added semantic versioning with setuptools_scm (#34)

  • Added additional shields to REAMDE, including coverage and Python versions

  • Added coverage metric for Codecov

  • Added coverage for WHERE, ENUM, max line/comment diagnostics and multilines

  • Adds Windows CI

  • Add support for absolute include, source and exclude paths

  • Adds support for including preprocessor definitions from files same as pp_defs

  • Adds hover support for preprocessor variables

  • Adds Go To Definition for include statements

  • Adds intrinsic support for OpenACC version 3.1

  • Adds sphinx autogenerated documentation

  • Adds incl_suffixes as a configuration option

  • Adds EXTERNAL as an attribute upon hover

  • Adds value for PARAMETER variables on hover (#116) (#1)

  • Adds --config option which allows arbitrary named configuration files

  • Adds Python glob support for excl_paths, source_dirs, include_dirs

Changed

  • Changed --incl_suffixes option to faithfully match the suffixes that are provided in the option, without performing any type of modification. (#300)

  • Changed the completion signature to include the full Markdown documentation for the completion item. (#219)

  • Changed hover messages and signature help to use Markdown (#45)

  • Changed automatic detection of fixed/free-form of files to ignore preprocessor lines. (#302)

  • Moved project setup from setup.cfg to pyproject.toml (#384)

  • Bumped setuptools version to >=61.0.0 (#384)

  • Changed the default value of the following options when a mix the command line interface and the json interface are used. Instead of having the json interface default the values to an empty set it now defaults to the values of the command line: excl_paths, source_dirs, incl_suffixes, excl_suffixes, include_dirs (#143)

  • Renamed variables to simplify parser (#133)

  • Redesigned parsing functions for short-hand declarations of array dimensions, character length and parsing of kind (#130)

  • Redesigned the fortls website to be more aesthetically pleasing and user-friendly (#112)

  • Changed code structure, reformatted files and changed name conventions (#109)

  • Updated CONTRIBUTING instructions

  • Changed the naming convention for Fortran Objects (#109)

  • Formatted all files with pre-commit

  • Updated README to include logo and animations

  • Updated README to include conda-forge installation instructions

  • Restructured unittests to individual files for more granular reporting

  • Changed how renaming of implicitly named type-bound procedures and their implementations is handled. Unittest was added.

  • Rewrote the Fortran parser to be clearer and more modular

  • Disable PyPi autoupdating for pre-releases and dev versions

  • Changed the auto-update feature to skip anaconda environments since they handle their dependencies through conda and not pip

  • Updated setup.cfg in preparation of submitting package to conda-forge

  • Added Editor Integration section in documentation

  • Changed reading in json files to be encoded as UTF-8 (#51)

  • Changed the way function hover messages are displayed, now signatures are standardised (#47)

  • Changed default branch to master and updated Actions workflows

  • Changes from setup.py to setup.toml and pyproject.toml (#33)

  • Changed documentation CI to up to date action

  • Formatted Python imports with isort

  • Changed USE_info named tuple to storing use modules as sets instead of lists

  • Changed include_dirs from a list to a set

  • Automates the versioning with GitHub releases

  • Update constant parameters for omp_lib and omp_lib_kinds Interface v5.0

  • Format json files with prettier

  • Initialises the log channel and adds $/setTrace to override client’s (i.e. VS Code) loglevel

  • Unified the interfaces from the command line and the configuration options file (#17)

  • Updated the documentation and simplified the README.md

Deprecated

  • Option --preserve_keyword_order has been substituted with its opposite --sort_keywords

Removed

  • Removed setuptools_scm_git_archive due to package deprecation (#326)

Fixed

  • Fixed incorrect document symbol for SUBMODULE statements (#413)

  • Fixed bug with nested preprocessor blocks erroneously evaluating as active (#404)

  • Fixed bug where parser would crash when trying to retrieve an invalid line no. (#398)

  • Fixed bug with string quotes not being escaped when looking for parenthesis (#250)

  • Fixed bug with line continuations in lexical tokens (#235)

  • Fixed end of scope errors raised by trailing semicolon in native parser (#265)

  • Fixed bug where parent scope for includes in AST could be None (#329)

  • Fixed preprocessor bug with if and elif conditionals (#322)

  • Fixed bug where type fields or methods were not detected if spaces were used around % (#286)

  • Fixed bug where Go To Implementation would not work for submodules (#74)

  • Fixed bug where associate blocks for variables pointing to function results where not properly resolved (#269)

  • Fixed bug where the langid was not propagated correctly from the user settings to the LSP creation stage for all types of requests. (#257)

  • Fixed end of scope for CRITICAL keyword blocks (#255)

  • Fixed bug where completion of interfaces in USE ONLY would produce the snippet (#150)

  • Fixed bug where diagnostic messages were raised for non-existent variables (#173) (#175)

  • Fixed submodule crashing bug and document/Symbol request failure (#233)

  • Fixed debug interface parser not loading all configuration files (#221)

  • Fixed name mangling of type-bound procedure pointers while hovering (#214)

  • Fixed parsing start of multilines into AST (#217)

  • Fixed intent(in out) not being parsed correctly (#160)

  • Fixed issue where pip would install without --user and fail (#163)

  • Fixed bug thorowing diagnostic errors if arguments were named pure, elemental, etc. (#157)

  • Fixed workspace/didChangeConfiguration requests that caused errors in VS Code logs (#114)

  • Fixed glob pattern resolution for command line arguments (#142)

  • Fixed bug where error messages did not post correctly (#135)

  • Fixed bug where submodule procedure scopes would terminate early if keyword modifiers were used (#119)

  • Fixed remote coverage report line diff (#101)

  • Fixes GoTo Implementation error for intrinsics (#80)

  • Fixed missing dependency from setup.cfg (#78)

  • Updated configuration file variables in documentation

  • Fixed parsing of defined without by parenthesis surrounding the definition (#67)

  • Fixed hovering value of literal and constant strings not displaying (#54)

  • Fixed hovering string length size is now matching the string (#55)

  • Fixed space separated keywords not being displayed upon hover (#60)

  • Fixed hovering over functions displaying as theire result types (#22)

  • Fixed function modifiers not displaying upon hover (#48)

  • Fixed function hover when returning arrays (#50)

  • Fixed code autocompletion bug with f-strings (#39)

  • Fixed global sort_keywords option not propagating during parsing on Windows (#36)

  • Fixed unittests not propagating debugger state (#35)

  • Fixed some mutable default argument warnings in methods and classes

  • Fixed private variables showing in autocomplete (#191) (#3)

  • Fixes the hover of preprocessor functions. It now displays the function name witout the argument list and the function body. The argument list cannot be multiline but the function body can.

  • Fixes objects marked EXTERNAL across multiple lines (#169)

  • Fixes include with external files (#13)

  • POINTER attribute now displays upon hover (#16)

  • Fixes END FORALL end of scope error (#18)

  • Fixes Fortran line continuation definitions intermingled with preprocessor directives (#203) (#4)

  • Fixes USE directive ordering issues (#184) (#7)

  • Further improves the literal variable hover added in v1.14.0

  • Fixes premature end of scope with variables named end (#9)

  • Fixes import host association includes (autocomplete work not complete) (#187)

  • Fixes parsing of non_intrinsic modules (#206)

  • Fixes error while parsing submodule parent name with spaces (#207)

  • Fixes language server features not triggering for variables in column 0

  • Fixes (partially) Fortran literal variable hover (#188)

  • Fixes diagnostic error with interfaces as function arguments (#200)