相关疑难解决方法(0)

Emacs中的相对行号

有没有人知道如果对于emacs存在类似这样的Vim相对行号的话?我使用vimpulse和man,这将是非常方便的!我知道一些口齿不清,所以如果没有,我可以尝试自己做,如果我在正确的方向得到一个点.

更新:由于正确的响应,我想出了这个,它将显示当前行的1,以及前一行的-1,用于与vimpulse yanks和deletes组合.

非常感谢所有帮助过的人!我知道这不完全是Vim所做的,但是vim中从0开始的相对行号有什么用呢?愚蠢的vim.

(defvar my-linum-current-line-number 0)

(setq linum-format 'my-linum-relative-line-numbers)

(defun my-linum-relative-line-numbers (line-number)
  (let ((test2 (1+ (- line-number my-linum-current-line-number))))
    (propertize
     (number-to-string (cond ((<= test2 0) (1- test2))
                             ((> test2 0) test2)))
     'face 'linum)))

(defadvice linum-update (around my-linum-update)
  (let ((my-linum-current-line-number (line-number-at-pos)))
    ad-do-it))
(ad-activate 'linum-update)
Run Code Online (Sandbox Code Playgroud)

emacs vimpulse line-numbers

21
推荐指数
4
解决办法
8955
查看次数

修复自动完成模式和linum模式烦恼

我正在使用auto-complete-mode我认为非常棒的.我也是一个狂热的粉丝,linum-mode但是当两者一起使用时,我有一个非常恼人的问题,特别是当我在一个新的缓冲区(或一个线路很少的缓冲区)工作时.

基本上缓冲区是'x'行很长但是当自动完成时它会向缓冲区"添加"行,所以linum-mode保持切换,例如,在一列或两列上显示行号,这取决于是否auto-complete建议完成或不.

因此,您键入一个句子,您会看到缓冲区的内容在每次按键时都会从左向右疯狂地移动.这真的很烦人.

我认为解决方案涉及配置linum格式变量,但我不知道如何.

理想情况下,如果我的linum格式是:

  • 动态
  • 右对齐
  • 考虑到缓冲区的'y'行比缓冲区实际有的多

我的理由是,auto-complete不应该提出超过'y'的建议,因此,两者应该开始很好地一起玩.

例如,如果'y'设置为20而我的缓冲区有75行,那么linum应该使用两列:因为无论我在哪里auto-complete都不会使缓冲区"大于"99行.

相反,如果'y'仍然设置为20并且我的缓冲区有95行,那么linum应该使用三列,否则如果我接近缓冲区的末尾并且auto-complete在我的缓冲区中踢,则应该开始"左右摇晃"当我输入.

我宁愿不硬编码"3列宽" linum.

我想使用"动态但总是至少两列"会以某种方式解决大多数烦恼,但仍然像我描述的那样会很棒.

PS:我意识到我的"修复"意味着linum总是会显示在至少两列上,我很好...只要它保持右对齐并使用2,3或4列,具体取决于需要.

emacs autocomplete

9
推荐指数
2
解决办法
1671
查看次数

如何根据文本高度自动添加/删除滚动条

许多商业文字处理器具有默认行为,当文档中的文本行小于可见窗口时,该行为自动隐藏垂直滚动条; 并且,当文档中的文本行大于可见窗口时,滚动条会自动出现.Emacs缺少这种能力,我希望它能成为各种不同模式的默认行为.

有没有人有一些想法如何随着文档的大小(文本行)增加或减少自动删除或添加滚动条?

我在考虑将相关线程中的@phils先前的样本编织到行号的函数中:https://stackoverflow.com/a/10593165/2112489  

即使我不使用它,我也希望它能够正常工作linum-mode.但是,我不认为滚动条功能应该在每个命令之后运行 - 它应该仅在添加或减去新行时运行,并考虑visual-line-mode(即,包装处于活动状态)可能处于活动状态.

以下片段的灵感来自@ abo-abo先前在相关主题中的回答:https: //stackoverflow.com/a/20923695/2112489

(cond
  ((not (> (count-lines (point-min) (point-max)) (window-height)))
    (set-window-scroll-bars (get-buffer-window (buffer-name) (selected-frame)) 0 nil))
  ((and
      (> (count-lines (point-min) (point-max)) (window-height))
      (not (equal (window-scroll-bars) `(15 2 t nil))))
    (set-window-scroll-bars (get-buffer-window (buffer-name) (selected-frame)) 15 'right)))
Run Code Online (Sandbox Code Playgroud)

编辑(2014年1月17日):工作草案基于@Drew对此主题的有用答案.

编辑(2014年1月19日):添加了一个函数,用于计算每个自动换行vertical-motion.在initial-frame-default创建初始帧之后设置似乎由Emacs读取,因此滚动条可以瞬间可见 - 为避免看到这一点,修改初始帧的帧参数似乎可以解决此视觉问题.现在使用window-text-height而不是window-height- 返回的高度不包括分隔符,模式行,任何标题行,也不包括文本区域底部的任何部分高度行. 复制使用的方法linum-mode- 使用 - post-command-hook,the change-major-mode-hook,和window-configuration-change-hook).添加window-live-p条件以避免post-command-hook …

emacs elisp scrollbar

7
推荐指数
1
解决办法
1471
查看次数

标签 统计

emacs ×3

autocomplete ×1

elisp ×1

line-numbers ×1

scrollbar ×1

vimpulse ×1