dotfiles/.config/kak/autoload/url.kak

30 lines
1.2 KiB
Text

provide-module url-open %∴
declare-option -docstring %{
Command for opening URLs.
} str url_open_cmd 'xdg-open %s'
define-command -docstring %{
Open the URL the cursor is on with url_open_cmd.
} url-open %{
evaluate-commands -save-regs 'ab' %{
set-register b 'https?://(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)'
try %{
try %{
execute-keys -draft '<a-a><a-w>s<c-r>b<ret>"ay'
} catch %{
fail 'No URL found!'
}
evaluate-commands %sh{
# strip trailing punctuation
clean_url="$(echo "$kak_reg_a" | sed 's/[][(){}.,;!?]*$//')"
if eval "$(printf "$kak_opt_url_open_cmd" "$clean_url")" >/dev/null 2>&1; then
echo "info -title 'URL Opened' '$clean_url'"
else
echo "fail 'url_open_cmd failed!'"
fi
}
} catch %{
info -title 'URL Open' "Couldn't open URL: %val{error}"
}
}
}