LINUX.ORG.RU

Альтернатива buffer-list-update-hook?

 


1

2

Сначала emacs --daemon, далее emacsclient -t anyfile.txt и emacsclient -nc anyfile.txt.

Нужен некий триггер который бы срабатывал когда находясь в Gui, я тыкал мышкой в терминал с открытым емакс'ом (обратное действие тоже должно работать). Если с gui'ем проще, можно использовать например mouse-active-buffer то с терминалом сложнее так как емакс ожидает какого то действия, мышь не понимает. Пробовал оборачивать всякие switch-to-buffer-*, active-buffer, эффект не тот... Сейчас остановился на buffer-list-update-hook, но дергается он довольно часто. Существует ли более «экономичное/специализированное» решение: hook или функция на которую можно повесить advice?

p.s. Нужно для корректного отображения файла в треминале и gui, т.е. при переключении убрать меню, выключить лигатуры, скорректировать отображение некоторых плагинов.


Если с gui'ем проще, можно использовать например mouse-active-buffer

А почему не ровно для этого предназначенные focus-in-hook / focus-out-hook?

Нужен некий триггер который бы срабатывал когда находясь в Gui, я тыкал мышкой в терминал с открытым емакс'ом (обратное действие тоже должно работать)

Если под «обратным действием» вы имеете в виду аналог focus-out-hook, то по части ГНУ Емакса вы, очевидно, просите невозможного — как программа, запертая в эмуляторе терминала, может узнать, что последний более не в фокусе? Другое дело, что ваш эмулятор терминала может уметь посылать на ввод что-нибудь по получению или потере фокуса. XTerm умеет, гуглить по <FocusIn> / <FocusOut>.

Ну и не могу не спросить, зачем вы вообще загоняете рамку от запущенного локально ГНУ Емакса внутрь эмулятора терминала? Есть мнение, что это само по себе говорит о том, что что-то с вашим производственным процессом не так.

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 3)
Ответ на: комментарий от Zmicier

Ну и не могу не спросить, зачем вы вообще загоняете рамку от запущенного локально ГНУ Емакса внутрь эмулятора терминала?

Дело в лигатурах, «плывут» в терминале.

XTerm умеет, гуглить по <FocusIn> / <FocusOut>.

Нужно общее решение.

А почему не ровно для этого предназначенные focus-in-hook / focus-out-hook?

Про них не знал.

После того как из терминала переключаюсь в gui, срабатывает focus-in-hook, но display-graphic-p в нем, возвращает nil => в gui отрубаются лигатуры (

clinic
() автор топика
Ответ на: комментарий от clinic

После того как из терминала переключаюсь в gui, срабатывает focus-in-hook, но display-graphic-pв нем, возвращает nil

Не наблюдаю, у меня все работает как надо. GNU Emacs 25.1.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.25) of 2016-07-15

Ну и не могу не спросить, зачем вы вообще загоняете рамку от запущенного локально ГНУ Емакса внутрь эмулятора терминала?

Дело в лигатурах, «плывут» в терминале.

Пардон, на какой вопрос вы сейчас отвечали?

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Не наблюдаю, у меня все работает как надо. GNU Emacs 25.1.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.25) of 2016-07-15

Да, возможно это NextStep (у меня osx) и нужно пересобирать с поддержкой x.org (свои заморочки со шрифтами появляются). Подожду пока версию 25...

Пардон, на какой вопрос вы сейчас отвечали?

Давай в картинках обьясню?

Так есть: http://stick.kz/img/2016-07/29/y247xigd9qzlhp1sosxjy5els.png

Так нужно: http://stick.kz/img/2016-07/29/agr7xevp8rdgygef7pmlf61ys.png

И рамка терминала тут не причем.

clinic
() автор топика
Ответ на: комментарий от clinic

Исправлю неверную аннотацию выше: первая ссылка терминал, вторая gui. Поэтому и нужно отключать лигатуры когда перехожу в терминал.

clinic
() автор топика
Ответ на: комментарий от clinic

Ну и не могу не спросить, зачем вы вообще загоняете рамку от запущенного локально ГНУ Емакса внутрь эмулятора терминала?

Дело в лигатурах, «плывут» в терминале.

Пардон, на какой вопрос вы сейчас отвечали?

Так есть: http://stick.kz/img/2016-07/29/y247xigd9qzlhp1sosxjy5els.png
Так нужно: http://stick.kz/img/2016-07/29/agr7xevp8rdgygef7pmlf61ys.png
И рамка терминала тут не причем.

О, господи. «Рамкой» (frame) на емаксовом наречии называется сущность, что связана с иксовым (или кварцевым — в вашем случае) окном или терминалом.

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

Что до лигатур, то я боюсь, я даже по картинкам не пойму, что там происходит, поскольку вовсе не понимаю, что это за лигатуры и как их воспроизвести.

Да, возможно это NextStep (у меня osx) и нужно пересобирать с поддержкой x.org (свои заморочки со шрифтами появляются). Подожду пока версию 25.

Я не вполне понял, что́ вы собираетесь ждать, но коль скоро ns-интерфейс, емнип, — вполне поддерживаемый апстримом, значит написать сообщение об ошибке в работе (display-graphic-p) можно и нужно (в случае, если не найдете, что оно уже написано, разумеется).

Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от Zmicier

Эх не привычна для меня «рамка») А так все дело в привычке, работая в консольке я обычно запускаю соответствующую версию emacs'a. А на счет ошибки, нужно выяснить где она проявляется и не исправлена ли она уже, т.е. протестировать Emacs 24.5.1 с NextStep и X.Org, Emacs 25.*, а так как ошибка уровня LowPriority, не вижу смысла делать это до релиза. А так да сообщение об ошибке отправлю если будет нужно.

clinic
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.