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. 41
      eaf.el

@ -324,7 +324,6 @@ A display function receives the initialized app buffer as
argument and defaults to `switch-to-buffer'.") argument and defaults to `switch-to-buffer'.")
(defvar-local eaf--bookmark-title nil)
(defvar eaf-app-bookmark-handlers-alist (defvar eaf-app-bookmark-handlers-alist
'(("browser" . eaf--browser-bookmark) '(("browser" . eaf--browser-bookmark)
("pdf-viewer" . eaf--pdf-viewer-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 A bookmark handler function is used as
`bookmark-make-record-function' and should follow its spec.") `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 () (defun eaf--bookmark-make-record ()
"Create a EAF bookmark. "Create a EAF bookmark.
@ -889,6 +903,11 @@ Use it as (eaf-bind-key var key eaf-app-keybinding)"
(interactive) (interactive)
(eaf-open "eaf-qutebrowser" "qutebrowser")) (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 ;;;###autoload
(defun eaf-open (url &optional app-name arguments) (defun eaf-open (url &optional app-name arguments)
"Open an EAF application with URL, optional APP-NAME and 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)) (recentf-add-file url))
(let* ((extension-name (file-name-extension url))) (let* ((extension-name (file-name-extension url)))
;; init app name, url and arguments ;; init app name, url and arguments
(setq app-name (setq app-name (eaf--get-app-for-extension extension-name))
(cond ((member extension-name eaf-pdf-extension-list) (when (equal app-name "markdown-previewer")
"pdf-viewer")
((member extension-name eaf-markdown-extension-list)
;; Try get user's github token if `eaf-grip-token' is nil. ;; Try get user's github token if `eaf-grip-token' is nil.
(setq arguments (setq arguments
(or eaf-grip-token (or eaf-grip-token
(read-string "Fill your own github token (or set `eaf-grip-token' with token string): "))) (read-string "Fill your own github token (or set `eaf-grip-token' with token string): "))))
"markdown-previewer") (when (equal app-name "browser")
((member extension-name eaf-image-extension-list) (setq url (concat "file://" url)))))
"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")))))
(unless arguments (setq arguments "")) (unless arguments (setq arguments ""))
;; hooks are only added if not present already... ;; hooks are only added if not present already...
(add-hook 'window-size-change-functions #'eaf-monitor-window-size-change) (add-hook 'window-size-change-functions #'eaf-monitor-window-size-change)

Loading…
Cancel
Save