Commit 78ae3cb8 authored by Matthew Zeng's avatar Matthew Zeng
Browse files

EAF Browser: New option eaf-browser-continue-where-left-off



Similar to Chromium's Setting -> On start-up -> Continue where you left off.

If non-nil, all active EAF Browser buffers will be saved before Emacs is killed,
and will re-open them when calling `eaf-browser-restore-buffers' in the future session.

Signed-off-by: default avatarMingde (Matthew) Zeng <matthewzmd@gmail.com>
parent 9f8f1701
Loading
Loading
Loading
Loading
+44 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
;; Copyright (C) 2018, Andy Stewart, all rights reserved.
;; Created: 2018-06-15 14:10:12
;; Version: 0.5
;; Last-Updated: Fri Jun 12 19:49:06 2020 (-0400)
;; Last-Updated: Fri Jun 12 23:26:00 2020 (-0400)
;;           By: Mingde (Matthew) Zeng
;; URL: http://www.emacswiki.org/emacs/download/eaf.el
;; Keywords:
@@ -651,6 +651,12 @@ Try not to modify this alist directly. Use `eaf-setq' to modify instead."
  "An alist regex mapping a MUA `major-mode' to a function to retrieve HTML part of a mail."
  :type 'alist)

(defcustom eaf-browser-continue-where-left-off nil
  "Similar to Chromium's Setting -> On start-up -> Continue where you left off.

If non-nil, all active EAF Browser buffers will be saved before Emacs is killed,
and will re-open them when calling `eaf-browser-restore-buffers' in the future session."
  :type 'boolean)

(defcustom eaf-proxy-host ""
  "Proxy Host used by EAF Browser."
@@ -739,13 +745,36 @@ Python process only create application view when Emacs window or buffer state ch
(defvar eaf-buffer-title-format "%s")

(defvar eaf-pdf-outline-buffer-name "*eaf pdf outline*"
  "The name of pdf-outline-buffer")
  "The name of pdf-outline-buffer.")

(defvar eaf-pdf-outline-window-configuration nil
  "Save window configure before popup outline buffer.")

(defvar-local eaf--bookmark-title nil)

(defun eaf-browser-restore-buffers ()
  "EAF restore all opened EAF Browser buffers in the previous Emacs session.

This should be used after setting `eaf-browser-continue-where-left-off' to t."
  (interactive)
  (if eaf-browser-continue-where-left-off
      (let* ((browser-restore-file-path
              (concat eaf-config-location
                      (file-name-as-directory "browser")
                      (file-name-as-directory "history")
                      "restore.txt"))
             (browser-url-list
              (with-temp-buffer (insert-file-contents browser-restore-file-path)
                                (split-string (buffer-string) "\n" t))))
        (if (process-live-p eaf-process)
            (dolist (url browser-url-list)
              (eaf-open-browser url))
          (dolist (url browser-url-list)
            (push `(,url "browser" "") eaf--active-buffers))
          (eaf-open-browser (nth 0 (car eaf--active-buffers)))))
    (user-error "Please set `eaf-browser-continue-where-left-off' to t first!")))


(defun eaf--bookmark-make-record ()
  "Create a EAF bookmark.

@@ -1103,6 +1132,19 @@ to edit EAF keybindings!" fun fun)))
(defun eaf--monitor-emacs-kill ()
  "Function monitoring when Emacs is killed, kill all EAF buffers."
  (ignore-errors
    (when eaf-browser-continue-where-left-off
      (let* ((browser-restore-file-path
              (concat eaf-config-location
                      (file-name-as-directory "browser")
                      (file-name-as-directory "history")
                      "restore.txt"))
             (browser-urls ""))
        (write-region
         (dolist (buffer (buffer-list) browser-urls)
           (set-buffer buffer)
           (when (and (derived-mode-p 'eaf-mode) (equal eaf--buffer-app-name "browser"))
             (setq browser-urls (concat eaf--buffer-url "\n" browser-urls))))
         nil browser-restore-file-path)))
    (eaf-call "kill_emacs")))

(defun eaf--org-preview-monitor-kill ()