Czy można org-bable-splątać plik org z linii poleceń?

15

Chciałbym zarządzać plątaniem plików org za pomocą Makefile. Chociaż nie mogę znaleźć żadnych informacji na temat sposobu plątania plików z wiersza polecenia.

lookyhooky
źródło

Odpowiedzi:

12

Możesz użyć czegoś takiego jak:

emacs --batch --eval "(require 'org)" --eval '(org-babel-tangle-file "file-to-tangle.org")'

(To cytowanie powłoki jest przeznaczone dla Basha, dostosuj, jeśli używasz innej powłoki.)

EDYCJA: Dzięki @SkydiveMike za wskazanie, że pomyłkowo napisałem org-babel-tanglezamiast org-babel-tangle-file.

Omar
źródło
Próbowałem i otrzymałem Wrong type argument: stringp, nilkomunikat o błędzie, jakieś sugestie dotyczące tego, co robię źle?
lookyhooky
1
Potrzebuję także -Lflagi, aby dodać bieżący katalog do ścieżki ładowania i -l file-to-tangle.orgzaładować plik przed próbą jego splątania.
lookyhooky
8
emacs --batch -l org foo.org -f org-babel-tanglelub emacs --batch -l org --eval '(org-babel-tangle-file "foo.org")'działa dla mnie.
xuchunyang
1
W przypadku skryptu Bash jest to przydatne:emacs --batch -l org --eval "(org-babel-tangle-file \"$1\")"
pentavalentcarbon
1
Dla kompletności rozwiązanie xuchunyang działa (w porównaniu z oryginałem), ponieważ ma plik org-babel-tangle-file (który akceptuje argument PLIK) w porównaniu z org-babel-tangle, który działa na bieżącym buforze.
SkydiveMike,