Как я могу запретить мини-буферу отображать предыдущие команды в Emacs?

Я даже не уверен, что это предыдущая команда или незавершенная команда или что-то еще, но я знаю, что мне это действительно не нравится.

Моя проблема в том, что некоторые команды (или сообщения, или что-то еще) застревают в мини-буфере, поэтому, когда я набираю новую команду, она появляется там очень быстро, а затем мини-буфер возвращается к упрямой команде. Кажется, что некоторые команды выбраны, и после использования большого количества команд что-то еще там застревает, но всегда отображается что-то, что я не хочу видеть. Я пытался набирать C-g много раз, чтобы посмотреть, выйдет ли он, но это не работает.

Это фото того, что у меня сейчас:

альтернативный текст

Неважно, что я делаю, этот бит

Метка: hl-line

не оставит. Он на мгновение уходит, когда набирается новая команда, но возвращается. Мне это не нравится, это сбивает с толку, и я бы предпочел увидеть там последнюю использовавшуюся команду.

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

Любые идеи?


person Vivi    schedule 11.06.2010    source источник
comment
Вы находитесь в (двух уровнях) рекурсивного редактирования, что видно по [[..]] вокруг круглых скобок, окружающих имена режимов. Вы можете прервать рекурсивное редактирование, используя 'C-]'. См. cs.cmu.edu/cgi-bin/info2www? (emacs)Recursive%20Edit для получения дополнительной информации.   -  person Andrew Stein    schedule 11.06.2010


Ответы (2)


Мини-буфер потерял фокус. Попробуйте C-x o (Control+x o), чтобы восстановить фокус. Чтобы отменить команду, нажмите C-g, когда у вас есть фокус в мини-буфере.

person Vijay Mathew    schedule 11.06.2010
comment
О, так это было похоже на незаконченную команду? Я сделал C-x o и должен был закончить весь этот поток команд (вставить среду в латекс, поставить метку, позицию и т. д.), чтобы эта штука исчезла. Спасибо за это! - person Vivi; 11.06.2010

Скорее всего, вы попали в ситуацию, потому что вы запустили команду и использовали мышь, чтобы выбрать что-то в другом окне. Если это так, вы можете настроить Emacs на автоматическое прерывание команды, когда вы выполняете такое действие.

Это код, который вы бы добавили в свой .emacs:

(defun stop-using-minibuffer ()
  "kill the minibuffer"
  (when (and (>= (recursion-depth) 1) (active-minibuffer-window))
    (abort-recursive-edit)))

(add-hook 'mouse-leave-buffer-hook 'stop-using-minibuffer)

Примечание. Я взял это из моего сообщения в блоге по теме.

И есть также вопрос суперпользователя, который касается этой проблемы, и мой ответ содержит команду перейти обратно в минибуфер.

person Trey Jackson    schedule 11.06.2010
comment
Вполне возможно, что я так и сделал... Я стараюсь не использовать мышь, так что, надеюсь, эта команда скоро станет ненужной. Это происходит, когда я также использую ** C-x b **? Кстати, я предпочитаю код, который вы поместили в ответ на вопрос суперпользователя и связали в комментарии к своему сообщению в блоге :) (тот, который дает привязку ключа для перехода к активному окну минибуфера) - person Vivi; 11.06.2010
comment
@ Виви Аааа ... правильный ответ SU. Я не очень доволен тем, как SO и SU разделили вопросы Emacs. Я также свяжу это в этом ответе. - person Trey Jackson; 11.06.2010
comment
Это может произойти, если вы запускаете команду и получаете ошибку. Уловка, чтобы получить фокус в мини-буфере, а затем Ctrl-G для прерывания, исправит это. - person Michael Mathews; 14.06.2010
comment
зачем вам проверять глубину рекурсии? - person fommil; 05.01.2016
comment
Кроме того, есть ли эквивалент, который будет работать, если что-то, кроме мыши, изменит фокус? - person fommil; 05.01.2016
comment
@fommil, я думаю, что проверка глубины рекурсии связана с тем, что она будет запускаться каждый раз, когда происходит щелчок, поэтому вы хотите проверить, что находитесь в мини-буфере, и не пытаться отменить его, если вас там нет. Я не знаю ответа на другой ваш вопрос, но держу пари, что да. - person Gordon; 03.03.2016
comment
@fommil - Гордон прав, это нужно, чтобы избежать сообщения об ошибке от Emacs, говорящего вам, что рекурсивное редактирование не выполняется - person Trey Jackson; 04.03.2016
comment
@TreyJackson: это не работает, когда я перемещаю разделенные окна в терминале. - person alper; 29.05.2020