From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.help Subject: RE: Suppress user-prompting when calling commands in programs Date: Fri, 13 Jun 2014 09:04:53 -0700 (PDT) Message-ID: <5b284aa3-068d-461d-a95b-52cd97ba292a@default> References: <87r42skjd8.fsf@gmail.com> <877g4k7ux4.fsf@geodiff-mac3.ulb.ac.be> <878up0kfcv.fsf@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1402675556 6270 80.91.229.3 (13 Jun 2014 16:05:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 13 Jun 2014 16:05:56 +0000 (UTC) To: Thorsten Jolitz , help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Jun 13 18:05:49 2014 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1WvTz2-0007Vw-4U for geh-help-gnu-emacs@m.gmane.org; Fri, 13 Jun 2014 18:05:40 +0200 Original-Received: from localhost ([::1]:59953 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WvTz1-0001eC-Lp for geh-help-gnu-emacs@m.gmane.org; Fri, 13 Jun 2014 12:05:39 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50590) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WvTyb-0001Xv-2h for help-gnu-emacs@gnu.org; Fri, 13 Jun 2014 12:05:22 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WvTyQ-0005c6-C1 for help-gnu-emacs@gnu.org; Fri, 13 Jun 2014 12:05:13 -0400 Original-Received: from userp1040.oracle.com ([156.151.31.81]:49426) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WvTyQ-0005Xr-5T for help-gnu-emacs@gnu.org; Fri, 13 Jun 2014 12:05:02 -0400 Original-Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s5DG4sq9008016 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 13 Jun 2014 16:05:00 GMT Original-Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s5DG4sEi020729 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 13 Jun 2014 16:04:54 GMT Original-Received: from abhmp0020.oracle.com (abhmp0020.oracle.com [141.146.116.26]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s5DG4sF4028672; Fri, 13 Jun 2014 16:04:54 GMT In-Reply-To: <878up0kfcv.fsf@gmail.com> X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.8 (707110) [OL 12.0.6691.5000 (x86)] X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 156.151.31.81 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:98216 Archived-At: > > OTOH, is it really not possible to change the function upstream ? "bar" > > could be made an optional argument upstream (possibly with proper > > interactive spec), or the body of the let form could be factored out as > > a function for you to use. >=20 > I tried convincing upstream before and never made it! Try again. > And I actually understand the authors of code like that and even copied > that technique sometimes, because it might be harder to write the > interactive spec for both interactive and programmatical use than to > write the function itself, and then there is no need for a wrapper > command or interactive (lambda ...) expression when it comes to define > a key for that command. Huh? Instead of: (defun foo (&optional arg) (interactive "P") (let ((bar (org-icompleting-read ...))) ...)) What's wrong with them pushing the read into the interactive spec? (defun foo (&optional arg bar) (interactive (list current-prefix-arg (org-icompleting-read ...)))) ...) That's the recommended approach, in general. Or if the (org-icompleting-read ...) code itself uses the prefix arg as the variable ARG, then rename such occurrences of ARG to, say, PREF), and bind PREF before invoking `org-icompleting-read': (defun foo (&optional arg bar) (interactive (let ((pref current-prefix-arg)) (list pref (org-icompleting-read ...)))) ...) Or if they really want to leave the beginning of the code the same for some reason, they could at least factor out the body (the second "..."), so you can invoke that code directly: (defun foo (&optional arg) (interactive "P") (let ((bar (org-icompleting-read ...))) (foo-guts arg bar))) ; <=3D=3D Just a wrapper for the body. ; No other code changes needed. Then your code would just call `foo-guts'. > But OTOH its a shame that many commands are hard/impossible to reuse in > programs because of this 'trick'. A shame and unnecessary.