Mercurial > emacs
changeset 97572:9fb28094a3cf
* net/xesam.el (xesam-highlight-string): Precise doc string.
(xesam-highlight-buffer): New defun.
(xesam-refresh-entry): Use it. Better check for sourceModified.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Wed, 20 Aug 2008 20:08:16 +0000 |
parents | c532aa80972d |
children | 95b685a816d7 |
files | lisp/net/xesam.el |
diffstat | 1 files changed, 23 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/net/xesam.el Wed Aug 20 17:53:23 2008 +0000 +++ b/lisp/net/xesam.el Wed Aug 20 20:08:16 2008 +0000 @@ -494,7 +494,8 @@ (format "*%s/%s*" service search)) (defun xesam-highlight-string (string) - "Highlight text enclosed by <b> and </b>." + "Highlight text enclosed by <b> and </b>. +Return propertized STRING." (while (string-match "\\(.*\\)\\(<b>\\)\\(.*\\)\\(</b>\\)\\(.*\\)" string) (setq string (format @@ -504,6 +505,18 @@ (match-string 5 string)))) string) +(defun xesam-highlight-buffer (regexp &optional buffer) + "Highlight text matching REGEXP in BUFFER. +If BUFFER is nil, use the current buffer" + (with-current-buffer (or buffer (current-buffer)) + (save-excursion + (let ((case-fold-search t)) + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (overlay-put + (make-overlay + (match-beginning 0) (match-end 0)) 'face 'xesam-highlight)))))) + (defun xesam-refresh-entry (engine entry) "Refreshes one entry in the search buffer." (let* ((result (nth (1- xesam-current) xesam-objects)) @@ -557,7 +570,10 @@ widget :tag (xesam-highlight-string (widget-get widget :tag)))) ;; Last Modified. - (when (widget-member widget :xesam:sourceModified) + (when (and (widget-member widget :xesam:sourceModified) + (not + (zerop + (string-to-number (widget-get widget :xesam:sourceModified))))) (widget-put widget :tag (format @@ -589,8 +605,10 @@ (widget-put widget :notify (lambda (widget &rest ignore) - (find-file - (url-filename (url-generic-parse-url (widget-value widget)))))) + (let ((query xesam-query)) + (find-file + (url-filename (url-generic-parse-url (widget-value widget)))) + (xesam-highlight-buffer (regexp-opt (split-string query nil t)))))) (widget-put widget :value (url-filename (url-generic-parse-url (widget-get widget :xesam:url)))))) @@ -837,6 +855,7 @@ ;;; TODO: +;; * Buffer highlighting needs better analysis of query string. ;; * Accept input while retrieving prefetched hits. `run-at-time'? ;; * With prefix, let's choose search engine. ;; * Minibuffer completion for user queries.