Углеродные Emacs: нет "фокуса" в минибуфере при инкрементальном поиске

Добрый день всем,

у моего верного старого Carbon Emacs появилась разочаровывающая привычка: когда я использую C, минибуфер запрашивает строку поиска, но она не фокусируется. Очевидно, что ввод в строку ничего не делает. Я понятия не имею, какой буфер имеет фокус в то время.

Когда я нажимаю Cg, поиск отменяется, как обычно. Когда я нажимаю Return, подсказка I-search превращается в подсказку Search, и минибуфер восстанавливает фокус. Обновление --- Когда я набираю Cw, текущее слово устанавливается как строка поиска, как обычно, и последующие Cs продвигают поиск, как и ожидалось.

AFAIK, я ничего не менял в файле.emacs, ничего не настраивал. Версия emacs такая же, как и ОС. Это поведение также переживает перезапуск Emacs. Даже emacs -q не решает эту проблему.

Обновление - оказывается, что "фокус" - не то слово; с i-search фокус остается на буфере, в котором вы ищете, но мини-буфер повторяет поисковый запрос. Ну, это должно быть, но это не так. Итак, следующий фрагмент выглядит не в том направлении.

Я попробовал этот фрагмент, чтобы восстановить фокус на минибуфере:

(defun minibuffer-refocus ()
 "Refocus the minibuffer if it is waiting for input."
 (interactive)
 (when (active-minibuffer-window)
   (message "")
   (select-window (minibuffer-window))))

(global-set-key (kbd "C-M-g") 'minibuffer-refocus)

Но безрезультатно. В других случаях он работает как брелок, но не для инкрементального поиска... Обновление - Этого следовало ожидать.

Есть ли кто-нибудь, кто знает, что происходит, или есть советы, чтобы выследить это? Это действительно раздражает...

подробности

  • GNU Emacs 22.3.1 (i386-apple-darwin9.5.0, Carbon Version 1.6.0) от 2008-11-01 на leopard.local
  • OSX 10.6.7
  • Cs запускает команду isearch-forward

Обновить

Хорошая новость в том, что это решено. Плохая новость в том, что я не знаю как:-(

Обновить

Плохая новость в том, что он вернулся снова. Я также понимаю, что приведенный выше фрагмент действительно помогает, потому что мини-буфер на самом деле не фокусируется.

4 ответа

Обратите внимание, что когда вы запускали Cs, Me предоставляет средства для редактирования искомого шаблона, но он гораздо менее эффективен, чем Cs работает должным образом...

Я сталкиваюсь с точно такой же проблемой (на двух разных машинах Lion), и я не понимаю, что происходит, но я могу сказать вам, что:

  • Я использую несколько "методов ввода", то есть несколько отображений клавиатуры: французский и американский расширенный. Я выбрал опцию OS X, которая позволяет отображать клавиатуры, которые зависят от текущего приложения (я обычно использую США для Emacs и французский для почты, например).

  • Французская картография работает правильно,

  • Расширенное сопоставление в США терпит неудачу, как вы это описали,

  • В том же сеансе Emacs, переходя к другим инвариантам заповедников: французский работает, US Extended не работает,

Хорошей новостью является то, что США не продлен, кажется, работает должным образом! Может быть (может быть) Cs - это некоторый префикс в OS X в расширенном отображении в США для некоторого многоключевого символа, и между OS X началось какое-то очень плохое взаимодействие, возможно, ожидаемое для следующей символьной части многоключевой последовательности, и Emacs который крадет их у него. Грубое предположение.

Я столкнулся с точно такой же проблемой, совершенно неожиданно, и обнаружил (как кто-то уже указывал), что это как-то связано с собственными методами OS X ввода с клавиатуры / ввода. Я использовал обычную американскую клавиатуру, но затем переключился на клавиатуру Unicode, когда возникла проблема. Как только я вернулся к обычной американской клавиатуре, i-search заработал, как и ожидалось. Я получил то же аномальное поведение с расширенной клавиатурой США.

Хорошей новостью является то, что он снова работает, как и ожидалось. Плохая новость в том, что я не знаю, что это исправило.

Я думаю, что @vpit3833 указывал в правильном направлении с предложением рекурсивного редактирования; Я отвечал на другой вопрос о клавишах Alt и Esc и после того, как попробовал некоторые вещи, например ESC-x и аналогичные комбо, пошаговый поиск снова начал работать.

Извините, у меня нет реального ответа, но, по крайней мере, я могу закрыть эту тему.

Это решение, которое работает для меня. Я отправляю это, потому что я ищу решение и не мог найти это.

(defun isearch (arg)
  (interactive "MI-search: ")
  (select-window (minibuffer-window))
  (isearch-forward))

(global-set-key "\C-s" 'isearch)

Я использую GNU Emacs на Ubuntu.

РЕДАКТИРОВАТЬ: но если вы используете его, вы не сможете искать минибуфер. Благодаря этой функции у вас нет фокуса в минибуфере при поиске. Например, вы можете сделать что-то вроде Mx Cs для поиска имен функций. И если вы сосредоточены на минибуфере, вы не сможете этого сделать.

Другие вопросы по тегам