1 个不稳定版本
0.1.0 | 2024年8月16日 |
---|
#4 在 #configured
232 每月下载量
16KB
199 行代码(不含注释)
editor-command
从 VISUAL
或 EDITOR
环境变量中加载用户首选的文件编辑命令。
use editor_command::EditorCommand;
use std::process::Command;
std::env::set_var("VISUAL", "vim");
let mut command: Command = EditorCommand::edit_file("file.txt").unwrap();
command.spawn();
lib.rs
:
获取一个可执行 [Command],用于在用户配置的编辑器中打开特定文件。
特性
- 从
VISUAL
或EDITOR
环境变量中加载编辑命令 - 指定高优先级覆盖命令和低优先级默认命令
- 传递一个或多个要由编辑器打开的路径
- 灵活的构建器模式
示例
最简单的用法如下
use editor_command::EditorBuilder;
use std::process::Command;
std::env::set_var("VISUAL", "vim");
let command: Command = EditorBuilder::edit_file("file.txt").unwrap();
assert_eq!(command.get_program(), "vim");
这是一个使用构建器模式为 [EditorBuilder] 提供覆盖和回退命令的示例
use editor_command::EditorBuilder;
use std::process::Command;
// In your app, this could be an optional field from a config object
let override_command = Some("code --wait");
let command: Command = EditorBuilder::new()
// In this case, the override is always populated so it will always win.
// In reality it would be an optional user-provided field.
.source(override_command)
.environment()
// If both VISUAL and EDITOR are undefined, we'll fall back to this
.source(Some("vi"))
.build()
.unwrap();
assert_eq!(format!("{command:?}"), "\"code\" \"--wait\"");
这种模式对于有方法配置特定应用编辑器的应用程序很有用。例如,git 有 core.editor
配置字段。
语法
命令的语法旨在类似于常见壳的命令语法。第一个单词是程序名称,后续令牌(由空格分隔)是该程序的参数。可以使用单引号和双引号将多个令牌连接成一个参数。
命令解析由 crate [shellish_parse](默认 [ParseOptions])处理。有关语法的详细信息,请参阅那些文档。
生命周期
[EditorBuilder] 接受一个生命周期参数,该参数绑定到它包含的字符串数据(包括命令字符串和路径)。这是为了防止在从 &str
构建命令/路径时进行不必要的克隆。如果您需要 [EditorBuilder] 实例为 'static
,例如,以便可以从函数中返回,您可以简单地使用 EditorBuilder<'static>
。内部,所有字符串都存储为 [Cow],因此将在必要时进行克隆。
use editor_command::EditorBuilder;
/// This is a contrived example of returning a command with owned data
fn get_editor_builder<'a>(command: &'a str) -> EditorBuilder<'static> {
// The lifetime bounds enforce the .to_owned() call
EditorBuilder::new().source(Some(command.to_owned()))
}
let command = get_editor_builder("vim").build().unwrap();
assert_eq!(command.get_program(), "vim");
资源
有关 VISUAL
和 EDITOR
环境变量的更多信息,请参阅此线程。
依赖项
~36KB