diff options
Diffstat (limited to 'x11-misc/emacs-desktop-mail/emacs-desktop-mail-1.2.ebuild')
-rw-r--r-- | x11-misc/emacs-desktop-mail/emacs-desktop-mail-1.2.ebuild | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/x11-misc/emacs-desktop-mail/emacs-desktop-mail-1.2.ebuild b/x11-misc/emacs-desktop-mail/emacs-desktop-mail-1.2.ebuild new file mode 100644 index 000000000000..aa83394f2032 --- /dev/null +++ b/x11-misc/emacs-desktop-mail/emacs-desktop-mail-1.2.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +NEED_EMACS=28 + +inherit elisp desktop xdg-utils + +DESCRIPTION="Desktop entries for handling mailto URIs with GNU Emacs" +HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Emacs" +S="${WORKDIR}" + +LICENSE="GPL-2+" +SLOT="0" +KEYWORDS="~amd64 ~x86" + +src_compile() { :; } + +src_install() { + newmenu - emacs-mail.desktop <<-EOF + [Desktop Entry] + Type=Application + Name=GNU Emacs (mail) + NoDisplay=true + Exec=${EPREXIX}/usr/bin/emacs -f message-mailto %u + Terminal=false + MimeType=x-scheme-handler/mailto; + EOF + + # The Desktop Entry Specification does not allow field codes like %u + # inside a quoted argument, therefore we need a shell wrapper. + # We pass the following commands to it, in order to backslash-escape + # any special characters '\' and '"' that occur in %u: + # u=${1//\\/\\\\} + # u=${u//\"/\\\"} + # exec emacsclient --eval "(message-mailto \"$u\")" + # However, in the desktop entry '"', '\', and '$' must be escaped + # as '\\"', '\\\\', and '\\$', respectively. Yet another level of + # backslash escapes is needed for '\' and '$' in the here-document. + newmenu - emacsclient-mail.desktop <<-EOF + [Desktop Entry] + Type=Application + Name=Emacsclient (mail) + NoDisplay=true + Exec=${EPREFIX}/bin/bash -c \ +"u=\\\\\${1//\\\\\\\\\\\\\\\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}; \ +u=\\\\\${u//\\\\\\\\\\\\"/\\\\\\\\\\\\\\\\\\\\\\\\\\\\"}; \ +exec ${EPREFIX}/usr/bin/emacsclient \ +--eval \\\\"(message-mailto \\\\\\\\\\\\"\\\\\$u\\\\\\\\\\\\")\\\\"" bash %u + Terminal=false + MimeType=x-scheme-handler/mailto; + EOF +} + +pkg_postinst() { + xdg_desktop_database_update +} + +pkg_postrm() { + xdg_desktop_database_update +} |