как заставить emacs не вращать весь список опций? - PullRequest
0 голосов
/ 03 июля 2018

В опциях 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, позволяют мне переопределять ключи?

1 Ответ

0 голосов
/ 03 июля 2018

Хорошо, нашел ответ. Пакет 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 должен быть запущен до того, как установочный хук добавлен для привязок клавиш. Я делал это после или полностью вне ловушки установки, которая не работала.

РЕДАКТИРОВАТЬ : Забыл упомянуть, есть еще одна хитрость. Взломай сам режим 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))                                                                                                                        
...