From mboxrd@z Thu Jan 1 00:00:00 1970 From: "briangpowell ." Subject: Re: emacs build command for org-files Date: Sun, 26 Jan 2020 14:38:56 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000de1aa4059d102488" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:35775) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ivnkU-00061b-RH for emacs-orgmode@gnu.org; Sun, 26 Jan 2020 14:39:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ivnkT-00070l-5D for emacs-orgmode@gnu.org; Sun, 26 Jan 2020 14:39:10 -0500 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:43306) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ivnkS-000702-U4 for emacs-orgmode@gnu.org; Sun, 26 Jan 2020 14:39:09 -0500 Received: by mail-wr1-x442.google.com with SMTP id d16so8353174wre.10 for ; Sun, 26 Jan 2020 11:39:08 -0800 (PST) In-Reply-To: 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-mx.org@gnu.org Sender: "Emacs-orgmode" To: John Kitchin Cc: org-mode-email --000000000000de1aa4059d102488 Content-Type: text/plain; charset="UTF-8" "don't want it to necessarily use Makefiles" Why the hey not Dr. Kitchin!? Make is an extremely powerful language Problem is people make makefiles that are often hard for others to read--suggest you try hard to keep it simple & avoid the fancy ways of doing things Make has flow control & is a very rich language I use makefiles for every project Then Ccc to compile and/or run everything--in Emacs--can't get easier and faster than that--as long as you make the makefiles so easy that anyone can read & understand exactly what it does This is my default, which I may edit on-the-fly and just put in another project name: make --ignore-errors --jobs=555 -w --keep-going --warn-undefined-variables --environment-overrides -f ~/n/n/etc/1cv2tex2doc-project_mak.makefile 1cv2tex2doc-project-exe All slightly interesting ways to improve make have failed slightly, in one way or another--they catch on for a few years until they're mostly abandoned--for very good reasons Look at it this way: Is there anything wrong with make? Where does it fail? Everyone should learn & use make --Brian G. Powell, M.S.--that guy that still loves Makefiles and still loves using asterisks ("***") as bullets in OrgMode On Sun, Jan 26, 2020 at 1:11 PM John Kitchin wrote: > Hi everyone, > > This is only semi-on-topic. I am looking for something like M-x compile > for my org-files, but I don't want it to necessarily use Makefiles. I am > looking for suggestions of existing solutions to this, or thoughts on how > to implement this. > > Actually, if it was possible to get M-x compile to run an elisp function > instead of a make file, it might be all I need, but it looks like it runs > shell commands. > > For most of my files, simple exporting is totally adequate. But, some > files are more complicated, and what I usually do in these cases is write > an elisp code block in a section that is tagged :noexport: and then I run > that block to build the result. A recent example was a proposal where I > needed a pdf of the body, and separate pdf of the references. > > I have separate elisp functions that generate these, and then I added some > custom cleanup code in the block to delete some intermediate directories. I > don't want to put these in a makefile because they are specific to this > document. While this works, in a large document I find it a little > inconvenient to make a small change say at the top, and then to jump to the > bottom to run the build block to see how it changed. What I would prefer is > to just run a command like M-x org-compile that would know about this build > block and run it. That block could of course be a shell block that runs a > makefile, but it would most often be an elisp block. I could even imagine > that there is a makefile block that is tangled before running a shell block > that runs a make command. > > What I do in a function now is something like this in a save-excursion: > > (when (not (stringp (org-babel-goto-named-src-block "build"))) > (org-babel-execute-src-block)) > > I don't use this in these projects, but they highlight some of the > complexities I am trying to simplify. These are book like projects with > special formatting needs, and multiple outputs. > > In this project ( > https://github.com/jkitchin/pycse/blob/master/pycse.org#L15096), I have > multiple output targets that I would run. > > In this project ( > https://github.com/jkitchin/dft-book/blob/master/dft.org#build) I use > some temporary filters to save the src blocks to files, and to embed them > in the pdf so they can be opened. > > Anyway, it feels like I am reinventing something here, and that there > might be some better approach already out there. Maybe some elisp > equivalent of a makefile or something? > > Thoughts? > > John > > ----------------------------------- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > > --000000000000de1aa4059d102488 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
"don't want it to necessarily use Makefiles"=

Why the hey not Dr. Kitchin!?

<= div>Make is an extremely powerful language

Problem= is people make makefiles that are often hard for others to read--suggest y= ou try hard to keep it simple & avoid the fancy ways of doing things

Make has flow control & is a very rich language<= /div>

I use makefiles for every project Then Ccc to comp= ile and/or run everything--in Emacs--can't get easier and faster than t= hat--as long as you make the makefiles so easy that anyone can read & u= nderstand exactly what it does

This is my default,= which I may edit on-the-fly and just put in another project name:

make --ignore-errors --jobs=3D555 -w --keep-going --warn-u= ndefined-variables --environment-overrides -f ~/n/n/etc/1cv2tex2doc-project= _mak.makefile 1cv2tex2doc-project-exe

All slig= htly interesting ways to improve make have failed slightly, in one way or a= nother--they catch on for a few years until they're mostly abandoned--f= or very good reasons

Look at it this way: Is there= anything wrong with make?=C2=A0 Where does it fail?

Everyone should learn & use make

--Brian G.= Powell, M.S.--that guy that still loves Makefiles and still loves using as= terisks ("***") as bullets in OrgMode

On Sun, Jan 26, 2020= at 1:11 PM John Kitchin <jki= tchin@andrew.cmu.edu> wrote:
Hi everyone,

This i= s only semi-on-topic. I am looking for something like M-x compile for my or= g-files, but I don't want it to necessarily use Makefiles. I am looking= for suggestions of existing solutions to this, or thoughts on how to imple= ment this.

Actually, if it was possible to get M-x= compile to run an elisp function instead of a make file, it might be all I= need, but it looks like it runs shell commands.

F= or most of my files, simple exporting is totally adequate. But, some files = are more complicated, and what I usually do in these cases is write an elis= p code block in a section that is tagged :noexport: and then I run that blo= ck to build the result. A recent example was a proposal where I needed a pd= f of the body, and separate pdf of the references.

I have separate elisp functions that generate these, and then I added some= custom cleanup code in the block to delete some intermediate directories. = I don't want to put these in a makefile because they are specific to th= is document. While this works, in a large document I find it a little incon= venient to make a small change say at the top, and then to jump to the bott= om to run the build block to see how it changed. What I would prefer is to = just run a command like M-x org-compile that would know about this build bl= ock and run it. That block could of course be a shell block that runs a mak= efile, but it would most often be an elisp block. I could even imagine that= there is a makefile block that is tangled before running a shell block tha= t runs a make command.

What I do in a function now= is something like this in a save-excursion:

(when= (not (stringp (org-babel-goto-named-src-block "build")))
=C2= =A0 =C2=A0 =C2=A0 (org-babel-execute-src-block))

I don't use this in these projects, but they highlight some of the c= omplexities I am trying to simplify. These are book like projects with spec= ial formatting needs, and multiple outputs.

In thi= s project (https://github.com/jkitchin/pycse/blob/master/= pycse.org#L15096), I have multiple output targets that I would run.

In this project (https://github.com= /jkitchin/dft-book/blob/master/dft.org#build) I use some temporary filt= ers to save the src blocks to files, and to embed them in the pdf so they c= an be opened.

Anyway, it feels like I am reinventi= ng something here, and that there might be some better approach already out= there. Maybe some elisp equivalent of a makefile or something?=C2=A0
=

Thoughts?

John

-------------------= ----------------
Professor John Kitchin=C2=A0
Doherty Hall A207F
D= epartment of Chemical Engineering
Carnegie Mellon University
Pittsbur= gh, PA 15213
412-268-7803
--000000000000de1aa4059d102488--