Просмотр исходного кода

Fix problem with search following verse

Following verse or xref would not use the right module if the search module was different from the default module.
Fred Gilham 5 месяцев назад
Родитель
Сommit
b69a30cca6
1 измененных файлов с 47 добавлено и 30 удалено
  1. 47 30
      bible-mode.el

+ 47 - 30
bible-mode.el

@@ -78,7 +78,7 @@
   "Book module for Diatheke to query."
   "Book module for Diatheke to query."
   :type '(choice (const :tag "None" nil)
   :type '(choice (const :tag "None" nil)
                  (string :tag "Module abbreviation (e.g. \"KJV\")"))
                  (string :tag "Module abbreviation (e.g. \"KJV\")"))
-  :local t
+;;  :local t
   :group 'bible-mode)
   :group 'bible-mode)
 
 
 ;;;
 ;;;
@@ -583,25 +583,27 @@ Genesis 1:1 is used."
 (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."
   (interactive)
   (interactive)
-  (let ((module (completing-read "Module: " bible-mode-modules)))
-    (setq-local bible-mode-module module)
-    (bible-mode--display)))
+;;  (let* ((bible-mode-module (completing-read "Module: " bible-mode-modules)))
+;;    (bible-mode--display))
+
+  (setq-default bible-mode-module (completing-read "Module: " bible-mode-modules))
+  (bible-mode--display))
 
 
 ;;;###autoload
 ;;;###autoload
