diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 3d82f0d0..057b1aec 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -747,6 +747,8 @@ non-authors is found, assume that all of the authors match." (more t) (inhibit-read-only t)) (while more + (while (and (< line (length string)) (= (elt string line) ?\n)) + (setq line (1+ line))) (if (string-match "^\\(thread:[0-9A-Fa-f]*\\) \\([^][]*\\) \\(\\[[0-9/]*\\]\\) \\([^;]*\\); \\(.*\\) (\\([^()]*\\))$" string line) (let* ((thread-id (match-string 1 string)) (date (match-string 2 string)) @@ -756,6 +758,8 @@ non-authors is found, assume that all of the authors match." (tags (match-string 6 string)) (tag-list (if tags (save-match-data (split-string tags))))) (goto-char (point-max)) + (if (/= (match-beginning 1) line) + (insert (concat "Error: Unexpected output from notmuch search:\n" (substring string line (match-beginning 1)) "\n"))) (let ((beg (point-marker))) (notmuch-search-show-result date count authors subject tags) (notmuch-search-color-line beg (point-marker) tag-list) @@ -767,7 +771,12 @@ non-authors is found, assume that all of the authors match." (set 'found-target beg) (set 'notmuch-search-target-thread "found")))) (set 'line (match-end 0))) - (set 'more nil))))) + (set 'more nil) + (while (and (< line (length string)) (= (elt string line) ?\n)) + (setq line (1+ line))) + (if (< line (length string)) + (insert (concat "Error: Unexpected output from notmuch search:\n" (substring string line) "\n"))) + )))) (if found-target (goto-char found-target))) (delete-process proc)))) diff --git a/test/emacs-large-search-buffer b/test/emacs-large-search-buffer index f827bb14..78b3ae8b 100755 --- a/test/emacs-large-search-buffer +++ b/test/emacs-large-search-buffer @@ -21,7 +21,7 @@ notmuch new > /dev/null test_begin_subtest 'Comparing emacs result to "notmuch search"' expected="$(notmuch search '*' | sed -e 's/^thread:[0-9a-f]* //' -e 's/;//' -e 's/xx*/[BLOB]/') End of search results." -output=$(test_emacs '(notmuch-search "*") (notmuch-test-wait) (message (buffer-string))' 2>&1 | sed -e s', *, ,g' -e 's/xx*/[BLOB]/') +output=$(test_emacs '(notmuch-search "*") (notmuch-test-wait) (message (buffer-string))' 2>&1 | sed -e s', *, ,g' -e 's/xxx*/[BLOB]/g') test_expect_equal "$output" "$expected" test_done