From mboxrd@z Thu Jan 1 00:00:00 1970 From: aman Subject: Re: [PATCH] lisp/ox-publish.el: Handle includes with searches Date: Wed, 30 Dec 2015 06:44:25 +0000 (UTC) Message-ID: References: <1447538173-45139-1-git-send-email-nick@ausimian.net> <87fuzx9di7.fsf@nicolasgoaziou.fr> <87ziwtneep.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aEAV2-000621-Kw for emacs-orgmode@gnu.org; Wed, 30 Dec 2015 01:44:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aEAUz-0001Ch-Eh for emacs-orgmode@gnu.org; Wed, 30 Dec 2015 01:44:44 -0500 Received: from plane.gmane.org ([80.91.229.3]:57900) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aEAUz-0001Bp-76 for emacs-orgmode@gnu.org; Wed, 30 Dec 2015 01:44:41 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1aEAUw-00016A-Ln for emacs-orgmode@gnu.org; Wed, 30 Dec 2015 07:44:39 +0100 Received: from mail.ruijie.cn ([mail.ruijie.cn]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 30 Dec 2015 07:44:38 +0100 Received: from aman_yang by mail.ruijie.cn with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 30 Dec 2015 07:44:38 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi, Nicolas Goaziou nicolasgoaziou.fr> writes: > > Hello, > > aman 163.com> writes: > > > I was using org-publish which was already applied with this patch. > > but I got following error message when I published an org file including > > another one. > > > > org-publish-cache-ctime-of-src: No such file: > > "/home/emacs/gtd/inbox.org::writing" > > > > > > here's the including block: > > > > * including file > > #+INCLUDE: "../../inbox.org::writing blog" :only-contents t > > > > > > This patch works fine if there's spaces between "inbox.org" and > > "::writing blog". > > Indeed. > > > - (string-match "^\\(\".+?\"\\|\\S-+\\)" value) > > - ;; Ignore search suffix. > > - (car (split-string > > - (org-remove-double-quotes > > - (match-string 1 value))))))))) > > + (string-match "^\\(\".+?\"\\|\\S-+\\)\\(?:\\s-+\\|$\\)" value) > > + (let ((matched (match-string 1 value))) > > + (when (string-match "\\(::\\(.*?\\)\\)\"?\\'" > > + matched) > > + (setq matched > > + (replace-match "" nil nil matched 1)) > > + (print matched)) > > + (org-remove-double-quotes matched)) > > + ))))) > > You should remove (print matched). Also, parenthesis should not be alone > on their own line. > > I suggest to replace it with: > > (let ((matched (match-string 1 value))) > (org-remove-double-quotes > (if (string-match "\\(::\\(.*?\\)\\)\"?\\'" matched) > (substring matched 0 (match-beginning 0)) > matched))) Got it, that's more succinct. > > > (when included-file > > - (push (org-publish-cache-ctime-of-src > > + (push (org-publish-cache-ctime-oef-src > > Typo. > > Eventually, could you provide an appropriate commit message? > > Thank you. > > Regards, > Here's new patch, and hope it helps. org-publish: Fix get 'included-file' logic. * lisp/ox-publish.el (org-publish-cache-file-needs-publishing): According to the syntax of #+INCLUDE statement in *info* page, there's no space between search option and file path. Fix it. diff --git a/lisp/ox-publish.el b/lisp/ox-publish.el index b49b9d3..9cfa596 100644 --- a/lisp/ox-publish.el +++ b/lisp/ox-publish.el @@ -1243,11 +1243,12 @@ the file including them will be republished as well." (and (eq (org-element-type element) 'keyword) (let ((value (org-element-property :value element))) (and value - (string-match "^\\(\".+?\"\\|\\S-+\\)" value) - ;; Ignore search suffix. - (car (split-string - (org-remove-double-quotes - (match-string 1 value))))))))) + (string-match "^\\(\".+?\"\\|\\S-+\\)\\(?:\\s-+\\|$\\)" value) + (let ((matched (match-string 1 value))) + (org-remove-double-quotes + (if (string-match "\\(::\\(.*?\\)\\)\"?\\'" matched) + (substring matched 0 (match-beginning 0)) + matched)))))))) (when included-file (push (org-publish-cache-ctime-of-src (expand-file-name included-file)) -- 1.9.1 Thank You.