Ced*_*tin 9 emacs autocomplete
我正在使用auto-complete-mode我认为非常棒的.我也是一个狂热的粉丝,linum-mode但是当两者一起使用时,我有一个非常恼人的问题,特别是当我在一个新的缓冲区(或一个线路很少的缓冲区)工作时.
基本上缓冲区是'x'行很长但是当自动完成时它会向缓冲区"添加"行,所以linum-mode保持切换,例如,在一列或两列上显示行号,这取决于是否auto-complete建议完成或不.
因此,您键入一个句子,您会看到缓冲区的内容在每次按键时都会从左向右疯狂地移动.这真的很烦人.
我认为解决方案涉及配置linum格式变量,但我不知道如何.
理想情况下,如果我的linum格式是:
我的理由是,auto-complete不应该提出超过'y'的建议,因此,两者应该开始很好地一起玩.
例如,如果'y'设置为20而我的缓冲区有75行,那么linum应该使用两列:因为无论我在哪里auto-complete都不会使缓冲区"大于"99行.
相反,如果'y'仍然设置为20并且我的缓冲区有95行,那么linum应该使用三列,否则如果我接近缓冲区的末尾并且auto-complete在我的缓冲区中踢,则应该开始"左右摇晃"当我输入.
我宁愿不硬编码"3列宽" linum.
我想使用"动态但总是至少两列"会以某种方式解决大多数烦恼,但仍然像我描述的那样会很棒.
PS:我意识到我的"修复"意味着linum总是会显示在至少两列上,我很好...只要它保持右对齐并使用2,3或4列,具体取决于需要.
小智 13
只需将以下行放在.emacs中即可解决此问题.它在auto-complete.el中.
(ac-linum-workaround)
Run Code Online (Sandbox Code Playgroud)
我之前写过几个关于修改 linum-mode 输出的答案,您可能可以根据您的目的进行调整。
编辑:这是该代码的最基本版本(也在EmacsWiki上,尽管有些隐藏),它根本不修改默认输出,但使用其他答案中的技术比默认代码更有效。这对您来说可能是一个更有用的起点。
(defvar my-linum-format-string "%4d")
(add-hook 'linum-before-numbering-hook 'my-linum-get-format-string)
(defun my-linum-get-format-string ()
(let* ((width (length (number-to-string
(count-lines (point-min) (point-max)))))
(format (concat "%" (number-to-string width) "d")))
(setq my-linum-format-string format)))
(setq linum-format 'my-linum-format)
(defun my-linum-format (line-number)
(propertize (format my-linum-format-string line-number) 'face 'linum))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |