diff options
Diffstat (limited to 'hmm.el')
| -rw-r--r-- | hmm.el | 36 | 
1 files changed, 17 insertions, 19 deletions
| @@ -17,25 +17,23 @@            (format ,(plist-get engine :format) query)))         (hmm-add-handler '(:command ,function-name) :query)))) -(defmacro hmm-define-external-xdg-handler (xdg-handler) +(defmacro hmm-define-external-handler (handler)    (let* ((description (format "%s - %s" -                              (plist-get xdg-handler :name) -                              (plist-get xdg-handler :description))) -         (function-name (intern -                         (format "hmm-%s" -                                 (plist-get xdg-handler :xdg-desktop-name)))) +                              (plist-get handler :display-name) +                              (plist-get handler :description))) +         (function-name (intern (format "hmm-%s" (plist-get handler :name)))) +         (display-name (plist-get handler :display-name))           (external-command            (mapcar (lambda (token)                      (if (string-match "^%[fFuU]$" token)                          `arg                        token)) -                  (split-string (plist-get xdg-handler :external-command)))) -         (name (plist-get xdg-handler :name)) -         (handler (plist-put xdg-handler :command function-name))) +                  (split-string (plist-get handler :external-command)))) +         (handler (plist-put handler :command function-name)))      `(progn         (defun ,function-name (arg)           ,description -         (interactive ,(format "sRun %s with: " name)) +         (interactive ,(format "sRun %s with: " display-name))           (apply 'start-process                  (append                   (list (format ,(format "%s-%%s" function-name) arg) @@ -129,10 +127,9 @@ If it is a url, display a list of url handlers."        (lambda (handler)          (and           (hmm-thing-match thing type handler) -         (or (member mimetype  -                     (plist-get handler :mimetypes)) -             (and (null (plist-get handler :mimetypes)) -                  (not (plist-get handler :xdg-desktop-name)))))) +         (or (null (plist-get handler :mimetypes)) +             (member mimetype  +                     (plist-get handler :mimetypes)))))        (plist-get hmm-handlers type)))))  (defun hmm-thing-match (thing type handler) @@ -160,7 +157,7 @@ If it is a url, display a list of url handlers."      (dolist (browser hmm-web-browsers)        (eval `(hmm-define-web-search-engine ,engine ,browser))))    (dolist (xdg-handler (hmm-get-xdg-handlers)) -    (eval `(hmm-define-external-xdg-handler ,xdg-handler))) +    (eval `(hmm-define-external-handler ,xdg-handler)))    (dolist (browser hmm-web-browsers)      (hmm-add-handler       (list :command (plist-get browser :command) @@ -169,16 +166,17 @@ If it is a url, display a list of url handlers."  (defun hmm-get-xdg-handlers ()    (seq-filter -   'identity +   (lambda (handler) +     (and handler (plist-get handler :mimetypes)))     (mapcar      (lambda (desktop-file)        (condition-case nil            (let ((parsed (xdg-desktop-read-file desktop-file)))              (list -             :name (gethash "Name" parsed) +             :name (intern (concat "xdg-desktop-" +                                   (file-name-base desktop-file))) +             :display-name (gethash "Name" parsed)               :description (gethash "Comment" parsed) -             :xdg-desktop-name (intern (concat "xdg-desktop-" -                                               (file-name-base desktop-file)))               :external-command (gethash "Exec" parsed)               :mimetypes (seq-filter (lambda (s) (not (string-empty-p s)))                                      (split-string (gethash "MimeType" parsed) ";")))) | 
