Procházet zdrojové kódy

Enable search ranges

Fred Gilham před 4 týdny
rodič
revize
b471226cdf
1 změnil soubory, kde provedl 24 přidání a 12 odebrání
  1. 24 12
      bible-mode.el

+ 24 - 12
bible-mode.el

@@ -55,11 +55,6 @@
 ;; with lexical information will display that informatio in a "term"
 ;; buffer.
 
-
-;;;
-;;; "bm-" is used as shorthand (see Local Variables) for "bible-mode-"
-;;; Names of the form "bm--" are intended to be "unexported".
-
 ;;; Code:
 
 ;;;; Requirements
@@ -240,6 +235,8 @@ which are of the form
 (defvar-local bible-mode-search-mode "phrase"
   "Search mode: either `lucene' or `phrase'.")
 
+(defvar bible-mode-search-range nil)
+
 (defvar-local bible-mode-has-strongs nil
   "Set if the module being displayed has strongs numbers availabile.")
 
@@ -319,7 +316,7 @@ which are of the form
 	    '("Bible Search" . bible-search))
 
 ;;;; Not yet
-;;;(define-key bible-mode-map "r" 'bible-mode-set-search-range)
+(define-key bible-mode-map "r" 'bible-mode-set-search-range)
 ;;;;; Misc
 (define-key bible-mode-map "m" 'bible-mode-select-module)
 (define-key bible-mode-map "w" 'bible-mode-toggle-word-study)
@@ -566,6 +563,17 @@ Genesis 1:1 is used."
     (when chapter
       (bible-mode--set-location bible-mode-current-book chapter))))
 
+(defun bible-mode-set-search-range ()
+  "Ask user for a new text module for the current `bible-mode' buffer."
+  (interactive)
+  (let ((range (read-string "Range (<return> to clear): " nil nil nil)))
+    (if (string-equal range "")
+	(setq bible-mode-search-range nil)
+      (setq bible-mode-search-range range))
+;;    (bible-mode--display)
+))
+
+
 ;;;###autoload
 (defun bible-mode-select-module ()
   "Ask user for a new text module for the current `bible-mode' buffer."
@@ -650,7 +658,6 @@ OT/NT etc. If that module doesn't have that verse...???"
 	(setq book-abbrev (car verse-ref))
 	(setq chapter-verse (split-string (cadr verse-ref) ":"))))
 
-    ;;    (setq book (cdr (assoc book-abbrev bible-mode-book-name-abbreviations-alist)))
     (setq book (car verse-ref))
     (setq chapter (car chapter-verse)
 	  verse (cadr chapter-verse))
@@ -698,7 +705,8 @@ OT/NT etc. If that module doesn't have that verse...???"
 	(if searchtype
 	    (progn
 	      (setq filter nil) ; search is not compatible with filters XXX
-	      (setq args (append args (list "-s" (pcase searchtype ("lucene" "lucene") ("phrase" "phrase"))))))
+	      (setq args (append args (list "-s" (pcase searchtype ("lucene" "lucene") ("phrase" "phrase")))))
+	      (when bible-mode-search-range (setq args (append args (list "-r" bible-mode-search-range)))))
 	  (progn
 	    (if filter
 		(setq filter (concat filter diatheke-filter-options))
@@ -1283,13 +1291,14 @@ Module MOD is used for the query."
 
 	  (when match
 	    (push
-	     ;; Massage match to make it more sortable, get rid of
-	     ;; some characters.
+	     ;; Massage match to make it more sortable, get rid of some characters.
 	     (replace-regexp-in-string 
 	      "I " "1"
 	      (replace-regexp-in-string
 	       "II " "2"
-	       (replace-regexp-in-string ".+; " "" matchstr)))
+	       (replace-regexp-in-string
+		"III " "3"
+		(replace-regexp-in-string ".+; " "" matchstr))))
 	     verses)))
 
 	(setq match 0)
@@ -1309,7 +1318,10 @@ Module MOD is used for the query."
 	  (while (search-forward (concat "(" mod ")") nil t)
 	    (replace-match "")))))
 
-    (setq mode-name (concat "Bible Search (" mod ")"))
+    (setq mode-name (concat "Bible Search (" mod))
+    (when bible-mode-search-range
+      (setq mode-name (concat mode-name " [" bible-mode-search-range "]")))
+    (setq mode-name (concat mode-name ")"))
     (setq buffer-read-only t)
     (setq-local bible-mode-search-query query)
     (setq-local bible-mode-search-mode searchmode)