-(defun bible-mode-toggle-word-study()
+(defun bible-mode-toggle-word-study ()
   "Toggle the inclusion of word study for the active `bible-mode' buffer."
   "Toggle the inclusion of word study for the active `bible-mode' buffer."
   (interactive)
   (interactive)
   (setq bible-mode-word-study-enabled (not bible-mode-word-study-enabled))
   (setq bible-mode-word-study-enabled (not bible-mode-word-study-enabled))
   (if (equal major-mode 'bible-search-mode)
   (if (equal major-mode 'bible-search-mode)
-      (bible-mode--display-search bible-mode-search-query bible-mode-search-mode bible-mode-module)
+      (bible-mode--display-search bible-mode-search-query bible-mode-search-mode)
     (bible-mode--display)))
     (bible-mode--display)))
 
 
-(defun bible-mode-toggle-red-letter()
+(defun bible-mode-toggle-red-letter ()
   "Toggle red letter mode for the active `bible-mode' buffer."
   "Toggle red letter mode for the active `bible-mode' buffer."
   (interactive)
   (interactive)
   (setq bible-mode-red-letter-enabled (not bible-mode-red-letter-enabled))
   (setq bible-mode-red-letter-enabled (not bible-mode-red-letter-enabled))
   (if (equal major-mode 'bible-search-mode)
   (if (equal major-mode 'bible-search-mode)
-      (bible-mode--display-search bible-mode-search-query bible-mode-search-mode bible-mode-module)
+      (bible-mode--display-search bible-mode-search-query bible-mode-search-mode)
     (bible-mode--display)))
     (bible-mode--display)))
 
 
 ;;;###autoload
 ;;;###autoload
@@ -621,8 +623,9 @@ requires an index to be built using the `mkfastmod' program. `lucene' is
 the default search."
 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" "regex" "multiword") nil t "lucene")))
-      (bible-mode--open-search query searchmode bible-mode-module))))
+    (let* ((bible-mode-module (buffer-local-value 'bible-mode-module (current-buffer)))
+	   (searchmode (completing-read "Search Mode: " '("lucene" "phrase" "regex" "multiword") nil t "lucene")))
+      (bible-mode--open-search query searchmode))))
 
 
 ;;;###autoload
 ;;;###autoload
 (defun bible-search-mode-follow-verse ()
 (defun bible-search-mode-follow-verse ()
@@ -929,13 +932,23 @@ Note: compiler warns about unused `window' argument."
       (puthash query (bible-mode--morph-query query database) hash)))
       (puthash query (bible-mode--morph-query query database) hash)))
 
 
 (defvar bible-mode-outline-strings
 (defvar bible-mode-outline-strings
-  '((" I." .  "\n    I.")
-    (" 1." . "\n 1.")
-    (" 2." . "\n 2.")
-    (" 3." . "\n 3.")
-    (" a." . "\n   a.")
-    (" b." . "\n   b.")
-    (" c." . "\n   c.")    
+  '((" I." . "\n I.")
+    (" II." . "\n II.")
+    (" III." . "\n III.")
+    (" IV." . "\n IV.")
+    (" V." . "\n V.")
+    (" 1." . "\n  1.")
+    (" 2." . "\n  2.")
+    (" 3." . "\n  3.")
+    (" 4." . "\n  4.")
+    (" 5." . "\n  5.")
+    (" 6." . "\n  6.")
+    (" 7." . "\n  7.")
+    (" 8." . "\n  8.")
+    (" 9." . "\n  9.")
+    (" a." . "\n    a.")
+    (" b." . "\n    b.")
+    (" c." . "\n    c.")    
     (". ." . ".")
     (". ." . ".")
     (" . " . ". ")))
     (" . " . ". ")))
 
 
@@ -1132,12 +1145,15 @@ XXX In processing subnodes, each case will prepend a space if it needs it."
 	       (add-face-text-property (- (point) (length word)) (point) '(:foreground "gray50"))))))))
 	       (add-face-text-property (- (point) (length word)) (point) '(:foreground "gray50"))))))))
 
 
 
 
-(defvar bible-mode-debugme nil)
+;;(defvar bible-mode-debugme nil)
 
 
 (defun bible-mode--display (&optional verse)
 (defun bible-mode--display (&optional verse)
   "Render text for `bible-mode'. 
   "Render text for `bible-mode'. 
 If VERSE is supplied, set cursor at verse."
 If VERSE is supplied, set cursor at verse."
 
 
+  ;; Display buffers can have different modules.
+  (setq-local bible-mode-module (default-value 'bible-mode-module))
+
   ;; Clear buffer and insert the result of calling bible-mode--exec-diatheke.
   ;; Clear buffer and insert the result of calling bible-mode--exec-diatheke.
   (setq buffer-read-only nil)
   (setq buffer-read-only nil)
   (erase-buffer)
   (erase-buffer)
@@ -1229,7 +1245,7 @@ If VERSE is supplied, set cursor at verse."
   "Keymap action function---select module user chooses."
   "Keymap action function---select module user chooses."
   (interactive)
   (interactive)
   (let ((item (get-text-property (point) 'module)))
   (let ((item (get-text-property (point) 'module)))
-    (setq-default bible-mode-module item)
+     (setq-default bible-mode-module item)
     (bible-open)))
     (bible-open)))
     
     
 
 
@@ -1266,29 +1282,28 @@ If VERSE is supplied, set cursor at verse."
 
 
 ;;;;; Bible Searching
 ;;;;; Bible Searching
 
 
-(defun bible-mode--open-search (query searchmode mod)
+(defun bible-mode--open-search (query searchmode)
   "Open a search buffer of QUERY using SEARCHMODE in module MOD."
   "Open a search buffer of QUERY using SEARCHMODE in module MOD."
-  (let ((buf (get-buffer-create (concat "*bible-search-" (downcase mod) "-" query "*"))))
+  (let ((buf (get-buffer-create (concat "*bible-search-" (downcase bible-mode-module) "-" query "*")))) 
     (set-buffer buf)
     (set-buffer buf)
     (bible-search-mode)
     (bible-search-mode)
-    (bible-mode--display-search query searchmode mod)
+    (bible-mode--display-search query searchmode)
     (pop-to-buffer buf nil t)))
     (pop-to-buffer buf nil t)))
 
 
-(defun bible-mode--display-search (query searchmode mod)
-  "Render results of search QUERY from SEARCHMODE.
-Module MOD is used for the query."
+(defun bible-mode--display-search (query searchmode)
+  "Render results of search QUERY from SEARCHMODE."
   (setq buffer-read-only nil)
   (setq buffer-read-only nil)
   (erase-buffer)
   (erase-buffer)
   
   
   (let* ((result (string-trim (replace-regexp-in-string 
   (let* ((result (string-trim (replace-regexp-in-string 
 			       "Entries .+?--" "" 
 			       "Entries .+?--" "" 
-			       (bible-mode--exec-diatheke query nil "plain" searchmode mod))))
+			       (bible-mode--exec-diatheke query nil "plain" searchmode bible-mode-module))))
 	 (match 0)
 	 (match 0)
 	 (matchstr "")
 	 (matchstr "")
 	 (verses nil)
 	 (verses nil)
 	 (query-verses "")
 	 (query-verses "")
 	 fullverses)
 	 fullverses)
-    (if (equal result (concat "none (" mod ")"))
+    (if (equal result (concat "none (" bible-mode-module ")"))
 	(insert "No results found."
 	(insert "No results found."
 		(if (equal searchmode "lucene")
 		(if (equal searchmode "lucene")
 		    " Verify index has been build with mkfastmod."
 		    " Verify index has been build with mkfastmod."
@@ -1316,7 +1331,8 @@ Module MOD is used for the query."
 	  (if query-verses
 	  (if query-verses
 	      (setq query-verses (concat query-verses ";" verse))
 	      (setq query-verses (concat query-verses ";" verse))
 	    (setq query-verses verse)))
 	    (setq query-verses verse)))
-	(setq fullverses (let ((bible-mode-show-diatheke-exec nil)) (bible-mode--exec-diatheke query-verses nil nil nil mod)))
+	(setq fullverses (let ((bible-mode-show-diatheke-exec nil)) 
+			   (bible-mode--exec-diatheke query-verses nil nil nil bible-mode-module)))
 
 
 	(insert fullverses)
 	(insert fullverses)
 	    
 	    
@@ -1324,10 +1340,10 @@ Module MOD is used for the query."
 	  (erase-buffer)
 	  (erase-buffer)
 	  (bible-mode--insert-domnode-recursive (dom-by-tag html-dom-tree 'body) nil nil)
 	  (bible-mode--insert-domnode-recursive (dom-by-tag html-dom-tree 'body) nil nil)
 	  (goto-char (point-min))
 	  (goto-char (point-min))
-	  (while (search-forward (concat "(" mod ")") nil t)
+	  (while (search-forward (concat "(" bible-mode-module ")") nil t)
 	    (replace-match "")))))
 	    (replace-match "")))))
 
 
-    (setq mode-name (concat "Bible Search (" mod))
+    (setq mode-name (concat "Bible Search (" bible-mode-module))
     (when bible-mode-search-range
     (when bible-mode-search-range
       (setq mode-name (concat mode-name " [" bible-mode-search-range "]")))
       (setq mode-name (concat mode-name " [" bible-mode-search-range "]")))
     (setq mode-name (concat mode-name ")"))
     (setq mode-name (concat mode-name ")"))
@@ -1425,6 +1441,7 @@ left-to-right. XXX Why doesn't this work for the tooltips?"
 
 
 (defun bible-mode--set-location (book chapter &optional verse)
 (defun bible-mode--set-location (book chapter &optional verse)
   "Set the BOOK, CHAPTER and optionally VERSE of the active `bible-mode' buffer."
   "Set the BOOK, CHAPTER and optionally VERSE of the active `bible-mode' buffer."
+  (setq-local bible-mode-module (default-value 'bible-mode-module))
   (setq-local bible-mode-current-book book)
   (setq-local bible-mode-current-book book)
   (setq-local bible-mode-current-book-name (car book))
   (setq-local bible-mode-current-book-name (car book))
   (setq-local bible-mode-current-chapter chapter)
   (setq-local bible-mode-current-chapter chapter)