emacs-wiki-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [emacs-wiki-discuss] publish docs from muse via make?


From: Phillip Lord
Subject: Re: [emacs-wiki-discuss] publish docs from muse via make?
Date: Wed, 03 May 2006 18:12:10 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (windows-nt)

>>>>> "PL" == Paul Lussier <address@hidden> writes:

 
  PL> Muse essentially eliminates all of these objections.  Though, it
  PL> would be really nice if we could update the published versions
  PL> automatically
  >> From outside of emacs.  Ideally, from make, where in order to
  >> make the
  PL> target, we would update the "source" from our revision control
  PL> system, then somehow run the muse-publish functions on that
  PL> directory, which would then create the published versions in
  PL> their respective directories.


I do this, although, frankly it's a pain in the ass, and rather slow
(because you launch emacs for every dependency). Also, if something
goes wrong, emacs normally crashes incomprehensibly and its a
nightmare to debug. 

So I start like this...

SOURCES =       $(shell echo *.muse)
TARGETS =       $(filter-out *.html,$(SOURCES:%.muse=%.html)) $(EXTRA_TARGETS)


.muse.html:
        emacs -q --debug-init --no-site-file --batch -l generate-muse.el  \
                -f muse-batch-publish-files bioont-06-xhtml \
                --output-dir=. $<
        ## no, I don't know why this is necessary either. 
        sleep 1
        $(CP) $@ $(INSTALL_LOCATION)

"bioont-06-xhtml" is the style. 

then I have this...

all:  makefile-generated prepare  $(TARGETS) index.html

makefile-generated:
        ./generate-makefile.pl > Makefile.generated



Makefile.generated just has rules like

home.html: home.muse

I'm sure it's possible to do this generically, but I've never worked
out how to. And doing it in perl was quick. 

Then finally, you need this...


(add-to-list 
 'load-path
 "~/emacs")

(setq muse-wiki-use-wikiword nil)

(save-excursion
  (let ((default-directory "~/emacs/packages/"))
    (normal-top-level-add-subdirs-to-load-path)))

(load-library "philmuse.el")


which is the content of muse-generate.el. This is a little bit more
complex than you need; you could just do 


(save-excursion
  (let ((default-directory "~/emacs/MUSE_PATH/"))
    (normal-top-level-add-subdirs-to-load-path)))

(require 'muse)
(require 'which-ever-bits-of-muse-you-need)



Convoluted but it works; it's a poor way to build muse projects, but
it doesn't integrate with the rest of the world. My make file also has
targets for pushing to the published website with rsync, cleaning,
building images and so on. 


Anyway, that's how it works for me. 

Phil




reply via email to

[Prev in Thread] Current Thread [Next in Thread]