]> git.neil.brown.name Git - edlib.git/commitdiff
notmuch master_view: catch exception so .recursed in reset properly.
authorNeilBrown <neil@brown.name>
Thu, 14 Sep 2023 04:04:22 +0000 (14:04 +1000)
committerNeilBrown <neil@brown.name>
Fri, 15 Sep 2023 03:38:14 +0000 (13:38 +1000)
If self.list_pane.call(key, **a) raised an exception, self.recursed
would not be reset, and so would cause repeated warnings.
So DTRT.

Signed-off-by: NeilBrown <neil@brown.name>
python/module-notmuch.py

index 0f7cc11fbdfb0bec64996d38f8740b0cd181c638..f2890f5c80d0254884bbdc2aea5ee0bc51e72077 100644 (file)
@@ -1926,14 +1926,17 @@ class notmuch_master_view(edlib.Pane):
     def handle_maindoc(self, key, **a):
         "handle-prefix:doc:notmuch:"
         # any doc:notmuch calls that haven't been handled
-        # are handled to the list_pane
+        # are handed to the list_pane
         if self.recursed == key:
             edlib.LOG("doc:notmuch: recursed!", key)
+            edlib.LOG_BT()
             return edlib.Efail
         prev = self.recursed
         self.recursed = key
-        # FIXME catch exception to return failure state properly
-        ret = self.list_pane.call(key, **a)
+        try:
+            ret = self.list_pane.call(key, **a)
+        except edlib.commandfailed:
+            ret = edlib.Efail
         self.recursed = prev
         return ret