fortls - Fortran 语言服务器
项目描述
fortls - Fortran 语言服务器
fortls是
使用 Python (3.7+) 的 Fortran语言服务器协议(LSP) 的实现。
所有支持 LSP 的代码编辑器都可以集成,fortls请参阅
文档中的编辑器集成部分。一些受支持的代码编辑器包括:
Visual Studio Code、
Atom、
Sublime Text、
(Neo)Vim和Emacs。
特征
- 项目范围和文档符号检测和重命名
- 悬停支持、签名帮助和自动完成
- GoTo/Peek 实现和 Find/Peek 参考
- 预处理器支持
- 文档解析(Doxygen和 FORD样式)
- 访问多个内在模块和功能
ISO_FORTRAN_ENV海合会 11.2.0IOS_C_BINDING海合会 11.2.0IEEE_EXCEPTIONS,IEEE_ARITHMETIC,IEEE_FEATURESGCC 11.2.0- 开放MP
OMP_LIB,OMP_LIB_KINDSv5.0 - 开放式加速器
OPENACC,OPENACC_KINDSv3.1
- 诊断
- 具有相同变量名的多个定义
- 变量定义掩盖父范围的定义
- 缺少子例程/函数参数
TYPE/定义中使用的未知用户定义类型CLASS(仅在项目中可见时)- 未封闭的块/范围
- 无效的范围嵌套
USE语句中的未知模块- 未实现的延迟类型绑定过程
- 在接口块中使用非导入变量/对象
- 语句放置错误 (
CONTAINS,IMPLICIT,IMPORT)
- 代码操作
- 为延迟过程生成类型绑定过程和实现模板
注释/限制
- 签名帮助和悬停不能处理优雅的重载函数,即接口
fortls对比fortran-language-server
该项目最初是基于fortran-language-serverLSP 实现的,但此后两个项目出现了分歧。
fortls(这个项目)现在独立于上游hansec/fortran-language-server项目开发,包含许多新功能和错误修复原始项目fortran-language-server没有。
有关两种语言服务器之间差异的完整详细列表,请参阅文档部分:独特的 fortls 功能(不在 fortran-language-server 中)
该项目的可执行文件名称已选择保留fortls
,以允许与预先存在的插件和工作流集成,但将来可能会更改。
安装
派皮
pip install fortls
蟒蛇
conda install -c conda-forge fortls
有关 Anaconda 安装的更多信息,请参见
常见安装问题
不建议同时安装fortls,fortran-language-server
因为它们使用相同的二进制名称。如果您在开始工作时遇到问题,fortls请尝试卸载fortran-language-server并重新安装fortls.
和pip
pip uninstall fortran-language-server
pip install fortls --upgrade
或与 Anaconda
conda 卸载 fortran 语言服务器
conda install -c conda-forge fortls
设置
fortls可以通过命令行(例如
fortls --hover_signature)或配置 json 文件进行配置。这两个界面是相同的,可用选项的完整列表可以在文档中找到
或通过fortls -h
下面给出了配置文件的示例
{
"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" }
}
实现的服务器请求
| 要求 | 描述 |
|---|---|
workspace/symbol |
获取工作区范围的符号 |
textDocument/documentSymbol |
获取文档符号,例如函数、子程序等。 |
textDocument/completion |
键入时建议的制表符补全 |
textDocument/signatureHelp |
获取给定光标位置的签名信息 |
textDocument/definition |
GoTo 定义/Peek 定义 |
textDocument/references |
查找所有/查看参考 |
textDocument/documentHighlight |
如同textDocument/references |
textDocument/hover |
悬停时显示消息和签名 |
textDocument/implementation |
GoTo 实施/Peek 实施 |
textDocument/rename |
跨工作区重命名符号 |
textDocument/didOpen |
打开时文件同步 |
textDocument/didSave |
保存时文件同步 |
textDocument/didClose |
关闭时的文档同步 |
textDocument/didChange |
文档更改时的文档同步 |
textDocument/codeAction |
实验生成代码 |
致谢
如果没有@hansec的原创作品,这个项目是不可能实现
的fortran-language-server
错误报告
提交错误时 ,请提供示例代码以重现观察到的问题。
安全政策
要报告安全漏洞,请按照我们的 安全页面中的说明进行操作。
执照
这个项目是在MIT License下提供的。