【问题标题】:how to make emacs ido not rotate the whole list of options?如何使emacs ido不旋转整个选项列表?
【发布时间】:2018-07-04 03:37:15
【问题描述】:

在 emacs ido 选项中,当前选择的选项总是首先显示在列表中。当我们改变例如通过箭头键或 C-s / C-r :旋转整个列表,而不是当前选择的选项移动到任何地方。这对我来说非常令人不安。为了说明,假设 A、B、C 和 D 是缓冲区,我们正在运行 ido-switch-buffer

  1. 当前行为

    *A* B C D

按 C-s

*B* C D A

再次按 C-s

*C* D A B

  1. 我想要的是

*A* B C D

按 C-s

A *B* C D

再次按 C-s

A B *C* D

我尝试将 "ido-rotate" 和 "ido-rotate-file-list-default" 都设置为 nil 和 t,一一设置,但在这方面没有任何变化。我也没有在 ido 的自定义组中看到任何其他选项。如何使所选选项移动而不是整个列表旋转?

这适用于 emacs 26.1,内置 ido。

编辑: 使用常规的 ido 模式,我可以通过以下方式覆盖下一个以前的键绑定:

(define-key ido-buffer-completion-map (kbd "M-)") 'ido-next-match)

使用 ido-grid-mode,我所有的尝试都失败了。似乎坚持使用硬编码的密钥集来查找下一个选项/上一个选项。 这也不起作用:

(define-key ido-completion-map (kbd "M-)") 'ido-next-match)

任何提示我可以让 ido-grid-mode 让我覆盖键?

【问题讨论】:

  • AFAIK,这对于内置的 ido 选项是不可能的。另外,我认为ido-rotate 是一个内部变量,而不是针对用户的选项。也许有一个包可以满足您的需求; ido-grid-mode 似乎有点接近了。当有很多候选人时会发生什么?它必须在某个点开始滚动或旋转。

标签: emacs ido


【解决方案1】:

好的,找到答案了。包 ido-grid-mode 确实是我需要的,谢谢@jpkotta。有一个技巧可以让我的键绑定工作。

(defun ido-my-keys ()
"Add my keybindings for Ido."
(define-key ido-completion-map (kbd "M-)") 'ido-next-match)
(define-key ido-completion-map (kbd "M-)") 'ido-prev-match)
)
(ido-grid-mode t)
(add-hook 'ido-setup-hook 'ido-my-keys)

也就是说 - ido-grid-mode 必须在 为键绑定添加设置挂钩之前启动。我是在设置挂钩之后或完全在设置挂钩之外进行的,这不起作用。

EDIT :忘了说,还有一个技巧。破解 ido-grid-mode 本身。在 ido-grid-mode.el 中进行以下更改:

  ;; ('C-s     (define-key ido-completion-map (kbd "C-s")       #'ido-grid-mode-next))                                                                                                                         
  ;; ('C-r     (define-key ido-completion-map (kbd "C-r")       #'ido-grid-mode-previous))                                                                                                                     
  ('C-s     (define-key ido-completion-map (kbd "M-)")       #'ido-grid-mode-next))                                                                                                                            
  ('C-r     (define-key ido-completion-map (kbd "M-(")       #'ido-grid-mode-previous))                                                                                                                        

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多