66个版本 (33个稳定版)
使用旧的Rust 2015
3.11.0 | 2024年3月5日 |
---|---|
3.10.0 | 2022年1月5日 |
3.9.0 | 2020年12月14日 |
3.8.1 | 2020年10月26日 |
0.2.3 | 2014年12月30日 |
#72 in 文件系统
每月170次下载
64KB
1.5K SLoC
rusty-tags
一个命令行工具,通过使用ctags创建标签,以便在ctags中使用,为cargo项目,其所有直接和间接依赖以及Rust标准库创建源代码导航标签。
先决条件
- ctags已安装,需要具有
--recurse
标志的版本
在Linux系统中,该软件包可能被称为exuberant-ctags
。
否则,您可以直接从此处获取源代码,或使用较新的universal-ctags。
只有universal-ctags
将为结构字段和枚举变体添加标签。
安装
$ cargo install rusty-tags
构建的二进制文件将位于~/.cargo/bin/rusty-tags
。
用法
只需在cargo项目的任何地方调用rusty-tags vi
或rusty-tags emacs
即可。
运行后,应在Cargo.toml
文件旁边创建一个rusty-tags.vi / rusty-tags.emacs
文件。
此外,每个依赖项在其源目录中都有一个标签文件,因此可以进一步跳转到其依赖项。
Rust标准库支持
如果通过定义环境变量RUST_SRC_PATH
提供rust源,将创建标准库的标签。
这些标签不会自动添加到cargo项目的标签中,需要手动添加路径$RUST_SRC_PATH/rusty-tags.vi
或$RUST_SRC_PATH/rusty-tags.emacs
。
如果您使用rustup,可以通过调用来获取当前使用的编译器版本的rust源代码
$ rustup component add rust-src
然后在例如 ~/.bashrc
内设置 RUST_SRC_PATH
。
对于 rustc >= 1.47.0
$ export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library/
对于 rustc < 1.47.0
$ export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/src/
配置
当前在 ~/.rusty-tags/config.toml
支持的配置(显示默认值)
# the file name used for vi tags
vi_tags = "rusty-tags.vi"
# the file name used for emacs tags
emacs_tags = "rusty-tags.emacs"
# the name or path to the ctags executable, by default executables with names
# are searched in the following order: "ctags", "exuberant-ctags", "exctags", "universal-ctags", "uctags"
ctags_exe = ""
# options given to the ctags executable
ctags_options = ""
Vim 配置
将以下内容放入你的 ~/.vimrc
文件
autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/
或者如果你已经通过定义 RUST_SRC_PATH
提供了 rust 源代码
autocmd BufRead *.rs :setlocal tags=./rusty-tags.vi;/,$RUST_SRC_PATH/rusty-tags.vi
并且
autocmd BufWritePost *.rs :silent! exec "!rusty-tags vi --quiet --start-dir=" . expand('%:p:h') . "&" | redraw!
Emacs 配置
安装 counsel-etags。
在 rust 项目的根目录中创建文件 .dir-locals.el
(请注意设置 counsel-etags-extra-tags-files
的行是可选的)
((nil . ((counsel-etags-update-tags-backend . (lambda (src-dir) (shell-command "rusty-tags emacs")))
(counsel-etags-extra-tags-files . ("~/third-party-lib/rusty-tags.emacs" "$RUST_SRC_PATH/rusty-tags.emacs"))
(counsel-etags-tags-file-name . "rusty-tags.emacs"))))
使用 M-x counsel-etags-find-tag-at-point
进行代码导航。
counsel-etags
将自动检测并更新项目根目录中的标签文件。因此无需额外设置。
Sublime 配置
插件 CTags 使用 vi 风格的标签,因此调用 rusty-tags vi
应该可以工作。
默认情况下,它期望标签文件名为 .tags
,这可以在 ~/.rusty-tags/config.toml
中设置
vi_tags = ".tags"
或者通过调用 rusty-tags vi --output=".tags"
。
MacOS 问题
Mac OS 用户可能会在执行 ctags
时遇到问题,因为该程序的预装版本不支持递归标志。请参阅 这篇帖子 了解如何使用 homebrew 安装一个可工作的版本。
Cygwin/Msys 问题
如果你在 Windows 下运行 Cygwin 或 Msys,你可能需要显式设置环境变量 $CARGO_HOME
。否则,在移动标签文件时可能会出现错误。
依赖
~3–13MB
~157K SLoC