Я могу использовать чтение завершения идо вместо считанного из завершения везде?

Если вы используете функцию select_tag(name, option_tags = nil, options = {}), правильным вариантом будет :prompt => "Some text", а не установка строкового значения для select

11
задан Drew 25 August 2013 в 19:27
поделиться

5 ответов

Я не думаю, что ido-mode еще готов для этого. В частности, ido-complete-read в настоящее время работает только со строками, в то время как завершение-чтение также поддерживает списки. Это очень важно, если вы хотите иметь другое описание на уровне пользователя элементов, над которыми вы хотите завершить.

Поэтому я не удивлен, что это пока не работает из коробки. За исключением самостоятельного изменения кода, лучше всего, вероятно, просто отправить отчет об ошибке / запрос функции.

3
ответ дан 3 December 2019 в 05:13
поделиться

В Ido есть функция, которая должна это делать, поэтому просто вызовите ее в своем файле .emacs:

(ido-везде t)

1
ответ дан 3 December 2019 в 05:13
поделиться

Just a thought: have you tried editing ido-completing-read to call original-completing-read instead of completing-read, defining original-completing-read to be the current completing-read and then doing your defalias or setf thing?

0
ответ дан 3 December 2019 в 05:13
поделиться

Редактировать: Теперь это пакет Emacs , доступный из MELPA . Он был расширен до полноценного второстепенного режима. Разработка происходит на GitHub .

Исходное сообщение:

Вот мое уточнение ответа Якобо. Кредит ему за оригинальную магию. Я добавил переменную переопределения, которую вы можете использовать для предотвращения использования ido-complete-read в определенных функциях. Я также добавил проверку, которая использует исходное завершение-чтение, если нет завершений (это случается иногда, например, в org-Remember-apply-template из org-mode, который прерывается с Jacobo ' s оригинальный совет).

(defvar ido-enable-replace-completing-read t
  "If t, use ido-completing-read instead of completing-read if possible.

Set it to nil using let in around-advice for functions where the
original completing-read is required.  For example, if a function
foo absolutely must use the original completing-read, define some
advice like this:

(defadvice foo (around original-completing-read-only activate)
  (let (ido-enable-replace-completing-read) ad-do-it))")

;; Replace completing-read wherever possible, unless directed otherwise
(defadvice completing-read
  (around use-ido-when-possible activate)
  (if (or (not ido-enable-replace-completing-read) ; Manual override disable ido
          (boundp 'ido-cur-list)) ; Avoid infinite loop from ido calling this
      ad-do-it
    (let ((allcomp (all-completions "" collection predicate)))
      (if allcomp
          (setq ad-return-value
                (ido-completing-read prompt
                               allcomp
                               nil require-match initial-input hist def))
        ad-do-it))))

О, и для использования ido в Mx используйте smex

10
ответ дан 3 December 2019 в 05:13
поделиться

Hocus pocus, abracadabra, presto!

(defadvice completing-read
  (around foo activate)
  (if (boundp 'ido-cur-list)
      ad-do-it
    (setq ad-return-value
      (ido-completing-read
       prompt
       (all-completions "" collection predicate)
       nil require-match initial-input hist def))))

Это работает со всем, кроме subr, из которых имеет значение execute-extended-command (что связано с Mx). Но мы можем получить то, что хотим, от Mx

(global-set-key
 "\M-x"
 (lambda ()
   (interactive)
   (call-interactively
    (intern
     (ido-completing-read
      "M-x "
      (all-completions "" obarray 'commandp))))))
7
ответ дан 3 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: