Hey Nick,

Thanks a lot for your detailed explanation, now I'm pretty clear about the error. But I just get the idea why we could not publish arbitrary org file as html to current directory, I guess it could be kind of troublesome that every time to set up the project first?

What do you think?

Chao

On Tue, Feb 2, 2010 at 6:01 PM, Nick Dokos <nicholas.dokos@hp.com> wrote:
Chao Lu <loochao@gmail.com> wrote:

> I just start a new org file, say, PHY.org, type very simple words, then
> tried
> M-x org-publish-current-file.
>
> The *backtrace* tells:
> --------
> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
>   file-name-as-directory(nil)

... and as you can see, the problem is that file-name-as-directory is called
with a nil argument, whereas it expects a string.

>   (let* ((project-plist ...) (base-dir ...) (include-list ...) (recurse ...)
> (extension ...) (match ...)) (setq org-publish-temp-files nil)
> (org-publish-get-base-files-1 base-dir recurse match exclude-regexp
> exclude-regexp) (mapc (lambda ... ...) include-list) org-publish-temp-files)

>   org-publish-get-base-files(("options" :section-numbers nil
> :table-of-contents nil :style "<script
> type=\"text/javascript\">\n                /* <![CDATA[ */\n
> org_html_manager.set(" TOC ", 1);\n                org_html_manager.set("
> LOCAL_TOC ", 1);\n                org_html_manager.set(" VIEW_BUTTONS ", "
> true ");\n                org_html_manager.set(" MOUSE_HINT ", " underline
> "); // or background-color like '#eeeeee'\n
> org_html_manager.setup ();\n                /* ]]> */\n
> </script>") nil)

... and this tells us that org-publish-get-base-files got called and
somewhere in the execution of the let* form, it got the error.
So you look at that let* form in org-publish-get-base-files and you
see this:

 (let* ((project-plist (cdr project))
        (base-dir (file-name-as-directory
                   (plist-get project-plist :base-directory)))
        ...

which tells me that you *have* to have a project-plist and it *has*
to have a :base-directory property in order to be able to publish.
You just cannot take an arbitrary org file and publish it without
providing the publishing framework for it.

HTH,
Nick


> >
> > > Today I was trying to publish a single org file using
> > > org-publish-current-file, however, org refused to do so, the error
> > message
> > > is
> > >
> > > ====
> > > let*: Wrong type argument: stringp, nil
> > > ====
> > >
> > > I believe the org-publish function work well, for I could get the
> > > pre-defined project published smoothly. So do anyone has met similar
> > > problem?
> > >
> >
> > Please set debug-on-error to t and after recreating the error, post the
> > resulting backtrace. See the "Feedback" section of the Org manual for more
> > details on how to report problems.
> >
> > HTH,
> > Nick