mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-28 19:42:02 +00:00
* net/xesam.el (xesam-highlight-string): Precise doc string.
(xesam-highlight-buffer): New defun. (xesam-refresh-entry): Use it. Better check for sourceModified.
This commit is contained in:
parent
b8c63ae9ed
commit
f7a17e30c8
@ -1,3 +1,9 @@
|
||||
2008-08-20 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/xesam.el (xesam-highlight-string): Precise doc string.
|
||||
(xesam-highlight-buffer): New defun.
|
||||
(xesam-refresh-entry): Use it. Better check for sourceModified.
|
||||
|
||||
2008-08-19 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* edmacro.el (edmacro-parse-keys): Catch events with spaces in
|
||||
|
@ -494,7 +494,8 @@ SEARCH is the search identification in that engine. Both must be strings."
|
||||
(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 @@ SEARCH is the search identification in that engine. Both must be strings."
|
||||
(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 @@ SEARCH is the search identification in that engine. Both must be strings."
|
||||
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 @@ SEARCH is the search identification in that engine. Both must be strings."
|
||||
(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 @@ Example:
|
||||
|
||||
;;; 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.
|
||||
|
Loading…
Reference in New Issue
Block a user