diff --git a/eaf.el b/eaf.el index 513487c..a108fc5 100644 --- a/eaf.el +++ b/eaf.el @@ -809,37 +809,38 @@ When called interactively, URL accepts a file that can be opened by EAF." ;; Try to set app-name along with url if app-name is unset. (when (and (not app-name) (file-exists-p url)) (setq url (expand-file-name url)) - (setq extension-name (file-name-extension url)) - (cond ((member extension-name eaf-pdf-extension-list) - (setq app-name "pdf-viewer")) - ((member extension-name eaf-markdown-extension-list) - ;; Try get user's github token if `eaf-grip-token' is nil. - (if eaf-grip-token - (setq arguments eaf-grip-token) - (setq arguments (read-string "Fill your own github token (or set `eaf-grip-token' with token string): "))) - ;; Split window to show file and previewer. - (eaf-split-preview-windows) - (setq app-name "markdown-previewer")) - ((member extension-name eaf-image-extension-list) - (setq app-name "image-viewer")) - ((member extension-name eaf-video-extension-list) - (setq app-name "video-player")) - ((member extension-name eaf-browser-extension-list) - (setq url (concat "file://" url)) - (setq app-name "browser")) - ((member extension-name eaf-org-extension-list) - ;; Find file first, because `find-file' will trigger `kill-buffer' operation. - (save-excursion - (find-file url) - (with-current-buffer (buffer-name) - (org-html-export-to-html))) - ;; Add file name to `eaf-org-file-list' after command `find-file'. - - (unless (member url eaf-org-file-list) - (push url eaf-org-file-list)) - ;; Split window to show file and previewer. - (eaf-split-preview-windows) - (setq app-name "org-previewer")))) + (let* ((extension-name (file-name-extension url))) + (setq app-name + (cond ((member extension-name eaf-pdf-extension-list) + "pdf-viewer") + ((member extension-name eaf-markdown-extension-list) + ;; Try get user's github token if `eaf-grip-token' is nil. + (setq arguments + (or eaf-grip-token + (read-string "Fill your own github token (or set `eaf-grip-token' with token string): "))) + ;; Split window to show file and previewer. + (eaf-split-preview-windows url) + "markdown-previewer") + ((member extension-name eaf-image-extension-list) + "image-viewer") + ((member extension-name eaf-video-extension-list) + "video-player") + ((member extension-name eaf-browser-extension-list) + (setq url (concat "file://" url)) + "browser") + ((member extension-name eaf-org-extension-list) + ;; Find file first, because `find-file' will trigger `kill-buffer' operation. + (save-excursion + (find-file url) + (with-current-buffer (buffer-name) ;FIXME: Why? + (org-html-export-to-html))) + ;; Add file name to `eaf-org-file-list' after command `find-file'. + + (unless (member url eaf-org-file-list) + (push url eaf-org-file-list)) + ;; Split window to show file and previewer. + (eaf-split-preview-windows url) + "org-previewer"))))) (unless arguments (setq arguments "")) ;; Now that app-name should hopefully be set (if app-name @@ -867,14 +868,16 @@ When called interactively, URL accepts a file that can be opened by EAF." (eaf-start-process) (message "Opening %s with EAF-%s..." url app-name)) ;; Output something to user if app-name is empty string. - (if (or (string-prefix-p "/" url) - (string-prefix-p "~" url)) - (if (not (file-exists-p url)) - (message (format "EAF: %s does not exist." url)) - (message (format "EAF doesn't know how to open %s." url))) - (message (format "EAF doesn't know how to open %s." url))))) - -(defun eaf-split-preview-windows () + (message (cond + ((not (or (string-prefix-p "/" url) + (string-prefix-p "~" url))) + "EAF doesn't know how to open %s.") + ((file-exists-p url) + "EAF doesn't know how to open %s.") + (t "EAF: %s does not exist.")) + url))) + +(defun eaf-split-preview-windows (url) (delete-other-windows) (find-file url) (split-window-horizontally)