On Thu, Aug 23, 2012 at 5:58 PM, Thomas Kluyver &lt;<a href="mailto:takowl@gmail.com">takowl@gmail.com</a>&gt; wrote:<br>&gt; Hi Skipper,<br>&gt;<br>&gt; On 23 August 2012 19:13, Skipper Seabold &lt;<a href="mailto:jsseabold@gmail.com">jsseabold@gmail.com</a>&gt; wrote:<br>

&gt;&gt; I&#39;m having some trouble working through the code. Is there anyway to inject<br>&gt;&gt; user-defined (callable) substitutions into the prompts. E.g., something like<br>&gt;<br>&gt; I don&#39;t have time to test at the moment, but I think you need to add<br>

&gt; it using the IPython.core.prompts.LazyEvaluate wrapper, something like<br>&gt; this:<br>&gt;<br>&gt; @LazyEvaluate<br>&gt; def am_at_home():<br>&gt;     import os<br>&gt;     if os.path.expanduser(&#39;~&#39;) == os.path.abspath(os.path.curdir):<br>

&gt;         return &quot;(home)&quot;<br>&gt;     return &quot;&quot;<br>&gt;<br>&gt; get_ipython().prompt_manager.lazy_evaluate_fields[&#39;amathome&#39;] = am_at_home<br>&gt; get_ipython().prompt_manager.in_template = &#39;[\#]: {amathome}&#39;<br>

&gt;<br>&gt; Note the new-style formatting syntax, rather than \amathome.<br>&gt;<br>&gt; This example is written for a startup script -<br>&gt; PromptManager.lazy_evaluate_fields is not currently configurable (and<br>&gt; adding values to lists or dicts in configuration is awkward anyway.<br>

&gt;<br>&gt; Hope that helps,<br>&gt; Thomas<br><br>Thanks Thomas,<br><br>Cool. Works like a charm, my ipython config now to give my git branch in the ipython terminal<br><br>c.TerminalIPythonApp.exec_lines = [<br>        &quot;&quot;&quot;<br>

from IPython.core.prompts import LazyEvaluate<br><br>@LazyEvaluate<br>def parse_git_branch():<br>    import subprocess<br>    cmd = &#39;ref=$(git symbolic-ref HEAD 2&gt; /dev/null); echo \&quot;(\&quot;${ref#refs/heads/}\&quot;)\&quot;&#39;<br>

    branch = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).communicate()[0]<br>    if not branch.strip().strip(&quot;()&quot;):<br>        return &quot;&quot;<br>    else:<br>        return branch&quot;&quot;&quot;,<br>

        &quot;&quot;&quot;get_ipython().prompt_manager.lazy_evaluate_fields[&quot;parse_git_branch&quot;] = parse_git_branch&quot;&quot;&quot;,<br>        r&quot;get_ipython().prompt_manager.in_template = &#39;[\Y0/] {parse_git_branch}\n[\#]: &#39;&quot;<br>

        ]<br><br><br><br>