emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nick Dokos <nicholas.dokos@hp.com>
To: daniel@dbrunner.de
Cc: nicholas.dokos@hp.com, emacs-orgmode@gnu.org
Subject: Re: Problems with org-publish w/ #+INCLUDE:
Date: Sun, 16 Oct 2011 12:28:43 -0400	[thread overview]
Message-ID: <31286.1318782523@alphaville.dokosmarshall.org> (raw)
In-Reply-To: Message from daniel@dbrunner.de of "Sun, 16 Oct 2011 13:05:10 +0200." <87d3dx9oyh.fsf@systemhaus-brunner.de>

daniel@dbrunner.de wrote:

> Hi!
> 
> And another problem after an upgrade vom V6.something to a 7.7
> release: Org-mode version 7.7 (release_7.7.380.g54d7df). When I use the
> org-publish to produce a set of HTML pages I run into a error. Here is
> an example:
> 

An *exemplary* bug report: an ECM to reproduce the problem and a
backtrace - what more can one ask for? Thank you!

I could not reproduce the problem at first, but it turned out that I had
gone back to org 7.6 to test something and forgot to move forward again.
On Org-mode version 7.7 (release_7.7.349.g3d835.dirty), I can reproduce
it: the first time I publish the project I get the error. If I force
republication, the error does not arise again - I haven't looked at why
that is, but the initial failure seems to be caused by a change in the
regexp on line 1109 of org-publish.el: if you look at the argument of
org-publish-cache-ctime-of-src in the backtrace, you can see that it's
not just the #+INCLUDE: filename, but some additional lines in the
including file as well.

I haven't checked yet but it would seem that the following commit
introduced the problem:

--8<---------------cut here---------------start------------->8---
commit 920cf53e686daea4f406aa237b48fe2ef4730426
Author: Jon Anders Skorpen <jonas@ifi.uio.no>
Date:   Sat Jul 16 17:22:07 2011 +0000

    org-publish: Fix regexp for include files
    
    * org-publish.el (org-publish-cache-file-needs-publishing): Regexp did
      not find includes with double quoted file names.
    
    TINYCHANGE

diff --git a/lisp/org-publish.el b/lisp/org-publish.el
index b8e932d..9654a6d 100644
--- a/lisp/org-publish.el
+++ b/lisp/org-publish.el
@@ -1108,7 +1108,7 @@ (defun org-publish-cache-file-needs-publishing (filename &optional pub-dir pub-f
       (when (equal (file-name-extension filename) "org")
 	(find-file (expand-file-name filename))
 	(goto-char (point-min))
-	(while (re-search-forward "^#\\+INCLUDE: \\(.+\\)[ ^\t]*$" nil t)
+	(while (re-search-forward "^#\\+INCLUDE:[ \t]+\"?\\([^ \t\"]*\\)\"?[ \t]*.*$" nil t)
 	  (let* ((included-file (expand-file-name (match-string 1))))
 	    (add-to-list 'included-files-ctime
 			 (org-publish-cache-ctime-of-src included-file) t)))))
--8<---------------cut here---------------end--------------->8---

Nick


> I have a file "index.org":
> 
> --8<--
> #+TITLE: Foo!
> #+AUTHOR:    Daniel
> #+EMAIL:     daniel@monkey
> #+DATE:      2011-10-14 Fr
> #+INCLUDE: include.org
> 
> Export it!
> --8<--
> 
> Then I have a file "include.org" with all the options etc. (option
> template included via C-c C-e t):
> 
> --8<--
> #+DESCRIPTION:
> #+KEYWORDS:
> #+LANGUAGE:  en
> #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
> #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
> #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http:/=
> /orgmode.org/org-info.js
> #+EXPORT_SELECT_TAGS: export
> #+EXPORT_EXCLUDE_TAGS: noexport
> #+LINK_UP:=20=20=20
> #+LINK_HOME:=20
> #+XSLT:
> 
> #+BEGIN_HTML
>   <h1>Bar</h1>
> #+END_HTML
> --8<--
> 
> Then I set the org-publish-project-alist:
> 
> --8<--
> (require 'org-publish)
> (setq org-publish-project-alist
>       (list (list "foo"
> 		  :base-directory "/home/dbr/tmp/omtests"
> 		  :base-extension "org"
> 		  :publishing-directory "/home/dbr/tmp/omtests/pub"
> 		  :publishing-function 'org-publish-org-to-html)))
> --8<--
> 
> Org-publish is from the 7.7 distribution directory. Then I visit
> index.org and do a C-c C-e P and run in the following error:
> 
> --8<--
> Debugger entered--Lisp error: (wrong-type-argument integerp nil)
>   lsh(nil 16)
>   org-publish-cache-ctime-of-src("/home/dbr/tmp/omtests/include.org\n\nExpo=
> rt")
>   org-publish-cache-file-needs-publishing("/home/dbr/tmp/omtests/index.org"=
>  "/home/dbr/tmp/omtests/pub/" org-publish-org-to-html)
>   org-publish-needed-p("/home/dbr/tmp/omtests/index.org" "/home/dbr/tmp/omt=
> ests/pub/" org-publish-org-to-html "/home/dbr/tmp/omtests/pub/")
>   org-publish-file("/home/dbr/tmp/omtests/index.org" ("foo" :base-directory=
>  "/home/dbr/tmp/omtests" :base-extension "org" :publishing-directory "/home=
> /dbr/tmp/omtests/pub" :publishing-function org-publish-org-to-html) t)
>   #[(project) "\b@!=88\bA=C7	\"=C7	\"=C7	\"=86=00=1C	\"=86#=CD=C7	\"=86-=0E=
> =1F 	\"=868=0E!\"	\"=15	\"=1D\b\n\"#=1E$=15=83X=D4!=88=0B=83a=0D\b\f\"=88#=89=
> A#@=89$=83x=D6$\b#=88=82a=C7	\"=83=92=D9	\"!=88=DB=C7	\"\"\b#=88=1D=83=9B=D4!=
> =88 .=0B=87" [project project-plist exclude-regexp sitemap-p sitemap-filena=
> me sitemap-function org-publish-initialize-cache plist-get :exclude :auto-s=
> itemap :sitemap-filename "sitemap.org" :sitemap-function org-publish-org-si=
> temap :sitemap-date-format :sitemap-file-entry-format :preparation-function=
>  :completion-function org-publish-get-base-files nil run-hooks preparation-=
> function org-publish-file t :makeindex org-publish-index-generate-theindex =
> :base-directory expand-file-name "theindex.org" completion-function org-pub=
> lish-write-cache-file org-publish-sitemap-date-format org-sitemap-date-form=
> at org-publish-sitemap-file-entry-format org-sitemap-file-entry-format file=
> s file] 6](("foo" :base-directory "/home/dbr/tmp/omtests" :base-extension "=
> org" :publishing-directory "/home/dbr/tmp/omtests/pub" :publishing-function=
>  org-publish-org-to-html))
>   mapc(#[(project) "\b@!=88\bA=C7	\"=C7	\"=C7	\"=86=00=1C	\"=86#=CD=C7	\"=86-=
> =0E=1F 	\"=868=0E!\"	\"=15	\"=1D\b\n\"#=1E$=15=83X=D4!=88=0B=83a=0D\b\f\"=88#=
> =89A#@=89$=83x=D6$\b#=88=82a=C7	\"=83=92=D9	\"!=88=DB=C7	\"\"\b#=88=1D=83=9B=
> =D4!=88 .=0B=87" [project project-plist exclude-regexp sitemap-p sitemap-fi=
> lename sitemap-function org-publish-initialize-cache plist-get :exclude :au=
> to-sitemap :sitemap-filename "sitemap.org" :sitemap-function org-publish-or=
> g-sitemap :sitemap-date-format :sitemap-file-entry-format :preparation-func=
> tion :completion-function org-publish-get-base-files nil run-hooks preparat=
> ion-function org-publish-file t :makeindex org-publish-index-generate-thein=
> dex :base-directory expand-file-name "theindex.org" completion-function org=
> -publish-write-cache-file org-publish-sitemap-date-format org-sitemap-date-=
> format org-publish-sitemap-file-entry-format org-sitemap-file-entry-format =
> files file] 6] (("foo" :base-directory "/home/dbr/tmp/omtests" :base-extens=
> ion "org" :publishing-directory "/home/dbr/tmp/omtests/pub" :publishing-fun=
> ction org-publish-org-to-html)))
>   org-publish-projects((("foo" :base-directory "/home/dbr/tmp/omtests" :bas=
> e-extension "org" :publishing-directory "/home/dbr/tmp/omtests/pub" :publis=
> hing-function org-publish-org-to-html)))
>   byte-code("\b?=85=00	=C4\n;=83=00\n=0B\"C=82=00\nC!)=87" [force org-publis=
> h-use-timestamps-flag project org-publish-project-alist org-publish-project=
> s assoc] 4)
>   org-publish(("foo" :base-directory "/home/dbr/tmp/omtests" :base-extensio=
> n "org" :publishing-directory "/home/dbr/tmp/omtests/pub" :publishing-funct=
> ion org-publish-org-to-html))
>   byte-code("=C4 \"\b?=85=0B	=89=84=00=C7 \"=88\n!*=87" [force org-publish-u=
> se-timestamps-flag project org-publish-get-project-from-filename buffer-fil=
> e-name up error "File %s is not part of any known project" org-publish] 4)
>   org-publish-current-project(nil)
>   call-interactively(org-publish-current-project)
>   org-export(nil)
>   call-interactively(org-export nil nil)
> --8<--
> 
> It seemed that due to the #+INCLUDE tag the
> org-publish-cache-file-need-publishing gets a bit confused with the
> filename and tries to call org-publish-cache-ctime-of-src with the file
> name plus a string "\n\nExport" which are the next three lines of the
> org file index.org.=20
> 
> Am I doing something wrong?=20
> 
> 
> Kind regards, Daniel
> 
> 

  reply	other threads:[~2011-10-16 16:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-16 11:05 daniel
2011-10-16 16:28 ` Nick Dokos [this message]
2011-10-16 18:00   ` Carsten Dominik
2011-10-16 19:42     ` Daniel Brunner
2011-10-16 22:20     ` Nick Dokos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=31286.1318782523@alphaville.dokosmarshall.org \
    --to=nicholas.dokos@hp.com \
    --cc=daniel@dbrunner.de \
    --cc=emacs-orgmode@gnu.org \
    --subject='Re: Problems with org-publish w/ #+INCLUDE:' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).