こんにちは、ウィンドウ フォーカスが失われたときに Emacs のファイルを保存する Python プログラムを作成しようとしています。
そのために、完全な gtk アプリケーションを作成し、wnck モジュールを使用する Python プログラムを作成しました。
from Pymacs import lisp
import wnck
import gtk
class AutoSaver(object):
"""This class watches if Emacs looses focus and if Emacs looses
focus saves all buffers with files
"""
def __init__(self):
"""
"""
self.screen = wnck.screen_get_default()
self.screen.force_update()
self.screen.connect("active_window_changed", self.watch_for_emacs)
def watch_for_emacs(self, screen, data=None):
screen.force_update()
win_list = screen.get_windows()
for win in win_list:
if win.get_application().get_name().startswith("emacs"):
self.save_all_buffers()
def save_all_buffers(self):
lisp.save_some_buffers(True, None)
def main(self):
"""
Starts GTK's main loop.
"""
gtk.main()
def start():
autosaver = AutoSaver()
autosaver.main()
start.interaction = ''
残念ながら、Python プログラムは Emacs をフリーズさせます。おそらく、Emacs がプログラムの終了を待っているためです。プログラムをバックグラウンドで実行させる方法はありますか?
どんな助けでも本当に感謝しています。