Emacs Lisp Buffer не в фокусе? - PullRequest
1 голос
/ 02 марта 2012

Существует ли функция lisp в emacs, которая позволяет мне определить, находится ли буфер не в фокусе?не в фокусе.

Также возможно ли избавиться от буфера *Messages*?Я не нашел функцию, которая убила бы ее.

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Вы можете проверить, является ли буфер буфером, который в данный момент имеет фокус, с помощью current-buffer.Например, чтобы проверить, имеет ли фокус *scratch*,

(eq 
 (current-buffer) 
 (get-buffer "*scratch*"))

Буфер *Messages* является важной частью emacs.Это неявная цель функции message, которая используется для регистрации различной информации со всего мира.Вы можете убить *Messages*, как и любой другой буфер, но он просто будет воссоздан в следующий раз, когда что-то вызовет message.Возможно, вы могли бы замолчать, переопределив функцию message, но я бы поставил под сомнение смысл этого.

1 голос
/ 02 марта 2012

Относительно вашего второго вопроса, Также возможно избавиться и от буфера сообщений .Если вы используете ido-mode (и все должны его использовать!), Вы можете скрыть буфер *Messages* из списка буферов со следующим elisp:

(require 'ido)
(setq ido-ignore-buffers '("^\*Messages\*"))
0 голосов
/ 03 марта 2012

Вы можете попробовать PopWin , он позволяет указать буферы, которые будут открываться в специальном окне. Это окно закрывается, когда рамка выходит из фокуса или когда вы нажимаете C-g

...