我使用ERC和好bitlbee管理在Emacs我聊天会话启动OS级别的焦点。它出色地工作,只有一个小缺失功能 - 当Emacs没有焦点时发出警报。如何找出如果当前帧具有在Emacs
理想我不得不当我发了消息并聊天缓冲埋或Emacs本身不具有输入焦点的应用程序的操作系统级警报(低吼或其他)。我有第一个工作正常,但如果我能找到一种方法来确定Emacs本身是否具有输入焦点,那么我就会发现这个问题。
我能找到最近的是帧可见P,但只告诉你,如果帧被最小化或没有。
任何帮助非常赞赏 - 谢谢!
我使用ERC和好bitlbee管理在Emacs我聊天会话启动OS级别的焦点。它出色地工作,只有一个小缺失功能 - 当Emacs没有焦点时发出警报。如何找出如果当前帧具有在Emacs
理想我不得不当我发了消息并聊天缓冲埋或Emacs本身不具有输入焦点的应用程序的操作系统级警报(低吼或其他)。我有第一个工作正常,但如果我能找到一种方法来确定Emacs本身是否具有输入焦点,那么我就会发现这个问题。
我能找到最近的是帧可见P,但只告诉你,如果帧被最小化或没有。
任何帮助非常赞赏 - 谢谢!
您可以尝试投票,一个计时器,并检查了switch-frame
事件。可能或可能不工作。请参阅Elisp手册,节点Focus Events
。
您可以运行一个外部命令。这让你活动窗口的名称与xdotool
(defun get-active-window-title()
(let ((command-result
(shell-command-to-string
(concat "xdotool getwindowname "
(shell-command-to-string
"xdotool getactivewindow")))))
(substring
command-result
0 (1- (length command-result)))))
嗯,我认为,只有当你切换到另一个Emacs框架,而不是完全的另一个窗口触发一个事件。当然,这就是快速测试的结果,它似乎在文档中表现得如此之多。还是)感谢你的建议! – bbbscarter 2012-01-10 13:23:59