|  | @@ -55,11 +55,6 @@
 | 
											
												
													
														|  |  ;; with lexical information will display that informatio in a "term"
 |  |  ;; with lexical information will display that informatio in a "term"
 | 
											
												
													
														|  |  ;; buffer.
 |  |  ;; buffer.
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -;;;
 |  | 
 | 
											
												
													
														|  | -;;; "bm-" is used as shorthand (see Local Variables) for "bible-mode-"
 |  | 
 | 
											
												
													
														|  | -;;; Names of the form "bm--" are intended to be "unexported".
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  ;;; Code:
 |  |  ;;; Code:
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  ;;;; Requirements
 |  |  ;;;; Requirements
 | 
											
										
											
												
													
														|  | @@ -238,7 +233,9 @@ which are of the form
 | 
											
												
													
														|  |    "Search query associated with the buffer.")
 |  |    "Search query associated with the buffer.")
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  (defvar-local bible-mode-search-mode "phrase"
 |  |  (defvar-local bible-mode-search-mode "phrase"
 | 
											
												
													
														|  | -  "Search mode: either `lucene' or `phrase'.")
 |  | 
 | 
											
												
													
														|  | 
 |  | +  "Search mode: either `lucene', `phrase', `regex' or `multiword'.")
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +(defvar bible-mode-search-range nil)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  (defvar-local bible-mode-has-strongs nil
 |  |  (defvar-local bible-mode-has-strongs nil
 | 
											
												
													
														|  |    "Set if the module being displayed has strongs numbers availabile.")
 |  |    "Set if the module being displayed has strongs numbers availabile.")
 | 
											
										
											
												
													
														|  | @@ -319,7 +316,7 @@ which are of the form
 | 
											
												
													
														|  |  	    '("Bible Search" . bible-search))
 |  |  	    '("Bible Search" . bible-search))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  ;;;; Not yet
 |  |  ;;;; 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
 |  |  ;;;;; Misc
 | 
											
												
													
														|  |  (define-key bible-mode-map "m" 'bible-mode-select-module)
 |  |  (define-key bible-mode-map "m" 'bible-mode-select-module)
 | 
											
												
													
														|  |  (define-key bible-mode-map "w" 'bible-mode-toggle-word-study)
 |  |  (define-key bible-mode-map "w" 'bible-mode-toggle-word-study)
 | 
											
										
											
												
													
														|  | @@ -566,6 +563,17 @@ Genesis 1:1 is used."
 | 
											
												
													
														|  |      (when chapter
 |  |      (when chapter
 | 
											
												
													
														|  |        (bible-mode--set-location bible-mode-current-book 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): ")))
 | 
											
												
													
														|  | 
 |  | +    (if (string-equal range "")
 | 
											
												
													
														|  | 
 |  | +	(setq bible-mode-search-range nil)
 | 
											
												
													
														|  | 
 |  | +      (setq bible-mode-search-range range))
 | 
											
												
													
														|  | 
 |  | +;;    (bible-mode--display)
 | 
											
												
													
														|  | 
 |  | +))
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  ;;;###autoload
 |  |  ;;;###autoload
 | 
											
												
													
														|  |  (defun bible-mode-select-module ()
 |  |  (defun bible-mode-select-module ()
 | 
											
												
													
														|  |    "Ask user for a new text module for the current `bible-mode' buffer."
 |  |    "Ask user for a new text module for the current `bible-mode' buffer."
 | 
											
										
											
												
													
														|  | @@ -603,12 +611,12 @@ Genesis 1:1 is used."
 | 
											
												
													
														|  |  ;;;###autoload
 |  |  ;;;###autoload
 | 
											
												
													
														|  |  (defun bible-search (query)
 |  |  (defun bible-search (query)
 | 
											
												
													
														|  |    "Prompts the user for a Bible search query: word or phrase and type of
 |  |    "Prompts the user for a Bible search query: word or phrase and type of
 | 
											
												
													
														|  | -search: either `lucene' or `phrase'. `lucene' mode requires an index
 |  | 
 | 
											
												
													
														|  | -to be built using the `mkfastmod' program. `lucene' is the default
 |  | 
 | 
											
												
													
														|  | -search."
 |  | 
 | 
											
												
													
														|  | 
 |  | +search: either `lucene', `phrase', `regex' or `multiword'. `lucene' mode
 | 
											
												
													
														|  | 
 |  | +requires an index to be built using the `mkfastmod' program. `lucene' is
 | 
											
												
													
														|  | 
 |  | +the default search."
 | 
											
												
													
														|  |    (interactive "sBible Search: ")
 |  |    (interactive "sBible Search: ")
 | 
											
												
													
														|  |    (when (> (length query) 0)
 |  |    (when (> (length query) 0)
 | 
											
												
													
														|  | -    (let* ((searchmode (completing-read "Search Mode: " '("lucene" "phrase") nil t "lucene")))
 |  | 
 | 
											
												
													
														|  | 
 |  | +    (let* ((searchmode (completing-read "Search Mode: " '("lucene" "phrase" "regex" "multiword") nil t "lucene")))
 | 
											
												
													
														|  |        (bible-mode--open-search query searchmode bible-mode-module))))
 |  |        (bible-mode--open-search query searchmode bible-mode-module))))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  ;;;###autoload
 |  |  ;;;###autoload
 | 
											
										
											
												
													
														|  | @@ -650,7 +658,6 @@ OT/NT etc. If that module doesn't have that verse...???"
 | 
											
												
													
														|  |  	(setq book-abbrev (car verse-ref))
 |  |  	(setq book-abbrev (car verse-ref))
 | 
											
												
													
														|  |  	(setq chapter-verse (split-string (cadr 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 book (car verse-ref))
 | 
											
												
													
														|  |      (setq chapter (car chapter-verse)
 |  |      (setq chapter (car chapter-verse)
 | 
											
												
													
														|  |  	  verse (cadr chapter-verse))
 |  |  	  verse (cadr chapter-verse))
 | 
											
										
											
												
													
														|  | @@ -698,7 +705,8 @@ OT/NT etc. If that module doesn't have that verse...???"
 | 
											
												
													
														|  |  	(if searchtype
 |  |  	(if searchtype
 | 
											
												
													
														|  |  	    (progn
 |  |  	    (progn
 | 
											
												
													
														|  |  	      (setq filter nil) ; search is not compatible with filters XXX
 |  |  	      (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") ("regex" "regex") ("multiword" "multiword")))))
 | 
											
												
													
														|  | 
 |  | +	      (when bible-mode-search-range (setq args (append args (list "-r" bible-mode-search-range)))))
 | 
											
												
													
														|  |  	  (progn
 |  |  	  (progn
 | 
											
												
													
														|  |  	    (if filter
 |  |  	    (if filter
 | 
											
												
													
														|  |  		(setq filter (concat filter diatheke-filter-options))
 |  |  		(setq filter (concat filter diatheke-filter-options))
 | 
											
										
											
												
													
														|  | @@ -1283,13 +1291,14 @@ Module MOD is used for the query."
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	  (when match
 |  |  	  (when match
 | 
											
												
													
														|  |  	    (push
 |  |  	    (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 
 |  |  	     (replace-regexp-in-string 
 | 
											
												
													
														|  |  	      "I " "1"
 |  |  	      "I " "1"
 | 
											
												
													
														|  |  	      (replace-regexp-in-string
 |  |  	      (replace-regexp-in-string
 | 
											
												
													
														|  |  	       "II " "2"
 |  |  	       "II " "2"
 | 
											
												
													
														|  | -	       (replace-regexp-in-string ".+; " "" matchstr)))
 |  | 
 | 
											
												
													
														|  | 
 |  | +	       (replace-regexp-in-string
 | 
											
												
													
														|  | 
 |  | +		"III " "3"
 | 
											
												
													
														|  | 
 |  | +		(replace-regexp-in-string ".+; " "" matchstr))))
 | 
											
												
													
														|  |  	     verses)))
 |  |  	     verses)))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	(setq match 0)
 |  |  	(setq match 0)
 | 
											
										
											
												
													
														|  | @@ -1309,7 +1318,10 @@ Module MOD is used for the query."
 | 
											
												
													
														|  |  	  (while (search-forward (concat "(" mod ")") nil t)
 |  |  	  (while (search-forward (concat "(" mod ")") nil t)
 | 
											
												
													
														|  |  	    (replace-match "")))))
 |  |  	    (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 buffer-read-only t)
 | 
											
												
													
														|  |      (setq-local bible-mode-search-query query)
 |  |      (setq-local bible-mode-search-query query)
 | 
											
												
													
														|  |      (setq-local bible-mode-search-mode searchmode)
 |  |      (setq-local bible-mode-search-mode searchmode)
 |