From 7d458a443fc680d0be6f386c13bead32162f75cf Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Thu, 11 Dec 2014 01:04:25 -0500 Subject: Make citekey groups for web search customizable --- NEWS | 3 +++ bog-tests.el | 12 ++++-------- bog.el | 34 ++++++++++++++++++---------------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/NEWS b/NEWS index 16d4920..dbef01f 100644 --- a/NEWS +++ b/NEWS @@ -45,6 +45,9 @@ - =bog-notes-directory= has been renamed to =bog-note-directory=. +- New variable =bog-citekey-web-search-groups= specifies which parts + of the citekey are used for the search. + * v0.6.0 ** New features diff --git a/bog-tests.el b/bog-tests.el index 91bf252..201bc89 100644 --- a/bog-tests.el +++ b/bog-tests.el @@ -77,16 +77,12 @@ point at the beginning of the inserted text." (ert-deftest bog-citekey-p-with-other-text () (should-not (bog-citekey-p "name2010word more text"))) -;; `bog-citekey-groups-with-delim' +;; `bog--citekey-groups-with-delim' -(ert-deftest bog-citekey-groups-with-delim () +(ert-deftest bog--citekey-groups-with-delim () (let ((citekey "name2010word")) - (should (equal (bog-citekey-groups-with-delim citekey) - "name 2010 word")) - (should (equal (bog-citekey-groups-with-delim citekey ",") - "name,2010,word")) - (should (equal (bog-citekey-groups-with-delim citekey nil '(1 3)) - "name word")))) + (should (equal (bog--citekey-groups-with-delim citekey ",") + "name,2010,word")))) ;; `bog-citekey-at-point' diff --git a/bog.el b/bog.el index 2da8b71..03aff43 100644 --- a/bog.el +++ b/bog.el @@ -65,6 +65,14 @@ settings: :group 'bog :type 'regexp) +(defcustom bog-citekey-web-search-groups '(1 2 3) + "List of citekey subexpressions to use for web search. +The default groups correspond to the last name of the first +author, the publication year, and the first meaningful word in +the title." + :group 'bog + :type '(repeat integer)) + (defcustom bog-citekey-property "CUSTOM_ID" "Property name used to store citekey. The default corresponds to the default value of @@ -230,21 +238,6 @@ If NO-CONTEXT is non-nil, immediately fall back." "Prompt for citekey from CITEKEYS." (org-icompleting-read "Select citekey: " citekeys)) -(defun bog-citekey-groups-with-delim (citekey &optional delim groups) - "Return groups of `bog-citekey-format', seperated by DELIM. - -If DELIM is nil, space is used. - -If GROUPS is nil, groups 1, 2, and 3 are selected (which -corresponds to the last name of the first author, the publication -year, and the first meaningful word in the title)." - (let ((groups (or groups '(1 2 3))) - (delim (or delim " "))) - (let (case-fold-search) - (string-match bog-citekey-format citekey) - (mapconcat (lambda (g) (match-string-no-properties g citekey)) - groups delim)))) - (defmacro bog--with-citekey-syntax (&rest body) "Execute BODY with hyphen and underscore as word constituents." (declare (indent 0)) @@ -626,7 +619,16 @@ If the citekey file prompt is slow to appear, consider enabling (defun bog-citekey-as-search-url (citekey) "Return URL to use for CITEKEY search." - (format bog-web-search-url (bog-citekey-groups-with-delim citekey "+"))) + (format bog-web-search-url + (bog--citekey-groups-with-delim citekey "+"))) + +(defun bog--citekey-groups-with-delim (citekey delim) + "Return expression groups CITEKEY, seperated by DELIM. +Groups are specified by `bog-citekey-web-search-groups'." + (let (case-fold-search) + (string-match bog-citekey-format citekey) + (mapconcat (lambda (g) (match-string-no-properties g citekey)) + bog-citekey-web-search-groups delim))) ;;; Notes-related -- cgit v1.2.3