From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id s77uIqdVCGBaSgAA0tVLHw (envelope-from ) for ; Wed, 20 Jan 2021 16:09:11 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id gAk6HqdVCGDFXQAAB5/wlQ (envelope-from ) for ; Wed, 20 Jan 2021 16:09:11 +0000 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 E57DD940548 for ; Wed, 20 Jan 2021 16:09:10 +0000 (UTC) Received: from localhost ([::1]:45740 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l2G2e-0001fo-Fd for larch@yhetil.org; Wed, 20 Jan 2021 11:09:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:56734) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l2G2G-0001f8-Ue for emacs-orgmode@gnu.org; Wed, 20 Jan 2021 11:08:44 -0500 Received: from ciao.gmane.io ([116.202.254.214]:55884) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l2G2F-0008Q8-KX for emacs-orgmode@gnu.org; Wed, 20 Jan 2021 11:08:44 -0500 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1l2G2E-0007sZ-1t for emacs-orgmode@gnu.org; Wed, 20 Jan 2021 17:08:42 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Maxim Nikulin Subject: greedy substitution in org-open-file Date: Wed, 20 Jan 2021 23:08:35 +0700 Message-ID: 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:68.0) Gecko/20100101 Thunderbird/68.10.0 X-Mozilla-News-Host: news://news.gmane.io:119 Content-Language: en-US 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.248, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.248, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 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-Spam-Score: -0.25 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@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: E57DD940548 X-Spam-Score: -0.25 X-Migadu-Scanner: scn1.migadu.com X-TUID: SN+0IW+nRGYE Looking into the code related to 'pty problem with start-process-shell-command, I have realized that the following case is not handled correctly: #+begin_src elisp (setq org-file-apps '(("\\.pdf::\\([0-9]+\\)\\'" . "xpdf %s %1"))) #+end_src I hope, I adapted an example from [[help:org-file-apps]] correctly. When I try to open the following link using C-c C-o [[file:test-%1f.pdf::42]] I get Running xpdf /home/ubuntu/examples/org/test-\42f.pdf 42...done I believe, it should be Running xpdf /home/ubuntu/examples/org/test-%1f.pdf 42...done Or Running xpdf /home/ubuntu/examples/org/test-\%1f.pdf 42...done Org mode version 9.4.4 (release_9.4.4-164-g7a9a8a The source of the problem is that %s substitution is expanded at first and regexp groups are replaced later. Ideally, it should be performed in a single pass. I have found format-spec function but I am unsure concerning it, maybe it is avoided intentionally.