* running the new exporter asynchronously?
@ 2012-11-28 8:34 Alan Schmitt
2012-11-28 13:25 ` Nicolas Goaziou
0 siblings, 1 reply; 6+ messages in thread
From: Alan Schmitt @ 2012-11-28 8:34 UTC (permalink / raw)
To: emacs-orgmode
Hello,
I'm compiling a fairly large set of slides, that also contain quite a
bit of code that is executed (it's a course on JavaScript which shows
some of the language peculiarities). Thus exporting these slides takes a
while. Unfortunately, when it's compiling, it's completely locking my
emacs. Would there be a way for the export process to be asynchronous
and not lock emacs?
Thanks,
Alan
PS: mandatory comics about compilation time http://xkcd.com/303/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: running the new exporter asynchronously?
2012-11-28 8:34 running the new exporter asynchronously? Alan Schmitt
@ 2012-11-28 13:25 ` Nicolas Goaziou
2012-11-28 13:45 ` Eric Schulte
0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Goaziou @ 2012-11-28 13:25 UTC (permalink / raw)
To: Alan Schmitt; +Cc: emacs-orgmode
Hello,
Alan Schmitt <alan.schmitt@polytechnique.org> writes:
> Would there be a way for the export process to be asynchronous and not
> lock emacs?
Not yet.
Actually that's, in my roadmap, the single last feature to implement
before moving the new export engine into core.
Regards,
--
Nicolas Goaziou
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: running the new exporter asynchronously?
2012-11-28 13:25 ` Nicolas Goaziou
@ 2012-11-28 13:45 ` Eric Schulte
2012-11-28 15:13 ` Alan Schmitt
2012-11-28 20:46 ` Myles English
0 siblings, 2 replies; 6+ messages in thread
From: Eric Schulte @ 2012-11-28 13:45 UTC (permalink / raw)
To: Nicolas Goaziou; +Cc: Alan Schmitt, emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 830 bytes --]
Nicolas Goaziou <n.goaziou@gmail.com> writes:
> Hello,
>
> Alan Schmitt <alan.schmitt@polytechnique.org> writes:
>
>> Would there be a way for the export process to be asynchronous and not
>> lock emacs?
>
> Not yet.
>
> Actually that's, in my roadmap, the single last feature to implement
> before moving the new export engine into core.
>
>
> Regards,
In the interim it, one solution which I personally like for large
projects is to offload compilation into an external batch Emacs process.
I find this not only useful for compilation while working, but if you
place all relevant config into an init.el file loaded by the batch
Emacs, this also makes it possible to share and compile the project
separate of your personal Emacs config.
Attached is a bare-bones Makefile supporting this sort of work-flow.
Hope this helps,
[-- Attachment #2: Makefile --]
[-- Type: text/plain, Size: 525 bytes --]
EMACS=emacs
BATCH_EMACS=$(EMACS) --batch -Q -l init.el
%.html: %.org
$(BATCH_EMACS) $*.org -f org-export-as-html
%.tex: %.org
$(BATCH_EMACS) $*.org -f org-export-as-latex
%.txt: %.org init.el
$(BATCH_EMACS) $*.org -f org-export-as-utf8
%.pdf: %.tex
if pdflatex $*.tex </dev/null; then \
true; \
else \
stat=$$?; touch $*.pdf; exit $$stat; \
fi
bibtex $*
while grep "Rerun to get" $*.log; do \
if pdflatex $*.tex </dev/null; then \
true; \
else \
stat=$$?; touch $*.pdf; exit $$stat; \
fi; \
done
[-- Attachment #3: Type: text/plain, Size: 46 bytes --]
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: running the new exporter asynchronously?
2012-11-28 13:45 ` Eric Schulte
@ 2012-11-28 15:13 ` Alan Schmitt
2012-11-28 16:50 ` Eric Schulte
2012-11-28 20:46 ` Myles English
1 sibling, 1 reply; 6+ messages in thread
From: Alan Schmitt @ 2012-11-28 15:13 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode, Nicolas Goaziou
Eric Schulte <schulte.eric@gmail.com> writes:
> In the interim it, one solution which I personally like for large
> projects is to offload compilation into an external batch Emacs process.
> I find this not only useful for compilation while working, but if you
> place all relevant config into an init.el file loaded by the batch
> Emacs, this also makes it possible to share and compile the project
> separate of your personal Emacs config.
>
> Attached is a bare-bones Makefile supporting this sort of work-flow.
This is really neat, thanks a lot! I'll definitely use this for my next
course.
Do you use a shell to run make or do you call it directly from emacs?
Alan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: running the new exporter asynchronously?
2012-11-28 15:13 ` Alan Schmitt
@ 2012-11-28 16:50 ` Eric Schulte
0 siblings, 0 replies; 6+ messages in thread
From: Eric Schulte @ 2012-11-28 16:50 UTC (permalink / raw)
To: Alan Schmitt; +Cc: Org Mode Mailing List
Alan Schmitt <alan.schmitt@polytechnique.org> writes:
> Eric Schulte <schulte.eric@gmail.com> writes:
>
>> In the interim it, one solution which I personally like for large
>> projects is to offload compilation into an external batch Emacs process.
>> I find this not only useful for compilation while working, but if you
>> place all relevant config into an init.el file loaded by the batch
>> Emacs, this also makes it possible to share and compile the project
>> separate of your personal Emacs config.
>>
>> Attached is a bare-bones Makefile supporting this sort of work-flow.
>
> This is really neat, thanks a lot! I'll definitely use this for my next
> course.
>
Good to hear.
>
> Do you use a shell to run make or do you call it directly from emacs?
>
I always have a shell open, so I generally prefer to run from there.
You could also just run "M-x compile", which runs make asynchronously
and presents the output in a useful format.
Cheers,
>
> Alan
--
Eric Schulte
http://cs.unm.edu/~eschulte
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: running the new exporter asynchronously?
2012-11-28 13:45 ` Eric Schulte
2012-11-28 15:13 ` Alan Schmitt
@ 2012-11-28 20:46 ` Myles English
1 sibling, 0 replies; 6+ messages in thread
From: Myles English @ 2012-11-28 20:46 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode, Alan Schmitt, Nicolas Goaziou
Hi,
Eric Schulte writes:
> In the interim it, one solution which I personally like for large
> projects is to offload compilation into an external batch Emacs process.
> I find this not only useful for compilation while working, but if you
> place all relevant config into an init.el file loaded by the batch
> Emacs, this also makes it possible to share and compile the project
> separate of your personal Emacs config.
>
> Attached is a bare-bones Makefile supporting this sort of work-flow.
This is probably too complicated for your immediate requirements but it
is a good opportunity to share my solution using CMake. It does add
more complexity though. It is for pdf production and uses something
called UseLATEX.cmake. The main advantages are that:
- it can also regenerate all my plots from standalone (e.g.) R scripts,
so I don't have to do everything in org if I don't want to
- it does 'out of source' builds
- I don't know the make syntax
- it would probably work on different OS
Here is the non-barebones example:
#+BEGIN_SRC sh :tangle CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(thesis NONE)
include(/usr/share/cmake-2.8/Modules/UseLATEX.cmake)
# Set R executable
set(R_COMPILE "/usr/bin/Rscript")
# Set the location of data files
##set(DATA_DIR data)
# Set the location of the directory for image files
set(IMAGE_DIR graphicsauto)
# Get a list of R files
file(GLOB_RECURSE R_FILES "R/*.R")
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/R DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR})
foreach(file ${R_FILES})
message("proceessing ${file}")
get_filename_component(basename "${file}" NAME_WE)
# Command to run R
if(R_COMPILE)
message("Adding ........... ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R")
add_custom_command(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R
# ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${DATA_DIR}
COMMAND
${R_COMPILE}
ARGS
${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R
${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps
)
message("Running ${R_COMPILE} ${CMAKE_CURRENT_BINARY_DIR}/R/${basename}.R ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps")
endif(R_COMPILE)
# Make a list of all R files (for ADD_LATEX_DOCUMENT depend)
set(ALL_R_FILES ${ALL_R_FILES}
${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_DIR}/${basename}.eps
)
endforeach(file)
# ------- export mainThesis.org -----------------------
latex_get_output_path(OUTPUT_DIR)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/mainThesis.org DESTINATION ${OUTPUT_DIR}/ )
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/thesis.el DESTINATION ${OUTPUT_DIR}/ )
add_custom_target( orgfile ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.org )
add_custom_target( elfile ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/thesis.el )
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.tex
COMMAND emacs -Q --batch --eval \"(progn
(add-to-list 'load-path
(expand-file-name \\"~/.emacs.d/plugins/org-mode/lisp/\\"))
(add-to-list 'load-path
(expand-file-name \\"~/.emacs.d/plugins/org-mode/contrib/lisp/\\" t))
(require 'org)
(require 'org-export)
(require 'org-exp)
(require 'org-inlinetask)
(require 'ob-plantuml)
(setq org-plantuml-jar-path \\"/home/myles/Downloads/plantuml.jar\\")
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(sh . t)
(plantuml . t)))
(setq org-confirm-babel-evaluate nil)
(setq org-export-with-todo-keywords nil)
(load-library \\"/home/myles/lib/lisp/my-export.el\\")
(add-to-list 'org-export-before-processing-hook 'my-export-delete-headlines-tagged-noheading)
(load-file \\"thesis.el\\")
(find-file \\"${CMAKE_CURRENT_BINARY_DIR}/mainThesis.org\\")
(org-e-latex-export-to-latex))\"
DEPENDS orgfile elfile
COMMENT "Exporting orgmode file to LaTeX using emacs")
add_custom_target( mainfile ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mainThesis.tex )
add_latex_document(master.tex
BIBFILES texlib/mybiblatex.bib
INPUTS tex/title.tex
tex/FEM_ch.tex
tex/multiphase_flow.tex
tex/sharedMemory_sec.tex
tex/programming_ch.tex
tex/bibliography.tex
texlib/mystyle.sty
tex/linked_nodes_test.tex
IMAGE_DIRS ${IMAGE_DIR} ../graphics/thirdParty ../graphics/VE
DEPENDS ${ALL_R_FILES}
DEFAULT_PDF
USE_NOMENCL)
#+END_SRC
Myles
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-11-28 20:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-28 8:34 running the new exporter asynchronously? Alan Schmitt
2012-11-28 13:25 ` Nicolas Goaziou
2012-11-28 13:45 ` Eric Schulte
2012-11-28 15:13 ` Alan Schmitt
2012-11-28 16:50 ` Eric Schulte
2012-11-28 20:46 ` Myles English
Code repositories for project(s) associated with this public 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).