Add extension config variable and use it to get app for extension

master
Clemens Radermacher 6 years ago
parent 7b9aa8a16b
commit cae6ecb6bb
No known key found for this signature in database
GPG Key ID: ADEDCAC15E317EA0
  1. 47
      eaf.el

@ -324,7 +324,6 @@ A display function receives the initialized app buffer as
argument and defaults to `switch-to-buffer'.")
(defvar-local eaf--bookmark-title nil)
(defvar eaf-app-bookmark-handlers-alist
'(("browser" . eaf--browser-bookmark)
("pdf-viewer" . eaf--pdf-viewer-bookmark))
@ -333,6 +332,21 @@ argument and defaults to `switch-to-buffer'.")
A bookmark handler function is used as
`bookmark-make-record-function' and should follow its spec.")
(defvar eaf-app-extensions-alist
'(("pdf-viewer" . eaf-pdf-extension-list)
("markdown-previewer" . eaf-markdown-extension-list)
("image-viewer" . eaf-image-extension-list)
("video-player" . eaf-video-extension-list)
("browser" . eaf-browser-extension-list)
("org-previewer" . eaf-org-extension-list))
"Mapping app names to extension list variables.
A new app can use this to configure extensions which should
handled by it.")
(defvar-local eaf--bookmark-title nil)
(defun eaf--bookmark-make-record ()
"Create a EAF bookmark.
@ -889,6 +903,11 @@ Use it as (eaf-bind-key var key eaf-app-keybinding)"
(interactive)
(eaf-open "eaf-qutebrowser" "qutebrowser"))
(defun eaf--get-app-for-extension (extension-name)
(cl-loop for (app . ext) in eaf-app-extensions-alist
if (member extension-name (symbol-value ext))
return app))
;;;###autoload
(defun eaf-open (url &optional app-name arguments)
"Open an EAF application with URL, optional APP-NAME and ARGUMENTS.
@ -902,24 +921,14 @@ When called interactively, URL accepts a file that can be opened by EAF."
(recentf-add-file url))
(let* ((extension-name (file-name-extension url)))
;; init app name, url and arguments
(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): ")))
"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)
"org-previewer")))))
(setq app-name (eaf--get-app-for-extension extension-name))
(when (equal app-name "markdown-previewer")
;; 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): "))))
(when (equal app-name "browser")
(setq url (concat "file://" url)))))
(unless arguments (setq arguments ""))
;; hooks are only added if not present already...
(add-hook 'window-size-change-functions #'eaf-monitor-window-size-change)

Loading…
Cancel
Save