From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id mKDJL6IGr2IbDQAAbAwnHQ (envelope-from ) for ; Sun, 19 Jun 2022 13:21:06 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id AKi+L6IGr2IXMgAA9RJhRA (envelope-from ) for ; Sun, 19 Jun 2022 13:21:06 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 7EFCF2FC1D for ; Sun, 19 Jun 2022 13:21:06 +0200 (CEST) Received: from localhost ([::1]:42800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o2szI-0002xI-HJ for larch@yhetil.org; Sun, 19 Jun 2022 07:21:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35712) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o2syf-0002x6-ES for emacs-orgmode@gnu.org; Sun, 19 Jun 2022 07:20:25 -0400 Received: from ciao.gmane.io ([116.202.254.214]:39854) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o2sye-0006na-0L for emacs-orgmode@gnu.org; Sun, 19 Jun 2022 07:20:25 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1o2syc-0007v3-0Q for emacs-orgmode@gnu.org; Sun, 19 Jun 2022 13:20:22 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Max Nikulin Subject: Re: Proposal: 'executable' org-capture-templaes Date: Sun, 19 Jun 2022 18:20:16 +0700 Message-ID: References: <87mtf3tui1.fsf@localhost> <87pmjyco0x.fsf@localhost> <87fskrobiw.fsf@localhost> <87a6ay1enh.fsf@localhost> <87edzvdb44.fsf@localhost> <878rpu5qf4.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Content-Language: en-US In-Reply-To: <878rpu5qf4.fsf@localhost> Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 28 X-Spam_score: 2.8 X-Spam_bar: ++ X-Spam_report: (2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FORGED_MUA_MOZILLA=2.309, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NICE_REPLY_A=-0.001, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1655637666; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=iEpQvpoFLtkEcKDiu+Ix8Srl1uW5bQS13Ld9ge8Xz4c=; b=T2xr4jug/JkK78GPcbcMlkwgC1PrAE0Xjorw5BmgGjt5xLRWK+Huo+12vR83z/3Lb0M+n/ ar+fZgjKsIVZoionhydVkGRoapbtco3yO1QzbRJh1KTdrzOkJIL2tw5dLnwljSTbt10B1x 7qf8dIvRGvvnGITA5m8CJrN9gdqwJRp2skOOjneqTg8bufjCWJTTqvNQQ+JimxCgV2hGXj t0GPU2jIps4sFw0lzfObJRelP4alUnZkgmOe0i4QLAOlIi/WTP8m3xMmnan87kowvEJVDI Yyr/ES2Q0o2ygJqtvr/ggBnnFweuR/NcLOZRFyLeNXEPnJTfeREzOonUeSWQIQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1655637666; a=rsa-sha256; cv=none; b=pSByQwOxOdCSTTRBOnzEtRPwutYZWfTC2DL/M7odmQszEDKEJCAfwLDj70mk4bbq8/LBUy HeKJFIrDL2MUSkyzWR3DLhrvF0/nEvNEouzP1ju/Yf0543mufB7N+MI1e+KZPnbrx10c44 W6V2qTjRpv5dwaOpRDGCbtsZFsxtTI+Xc/DOAG9TboGsJilr/t3pdPOqbm1ywge9Fjgtx8 o6oF50zYq3fhEm3kqtvWLPl8pclmxtmzzJcfEFCenU7bXbYYAqCo/ywZ+AY4VYYgFRjHl5 fq/F+nxn1dUvSnJ46Mf9kF5GBzUqGaTpleQzMMF0C0WLyoKrszWku4VNkDgVpA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 3.11 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 7EFCF2FC1D X-Spam-Score: 3.11 X-Migadu-Scanner: scn0.migadu.com X-TUID: A6vV0P1u7ECY On 18/06/2022 15:25, Ihor Radchenko wrote: > Max Nikulin writes: > >>> Note that there is not much happening when capture menu is called. Only >>> the link is stored into link ting. Otherwise, no capture data is >>> altered. All the fragile staff is happening after selecting capture >>> template. >> >> Ihor, magic is impossible. If several captures may be requested in >> parallel then snapshot of data required to fill capture template should >> be stored somewhere at the moment when capture is initiated. Otherwise >> the user may kill the buffer she is going to capture before selecting >> particular template. > > Sure. That somewhere can be buffer-local variable inside the capture > menu buffer. Or global variable. Or closure. How is it relevant to the > capture menu? Before menu buffer is created, caller can not assign a buffer-local variable. So to be transparent for snapshot of capture data, menu should support such variable and should pass it further when template is chosen. Otherwise the capture data may be lost with temporary buffer. The function calling menu should gather values from all variables necessary for capture to build some state passed to menu implementation. > Of course, using global variables will limit things to a single capture, > but it just means that if a user starts capture, leaves the capture menu > buffer, and then starts another capture, only the last capture will be > handled. Just like we have now. Now user may leave capture menu by either selection of a template or by aborting menu. In the case of keymap-based menu there is no such restriction, so org-capture and menu implementation should be adjusted in some way to avoid bad surprises for users. Currently several capture menu instances may be requested though org-protocol (or calling org-capture from emacsclient). The behavior is rather confusing. New menu may help to fix the issue, that is why I raised the question about parallel captures.