Skip to content

Support {host} in hyperlinks#1901

Merged
dandavison merged 2 commits into
mainfrom
support-hostname-in-hyperlinks
Nov 16, 2024
Merged

Support {host} in hyperlinks#1901
dandavison merged 2 commits into
mainfrom
support-hostname-in-hyperlinks

Conversation

@dandavison

Copy link
Copy Markdown
Owner

Fixes #1899.

@dandavison dandavison force-pushed the support-hostname-in-hyperlinks branch from be9bd21 to 9fe75db Compare November 12, 2024 15:35
@dandavison dandavison marked this pull request as ready for review November 12, 2024 21:08
@dandavison dandavison requested a review from th1000s November 12, 2024 21:08
Comment thread src/cli.rs Outdated
Comment on lines 435 to 443
/// The placeholders "{host}", "{path}", and "{line}" will be replaced by the hostname,
/// absolute file path and the line number, respectively. The default value of this option
/// creates hyperlinks using standard file URLs; your operating system should open these in the
/// application registered for that file type. However, these do not make use of the line
/// number. In order for the link to open the file at the correct line number, you could use a
/// custom URL format such as "file-line://{path}:{line}" and register an application to handle
/// the custom "file-line" URL scheme by opening the file in your editor/IDE at the indicated
/// line number. See <https://github.com/dandavison/open-in-editor> for an example.
pub hyperlinks_file_link_format: String,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to reduce the text a bit, what about:


Placeholders "{path}" and "{line}" will be replaced by the absolute file path and the line number; "{host}" with the hostname delta is currently running on.

The default "file:" scheme creates hyperlinks using standard file URI with only the filename, which your terminal or OS should handle. You can specify any scheme, such as "file-line://{path}:{line}" and register an application to handle it. See <https://dandavison.github.io/delta/hyperlinks.html> for details.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect, thanks for doing that, I wasn't happy with it either. I've pushed a version very similar to what you wrote.

Comment thread src/cli.rs
Comment on lines 432 to 433
)]
/// Format string for file hyperlinks (requires --hyperlinks).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While you are at it, the above (in GitHub I can't add a comment there..) should be file:///, not just //, see the mentioned RFC 8089.

@dandavison dandavison Nov 12, 2024

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you saying that

        default_value = "file://{path}",

is incorrect? {path} is documented as being an absolute file path, so on Unix will have a leading slash; if we change the default here to 3 slashes then wouldn't we need to make a code change to avoid 4 slashes when concatenating the path? Also we use "file-line://{path}:{line}" as an example in the text (two slashes).

I think I struggle to think in non-unix terms -- I'm guilty of thinking of "absolute path" as synonymous with "starts with slash".

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, the path contains the third /, then it is fine.

@dandavison dandavison Nov 15, 2024

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mind if we address this in a separate PR? I'm doubtless being stupid but it seems to me that if {path} is an absolute path, such as /etc/fstab then it's correct as-is, yielding file:///etc/fstab. I'd prefer not to make a drive-by change that's not related to the PR, without understanding the correctness implications.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is okay as-is, there is nothing to address :)

See debug_assert!(absolute_path.as_ref().is_absolute());

