mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-15 04:27:52 -05:00
urls: add key binding that toggles whether URLs are displayed on jump-label
By default, the URL isn’t shown on the jump-label. For auto-detect URLs, doing so is virtually always useless, as the URL is already visible in the grid. For OSC-8 URLs however, the URL is often _not_ visible in the grid. Many times, seeing the URL is still not needed (if you’re doing ‘ls --hyperlink’, you already know what the URIs are). But it is still useful to have a way to show the URLs. This patch adds a new key binding action that can be used in url-mode to toggle the URL on and off in the jump label. It is bound to ctrl+t by default.
This commit is contained in:
parent
cc43c1b704
commit
06a9ffa763
7 changed files with 44 additions and 2 deletions
21
render.c
21
render.c
|
|
@ -2525,6 +2525,8 @@ render_urls(struct terminal *term)
|
|||
+ term->grid->num_rows) & (term->grid->num_rows - 1);
|
||||
const int view_end = view_start + term->rows - 1;
|
||||
|
||||
const bool show_url = term->urls_show_uri_on_jump_label;
|
||||
|
||||
tll_foreach(win->urls, it) {
|
||||
const struct url *url = it->item.url;
|
||||
const wchar_t *key = url->key;
|
||||
|
|
@ -2562,13 +2564,28 @@ render_urls(struct terminal *term)
|
|||
continue;
|
||||
}
|
||||
|
||||
size_t chars = wcslen(key);
|
||||
const size_t key_len = wcslen(key);
|
||||
|
||||
size_t url_len = mbstowcs(NULL, url->url, 0);
|
||||
if (url_len == (size_t)-1)
|
||||
url_len = 0;
|
||||
|
||||
wchar_t url_wchars[url_len + 1];
|
||||
mbstowcs(url_wchars, url->url, url_len + 1);
|
||||
|
||||
size_t chars = key_len + (show_url ? (2 + url_len) : 0);
|
||||
|
||||
const size_t max_chars = 50;
|
||||
chars = min(chars, max_chars);
|
||||
|
||||
wchar_t label[chars + 2];
|
||||
wcscpy(label, key);
|
||||
label[chars] = L'…';
|
||||
label[chars + 1] = L'\0';
|
||||
|
||||
if (show_url)
|
||||
swprintf(label, chars + 1, L"%ls: %ls", key, url_wchars);
|
||||
else
|
||||
wcsncpy(label, key, chars + 1);
|
||||
|
||||
for (size_t i = 0; i < wcslen(key); i++)
|
||||
label[i] = towupper(label[i]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue