emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Losing tabs when tangling or editing


From: Michael Hannon
Subject: Re: [O] Losing tabs when tangling or editing
Date: Mon, 28 May 2012 14:14:16 -0700 (PDT)

Thomas S. Dye <address@hidden> wrote:
>
>> Greetings.  I was trying to set up a little demo in which I included a
>> Makefile inside a "sh" source-code block in an Org-mode file,
>> then tangled the file and ran "make" on the tangled file (either in the
>> actual shell or in another sh block in Org).
>>
>> It appears that Org is removing tabs when it tangles the file, and the lack
>> of tabs causes "make" to complain.
>>
>> I've appended a toy example which exhibits the problem.  BTW, if I edit
>> the source block via C-c ' I also lose the tabs, i.e., even before
>> tangling.
>>
>> Any thoughts about this?
>>

> I stumbled across this, too, in a somewhat different context.  My
> "solution" was to hard code the newlines and tabs with \n\t using an
> emacs-lisp source block and (format), then evaluate to a file, rather
> than tangle.  I don't think it's a pretty solution, but it does work.

Thanks, Tom.  I admire your ingenuity, but I think your work-around is too
complicated for my purposes.  I was hoping to use this example to do a bit of
subliminal proselytizing for Org mode.  If I tell people that to do this they
have to hand code a bunch of newlines and tabs, using Emacs lisp at that, I'm
not gonna win many converts.

I was hoping that there might be some kind of customization possible:

    (setq leave-the-bleeping-tabs-alone t)

I looked through ob-tangle.el but didn't see anything obvious.  (This is
neither surprising nor conclusive, given my limited lisp skills.)

-- Mike

> #+name: configure-makefile
> #+header: :file Makefile
> #+header: :var
> emacs="/Applications/Emacs-23-4.app/Contents/MacOS/Emacs"
> #+header: :var init-file="init-new.el"
> #+header: :var exporter="new"
> #+header: :eval noexport
> #+BEGIN_SRC emacs-lisp
>     (let ((f (file-name-sans-extension (file-name-nondirectory
>                                         (buffer-file-name))))
>           (g (if (string= exporter "old")
> "org-export-as-latex" "org-e-latex-export-to-latex")))
>       (format "CC=gcc
>     EMACS=%s
>     BATCH_EMACS=$(EMACS) --batch -Q -l %s %s
>    
>     all: %s.pdf
>    
>     %s.tex: %s.org\n\t$(BATCH_EMACS) -f %s
>    
>     %s.pdf: %s.tex\n\trm -f %s.aux\n\tif pdflatex %s.tex
> </dev/null; then \\\n\t\ttrue; \\\n\telse
> \\\n\t\tstat=$$?; touch %s.pdf; exit $$stat;
> \\\n\tfi\n\tbibtex %s\n\twhile grep
> \"Rerun to get\" %s.log; do \\\n\t\tif
> pdflatex %s.tex </dev/null; then \\\n\t\t\ttrue;
> \\\n\t\telse \\\n\t\t\tstat=$$?;
> touch %s.pdf; exit $$stat; \\\n\t\tfi;
> \\\n\tdone
>    
>     %s.ps: %s.pdf\n\tpdf2ps %s.pdf
>    
>     clean:\n\trm -f *.aux *.log  *.dvi *.blg *.bbl *.toc *.tex *~ *.out
> %s.pdf *.xml *.lot *.lof
>     " emacs init-file (file-name-nondirectory (buffer-file-name)) f f f g f
> f f f f f f f f f f f f))
> #+END_SRC
>
>
>>
>>
>> $ cat Makefile.original
>> hw:    hw.cpp
>>     g++ -o hw hw.cpp
>>
>> $ grep -P "\t" Makefile.original
>> hw:    hw.cpp
>>     g++ -o hw hw.cpp
>>
>> $ make -f Makefile.original
>> g++ -o hw hw.cpp
>>
>> $ ./hw
>> Hello, world!
>>
>> $ \rm hw
>>
>> $ cat hw.org
>> * test preservation of tabs when tangling
>>
>> #+BEGIN_SRC sh :tangle Makefile.tangled
>>
>> hw:    hw.cpp
>>     g++ -o hw hw.cpp
>>
>> #+END_SRC
>>
>> $ make -f Makefile.tangled
>> Makefile.tangled:3: *** missing separator (did you mean TAB instead of 8
>> spaces?).  Stop.



reply via email to

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