[Refdb-cvs] CVS: elisp refdb-mode.el,1.9,1.10
Status: Beta
Brought to you by:
mhoenicka
From: Markus H. <mho...@us...> - 2005-05-17 21:08:40
|
Update of /cvsroot/refdb/elisp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23326 Modified Files: refdb-mode.el Log Message: added regexp search Index: refdb-mode.el =================================================================== RCS file: /cvsroot/refdb/elisp/refdb-mode.el,v retrieving revision 1.9 retrieving revision 1.10 diff -u -U2 -r1.9 -r1.10 --- refdb-mode.el 8 May 2005 00:11:53 -0000 1.9 +++ refdb-mode.el 17 May 2005 21:08:31 -0000 1.10 @@ -595,4 +595,11 @@ ) +(defvar refdb-getref-by-author-regexp-menu-item + ["Author (regexp)..." + (call-interactively 'refdb-getref-by-author-regexp) + t] + "RefDB getref-by-author-regexp menu item." + ) + (defvar refdb-getref-by-title-menu-item ["Title..." @@ -602,4 +609,11 @@ ) +(defvar refdb-getref-by-title-regexp-menu-item + ["Title (regexp)..." + (call-interactively 'refdb-getref-by-title-regexp) + t] + "RefDB getref-by-title-regexp menu item." + ) + (defvar refdb-getref-by-keyword-menu-item ["Keyword..." @@ -609,4 +623,11 @@ ) +(defvar refdb-getref-by-keyword-regexp-menu-item + ["Keyword (regexp)..." + (call-interactively 'refdb-getref-by-keyword-regexp) + t] + "RefDB getref-by-keyword menu item." + ) + (defvar refdb-getref-by-id-menu-item ["ID..." @@ -910,20 +931,22 @@ ) -(defun refdb-message-getting-refs (field value) +(defun refdb-message-getting-refs (field mode value) "Emit appropriate status message for FIELD and VALUE. This function is called by the various refdb-getref-by commands." (message - "Getting datasets for %s %s ..." + "Getting datasets for %s %s %s ..." field + mode value ) ) -(defun refdb-message-getting-refs-done (field value) +(defun refdb-message-getting-refs-done (field mode value) "Emit appropriate status message for FIELD and VALUE. This function is called by the various refdb-getref-by commands." (message - "Getting datasets for %s %s...done" + "Getting datasets for %s %s %s...done" field + mode value ) @@ -954,5 +977,69 @@ (shell-command (format - "%s %s -C getref :%s:=%s %s -d %s -t %s -s %s" + "%s %s -C getref :%s:='%s' %s -d %s -t %s -s %s" + refdb-refdbc-program + refdb-refdbc-options + field + value + refdb-getref-options + refdb-database + refdb-data-output-type + formatstring + ) + "*refdb-output*" "*refdb-messages*") + ;; else if no db specified, prompt to select from available dbs and + ;; then call `refdb-getref-by-field' with same values + (progn + (call-interactively 'refdb-select-database) + (refdb-getref-by-field field value) + ) + ) + (message + (format + "Displaying output for '%s %s -C getref :%s:='%s' %s -d %s -t %s -s %s'...done" + refdb-refdbc-program + refdb-refdbc-options + field + value + refdb-getref-options + refdb-database + refdb-data-output-type + formatstring + ) + ) + (pop-to-buffer "*refdb-output*") + (if (not refdb-split-for-getref-output-flag) + (delete-other-windows) + ) + (refdb-output-buffer-choose-mode) + (and (boundp 'refdb-mode) refdb-mode) + (setq resize-mini-windows resize-mini-windows-default) + ) + ) + +(defun refdb-getref-by-field-regexp (field value) + "Display all RefDB datasets that match the specified FIELD and VALUE (regular expression). You shouldn't call this function directly. Instead call, e.g., +`refdb-getref-by-author'." + ;; temporarily set resize-mini-windows to nil to force Emacs to show + ;; output in separate buffer instead of minibuffer + (setq resize-mini-windows-default resize-mini-windows) + (setq resize-mini-windows nil) + (let ((formatstring + (if (equal refdb-data-output-format 'more) + (format "\\\"%s\\\"" + ;; turn list of symbols into one big string + (mapconcat + 'symbol-name + refdb-data-output-additional-fields + " " + ) + ) + (upcase (symbol-name refdb-data-output-format)) + ) + )) + (if (not (eq (length refdb-database) 0)) + (shell-command + (format + "%s %s -C getref :%s:~'%s' %s -d %s -t %s -s %s" refdb-refdbc-program refdb-refdbc-options @@ -974,5 +1061,5 @@ (message (format - "Displaying output for '%s %s -C getref :%s:=%s %s -d %s -t %s -s %s'...done" + "Displaying output for '%s %s -C getref :%s:~'%s' %s -d %s -t %s -s %s'...done" refdb-refdbc-program refdb-refdbc-options @@ -1034,7 +1121,15 @@ "Display all RefDB datasets matching AUTHOR." (interactive (list (read-string (format "Author: ")))) - (refdb-message-getting-refs 'author author) + (refdb-message-getting-refs 'author "=" author) (refdb-getref-by-field "AU" author) - (refdb-message-getting-refs-done 'author author) + (refdb-message-getting-refs-done 'author "=" author) + ) + +(defun refdb-getref-by-author-regexp (author) + "Display all RefDB datasets regexp-matching AUTHOR." + (interactive (list (read-string (format "Author: ")))) + (refdb-message-getting-refs 'author "like" author) + (refdb-getref-by-field-regexp "AU" author) + (refdb-message-getting-refs-done 'author "like" author) ) @@ -1042,7 +1137,15 @@ "Display all RefDB datasets matching TITLE." (interactive (list (read-string (format "Title: ")))) - (refdb-message-getting-refs 'title title) + (refdb-message-getting-refs 'title "=" title) (refdb-getref-by-field "TI" title) - (refdb-message-getting-refs-done 'title title) + (refdb-message-getting-refs-done 'title "=" title) + ) + +(defun refdb-getref-by-title-regexp (title) + "Display all RefDB datasets regexp-matching TITLE." + (interactive (list (read-string (format "Title: ")))) + (refdb-message-getting-refs 'title "like" title) + (refdb-getref-by-field-regexp "TI" title) + (refdb-message-getting-refs-done 'title "like" title) ) @@ -1050,7 +1153,15 @@ "Display all RefDB datasets matching KEYWORD." (interactive (list (read-string (format "Keyword: ")))) - (refdb-message-getting-refs 'keyword keyword) + (refdb-message-getting-refs 'keyword "=" keyword) (refdb-getref-by-field "KW" keyword) - (refdb-message-getting-refs-done 'keyword keyword) + (refdb-message-getting-refs-done 'keyword "=" keyword) + ) + +(defun refdb-getref-by-keyword-regexp (keyword) + "Display all RefDB datasets regexp-matching KEYWORD." + (interactive (list (read-string (format "Keyword: ")))) + (refdb-message-getting-refs 'keyword "like" keyword) + (refdb-getref-by-field-regexp "KW" keyword) + (refdb-message-getting-refs-done 'keyword "like" keyword) ) @@ -1058,7 +1169,7 @@ "Display all RefDB datasets matching ID." (interactive (list (read-string (format "ID: ")))) - (refdb-message-getting-refs 'id id) + (refdb-message-getting-refs 'id "=" id) (refdb-getref-by-field "ID" id) - (refdb-message-getting-refs-done 'id id) + (refdb-message-getting-refs-done 'id "=" id) ) @@ -1066,7 +1177,7 @@ "Display all RefDB datasets matching CITEKEY." (interactive (list (read-string (format "Citation Key: ")))) - (refdb-message-getting-refs 'citekey citekey) + (refdb-message-getting-refs 'citekey "=" citekey) (refdb-getref-by-field "CK" citekey) - (refdb-message-getting-refs-done 'citekey citekey) + (refdb-message-getting-refs-done 'citekey "=" citekey) ) @@ -1107,5 +1218,5 @@ ) ;; else if no db specified, prompt to select from available dbs and - ;; then call `refdb-getref-by-field' with same values + ;; then call `refdb-getref-by-advanced-search' with same values (progn (call-interactively 'refdb-select-database) @@ -1335,6 +1446,9 @@ '( refdb-getref-by-author-menu-item + refdb-getref-by-author-regexp-menu-item refdb-getref-by-title-menu-item + refdb-getref-by-title-regexp-menu-item refdb-getref-by-keyword-menu-item + refdb-getref-by-keyword-regexp-menu-item refdb-getref-by-id-menu-item refdb-getref-by-citekey-menu-item |