From dc49577117347818d99a87c0bace4e9ef21208ff Mon Sep 17 00:00:00 2001 From: Matthew Mingde Zeng Date: Sun, 22 Dec 2019 02:46:37 -0500 Subject: [PATCH] Add eaf--monitor-emacs-kill and add -- prefixes --- eaf.el | 27 ++++++++++++++++----------- eaf.py | 9 +++++++++ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/eaf.el b/eaf.el index 31c9aa4..8336d97 100644 --- a/eaf.el +++ b/eaf.el @@ -7,7 +7,7 @@ ;; Copyright (C) 2018, Andy Stewart, all rights reserved. ;; Created: 2018-06-15 14:10:12 ;; Version: 0.5 -;; Last-Updated: Sun Dec 22 01:08:16 2019 (-0500) +;; Last-Updated: Sun Dec 22 02:45:06 2019 (-0500) ;; By: Mingde (Matthew) Zeng ;; URL: http://www.emacswiki.org/emacs/download/eaf.el ;; Keywords: @@ -143,7 +143,8 @@ been initialized." (default-value 'emulation-mode-map-alists)) (push (list (cons t eaf-mode-map)) emulation-mode-map-alists) - (add-hook 'kill-buffer-hook #'eaf-monitor-buffer-kill nil t)) + (add-hook 'kill-buffer-hook #'eaf--monitor-buffer-kill nil t) + (add-hook 'kill-emacs-hook #'eaf--monitor-emacs-kill)) (defvar eaf-python-file (expand-file-name "eaf.py" (file-name-directory load-file-name))) @@ -449,7 +450,7 @@ For now only EAF browser app is supported." ;; Clean `eaf-org-file-list' and `eaf-org-killed-file-list'. (dolist (org-file-name eaf-org-file-list) - (eaf-delete-org-preview-file org-file-name)) + (eaf--delete-org-preview-file org-file-name)) (setq eaf-org-file-list nil) (setq eaf-org-killed-file-list nil) @@ -614,23 +615,27 @@ to edit EAF keybindings!" fun fun))) (eaf-call "update_views" (mapconcat #'identity view-infos ",")) )))) -(defun eaf-delete-org-preview-file (org-file) +(defun eaf--delete-org-preview-file (org-file) (let ((org-html-file (concat (file-name-sans-extension org-file) ".html"))) (when (file-exists-p org-html-file) (delete-file org-html-file) (message "[EAF] Cleaned org-preview file %s (%s)." org-html-file org-file)))) -(defun eaf-org-killed-buffer-clean () +(defun eaf--org-killed-buffer-clean () (dolist (org-killed-buffer eaf-org-killed-file-list) (unless (get-file-buffer org-killed-buffer) (setq eaf-org-file-list (remove org-killed-buffer eaf-org-file-list)) - (eaf-delete-org-preview-file org-killed-buffer))) + (eaf--delete-org-preview-file org-killed-buffer))) (setq eaf-org-killed-file-list nil)) -(defun eaf-monitor-buffer-kill () - (ignore-errors - (eaf-call "kill_buffer" eaf--buffer-id) - (message "[EAF] Killed %s." eaf--buffer-id))) +(defun eaf--monitor-buffer-kill () + "Function monitoring when an EAF buffer is killed." + (eaf-call "kill_buffer" eaf--buffer-id) + (message "[EAF] Killed %s." eaf--buffer-id)) + +(defun eaf--monitor-emacs-kill () + "Function monitoring when Emacs is killed, kill all EAF buffers." + (eaf-call "kill_emacs")) (defun eaf--org-preview-monitor-kill () ;; NOTE: @@ -640,7 +645,7 @@ to edit EAF keybindings!" fun fun))) (when (member (buffer-file-name) eaf-org-file-list) (unless (member (buffer-file-name) eaf-org-killed-file-list) (push (buffer-file-name) eaf-org-killed-file-list)) - (run-with-timer 1 nil (lambda () (eaf-org-killed-buffer-clean))))) + (run-with-timer 1 nil (lambda () (eaf--org-killed-buffer-clean))))) (defun eaf--org-preview-monitor-buffer-save () diff --git a/eaf.py b/eaf.py index ea976fe..4b34637 100755 --- a/eaf.py +++ b/eaf.py @@ -222,6 +222,15 @@ class EAF(dbus.service.Object): else: buffer.buffer_widget.resize(emacs_width, emacs_height) + @dbus.service.method(EAF_DBUS_NAME, in_signature="", out_signature="") + def kill_emacs(self): + tmp_buffer_dict = {} + for buffer_id in self.buffer_dict: + tmp_buffer_dict[buffer_id] = self.buffer_dict[buffer_id] + + for buffer_id in tmp_buffer_dict: + self.kill_buffer(buffer_id) + @dbus.service.method(EAF_DBUS_NAME, in_signature="s", out_signature="") def kill_buffer(self, buffer_id): # Kill all view base on buffer_id.