# Unique fortls features (not in fortran-language-server) ## Added - Added support for changing the default Python recursion depth ([#312](https://github.com/fortran-lang/fortls/issues/312)) - Added support for preprocessor macro expansions ([#368](https://github.com/fortran-lang/fortls/pull/368)) - Added support for leading white spaces in preprocessor directives ([#297](https://github.com/fortran-lang/fortls/issues/297)) - Added hover messages for Types and Modules ([#208](https://github.com/fortran-lang/fortls/issues/208)) - Added support for Markdown intrinsics from the M_intrinsics repository ([#215](https://github.com/fortran-lang/fortls/issues/215)) - Added and create a schema for fortls configuration files ([#204](https://github.com/fortran-lang/fortls/issues/204)) - Added dependabot alers for PyPi ([#222](https://github.com/fortran-lang/fortls/issues/222)) - Added `CITATION.cff` file to project roots - Added additional default configuration file names `.fortlsrc`, `.fortls.json` ([#184](https://github.com/fortran-lang/fortls/issues/184)) - Added coverage testing for multiple Python versions ([#168](https://github.com/fortran-lang/fortls/pull/178)) - Added pre-commit.ci to `fortls` ([#168](https://github.com/fortran-lang/fortls/issues/168)) - Added support for comments in the `json` configuration files ([#137](https://github.com/fortran-lang/fortls/issues/137)) - Added `sitemap.xml` to documentation webpage ([#134](https://github.com/fortran-lang/fortls/pull/134)) - Added doctests in the pytest test suite ([#131](https://github.com/fortran-lang/fortls/issues/131)) - Added `textDocument/documentHighlight` request for Vim and EMACS ([#43](https://github.com/fortran-lang/fortls/issues/43)) - Added `pre-commit` hook with `flake`, `black`, `isort` and `pyupgrade` ([#106](https://github.com/fortran-lang/fortls/issues/106)) - Added test support for diagnostic messages - Added multiple unittests for diagnostic messages - Added `pre-commit` hook to the project ([#106](https://github.com/fortran-lang/fortls/issues/106)) - Added Code of Conduct - Added basic support for hovering over `ASSOCIATE` blocks ([#62](https://github.com/fortran-lang/fortls/issues/62)) - Added keywords to the PyPi manifest ([#99](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/issues/63)) - Added the capability for `fortls` to auto-update use `--disable_autoupdate` to disable ([#76](https://github.com/fortran-lang/fortls/issues/76)) - Deprecated `--variable_hover` option and now is always enabled ([#46](https://github.com/fortran-lang/fortls/issues/46)) - Added semantic versioning with `setuptools_scm` ([#34](https://github.com/fortran-lang/fortls/issues/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](https://github.com/hansec/fortran-language-server/issues/116)) ([#1](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/issues/300)) - Changed the completion signature to include the full Markdown documentation for the completion item. ([#219](https://github.com/fortran-lang/fortls/issues/219)) - Changed hover messages and signature help to use Markdown ([#45](https://github.com/fortran-lang/fortls/issues/45)) - Changed automatic detection of fixed/free-form of files to ignore preprocessor lines. ([#302](https://github.com/fortran-lang/fortls/pull/302)) - Moved project setup from `setup.cfg` to `pyproject.toml` ([#384](https://github.com/fortran-lang/fortls/pull/384)) - Bumped `setuptools` version to `>=61.0.0` ([#384](https://github.com/fortran-lang/fortls/pull/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](https://github.com/fortran-lang/fortls/issues/143)) - Renamed variables to simplify parser ([#133](https://github.com/fortran-lang/fortls/pull/133)) - Redesigned parsing functions for short-hand declarations of array dimensions, character length and parsing of kind ([#130](https://github.com/fortran-lang/fortls/pull/130)) - Redesigned the `fortls` website to be more aesthetically pleasing and user-friendly ([#112](https://github.com/fortran-lang/fortls/issues/112)) - Changed code structure, reformatted files and changed name conventions ([#109](https://github.com/fortran-lang/fortls/issues/109)) - Updated CONTRIBUTING instructions - Changed the naming convention for Fortran Objects ([#109](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/pull/51)) - Changed the way function hover messages are displayed, now signatures are standardised ([#47](https://github.com/fortran-lang/fortls/issues/47)) - Changed default branch to master and updated Actions workflows - Changes from `setup.py` to `setup.toml` and `pyproject.toml` ([#33](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/issues/326)) ## Fixed - Fixed incorrect document symbol for `SUBMODULE` statements ([#413](https://github.com/fortran-lang/fortls/issues/413)) - Fixed bug with nested preprocessor blocks erroneously evaluating as active ([#404](https://github.com/fortran-lang/fortls/issues/404)) - Fixed bug where parser would crash when trying to retrieve an invalid line no. ([#398](https://github.com/fortran-lang/fortls/issues/398)) - Fixed bug with string quotes not being escaped when looking for parenthesis ([#250](https://github.com/fortran-lang/fortls/issues/250)) - Fixed bug with line continuations in lexical tokens ([#235](https://github.com/fortran-lang/fortls/issues/235)) - Fixed end of scope errors raised by trailing semicolon in native parser ([#265](https://github.com/fortran-lang/fortls/issues/265)) - Fixed bug where parent scope for includes in AST could be `None` ([#329](https://github.com/fortran-lang/fortls/issues/329)) - Fixed preprocessor bug with `if` and `elif` conditionals ([#322](https://github.com/fortran-lang/fortls/issues/322)) - Fixed bug where type fields or methods were not detected if spaces were used around `%` ([#286](https://github.com/fortran-lang/fortls/issues/286)) - Fixed bug where Go To Implementation would not work for submodules ([#74](https://github.com/fortran-lang/fortls/issues/74)) - Fixed bug where `associate` blocks for variables pointing to function results where not properly resolved ([#269](https://github.com/fortran-lang/fortls/issues/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](https://github.com/fortran-lang/fortls/issues/257)) - Fixed end of scope for `CRITICAL` keyword blocks ([#255](https://github.com/fortran-lang/fortls/issues/255)) - Fixed bug where completion of interfaces in USE ONLY would produce the snippet ([#150](https://github.com/fortran-lang/fortls/issues/150)) - Fixed bug where diagnostic messages were raised for non-existent variables ([#173](https://github.com/fortran-lang/fortls/issues/173)) ([#175](https://github.com/fortran-lang/fortls/issues/175)) - Fixed submodule crashing bug and document/Symbol request failure ([#233](https://github.com/fortran-lang/fortls/issues/233)) - Fixed debug interface parser not loading all configuration files ([#221](https://github.com/fortran-lang/fortls/issues/221)) - Fixed name mangling of type-bound procedure pointers while hovering ([#214](https://github.com/fortran-lang/fortls/issues/214)) - Fixed parsing start of multilines into AST ([#217](https://github.com/fortran-lang/fortls/issues/217)) - Fixed `intent(in out)` not being parsed correctly ([#160](https://github.com/fortran-lang/fortls/issues/160)) - Fixed issue where `pip` would install without `--user` and fail ([#163](https://github.com/fortran-lang/fortls/issues/163)) - Fixed bug thorowing diagnostic errors if arguments were named `pure`, `elemental`, etc. ([#157](https://github.com/fortran-lang/fortls/issues/157)) - Fixed `workspace/didChangeConfiguration` requests that caused errors in VS Code logs ([#114](https://github.com/fortran-lang/fortls/issues/114)) - Fixed glob pattern resolution for command line arguments ([#142](https://github.com/fortran-lang/fortls/issues/142)) - Fixed bug where error messages did not post correctly ([#135](https://github.com/fortran-lang/fortls/issues/135)) - Fixed bug where submodule procedure scopes would terminate early if keyword modifiers were used ([#119](https://github.com/fortran-lang/fortls/issues/119)) - Fixed remote coverage report line diff ([#101](https://github.com/fortran-lang/fortls/issues/101)) - Fixes GoTo Implementation error for intrinsics ([#80](https://github.com/fortran-lang/fortls/issues/80)) - Fixed missing dependency from `setup.cfg` ([#78](https://github.com/fortran-lang/fortls/issues/78)) - Updated configuration file variables in documentation - Fixed parsing of `defined` without by parenthesis surrounding the definition ([#67](https://github.com/fortran-lang/fortls/pull/67)) - Fixed hovering value of literal and constant strings not displaying ([#54](https://github.com/fortran-lang/fortls/issues/54)) - Fixed hovering string length size is now matching the string ([#55](https://github.com/fortran-lang/fortls/issues/55)) - Fixed space separated keywords not being displayed upon hover ([#60](https://github.com/fortran-lang/fortls/issues/60)) - Fixed hovering over functions displaying as theire result types ([#22](https://github.com/fortran-lang/fortls/issues/22)) - Fixed function modifiers not displaying upon hover ([#48](https://github.com/fortran-lang/fortls/issues/48)) - Fixed function hover when returning arrays ([#50](https://github.com/fortran-lang/fortls/issues/50)) - Fixed code autocompletion bug with f-strings ([#39](https://github.com/hansec/fortran-language-server/issues/39)) - Fixed global `sort_keywords` option not propagating during parsing on Windows ([#36](https://github.com/fortran-lang/fortls/issues/36)) - Fixed unittests not propagating debugger state ([#35](https://github.com/fortran-lang/fortls/issues/35)) - Fixed some mutable default argument warnings in methods and classes - Fixed private variables showing in autocomplete ([#191](https://github.com/hansec/fortran-language-server/issues/191)) ([#3](https://github.com/fortran-lang/fortls/issues/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](https://github.com/hansec/fortran-language-server/issues/169)) - Fixes include with external files ([#13](https://github.com/fortran-lang/fortls/issues/13)) - `POINTER` attribute now displays upon hover ([#16](https://github.com/fortran-lang/fortls/issues/16)) - Fixes `END FORALL` end of scope error ([#18](https://github.com/fortran-lang/fortls/issues/18)) - Fixes Fortran line continuation definitions intermingled with preprocessor directives ([#203](https://github.com/hansec/fortran-language-server/issues/203)) ([#4](https://github.com/fortran-lang/fortls/issues/4)) - Fixes `USE` directive ordering issues ([#184](https://github.com/hansec/fortran-language-server/issues/184)) ([#7](https://github.com/fortran-lang/fortls/issues/7)) - Further improves the literal variable hover added in v1.14.0 - Fixes premature end of scope with variables named `end` ([#9](https://github.com/fortran-lang/fortls/issues/9)) - Fixes import host association includes (autocomplete work not complete) ([#187](https://github.com/hansec/fortran-language-server/issues/187)) - Fixes parsing of `non_intrinsic` modules ([#206](https://github.com/hansec/fortran-language-server/issues/206)) - Fixes error while parsing submodule parent name with spaces ([#207](https://github.com/hansec/fortran-language-server/issues/207)) - Fixes language server features not triggering for variables in column 0 - Fixes (partially) Fortran literal variable hover ([#188](https://github.com/hansec/fortran-language-server/issues/188)) - Fixes diagnostic error with interfaces as function arguments ([#200](https://github.com/hansec/fortran-language-server/issues/200))