编辑器集成¶
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'
}
}
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-args 和 lsp-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
}