From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.devel Subject: Generic Elisp mechanism to declare file/URI handlers for Emacs (was: bug#65469: [PATCH] * etc/emacsclient.desktop: Make Emacs default application for org-protocol) Date: Tue, 19 Sep 2023 11:14:23 +0000 Message-ID: <87sf7ao1o0.fsf@localhost> References: <87v8d66r7l.fsf@localhost> <87led53q0c.fsf@thaodan.de> <87fs3bkho4.fsf@localhost> <835y47g2b2.fsf@gnu.org> <874jjrk48q.fsf@localhost> <87cyyfwqs5.fsf@yahoo.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35673"; mail-complaints-to="usenet@ciao.gmane.io" Cc: =?utf-8?Q?Bj=C3=B6rn?= Bidar , eliz@gnu.org, stefankangas@gmail.com, emacs-devel@gnu.org To: Po Lu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Sep 19 13:14:12 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qiYgE-00094X-Lt for ged-emacs-devel@m.gmane-mx.org; Tue, 19 Sep 2023 13:14:10 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qiYfM-0001NY-Cc; Tue, 19 Sep 2023 07:13:16 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiYfK-0001MI-6Q for emacs-devel@gnu.org; Tue, 19 Sep 2023 07:13:14 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qiYfH-00055D-D2 for emacs-devel@gnu.org; Tue, 19 Sep 2023 07:13:13 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id D3EC5240029 for ; Tue, 19 Sep 2023 13:13:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1695121988; bh=XshOM5FFoajFO1OvUGmY66Bv5LScN3xmL6P3NB1qmWA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:From; b=NBT3miWELtj2drtrWeFyn3D8d/fPtnvh/3QpRs2jw3adsOaz1zubTF/ebGPM4XO09 wcdodIgVteU9TSd4CdbgOmFhrGVMIonb7oUUOHwqr/UtWTQ+NxC1ePacsAcLYx2EAP ewqvAiUyCgbFh5gm0BbcqZc0hLgYS5tefdeFWvhg0P01ZCrQZ5Lj0ln2VI1AA/ZANc IZZUGrh7eBK7PrmvNz6CnXR/mge0Ys7eXdJ3dMxImXLkQ8zptWme/IwL2GMLIyPaq2 cTlBaBwScnir3h6LJy5/VFM0VIVZg+DO7KbvyLMXRSYqDMLyjd6x5zkz2WE2rqW+9m b52KlAUQo434Q== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4RqfCl3PvMz9rxK; Tue, 19 Sep 2023 13:13:07 +0200 (CEST) In-Reply-To: <87cyyfwqs5.fsf@yahoo.com> Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:310747 Archived-At: [ moving to emacs-devel ] Po Lu writes: >> I am also wondering is something similar might be done for Android build. >> Having something like "Share with ... Emacs" might be an interesting >> feature. > > I wrote this feature back in August, immediately upon this patch's > installation in master. Emacs registers itself as a URL handler for > ``org-protocol://'' links, which are then provided to emacsclient. Thanks! Apparently, Android builds have to implement handlers in the source code directly. This makes adding new handlers for Emacs non-trivial - one needs to know both about .desktop file and also about Android-specific code (and what about MacOS-specific and Windows-specific?). Would it make sense to create a more generic mechanism to collect a list of handlers from all the Elisp sources in Emacs and then generate Linux/Android/etc-specific definitions automatically when Emacs is compiled? I imagine something akin how ;;;###autoload works - Elisp libraries that implement handling of certain file types or URI protocols declare this fact and then Emacs automatically pick this info, generating .desktop files and relevant parts of Andoid (java/org/gnu/emacs/EmacsOpenActivity.java) and whatever else necessary. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at . Support Org development at , or support my work at