summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.ebuild61
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
+}