[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v |
Date: |
Sun, 10 Aug 2008 19:35:39 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Michael Albinus <albinus> 08/08/10 19:35:39
Index: xesam.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/net/xesam.el,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- xesam.el 10 Aug 2008 00:32:57 -0000 1.7
+++ xesam.el 10 Aug 2008 19:35:39 -0000 1.8
@@ -22,7 +22,7 @@
;;; Commentary:
-;; This package provides an interface to the Xesam, a D-Bus based "eXtEnsible
+;; This package provides an interface to Xesam, a D-Bus based "eXtEnsible
;; Search And Metadata specification". It has been tested with
;;
;; xesam-glib 0.3.4, xesam-tools 0.6.1
@@ -32,7 +32,7 @@
;; The precondition for this package is a D-Bus aware Emacs. This is
;; configured per default, when Emacs is built on a machine running
;; D-Bus. Furthermore, there must be at least one search engine
-;; running, which support the Xesam interface. Beagle and strigi have
+;; running, which supports the Xesam interface. Beagle and strigi have
;; been tested; tracker, pinot and recoll are also said to support
;; Xesam. You can check the existence of such a search engine by
;;
@@ -380,17 +380,22 @@
;; That is not the case now, so we set it ourselves.
;; Hopefully, this will change later.
(setq hit-fields
- (cond
- ((string-equal vendor-id "Beagle")
+ (case (intern vendor-id)
+ ('Beagle
'("xesam:mimeType" "xesam:url"))
- ((string-equal vendor-id "Strigi")
+ ('Strigi
'("xesam:author" "xesam:cc" "xesam:charset"
- "xesam:contentType" "xesam:fileExtension" "xesam:id"
- "xesam:lineCount" "xesam:links" "xesam:mimeType" "xesam:name"
- "xesam:size" "xesam:sourceModified" "xesam:subject"
- "xesam:to" "xesam:url"))
- ((string-equal vendor-id "TrackerXesamSession")
+ "xesam:contentType" "xesam:fileExtension"
+ "xesam:id" "xesam:lineCount" "xesam:links"
+ "xesam:mimeType" "xesam:name" "xesam:size"
+ "xesam:sourceModified" "xesam:subject" "xesam:to"
+ "xesam:url"))
+ ('TrackerXesamSession
'("xesam:relevancyRating" "xesam:url"))
+ ('Debbugs
+ '("xesam:keyword" "xesam:owner" "xesam:title"
+ "xesam:url" "xesam:sourceModified" "xesam:mimeType"
+ "debbugs:key"))
;; xesam-tools yahoo service.
(t '("xesam:contentModified" "xesam:mimeType" "xesam:summary"
"xesam:title" "xesam:url" "yahoo:displayUrl"))))
@@ -560,6 +565,39 @@
(string-equal "text/html" (widget-get widget :xesam:mimeType)))
(setcar widget 'url-link))
+ ;; Debbugs hits shall be displayed.
+ ((and (widget-member widget :xesam:mimeType)
+ (string-equal "application/x-debbugs"
+ (widget-get widget :xesam:mimeType)))
+ (widget-put
+ widget :notify
+ '(lambda (widget &rest ignore)
+ ;; We toggle. If there are already children, we delete them.
+ (if (widget-get widget :children)
+ (widget-children-value-delete widget)
+
+ ;; No children. Let's display the messages.
+ (widget-end-of-line)
+ ;; Get hit data. Loop over results.
+ (dolist (data
+ ;; "GetHitData" returns a list. But we have
+ ;; requested just one element only.
+ (car
+ (xesam-dbus-call-method
+ :session (car xesam-engine) xesam-path-search
+ xesam-interface-search "GetHitData" xesam-search
+ (list (widget-get widget :debbugs:key))
+ '("debbugs:key"))))
+ (let ((child
+ (widget-create-child-and-convert
+ ;; The result is a variant. So we must apply `car'.
+ widget '(link) :format "\n%h" :doc (car data))))
+ ;; Add child to parent's list. Needed, in order to be
+ ;; able to delete it next toggle.
+ (widget-put
+ widget
+ :children (cons child (widget-get widget :children)))))))))
+
;; For local files, we will open the file as default action.
((string-match "file"
(url-type (url-generic-parse-url
@@ -654,6 +692,12 @@
(- (min (+ xesam-hits-per-page xesam-to) xesam-count)
(length xesam-objects))))))
+ ;; Add "DONE" widget.
+ (when (= xesam-current xesam-count)
+ (goto-char (point-max))
+ (widget-create 'link :notify 'ignore "DONE")
+ (widget-beginning-of-line))
+
;; Return with save settings.
(setq xesam-refreshing nil)))))
@@ -762,6 +806,7 @@
;; Return search id.
search))
+;;;###autoload
(defun xesam-search (engine query)
"Perform an interactive search.
ENGINE is the Xesam search engine to be applied, it must be one of the
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/01
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/05
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Glenn Morris, 2008/08/09
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v,
Michael Albinus <=
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/14
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/17
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/22
- [Emacs-diffs] Changes to emacs/lisp/net/xesam.el,v, Michael Albinus, 2008/08/28