Przeglądaj źródła

More buffer management stuff

Fred Gilham 5 dni temu
rodzic
commit
c8948f065c
1 zmienionych plików z 15 dodań i 7 usunięć
  1. 15 7
      bible.el

+ 15 - 7
bible.el

@@ -481,7 +481,7 @@ See `bible--display-lemma-hebrew'."
 (defvar bible--commentary-buffers nil
   "List of commentary buffers.")
 
-(defvar-local associated-buffer nil
+(defvar-local bible-associated-buffer nil
   "Buffer associated with a given commentary buffer---used for 
 chasing cross-references.")
 
@@ -784,10 +784,11 @@ starting verse reference for the buffer. If no optional location
 arguments are supplied, Genesis 1:1 is used."
   (interactive)
   (let ((old-buffer (current-buffer)))
+    (unless old-buffer (error "No current buffer! How did this happen!"))
     (with-current-buffer (or buffer (get-buffer-create "*commentary*"))
       (bible)
       (when module (setq-default bible-commentary module))
-      (setq-local associated-buffer old-buffer)
+      (setq-local bible-associated-buffer old-buffer)
       (setq-local bible-text (default-value 'bible-commentary))
       (setq-local mode-name (concat "Commentary " bible-text))
       (bible--set-location
@@ -890,7 +891,10 @@ Use optional argument MODULE as commentary if given."
   (interactive)
   (let ((item (or module (get-text-property (point) 'module))))
     (setq-local bible-commentary item)
-    (commentary-open nil bible--current-book-name bible--current-chapter 1 item)))
+    (split-window-right)
+    (balance-windows)
+    (other-window 1)
+    (commentary-open (generate-new-buffer "*commentary*") bible--current-book-name bible--current-chapter 1 item)))
 
 (defun bible-select-text ()
   "Ask user for a new text module for the current `bible' buffer."
@@ -964,6 +968,8 @@ or `multiword'.  `lucene' is the default search.
     (let ((searchmode (completing-read "Search Mode: " '("lucene" "phrase" "regex" "multiword") nil t "lucene")))
       (bible--open-search query searchmode (buffer-local-value 'bible-text (current-buffer))))))
 
+(defvar-local bible-search-reference-buffer nil)
+
 (defun bible-follow-verse ()
   "Follow the hovered verse in a bible search mode buffer.
 Create a new `bible' buffer positioned at the selected verse."
@@ -980,14 +986,16 @@ Create a new `bible' buffer positioned at the selected verse."
       (setq chapter (substring (match-string 0 text) 0 (1- (length (match-string 0 text)))))
       (string-match ":[0-9]?[0-9]?[0-9]?" text)
       (setq verse (substring (match-string 0 text) 1))
-      (bible-open associated-buffer 
+      (unless bible-search-reference-buffer
+        (setq-local bible-search-reference-buffer (generate-new-buffer "*bible*")))
+      (bible-open bible-search-reference-buffer
                   (string-trim book)
                   (string-to-number chapter)
                   (string-to-number verse)
                   bible-text))))
 
 (defun bible-follow-xref ()
-  "Follow the hovered verse in a bible term buffer.
+  "Follow the hovered verse in a bible term or commentary buffer.
 Create a new `bible' buffer positioned at the specified verse.
 Handle abbreviations."
   (interactive)
@@ -1011,7 +1019,7 @@ Handle abbreviations."
                         (car verse-ref)))
               (chapter (car chapter-verse))
               (verse (cadr chapter-verse)))
-          (bible-open associated-buffer 
+          (bible-open bible-associated-buffer 
                       (string-trim book)
                       (string-to-number chapter)
                       (string-to-number verse)
@@ -1757,7 +1765,7 @@ If optional argument VERSE is supplied, set cursor at verse."
                   "No results found."
                   (when (equal searchmode "lucene")
                     " Verify index has been build with mkfastmod.")))
-      (with-current-buffer (generate-new-buffer-name "*bible-search*")
+      (with-current-buffer (generate-new-buffer "*bible-search*")
         (bible-search-mode)
         (bible--display-search results module)
         (setq-local bible-search-word-this-query query