【问题标题】:EMACS :: linum-mode and size of font (unreadable line numbers)EMACS :: linum-mode 和字体大小(不可读的行号)
【发布时间】:2012-03-07 10:23:07
【问题描述】:

当在 emacs 中使用 linum-mode 并且将字体增加M-x text-scale-increase 时,有一件事情困扰着我。行号的字体与读取的大小相同,并且不适合进入缓冲区左侧的left-margin

1 正常字体大小,OK

2 增加字体大小,不再可读 FUUUUU


What I'd really like to have:

增加/减少字体我希望其中一个工作

  1. 然后相应地增加/减少左边距的宽度(分别为左边缘)
  2. 然后不要更改左边距的字体而是增加/减少行号之间的间距

    有人有什么建议吗? 谢谢,伙计们

【问题讨论】:

    标签: emacs font-size


    【解决方案1】:

    您可以禁用 linum-mode 并改用 display-line-numbers-mode,它是 Emacs 26 版的一部分,并且在增加字体大小时可以很好地缩放。

    例如您的配置可能如下所示:

    ;; (global-linum-mode 1)
    (global-display-line-numbers-mode)
    

    【讨论】:

      【解决方案2】:

      我见过的最简单、最直接的解决方案是将行号设置为固定高度。这可以很容易地完成,按照user78810的回答:https://unix.stackexchange.com/questions/29786/font-size-issues-with-emacs-in-linum-mode/146781#146781

      也就是说,在您的 emacs 配置中添加以下行(或者添加到您的 dotspacemacs/user-config 函数中,如果您使用的是 spacemacs):

      (eval-after-load "linum"
        '(set-face-attribute 'linum nil :height 100))
      

      【讨论】:

        【解决方案3】:

        我想我可以用下面的代码解决这个问题:

        (require 'linum)
        (defun linum-update-window-scale-fix (win)
          "fix linum for scaled text"
          (set-window-margins win
                  (ceiling (* (if (boundp 'text-scale-mode-step)
                          (expt text-scale-mode-step
                            text-scale-mode-amount) 1)
                      (if (car (window-margins))
                          (car (window-margins)) 1)
                      ))))
        (advice-add #'linum-update-window :after #'linum-update-window-scale-fix)
        

        它似乎有效,至少在 24.5 中是这样。

        【讨论】:

        • 在 Emacs 26.1 上,这会不断增加行号列的宽度,最终使窗口无法使用。
        【解决方案4】:

        如果可以的话,我会根据customize-face 对解决方案发表评论。这对我来说很有用。实际的脸是linum而不是linum-mode,至少在我的emacs-24.3.1。在自定义缓冲区中,我单击“显示所有属性”,然后将面高设置为 100 个点。如果您(对我而言)可以接受固定大小的行号面,则基于customize-face 的解决方案很简单。

        【讨论】:

          【解决方案5】:
          M-x customize-face [RETURN] linum-mode
          

          【讨论】:

            【解决方案6】:

            看看这两个链接:

            1. my question on the same issue
            2. my workaround for this issue

            它可以很好地满足我的需求。

            例子:

            1

            【讨论】:

            • +1 我很满意。绝对是好方法,but 这有一些问题。例如,行号并不总是减小其大小。我不理解所有的代码,它可能是可以解决的,但还不知道如何解决。彼得,我目前没有将此答案标记为“已接受”。以后应该会吧。谢谢。
            • 该方法基于 1.04 的 固定 因子(选择为 合理 值)进行缩放。这种线性减小并不总是与 next 可用的字体大小相匹配,因此您需要再次按下该键,直到它缩放到下一个可用的大小。随着字体变小,这种情况会更频繁地发生。我通过经验建立一个直接跳转到下一个字体所需的缩放步骤增量列表来解决它的缩放问题。此列表适合我的字体,但正如我在其中一个链接中提到的,我不知道如何确定下一个可用字体的大小。
            • PS:您可以在列表sub-zoom-ht 中看到,这是给定缩放数量(索引)的字体大小列表,其中有很多重复的字体大小。 zoom large 逻辑使用此列表,但没有 zoomsmaller 的等效列表.. 不值得打扰,因为它不是“正确的”这样做的方法,非常耗时,而且它有效..有一天我可能会偶然发现如何直接访问字体信息......
            • 我没有找到更好的 :-)。我想我现在明白了;并感谢您的解释。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-10
            • 1970-01-01
            • 2014-02-05
            • 2011-09-24
            • 2010-10-06
            相关资源
            最近更新 更多