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

IPython change input cell syntax highlighting logic for entire session

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

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

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

就我而言,我正在使用专有语言的定制细胞魔法。 %%javascript 语法突出显示对于这种语言效果很好,但如果我有自己的 %%proprietarylang 魔术功能,我显然不能使用 %%javascript 来帮助我如何显示单元格。

启动 notebook 时是否可以启用设置,或者 ipython 对象本身的某些 属性 可以在我的魔术函数中以编程方式设置,这将导致相同的结果显示逻辑就像 %%javascript.

一样发生

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

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

要替换 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。)

对于最近的 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)