]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch.el
emacs: Fix "free variable" warning for notmuch-folder-show-empty.
[notmuch] / emacs / notmuch.el
index 5b553bbf55050be5b11a61221a28fb7c855e6ed7..f887916cb4d14ec227bcc713dea483b717210031 100644 (file)
@@ -1213,7 +1213,7 @@ matching this search term are shown if non-nil. "
          (notmuch-show-next-open-message))
       )))
 
-(defvar notmuch-search-authors-width 40
+(defvar notmuch-search-authors-width 20
   "Number of columns to use to display authors in a notmuch-search buffer.")
 
 (defvar notmuch-search-mode-map
@@ -1247,7 +1247,7 @@ matching this search term are shown if non-nil. "
 
 (defvar notmuch-search-query-string)
 (defvar notmuch-search-target-thread)
-(defvar notmuch-search-target-position)
+(defvar notmuch-search-target-line)
 (defvar notmuch-search-oldest-first t
   "Show the oldest mail first in the search-mode")
 
@@ -1349,7 +1349,7 @@ Complete list of currently available key bindings:
   (make-local-variable 'notmuch-search-query-string)
   (make-local-variable 'notmuch-search-oldest-first)
   (make-local-variable 'notmuch-search-target-thread)
-  (make-local-variable 'notmuch-search-target-position)
+  (make-local-variable 'notmuch-search-target-line)
   (set (make-local-variable 'scroll-preserve-screen-position) t)
   (add-to-invisibility-spec 'notmuch-search)
   (use-local-map notmuch-search-mode-map)
@@ -1359,7 +1359,7 @@ Complete list of currently available key bindings:
   (setq buffer-read-only t)
   (if (not notmuch-tag-face-alist)
       (add-to-list 'notmuch-search-font-lock-keywords (list
-               "(\\([^)]*\\))$" '(1  'notmuch-tag-face)))
+               "(\\([^()]*\\))$" '(1  'notmuch-tag-face)))
     (let ((notmuch-search-tags (mapcar 'car notmuch-tag-face-alist)))
       (loop for notmuch-search-tag  in notmuch-search-tags
            do (add-to-list 'notmuch-search-font-lock-keywords (list
@@ -1482,10 +1482,11 @@ This function advances the next thread when finished."
                            (insert (format " (process returned %d)" exit-status)))
                        (insert "\n")
                        (if (and atbob
-                                notmuch-search-target-thread)
+                                (not (string= notmuch-search-target-thread "found")))
                            (set 'never-found-target-thread t))))))
-             (if never-found-target-thread
-                 (goto-char notmuch-search-target-position)))))))
+             (if (and never-found-target-thread
+                      notmuch-search-target-line)
+                 (goto-line notmuch-search-target-line)))))))
 
 (defun notmuch-search-process-filter (proc string)
   "Process and filter the output of \"notmuch search\""
@@ -1506,19 +1507,19 @@ This function advances the next thread when finished."
                           (authors-length (length authors))
                           (subject (match-string 5 string))
                           (tags (match-string 6 string)))
-                     (if (> authors-length 40)
-                         (set 'authors (concat (substring authors 0 (- 40 3)) "...")))
+                     (if (> authors-length notmuch-search-authors-width)
+                         (set 'authors (concat (substring authors 0 (- notmuch-search-authors-width 3)) "...")))
                      (goto-char (point-max))
-                     (let ((beg (point-marker)))
-                       (insert (format "%s %-7s %-40s %s (%s)\n" date count authors subject tags))
+                     (let ((beg (point-marker))
+                           (format-string (format "%%s %%-7s %%-%ds %%s (%%s)\n" notmuch-search-authors-width)))
+                       (insert (format format-string date count authors subject tags))
                        (put-text-property beg (point-marker) 'notmuch-search-thread-id thread-id)
                        (put-text-property beg (point-marker) 'notmuch-search-authors authors)
                        (put-text-property beg (point-marker) 'notmuch-search-subject subject)
-                       (if (and notmuch-search-target-thread
-                                (string= thread-id notmuch-search-target-thread))
+                       (if (string= thread-id notmuch-search-target-thread)
                            (progn
                              (set 'found-target beg)
-                             (set 'notmuch-search-target-thread nil))))
+                             (set 'notmuch-search-target-thread "found"))))
                      (set 'line (match-end 0)))
                  (set 'more nil)))))
          (if found-target
@@ -1549,7 +1550,7 @@ characters as well as `_.+-'.
           (append action-split (list notmuch-search-query-string) nil))))
 
 ;;;###autoload
-(defun notmuch-search (query &optional oldest-first target-thread target-position)
+(defun notmuch-search (query &optional oldest-first target-thread target-line)
   "Run \"notmuch search\" with the given query string and display results.
 
 The optional parameters are used as follows:
@@ -1557,11 +1558,8 @@ The optional parameters are used as follows:
   oldest-first: A Boolean controlling the sort order of returned threads
   target-thread: A thread ID (with the thread: prefix) that will be made
                  current if it appears in the search results.
-  saved-position: If the search results complete, and the target thread is
-                  not found in the results, and the point is still at the
-                  beginning of the buffer, then the point will be moved to
-                  the saved position.
-"
+  target-line: The line number to move to if the target thread does not
+               appear in the search results."
   (interactive "sNotmuch search: ")
   (let ((buffer (get-buffer-create (concat "*notmuch-search-" query "*"))))
     (switch-to-buffer buffer)
@@ -1569,7 +1567,7 @@ The optional parameters are used as follows:
     (set 'notmuch-search-query-string query)
     (set 'notmuch-search-oldest-first oldest-first)
     (set 'notmuch-search-target-thread target-thread)
-    (set 'notmuch-search-target-position target-position)
+    (set 'notmuch-search-target-line target-line)
     (let ((proc (get-buffer-process (current-buffer)))
          (inhibit-read-only t))
       (if proc
@@ -1595,12 +1593,12 @@ the new search results, then point will be placed on the same
 thread. Otherwise, point will be moved to attempt to be in the
 same relative position within the new buffer."
   (interactive)
-  (let ((here (point))
+  (let ((target-line (line-number-at-pos))
        (oldest-first notmuch-search-oldest-first)
-       (thread (notmuch-search-find-thread-id))
+       (target-thread (notmuch-search-find-thread-id))
        (query notmuch-search-query-string))
     (kill-this-buffer)
-    (notmuch-search query oldest-first thread here)
+    (notmuch-search query oldest-first target-thread target-line)
     (goto-char (point-min))
     ))
 
@@ -1735,7 +1733,8 @@ Currently available key bindings:
 (defun notmuch-folder-count (search)
   (car (process-lines notmuch-command "count" search)))
 
-(setq notmuch-folder-show-empty t)
+(defvar notmuch-folder-show-empty t
+  "Whether `notmuch-folder-mode' should display empty folders.")
 
 (defun notmuch-folder-show-empty-toggle ()
   "Toggle the listing of empty folders"