30 lines
1.2 KiB
Text
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}"
|
|
}
|
|
}
|
|
}
|
|
∴
|