如何在代码块中设置monopaced字体?

时间:2017-02-11 12:12:03

标签: emacs fonts markdown font-face

我的标准字体是比例字体。当我编辑markdown文件时,我希望所有缩进4个或更多空格的部分都以等宽字体显示。

我没有使用任何特殊的降价模式。因此,如果我必须手动为当前缓冲区切换该行为,我会没事的。虽然,我自己的*.md文件模式当然是需要的,但我不知道该怎么做(如果这个问题超出范围)。

对我有效的模式是:

Enabled minor modes: Abbrev Auto-Composition
    Auto-Compression Auto-Encryption Blink-Cursor 
    Column-Highlight Column-Number Desktop-Save File-Name-Shadow
    Flyspell Font-Lock Global-Font-Lock Icomplete Line-Number
    Menu-Bar Mouse-Wheel Shell-Dirtrack Show-Paren
    Tooltip Transient-Mark

2 个答案:

答案 0 :(得分:3)

是的,您确实需要一种突出显示降价代码的模式。 (尝试M-x package-install RET markdown-mode+ RET)如果你启用了字体锁定(我怀疑你有),你最终的模式可能会为降价提供语法高亮。

现在,语法高亮只是对使用的字体和颜色的改动。启用后,您可以通过浏览代码块并发出M-x customize-face来自定义用于代码的字体。我的降价模式在markdown-pre-face下有代码块;默认情况下,您将选择光标下的面部。

我准备了一些截图来显示工作流程。确定emacs允许哪些字体系列或代工厂是一个黑暗魔法,我留给谷歌找出更多关于它。在linux系统上,曾经有一个名为xfontsel的丑陋小助手,您可以在其中预览不同的字体系列和代工厂。

通过应用更改而不保存,您可以先试验而不保存任何内容;当事情看起来很好时,你可以在自定义模式下“应用并保存”。

screenshots of how to adjust font-face in Emacs

答案 1 :(得分:0)

我将部分不同意你可以做你想做的事情的论点。你只能部分地做你想做的事情,这有点像黑客。

基本上,您可以为不同的面设置不同的字体。因此,如果要以固定宽度字体显示的文本具有不同的面定义,则可以将字体从比例字体更改为固定宽度字体。至少,这就是理论。

不幸的是,结果往往比你希望的要少。

问题是大多数模式没有为所有可能的字符定义面。面部倾向于仅用于使某些东西脱颖而出,这往往意味着在模式中特殊的东西 - 标题,一些语法等。

问题在于他的默认面孔 - 当没有指定其他面部时使用的面部。默认面不是特定于模式的。如果将默认面设置为等宽字体,则该字体将在所有模式中使用,而不仅仅是在降价模式下的“普通”字符中。如果您在降价模式下的任何字体都是成比例的,您会发现缩进中的对齐方式看起来不一致。根据您构建缓冲区内容的方式,这可能是也可能不是问题。

就个人而言,我很久以前就放弃使用一个比例字体作为emacs下的默认字体,而是选择使用固定宽度字体作为默认字体,然后为某些特殊用途定义比例字体,例如org-模式标题。

你可以尝试可能工作的一些事情,将是

  • 文件局部变量,用于在markdown filtes中设置字体。我没试过这个,但你可以使用文件局部变量。您可能想要创建一个降价模板,在新的降价过滤器中设置它。

  • 将面变量缓冲区设为本地。您可以定义一个markdown-mode钩子函数,它使面变量缓冲局部并将它们设置为固定宽度的字体。

面部定义可以使用继承,因此理论上,如果使用的所有面都继承自默认面,并且您执行文件局部变量或缓冲局部变量来设置默认面,那么所有其他面应该继承该定义,因此您不必为缓冲区中的每个字体执行此操作。