Углеродные 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 для поиска имен функций. И если вы сосредоточены на минибуфере, вы не сможете этого сделать.