Bladeren bron

Reorganize file variables.

Fred Gilham 1 week geleden
bovenliggende
commit
5fdd2537e8
1 gewijzigde bestanden met toevoegingen van 312 en 296 verwijderingen
  1. 312 296
      bible.el

+ 312 - 296
bible.el

@@ -89,7 +89,7 @@
 (defalias 'bible-dom-text (if (fboundp 'dom-inner-text) 'dom-inner-text 'dom-text))
 (defalias 'bible-dom-texts (if (fboundp 'dom-inner-text) 'dom-inner-text 'dom-texts))
 
-;;;; Configuration Variables
+;;;; Customization Variables
 
 (defgroup bible nil
   "Settings for `bible'."
@@ -105,7 +105,6 @@
   :local nil
   :group 'bible)
 
-
 (defcustom bible-commentary
   "Clarke"
   "Customize default commentary module for Diatheke to query.
@@ -208,20 +207,7 @@ See `bible--display-lemma-hebrew'."
   :local nil
   :group 'bible)
 
-;;;; Variable definitions
-
-(defvar bible--text-buffers nil
-  "List of Bible text buffers.")
-
-(defvar bible--commentary-buffers nil
-  "List of commentary buffers.")
-
-(defvar bible--synced-buffers nil
-  "List of buffers that are synchronized so that navigation in one applies 
-to all of them.")
-
-(defvar-local bible--synced-p nil
-  "Is this buffer syncronized?")
+;;;; Mode line formats for different kinds of buffers.
 
 (defvar bible-mode-line-format
   '("%e" mode-line-front-space
@@ -231,6 +217,7 @@ to all of them.")
     bible--current-book-name
     " "  (:eval (number-to-string bible--current-chapter))
     "  " (:eval (if bible--synced-p "Sync" ""))
+    (:eval (when bible-search-range (concat " <" bible-search-range ">")))
     "  " mode-line-modes mode-line-misc-info
     mode-line-end-spaces)
   "Mode line format for bible buffers.")
@@ -238,14 +225,257 @@ to all of them.")
 (defvar bible-search-mode-line-format
   '("%e" mode-line-front-space
     mode-line-frame-identification mode-line-buffer-identification "   "
-    bible-text " " bible-search-word " "
+    bible-search-text-this-query " " bible-search-word-this-query " "
+    (:eval (when bible-search-range-this-query (concat "<" bible-search-range-this-query "> ")))
+    (:eval (number-to-string bible-search-matches)) " matches"
+    "  " mode-line-modes mode-line-misc-info
+    mode-line-end-spaces)
+  "Mode line format for bible search buffers.")
+
+(defvar bible-term-mode-line-format
+  '("%e" mode-line-front-space
+    mode-line-frame-identification mode-line-buffer-identification "   "
+    bible-search-text-this-query " " bible-search-word-this-query " "
+    (:eval (when bible-search-range-this-query (concat "<" bible-search-range-this-query "> ")))
     (:eval (number-to-string bible-search-matches)) " matches"
     "  " mode-line-modes mode-line-misc-info
     mode-line-end-spaces)
   "Mode line format for bible search buffers.")
 
+;;;; Modes
+
+(define-derived-mode bible special-mode "Bible"
+  "Mode for reading the Bible.
+\\{bible-map}"
+  (buffer-disable-undo)
+  (font-lock-mode t)
+  (use-local-map bible-map)
+  (setq-local mode-line-format bible-mode-line-format)
+  (setq buffer-read-only t)
+  (visual-line-mode t))
+ 
+(define-derived-mode bible-search-mode special-mode "Bible Search"
+  "Mode for performing Bible searches.
+\\{bible-search-mode-map}"
+  (buffer-disable-undo)
+  (font-lock-mode t)
+  (use-local-map bible-search-mode-map)
+  (setq-local mode-line-format bible-search-mode-line-format)
+  (setq buffer-read-only t)
+  (visual-line-mode t))
+
+
+(define-derived-mode bible-term-mode special-mode "Bible Term"
+  "Mode for researching terms in the Bible.
+\\{bible-term-mode-map}"
+  (buffer-disable-undo)
+  (font-lock-mode t)
+  (use-local-map bible-term-mode-map)
+  (setq buffer-read-only t)
+  (visual-line-mode t))
+
+(define-derived-mode bible-term-hebrew-mode bible-term-mode "Bible Term (Hebrew)"
+  "Mode for researching Hebrew terms in the Bible.
+\\{bible-term-hebrew-mode-map}")
+
+(define-derived-mode bible-term-greek-mode bible-term-mode "Bible Term (Greek)"
+  "Mode for researching Greek terms in the Bible.
+\\{bible-term-greek-mode-map}")
+
+
+(define-derived-mode bible-text-select-mode special-mode "Select Module"
+  (buffer-disable-undo)
+  (font-lock-mode t)
+  (setq buffer-read-only t))
+
+
+;;;; Keymaps
+
+;; N.B. Bible Menu items appear in reverse order of their definition
+;; below
+
+(defconst bible-map (make-sparse-keymap)
+  "Keymap for bible.")
+(define-key bible-map [menu-bar bible]
+            (cons "Bible" (make-sparse-keymap "Bible")))
+
+(define-key bible-map
+            [menu-bar bible toggle-debug]
+            '("Toggle debug-on-error" . toggle-debug-on-error))
+
+(define-key bible-map
+            [menu-bar bible display-diatheke]
+            '("Toggle diatheke display" . bible-toggle-display-diatheke))
+
+(defvar-local bible-debugme nil
+  "Make text show up as XML when set.")
+
+(define-key bible-map "d" 'bible-toggle-display-xml)
+(define-key bible-map
+            [menu-bar bible display-xml]
+            '("Toggle XML Display" . bible-toggle-display-xml))
+
+(define-key bible-map
+            [menu-bar bible sep]
+            '(menu-item '"--"))
+
+;;;;; Misc key bindings
+
+(define-key bible-map "T" 'bible-select-text)
+(define-key bible-map "C" 'bible-select-commentary)
+(define-key bible-map "w" 'bible-toggle-word-study)
+(define-key bible-map "l" 'bible-toggle-red-letter)
+
+(define-key bible-map "z" 'text-scale-adjust)
+(define-key bible-map
+            [menu-bar bible zoom-text]
+            '("Zoom Text" . text-scale-adjust))
+
+(define-key bible-map "x" 'bible-split-display)
+(define-key bible-map
+            [menu-bar bible split-display]
+            '("Split Display" . bible-split-display))
+
+(define-key bible-map "S" 'bible-toggle-buffer-sync)
+(define-key bible-map [menu-bar bible sync]
+	    '("Toggle Synchronize Buffer" . bible-toggle-buffer-sync))
+
+;;;;; Navigation
+
+(define-key bible-map "p" 'bible-previous-chapter)
+(define-key bible-map
+            [menu-bar bible previous-chapter]
+            '("Previous Chapter" . bible-previous-chapter))
+
+(define-key bible-map "n" 'bible-next-chapter)
+(define-key bible-map
+            [menu-bar bible next-chapter]
+            '("Next Chapter" . bible-next-chapter))
+
+(define-key bible-map (kbd "TAB") 'bible-next-word)
+(define-key bible-map (kbd "M-<tab>") 'bible-previous-word)
+
+;;;;; Direct jump
+
+(define-key bible-map "c" 'bible-select-chapter)
+(define-key bible-map
+            [menu-bar bible select-chapter]
+            '("Select Chapter" . bible-select-chapter))
+
+(define-key bible-map "b" 'bible-select-book)
+(define-key bible-map
+            [menu-bar bible select-book]
+            '("Select Book" . bible-select-book))
+
+(define-key bible-map
+            [menu-bar bible sep]
+            '(menu-item '"--"))
+
+;; Deal with visual-line-mode navigation.
+(define-key bible-map "\C-n" 'next-logical-line)
+(define-key bible-map "\C-p" 'previous-logical-line)
+
+;;;;; Search
+
+(define-key bible-map "/" 'bible-search)
+(define-key bible-map "s" 'bible-search)
+(define-key bible-map
+            [menu-bar bible search]
+            '("Search" . bible-search))
+
+(define-key bible-map "r" 'bible-set-search-range)
+(define-key bible-map
+            [menu-bar bible range]
+            '("Set Search Range" . bible-set-search-range))
+
+(define-key bible-map
+            [menu-bar bible sepp]
+            '(menu-item '"--"))
+
+(define-key bible-map
+            [menu-bar bible toggle-text-direction]
+            '("Toggle text direction (for Hebrew display)" . bible-toggle-text-direction))
+
+(define-key bible-map
+            [menu-bar bible toggle-tooltip-display]
+            '("Toggle Tooltip Display" . bible-toggle-tooltips))
+
+(define-key bible-map
+            [menu-bar bible sepp]
+            '(menu-item '"--"))
+
+(define-key bible-map
+            [menu-bar bible select-biblical-commentary]
+            '("Select Commentary" . bible-display-available-commentaries))
+
+(define-key bible-map
+            [menu-bar bible select-biblical-text]
+            '("Select Text" . bible-display-available-texts))
+
+(defconst bible-search-mode-map (make-keymap))
+(define-key bible-search-mode-map "s" 'bible-search)
+(define-key bible-search-mode-map "w" 'bible-toggle-word-study)
+(define-key bible-search-mode-map "n" 'bible-next-search-item)
+(define-key bible-search-mode-map "p" 'bible-previous-search-item)
+(define-key bible-search-mode-map (kbd "RET") 'bible-search-mode-follow-verse)
+(define-key bible-search-mode-map [mouse-1] 'bible-search-mode-follow-verse)
+
+;;;;; Term mode keymaps
+
+(defconst bible-term-mode-map (make-sparse-keymap))
+(define-key bible-term-mode-map "z" 'text-scale-adjust)
+(define-key bible-term-mode-map [mouse-1] 'bible-search-mode-follow-xref)
+
+(defconst bible-greek-keymap (make-sparse-keymap))
+(define-key bible-greek-keymap (kbd "RET") 'bible--display-greek)
+(define-key bible-greek-keymap [mouse-1] 'bible--display-greek)
+
+(defconst bible-hebrew-keymap (make-sparse-keymap))
+(define-key bible-hebrew-keymap (kbd "RET") 'bible--display-hebrew)
+(define-key bible-hebrew-keymap [mouse-1] 'bible--display-hebrew)
+
+(defconst bible-lemma-keymap (make-sparse-keymap))
+(define-key bible-lemma-keymap (kbd "RET")
+            (lambda ()
+              (interactive)))
+
+;; Not used. Not really sure what to do here or if it's useful to do anything.
+(defconst bible-morph-keymap (make-sparse-keymap))
+(define-key bible-morph-keymap (kbd "RET")
+            (lambda ()
+              (interactive)
+;;            (let ((thing (thing-at-point 'word)))
+;;              (message "thing at point: %s" thing)
+;;              (message "morph property %s" (get-text-property 0 'field thing))
+                ))
+
+;;;;; Module choice keymaps.
+(defconst bible-text-map (make-keymap))
+(define-key bible-text-map [mouse-1] 'bible-pick-module)
+(define-key bible-text-map (kbd "RET") 'bible-pick-module)
+
+
+;;;; Variable definitions
+
 (defconst bible--verse-regexp "\\(I \\|1 \\|II \\|2 \\|III \\|3 \\)??[a-zA-Z]+?[ \t\n][0-9]+[:][0-9]+")
 
+;; Don't know how to get footnotes and scripture cross references yet.
+;;(defconst bible-diatheke-filter-options " afilmnsvw")
+(defconst bible-diatheke-filter-options " almnvw")
+
+(defvar bible--text-buffers nil
+  "List of Bible text buffers.")
+
+(defvar bible--commentary-buffers nil
+  "List of commentary buffers.")
+
+(defvar bible--synced-buffers nil
+  "List of buffers that are synchronized so that navigation in one applies 
+to all of them.")
+
+(defvar-local bible--synced-p nil
+  "Is this buffer syncronized?")
+
 (defvar bible--texts (lazy-completion-table bible--texts bible--list-biblical-texts))
 (defvar bible--commentaries (lazy-completion-table bible--commentaries bible--list-biblical-commentaries))
 
@@ -362,8 +592,6 @@ to all of them.")
     ("Rev" . "Revelation of John") ("Re" . "Revelation of John"))
   "A-list of abbreviations for Bible books.")
 
-
-
 ;;;;; Book / chapter
 
 (defvar-local bible--current-book (assoc "Genesis" bible--books)
@@ -379,134 +607,82 @@ to all of them.")
 (defvar-local bible-query nil
   "Search query associated with the buffer.")
 
-(defvar-local bible-search-mode "phrase"
-  "Search mode: either `lucene', `phrase', `regex' or `multiword'.")
-
-
-
-(defvar bible-search-range nil)
-
-;;;;; Lexemes / morphemes
-
-(defvar-local bible-has-lexemes nil
-  "Set if the module being displayed has lexical entries availabile.")
-
-(defvar-local bible-has-morphemes nil
-  "Set if the module being displayed has morphemes availabile.")
-
-;;;; Keymaps
-
-;; N.B. Bible Menu items appear in reverse order of their definition
-;; below
-
-(defconst bible-map (make-sparse-keymap)
-  "Keymap for bible.")
-(define-key bible-map [menu-bar bible]
-            (cons "Bible" (make-sparse-keymap "Bible")))
-
-(define-key bible-map
-            [menu-bar bible toggle-debug]
-            '("Toggle debug-on-error" . toggle-debug-on-error))
-
-(define-key bible-map
-            [menu-bar bible display-diatheke]
-            '("Toggle diatheke display" . bible-toggle-display-diatheke))
-
-(defvar-local bible-debugme nil
-  "Make text show up as XML when set.")
-
-(define-key bible-map "d" 'bible-toggle-display-xml)
-(define-key bible-map
-            [menu-bar bible display-xml]
-            '("Toggle XML Display" . bible-toggle-display-xml))
-
-(define-key bible-map
-            [menu-bar bible sep]
-            '(menu-item '"--"))
-
-;;;;; Misc key bindings
-
-(define-key bible-map "T" 'bible-select-text)
-(define-key bible-map "C" 'bible-select-commentary)
-(define-key bible-map "w" 'bible-toggle-word-study)
-(define-key bible-map "l" 'bible-toggle-red-letter)
-
-(define-key bible-map "z" 'text-scale-adjust)
-(define-key bible-map
-            [menu-bar bible zoom-text]
-            '("Zoom Text" . text-scale-adjust))
-
-(define-key bible-map "x" 'bible-split-display)
-(define-key bible-map
-            [menu-bar bible split-display]
-            '("Split Display" . bible-split-display))
-
-(define-key bible-map "S" 'bible-toggle-buffer-sync)
-(define-key bible-map [menu-bar bible sync]
-	    '("Toggle Synchronize Buffer" . bible-toggle-buffer-sync))
-
-;;;;; Navigation
+(defvar-local bible-search-mode "phrase"
+  "Search mode: either `lucene', `phrase', `regex' or `multiword'.")
 
-(define-key bible-map "p" 'bible-previous-chapter)
-(define-key bible-map
-            [menu-bar bible previous-chapter]
-            '("Previous Chapter" . bible-previous-chapter))
+(defvar bible-search-range nil)
 
-(define-key bible-map "n" 'bible-next-chapter)
-(define-key bible-map
-            [menu-bar bible next-chapter]
-            '("Next Chapter" . bible-next-chapter))
+;;;;; Lexemes / morphemes
 
-(define-key bible-map (kbd "TAB") 'bible-next-word)
-(define-key bible-map (kbd "M-<tab>") 'bible-previous-word)
+(defvar-local bible-has-lexemes nil
+  "Set if the module being displayed has lexical entries availabile.")
 
-;;;;; Direct jump
+(defvar-local bible-has-morphemes nil
+  "Set if the module being displayed has morphemes availabile.")
 
-(define-key bible-map "c" 'bible-select-chapter)
-(define-key bible-map
-            [menu-bar bible select-chapter]
-            '("Select Chapter" . bible-select-chapter))
+(defvar-local bible-text-direction 'left-to-right)
 
-(define-key bible-map "b" 'bible-select-book)
-(define-key bible-map
-            [menu-bar bible select-book]
-            '("Select Book" . bible-select-book))
+(defvar bible-use-tooltips t)
+(setq tooltip-delay 1)
+(setq tooltip-short-delay .5)
+(setq use-system-tooltips nil)
 
-(define-key bible-map
-            [menu-bar bible sep]
-            '(menu-item '"--"))
+(defvar-local bible-search-query nil
+  "Query used in toggles (word study and red letter).")
 
-;; Deal with visual-line-mode navigation.
-(define-key bible-map "\C-n" 'next-logical-line)
-(define-key bible-map "\C-p" 'previous-logical-line)
+(defvar-local bible-chapter-title nil
+  "Text preceding start of chapter.
+Mostly in Psalms, like `Of David' or the like.")
 
-;;;;; Search
+(defvar-local bible-level "0"
+  "Used by some modules for indentation and line breaks.")
 
-(define-key bible-map "/" 'bible-search)
-(define-key bible-map "s" 'bible-search)
-(define-key bible-map
-            [menu-bar bible search]
-            '("Search" . bible-search))
+;;;; Greek and Hebrew lexeme and morpheme tooltip rendering.
 
-(define-key bible-map "r" 'bible-set-search-range)
-(define-key bible-map
-            [menu-bar bible range]
-            '("Set Search Range" . bible-set-search-range))
+;;;;; Hash tables for Lexical definitions.
+(defvar bible-hash-greek (make-hash-table :test 'equal :size 10000))
+(defvar bible-hash-hebrew (make-hash-table :test 'equal :size 10000))
 
-(defconst bible-search-mode-map (make-keymap))
-(define-key bible-search-mode-map "s" 'bible-search)
-(define-key bible-search-mode-map "w" 'bible-toggle-word-study)
-(define-key bible-search-mode-map "n" 'bible-next-search-item)
-(define-key bible-search-mode-map "p" 'bible-previous-search-item)
-(define-key bible-search-mode-map (kbd "RET") 'bible-search-mode-follow-verse)
-(define-key bible-search-mode-map [mouse-1] 'bible-search-mode-follow-verse)
+;;;;; Hash tables for tooltips.
+(defvar lex-hash (make-hash-table :test 'equal :size 10000))
+(defvar morph-hash (make-hash-table :test 'equal :size 10000))
+
+(defvar bible-outline-strings
+  '(;;(". ."    .       ".")
+    (" I. ."    .       "\nI.")
+    (" II. ."   .       " II.")
+    (" III. ."  .       " III.")
+    (" IV. ."   .       " IV.")
+    (" V. ."    .       " V.")
+    ("1. ."     .       "\n 1.")
+    ("2. ."     .       "2.")
+    ("3. ."     .       "3.")
+    ("4. ."     .       "4.")
+    ("5. ."     .       "5.")
+    ("6. ."     .       "6.")
+    ("7. ."     .       "7.")
+    ("8. ."     .       "8.")
+    ("9. ."     .       "9.")
+    ("a. ."     .       "\n    a.")
+    ("(a)."     .       "\n    (a).")
+    ("b. ."     .       "    b.")
+    ("c. ."     .       "    c.")
+    ("d. ."     .       "    d.")
+    ("e. ."     .       "    e.")
+    ("f. ."     .       "    f.")
+    ("g. ."     .       "    g.")
+    ("h. ."     .       "    h.")
+    (" . "      .       ". ")
+    ("\n\n"     .       "\n")))
 
-;;;;; Term display
+;;;;; Variables for mode-line-format for search buffers.
+(defvar-local bible-search-word-this-query "")
+(defvar-local bible-search-text-this-query "")
+(defvar-local bible-search-range-this-query nil)
+(defvar-local bible-search-matches 0)
 
-(defconst bible-term-mode-map (make-sparse-keymap))
-(define-key bible-term-mode-map "z" 'text-scale-adjust)
-(define-key bible-term-mode-map [mouse-1] 'bible-search-mode-follow-xref)
 
+;;;;; Keymap helpers
 
 (defun bible-toggle-display-diatheke ()
   "Toggle diatheke args display."
@@ -530,8 +706,6 @@ to all of them.")
   (setq-local bible-debugme (not bible-debugme))
   (bible--display))
 
-(defvar-local bible-text-direction 'left-to-right)
-
 (defun bible-toggle-text-direction ()
   "Switch between left-to-right and right-to-left text direction."
   (interactive)
@@ -540,17 +714,6 @@ to all of them.")
     (setq-local bible-text-direction 'left-to-right))
   (setq-local bidi-paragraph-direction bible-text-direction))
 
-(defvar-local bible-search-query nil
-  "Query used in toggles (word study and red letter).")
-
-(defvar bible-use-tooltips t)
-(setq tooltip-delay 1)
-(setq tooltip-short-delay .5)
-(setq use-system-tooltips nil)
-
-;;(setq tooltip-mode -1)
-;;(setq tooltip-resize-echo-area t)
-
 (defun bible-toggle-tooltips ()
   "Toggle use of tooltips to display lexical/morphological items."
   (interactive)
@@ -560,30 +723,6 @@ to all of them.")
   (setq bible-show-diatheke-exec (and bible-show-diatheke-exec bible-use-tooltips)) ; Don't conflict with echo area
   (message ""))
 
-(define-key bible-map
-            [menu-bar bible sepp]
-            '(menu-item '"--"))
-
-(define-key bible-map
-            [menu-bar bible toggle-text-direction]
-            '("Toggle text direction (for Hebrew display)" . bible-toggle-text-direction))
-
-(define-key bible-map
-            [menu-bar bible toggle-tooltip-display]
-            '("Toggle Tooltip Display" . bible-toggle-tooltips))
-
-(define-key bible-map
-            [menu-bar bible sepp]
-            '(menu-item '"--"))
-
-(define-key bible-map
-            [menu-bar bible select-biblical-commentary]
-            '("Select Commentary" . bible-display-available-commentaries))
-
-(define-key bible-map
-            [menu-bar bible select-biblical-text]
-            '("Select Text" . bible-display-available-texts))
-
 ;;;; Terms
 
 (defun bible--display-greek ()
@@ -594,10 +733,6 @@ This command is run by clicking on text, not directly by the user."
     ;; Remove "strong:G" prefix
     (bible-term-greek (replace-regexp-in-string "strong:G" "" item))))
 
-(defconst bible-greek-keymap (make-sparse-keymap))
-(define-key bible-greek-keymap (kbd "RET") 'bible--display-greek)
-(define-key bible-greek-keymap [mouse-1] 'bible--display-greek)
-
 (defun bible--display-hebrew ()
   "Display Hebrew term.
 This command is run by clicking on text, not directly by the user."
@@ -606,68 +741,6 @@ This command is run by clicking on text, not directly by the user."
     ;; Remove "strong:H" prefix and any alphabetic suffixes.
     (bible-term-hebrew (replace-regexp-in-string "strong:H" "" item))))
 
-(defconst bible-hebrew-keymap (make-sparse-keymap))
-(define-key bible-hebrew-keymap (kbd "RET") 'bible--display-hebrew)
-(define-key bible-hebrew-keymap [mouse-1] 'bible--display-hebrew)
-
-(defconst bible-lemma-keymap (make-sparse-keymap))
-(define-key bible-lemma-keymap (kbd "RET")
-            (lambda ()
-              (interactive)))
-
-;; Not used. Not really sure what to do here or if it's useful to do anything.
-(defconst bible-morph-keymap (make-sparse-keymap))
-(define-key bible-morph-keymap (kbd "RET")
-            (lambda ()
-              (interactive)
-;;            (let ((thing (thing-at-point 'word)))
-;;              (message "thing at point: %s" thing)
-;;              (message "morph property %s" (get-text-property 0 'field thing))
-                ))
-
-;;;; Modes
-
-(define-derived-mode bible special-mode "Bible"
-  "Mode for reading the Bible.
-\\{bible-map}"
-  (buffer-disable-undo)
-  (font-lock-mode t)
-  (use-local-map bible-map)
-  (setq buffer-read-only t)
-  (visual-line-mode t))
- 
-(define-derived-mode bible-search-mode special-mode "Bible Search"
-  "Mode for performing Bible searches.
-\\{bible-search-mode-map}"
-  (buffer-disable-undo)
-  (font-lock-mode t)
-  (use-local-map bible-search-mode-map)
-  (setq buffer-read-only t)
-  (visual-line-mode t))
-
-
-(define-derived-mode bible-term-mode special-mode "Bible Term"
-  "Mode for researching terms in the Bible.
-\\{bible-term-mode-map}"
-  (buffer-disable-undo)
-  (font-lock-mode t)
-  (use-local-map bible-term-mode-map)
-  (setq buffer-read-only t)
-  (visual-line-mode t))
-
-(define-derived-mode bible-term-hebrew-mode bible-term-mode "Bible Term (Hebrew)"
-  "Mode for researching Hebrew terms in the Bible.
-\\{bible-term-hebrew-mode-map}")
-
-(define-derived-mode bible-term-greek-mode bible-term-mode "Bible Term (Greek)"
-  "Mode for researching Greek terms in the Bible.
-\\{bible-term-greek-mode-map}")
-
-
-(define-derived-mode bible-text-select-mode special-mode "Select Module"
-  (buffer-disable-undo)
-  (font-lock-mode t)
-  (setq buffer-read-only t))
 
 ;;;; Functions
 
@@ -682,7 +755,6 @@ specifies the module to use."
   (interactive)
   (with-current-buffer (get-buffer-create (generate-new-buffer-name "*bible*"))
     (bible)
-    (setq-local mode-line-format bible-mode-line-format)
     (when module (setq-default bible-text module))
     (setq-local bible-text (default-value 'bible-text))
     (bible--set-location
@@ -907,9 +979,6 @@ Handle abbreviations."
 
 ;;;;;; Support (internal)
 
-;; Don't know how to get footnotes and scripture cross references yet.
-;;(defconst bible-diatheke-filter-options " afilmnsvw")
-(defconst bible-diatheke-filter-options " almnvw")
 
 (defun bible--exec-diatheke (query &optional filter format module)
   "Execute `diatheke' with specified QUERY options.
@@ -947,22 +1016,6 @@ MODULE is the text module to use and defaults to the current module."
       (apply #'call-process args))
     (buffer-string)))
 
-(defvar-local bible-chapter-title nil
-  "Text preceding start of chapter.
-Mostly in Psalms, like `Of David' or the like.")
-
-(defvar-local bible-level "0"
-  "Used by some modules for indentation and line breaks.")
-
-;;;; Greek and Hebrew lexeme and morpheme tooltip rendering.
-
-;;;;; Hash tables for Lexical definitions.
-(defvar bible-hash-greek (make-hash-table :test 'equal :size 10000))
-(defvar bible-hash-hebrew (make-hash-table :test 'equal :size 10000))
-
-;;;;; Hash tables for tooltips.
-(defvar lex-hash (make-hash-table :test 'equal :size 10000))
-(defvar morph-hash (make-hash-table :test 'equal :size 10000))
 
 ;; Use HTMLHREF format with diatheke, post-process to render html.
 (defun bible--morph-query (query module)
@@ -1039,35 +1092,6 @@ them to the <bookname> <chapter>:<verse> format."
           (insert verse-ref-string))))))
 
 
-(defvar bible-outline-strings
-  '(;;(". ."    .       ".")
-    (" I. ."    .       "\nI.")
-    (" II. ."   .       " II.")
-    (" III. ."  .       " III.")
-    (" IV. ."   .       " IV.")
-    (" V. ."    .       " V.")
-    ("1. ."     .       "\n 1.")
-    ("2. ."     .       "2.")
-    ("3. ."     .       "3.")
-    ("4. ."     .       "4.")
-    ("5. ."     .       "5.")
-    ("6. ."     .       "6.")
-    ("7. ."     .       "7.")
-    ("8. ."     .       "8.")
-    ("9. ."     .       "9.")
-    ("a. ."     .       "\n    a.")
-    ("(a)."     .       "\n    (a).")
-    ("b. ."     .       "    b.")
-    ("c. ."     .       "    c.")
-    ("d. ."     .       "    d.")
-    ("e. ."     .       "    e.")
-    ("f. ."     .       "    f.")
-    ("g. ."     .       "    g.")
-    ("h. ."     .       "    h.")
-    (" . "      .       ". ")
-    ("\n\n"     .       "\n")))
-
-
 (defun bible--cleanup-lex-text (lex-text)
   "Reformat tooltip text LEX-TEXT so tooltips look nice."
   (dolist (outline-string bible-outline-strings)
@@ -1574,10 +1598,6 @@ If optional argument VERSE is supplied, set cursor at verse."
   (bible--get-biblical-modules) ; Make sure the lists are fresh.
   bible--commentaries)
 
-(defconst bible-text-map (make-keymap))
-(define-key bible-text-map [mouse-1] 'bible-pick-module)
-(define-key bible-text-map (kbd "RET") 'bible-pick-module)
-
 
 (defun bible-display-available-texts ()
   "Display available modules, allow user to select."
@@ -1628,9 +1648,6 @@ If optional argument VERSE is supplied, set cursor at verse."
 
 ;;;; Bible Searching
 
-(defvar-local bible-search-word "")
-(defvar-local bible-search-module "")
-(defvar-local bible-search-matches 0)
 
 (defun bible--open-search (query searchmode module)
   "Open a search buffer of QUERY using SEARCHMODE in module MODULE."
@@ -1645,8 +1662,10 @@ If optional argument VERSE is supplied, set cursor at verse."
       (with-current-buffer (get-buffer-create (concat "*bible-search*"))
         (bible-search-mode)
 	(bible--display-search results module)
-	(setq-local bible-search-word query
-		    bible-search-module module)
+	(setq-local bible-search-word-this-query query
+		    bible-search-text-this-query module
+		    bible-search-range-this-query bible-search-range)
+;;	(setq-local mode-line-format bible-search-mode-line-format)
         (pop-to-buffer (current-buffer) nil t)))))
 
 (defun bible--display-search (results module)
@@ -1657,7 +1676,6 @@ If optional argument VERSE is supplied, set cursor at verse."
         (query-verses "")
         (buffer-read-only nil))
     ;;    (message "display-search %s" module)
-    (setq-local mode-line-format bible-search-mode-line-format)
     (setq-default bible-text module)
     (erase-buffer)
     (while match
@@ -1692,8 +1710,6 @@ If optional argument VERSE is supplied, set cursor at verse."
       (while (re-search-forward (concat "^.*" module ".*$") nil t)
         (replace-match "")))
     (setq mode-name "Bible Search ")
-    (when bible-search-range 
-      (setq mode-name (concat mode-name " <" bible-search-range ">")))
     (setq-local bible-search-matches (length verses))))