编辑器集成

Visual Studio Code

语言服务器通过 Modern Fortran 扩展原生支持。安装 fortls,然后安装扩展,服务器的所有功能都应该立即可用。

重要

确保 fortls 在您的 $PATH 中可访问。如果不是,您可以指定选项 "fortran.fortls.path": "/custom/path/to/fortls"

Atom

首先安装 fortls,然后安装 language-fortran 插件(由 @dparkins 开发)以获得 Fortran 语法高亮。最后,安装 fortran-lsp(由 @gnikit 开发)或 ide-fortran(由 @hansec 开发)。

警告

fortran-lsp 专为 fortls 语言服务器创建,因此它与 fortls 本机交互。ide-fortran 是为一个旧的(现已弃用)Fortran 语言服务器创建的,因此通过扩展提供的选项不能代表 fortls 的接口。

Sublime Text

首先,安装 fortls,然后从包控制中安装 LSP 包。最后,安装 Fortran 包并在您的配置中添加以下内容

{
    "clients": {
        "fortls": {
            "enabled": true,
            "command": ["fortls", "--notify_init"],
            "selector": "source.modern-fortran | source.fixedform-fortran"
        }
    }
}

有关更多详细信息,请参阅 LSP 文档

neovim

警告

对于 neovim 版本 < 0.5.0,请遵循 Vim 部分中的说明。

Neovim 版本 >= 0.5.0 原生支持 LSP。要启用本机 LSP 功能,请使用您最喜欢的插件管理器安装 lspconfig 插件。

然后在您的配置文件(即 init.lua)中添加以下内容

require'lspconfig'.fortls.setup{}

如果需要将其他 fortls 选项传递给您,可以通过 setup{} 中的 cmd 选项来实现。

require'lspconfig'.fortls.setup{
    cmd = {
        'fortls',
        '--lowercase_intrisics',
        '--hover_signature',
        '--hover_language=fortran',
        '--use_signature_help'
    }
}

重要

如果您刚刚开始使用 neovim,强烈建议使用 lspconfig 中的 建议的配置 来进行按键绑定和服务器连接。**请记住在 setup{} 期间连接服务器**。

Vim

Vim 本身不支持 LSP,因此需要安装第三方扩展。有几个选项可用

YouCompleteMe

YouCompleteMe 是一款流行的 Vim 插件和代码补全引擎,也提供了 LSP 接口。因此,您可以使用它来注册像 fortls 这样的语言服务器。

有关在 YouCompleteMe 中配置任意语言服务器的更多信息,请参阅此处

" YouCompleteMe configuration options
let g:ycm_language_server =
    \[
    \   {
    \       'name': 'fortls',
    \       'cmdline': ['fortls', '--hover_language', 'fortran', '--notify_init', '--hover_signature', '--use_signature_help'],
    \       'filetypes': ['fortran'],
    \       'project_root_files': ['.fortls'],
    \   },
    \]
nmap <leader>yfw <Plug>(YCMFindSymbolInWorkspace)
nmap <leader>yfd <Plug>(YCMFindSymbolInDocument)

LanguageClient-neovim

首先安装插件 LanguageClient-neovim。然后编辑您的 ~/.vimrc 设置文件以将 fortls 设置为 Fortran 文件的语言服务器。

" Required for operations modifying multiple buffers like rename. set hidden
let g:LanguageClient_serverCommands = {
    " Add any default arguments you want fortls to have inside []
    \ 'fortran': ['fortls', '--hover_signature', '--hover_language', 'fortran', '--use_signature_help'],
    \ }

" note that if you are using Plug mapping you should not use `noremap` mappings.
nmap <F5> <Plug>(lcn-menu)
" Or map each action separately
nmap <silent>K <Plug>(lcn-hover)
nmap <silent> gd <Plug>(lcn-definition)
nmap <silent> <F2> <Plug>(lcn-rename)

EMACS

LSP Mode

安装 lsp-mode 插件。这应该允许在 ~/.emacs 配置文件中定义变量 lsp-clients-fortls-argslsp-clients-fortls-executable

Eglot

安装 eglot 包,该包开箱即用地支持 fortls。这可以通过 emacs 版本 > 26.1 通过 M-x package-install RET eglot RET 来完成。可以以以下形式提供给 fortls 的参数

(add-to-list 'eglot-server-programs '(f90-mode . ("fortls" "--notify_init" "--nthreads=4")))

Visual Studio 2017

安装此 VS17 扩展 应该可以在 Visual Studio 中启用 fortls 功能。

Kakoune

安装 kak-lsp

编辑 kak-lsp.toml 配置文件以包含

[language.fortran]
filetypes = ["fortran"]
roots = [".git", ".fortls"]
command = "fortls"
args = ["--symbol_skip_mem", "--incremental_sync", "--autocomplete_no_prefix", "--lowercase_intrisics"]

编辑您的 kakrc 配置以启用 kak-lsp,并将 fortran 添加为文件类型

eval %sh{kak-lsp --kakoune -s $kak_session}
# lsp-enable
hook global WinSetOption filetype=(fortran) %{
  lsp-enable-window
}