@dandavison dandavison merged commit 1dd28e7 into main Nov 16, 2024
@dandavison dandavison deleted the support-hostname-in-hyperlinks branch November 16, 2024 15:51
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Mar 26, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [dandavison/delta](https://github.com/dandavison/delta) | minor | `0.18.2` → `0.19.1` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>dandavison/delta (dandavison/delta)</summary>

### [`v0.19.1`](https://github.com/dandavison/delta/releases/tag/0.19.1)

[Compare Source](dandavison/delta@0.19.0...0.19.1)

This patch release fixes a release automation [bug](dandavison/delta#2127): release [0.19.0](https://github.com/dandavison/delta/releases/tag/0.19.0) did not include all release binaries.

#### What's Changed

- Fix CD: replace defunct ubuntu-20.04 runners by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;2129](dandavison/delta#2129)

**Full Changelog**: <dandavison/delta@0.19.0...0.19.1>

### [`v0.19.0`](https://github.com/dandavison/delta/releases/tag/0.19.0)

[Compare Source](dandavison/delta@0.18.2...0.19.0)

Tons of improvements; thanks very much to all delta contributors.

**This release is missing several binaries due to a [bug in the GitHub Actions release workflow](dandavison/delta#2127). Please use <https://github.com/dandavison/delta/releases/tag/0.19.1> instead.**

#### What's Changed

- Do not double panic in FakeParentArgs::drop by [@&#8203;dvermd](https://github.com/dvermd) in [#&#8203;1856](dandavison/delta#1856)
- Improve blame file type detection ([#&#8203;1803](dandavison/delta#1803)) by [@&#8203;dvermd](https://github.com/dvermd) in [#&#8203;1829](dandavison/delta#1829)
- Use same example config in manual as README by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1879](dandavison/delta#1879)
- Clarify grep highlighter-related code by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1877](dandavison/delta#1877)
- Don't set colorMoved in introductory instructions by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1884](dandavison/delta#1884)
- Recommend zdiff3 merge.conflictStyle by [@&#8203;adamchainz](https://github.com/adamchainz) in [#&#8203;1260](dandavison/delta#1260)
- Add themes `weeping-willow`, `mirthful-willow` by [@&#8203;lvdh](https://github.com/lvdh) in [#&#8203;1864](dandavison/delta#1864)
- CI: switch to macos-13, as 12 will be unsupported soon by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1890](dandavison/delta#1890)
- Add optional capture-output writer to run\_app() by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1889](dandavison/delta#1889)
- Center-align README content by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1893](dandavison/delta#1893)
- Redundant Option Checks, Unwrap Safety by [@&#8203;sharma-shray](https://github.com/sharma-shray) in [#&#8203;1892](dandavison/delta#1892)
- Add console commands for git configuration by [@&#8203;harmtemolder](https://github.com/harmtemolder) in [#&#8203;1896](dandavison/delta#1896)
- Honor pager path when checking less version by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1903](dandavison/delta#1903)
- Rename some variables by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1904](dandavison/delta#1904)
- Delete now-unused pricate homebrew formula step from Makefile (III) by [@&#8203;dvermd](https://github.com/dvermd) in [#&#8203;1830](dandavison/delta#1830)
- Support {host} in hyperlinks by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;1901](dandavison/delta#1901)
- Allow multiple hyperlinks per line by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1909](dandavison/delta#1909)
- Clippy 1.83 by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1918](dandavison/delta#1918)
- Support external subcommands: rg, diff, git-show (etc.) by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1769](dandavison/delta#1769)
- Don't keep subcommand stdout around by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1920](dandavison/delta#1920)
- hyperlink commit hashes of length 7 as well by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1924](dandavison/delta#1924)
- clippy 1.84 fix by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1938](dandavison/delta#1938)
- chore(deps): update git2 to use libgit2 1.9 by [@&#8203;chenrui333](https://github.com/chenrui333) in [#&#8203;1930](dandavison/delta#1930)
- Suggest minimum bat version in manual by [@&#8203;ernstki](https://github.com/ernstki) in [#&#8203;1941](dandavison/delta#1941)
- Upgrade unicode-width to v0.1.14 (but still < 0.2.0) by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1937](dandavison/delta#1937)
- Update terminal-colorsaurus version to 0.4.8 by [@&#8203;rashil2000](https://github.com/rashil2000) in [#&#8203;1936](dandavison/delta#1936)
- Fix index out of bounds crash for '@&#8203;@&#8203;  @&#8203;@&#8203;' hunk header by [@&#8203;adamchainz](https://github.com/adamchainz) in [#&#8203;1995](dandavison/delta#1995)
- Tune themes weeping-willow, mirthful-willow by [@&#8203;lvdh](https://github.com/lvdh) in [#&#8203;2011](dandavison/delta#2011)
- clippy 1.88 fixes by [@&#8203;injust](https://github.com/injust) in [#&#8203;2016](dandavison/delta#2016)
- Fix diff output when a diff ends with a mode change by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;2023](dandavison/delta#2023)
- fix: `cargo install git-delta --locked` fails on systems with GCC 15 by [@&#8203;tquin](https://github.com/tquin) in [#&#8203;2007](dandavison/delta#2007)
- Normalize `merge.conflictStyle` casing by [@&#8203;injust](https://github.com/injust) in [#&#8203;2015](dandavison/delta#2015)
- Styled zero lines fix by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;1916](dandavison/delta#1916)
- config: add setup instructions for Jujutsu (jj) vcs by [@&#8203;arjunmahishi](https://github.com/arjunmahishi) in [#&#8203;2048](dandavison/delta#2048)
- all: fix clippy complaints by [@&#8203;charlievieth](https://github.com/charlievieth) in [#&#8203;2038](dandavison/delta#2038)
- Cache the Git remote URL to speed up rendering hyperlinks by [@&#8203;charlievieth](https://github.com/charlievieth) in [#&#8203;1940](dandavison/delta#1940)
- deps: update cc by [@&#8203;ognevny](https://github.com/ognevny) in [#&#8203;2053](dandavison/delta#2053)
- rg json handling: fix line comment highlighting by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;2057](dandavison/delta#2057)
- Update dirs dependency to version 6 by [@&#8203;musicinmybrain](https://github.com/musicinmybrain) in [#&#8203;2063](dandavison/delta#2063)
- default line number to 1 for hyperlinks by [@&#8203;schpet](https://github.com/schpet) in [#&#8203;2061](dandavison/delta#2061)
- Fix line numbers showing filename when hyperlinks enabled by [@&#8203;tsvikas](https://github.com/tsvikas) in [#&#8203;2058](dandavison/delta#2058)
- less hist file: look at xdg paths by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;2065](dandavison/delta#2065)
- CI: remove x86 apple/macOS by [@&#8203;th1000s](https://github.com/th1000s) in [#&#8203;2074](dandavison/delta#2074)
- Update bat dependency from 0.24 to 0.26 by [@&#8203;dandavison](https://github.com/dandavison) in [#&#8203;2115](dandavison/delta#2115)

#### New Contributors

- [@&#8203;dvermd](https://github.com/dvermd) made their first contribution in [#&#8203;1856](dandavison/delta#1856)
- [@&#8203;lvdh](https://github.com/lvdh) made their first contribution in [#&#8203;1864](dandavison/delta#1864)
- [@&#8203;sharma-shray](https://github.com/sharma-shray) made their first contribution in [#&#8203;1892](dandavison/delta#1892)
- [@&#8203;harmtemolder](https://github.com/harmtemolder) made their first contribution in [#&#8203;1896](dandavison/delta#1896)
- [@&#8203;ernstki](https://github.com/ernstki) made their first contribution in [#&#8203;1941](dandavison/delta#1941)
- [@&#8203;tquin](https://github.com/tquin) made their first contribution in [#&#8203;2007](dandavison/delta#2007)
- [@&#8203;arjunmahishi](https://github.com/arjunmahishi) made their first contribution in [#&#8203;2048](dandavison/delta#2048)
- [@&#8203;charlievieth](https://github.com/charlievieth) made their first contribution in [#&#8203;2038](dandavison/delta#2038)
- [@&#8203;ognevny](https://github.com/ognevny) made their first contribution in [#&#8203;2053](dandavison/delta#2053)
- [@&#8203;musicinmybrain](https://github.com/musicinmybrain) made their first contribution in [#&#8203;2063](dandavison/delta#2063)
- [@&#8203;schpet](https://github.com/schpet) made their first contribution in [#&#8203;2061](dandavison/delta#2061)
- [@&#8203;tsvikas](https://github.com/tsvikas) made their first contribution in [#&#8203;2058](dandavison/delta#2058)

**Full Changelog**: <dandavison/delta@0.18.2...0.19.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My44OS42IiwidXBkYXRlZEluVmVyIjoiNDMuODkuNiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🚀 expose {host} in hyperlinks

2 participants