2014-01-07 1 views
2
#+Author: A. U. Thor 
#+Date: [2014-01-06 Mon] 
#+MACRO: version 2.1 

#+BEGIN_SRC emacs-lisp :exports none :tangle no 
    (substring (shell-command-to-string "git rev-parse --short HEAD") 0 -1) 
#+END_SRC 

This document interacts with version {{{version}}} of the 
StackExchange API and is maintained by {{{author}}}. It was last 
modified at {{{modification-time(%Y-%m-%dT%T%z)}}} (commit ??). This 
copy was exported on {{{time(%Y-%m-%dT%T%z)}}}. 

производитКак я могу вставить текущую git-фиксацию в буфер org-mode, который будет оцениваться при экспорте?

       ____________ 

            TEST 

           A. U. Thor 
           ____________ 


          [2014-01-06 Mon] 


Table of Contents 
_________________ 




This document interacts with version 2.1 of the StackExchange API and is 
maintained by A. U. Thor. It was last modified at 
2014-01-06T20:32:14-0500 (commit ??). This copy was exported on 
2014-01-06T20:32:16-0500. 

Как я могу вставить текущее обязательство (как возвращаемый чуть-чуть Elisp) в ??? Я предположительно обнаружил способ сделать это, но он неэффективен при нормальном экспорте и, вероятно, работает только при запутывании.

+0

Может ли это решить в git вместо emacs? Если это так, вы можете изучить расширение ключевого слова на основе фильтра: http://git-scm.com/book/ch7-2.html#Keyword-Expansion – Carsten

+0

@Carsten Если его можно принудительно ввести в макрос организации (или что-нибудь, что удалит артефакт 'Id:', который будет более чем точным. :) –

ответ

5

Если добавить имя в блок кода, то вы можете вызвать этот блок кода где-то еще:

#+NAME: commit 
#+BEGIN_SRC emacs-lisp :exports none :tangle no 
    (substring (shell-command-to-string "git rev-parse --short HEAD") 0 -1) 
#+END_SRC 

This corresponds to git commit call_commit(). 

Выход я получаю при экспорте:

Это соответствует мерзавец фиксации `2464d0a».

Это задокументировано in the org-mode manual для оценки кода исходного кода.

Смежные вопросы