mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-11-23 21:54:45 +02:00
complete/zsh: improve --hyperlink-format completion
Also don't re-define helper functions if they exist. Closes #3102
This commit is contained in:
@@ -4,41 +4,84 @@ use crate::hyperlink::HyperlinkAlias;
|
||||
///
|
||||
/// These need to be sorted by name.
|
||||
pub(super) const HYPERLINK_PATTERN_ALIASES: &[HyperlinkAlias] = &[
|
||||
#[cfg(not(windows))]
|
||||
prioritized_alias(0, "default", "file://{host}{path}"),
|
||||
#[cfg(windows)]
|
||||
prioritized_alias(0, "default", "file://{path}"),
|
||||
alias("file", "file://{host}{path}"),
|
||||
prioritized_alias(
|
||||
0,
|
||||
"default",
|
||||
"RFC 8089 scheme (file://) (platform-aware)",
|
||||
{
|
||||
#[cfg(not(windows))]
|
||||
{
|
||||
"file://{host}{path}"
|
||||
}
|
||||
#[cfg(windows)]
|
||||
{
|
||||
"file://{path}"
|
||||
}
|
||||
},
|
||||
),
|
||||
alias(
|
||||
"file",
|
||||
"RFC 8089 scheme (file://) with host",
|
||||
"file://{host}{path}",
|
||||
),
|
||||
// https://github.com/misaki-web/grepp
|
||||
alias("grep+", "grep+://{path}:{line}"),
|
||||
alias("kitty", "file://{host}{path}#{line}"),
|
||||
alias("grep+", "grep+ scheme (grep+://)", "grep+://{path}:{line}"),
|
||||
alias(
|
||||
"kitty",
|
||||
"kitty-style RFC 8089 scheme (file://) with line number",
|
||||
"file://{host}{path}#{line}",
|
||||
),
|
||||
// https://macvim.org/docs/gui_mac.txt.html#mvim%3A%2F%2F
|
||||
alias(
|
||||
"macvim",
|
||||
"MacVim scheme (mvim://)",
|
||||
"mvim://open?url=file://{path}&line={line}&column={column}",
|
||||
),
|
||||
prioritized_alias(1, "none", ""),
|
||||
prioritized_alias(1, "none", "disable hyperlinks", ""),
|
||||
// https://macromates.com/blog/2007/the-textmate-url-scheme/
|
||||
alias(
|
||||
"textmate",
|
||||
"TextMate scheme (txmt://)",
|
||||
"txmt://open?url=file://{path}&line={line}&column={column}",
|
||||
),
|
||||
// https://code.visualstudio.com/docs/editor/command-line#_opening-vs-code-with-urls
|
||||
alias("vscode", "vscode://file{path}:{line}:{column}"),
|
||||
alias("vscode-insiders", "vscode-insiders://file{path}:{line}:{column}"),
|
||||
alias("vscodium", "vscodium://file{path}:{line}:{column}"),
|
||||
alias(
|
||||
"vscode",
|
||||
"VS Code scheme (vscode://)",
|
||||
"vscode://file{path}:{line}:{column}",
|
||||
),
|
||||
alias(
|
||||
"vscode-insiders",
|
||||
"VS Code Insiders scheme (vscode-insiders://)",
|
||||
"vscode-insiders://file{path}:{line}:{column}",
|
||||
),
|
||||
alias(
|
||||
"vscodium",
|
||||
"VSCodium scheme (vscodium://)",
|
||||
"vscodium://file{path}:{line}:{column}",
|
||||
),
|
||||
];
|
||||
|
||||
/// Creates a [`HyperlinkAlias`].
|
||||
const fn alias(name: &'static str, format: &'static str) -> HyperlinkAlias {
|
||||
HyperlinkAlias { name, format, display_priority: None }
|
||||
const fn alias(
|
||||
name: &'static str,
|
||||
description: &'static str,
|
||||
format: &'static str,
|
||||
) -> HyperlinkAlias {
|
||||
HyperlinkAlias { name, description, format, display_priority: None }
|
||||
}
|
||||
|
||||
/// Creates a [`HyperlinkAlias`] with a display priority.
|
||||
const fn prioritized_alias(
|
||||
priority: i16,
|
||||
name: &'static str,
|
||||
description: &'static str,
|
||||
format: &'static str,
|
||||
) -> HyperlinkAlias {
|
||||
HyperlinkAlias { name, format, display_priority: Some(priority) }
|
||||
HyperlinkAlias {
|
||||
name,
|
||||
description,
|
||||
format,
|
||||
display_priority: Some(priority),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,6 +190,7 @@ impl std::fmt::Display for HyperlinkFormat {
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct HyperlinkAlias {
|
||||
name: &'static str,
|
||||
description: &'static str,
|
||||
format: &'static str,
|
||||
display_priority: Option<i16>,
|
||||
}
|
||||
@@ -200,6 +201,11 @@ impl HyperlinkAlias {
|
||||
self.name
|
||||
}
|
||||
|
||||
/// Returns a very short description of this hyperlink alias.
|
||||
pub const fn description(&self) -> &str {
|
||||
self.description
|
||||
}
|
||||
|
||||
/// Returns the display priority of this alias.
|
||||
///
|
||||
/// If no priority is set, then `None` is returned.
|
||||
|
||||
Reference in New Issue
Block a user