Углеродные Emacs: нет «фокуса» в минибуфере при инкрементальном поиске - PullRequest
1 голос
/ 13 апреля 2011

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

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

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

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

Обновление - выясняется, что `focus '- не то слово; с 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
  • C-s запускает команду isearch-forward

Обновление

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

Обновление

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

Ответы [ 4 ]

1 голос
/ 16 мая 2012

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

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

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

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

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

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

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

0 голосов
/ 05 октября 2013

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

0 голосов
/ 10 января 2012

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

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

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

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

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

0 голосов
/ 15 апреля 2011

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

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

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

...