IPython更改整个会话的输入单元语法突出显示逻辑

时间:2015-02-24 18:36:43

标签: python ipython syntax-highlighting ipython-notebook

您可以在IPython中使用扩展程序或display帮助程序,在输出单元格上突出显示您想要的任何语法。

对于某些特殊的单元格魔法,例如%%javascript,您还可以看到输入单元格本身是使用该语言的自然语法高亮显示的。

如何使用一些选定的非Python语法高亮显示每个输入单元格(无论单元格上使用何种魔法,无论单元格是否包含Python代码,还有其他语言)。

就我而言,我正在使用专有语言定制的单元魔法。 %%javascript语法突出显示适用于此语言,但如果我拥有自己的%%proprietarylang魔术功能,我显然无法使用%%javascript来帮助我了解单元格的显示方式。< / p>

我启动笔记本时是否可以启用设置,或者ipython对象本身的某些属性可以在我的魔术函数内以编程方式设置,这将导致相同的显示逻辑发生,就好像它是%%javascript

我知道当前笔记本不支持通用的动态语法高亮显示。我特别询问如何利用预先存在的语法高亮效果,例如%%javascript的效果。

我看到some documentation指的是IPython.config.cell_magic_highlight,但这似乎不存在了。它有标准替代品吗?

2 个答案:

答案 0 :(得分:4)

要替换IPython.config.cell_magic_highlight,您可以使用类似

的内容
import IPython
js = "IPython.CodeCell.config_defaults.highlight_modes['magic_fortran'] = {'reg':[/^%%fortran/]};"
IPython.core.display.display_javascript(js, raw=True)

所以以%%fortran开头的单元格将像FORTRAN一样以语法突出显示。 (但是,如果只进行此操作,它们仍将被评估为python。)

答案 1 :(得分:2)

对于最近的IPython版本,所选答案不再有效。 'config_default'属性重命名为options_default(Ipython 6.0.0)。 以下作品:

import IPython
js = "IPython.CodeCell.options_default.highlight_modes['magic_fortran'] = {'reg':[/^%%fortran/]};"
IPython.core.display.display_javascript(js, raw=True)