Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id BE4DA429E25 for ; Sat, 21 May 2011 11:50:47 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.799 X-Spam-Level: X-Spam-Status: No, score=-0.799 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qup1PLzQy4Ee for ; Sat, 21 May 2011 11:50:46 -0700 (PDT) Received: from mail-ww0-f45.google.com (mail-ww0-f45.google.com [74.125.82.45]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id 788D8431FD0 for ; Sat, 21 May 2011 11:50:46 -0700 (PDT) Received: by wwi36 with SMTP id 36so4097340wwi.2 for ; Sat, 21 May 2011 11:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:date:from:to:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=JlgFlgo0KVukxAmHnGNGEGcLcKSg09GfC2QmwtF11j8=; b=s1RRK8NTRLUNefWr9fKfHjC9/b9C3iT1RpxuNQ/krp0wF0czdekQ/vGw7Hfu//ry9y Tk6Y+9hIDoRPC7si/O/Q0izkvulEe83RiZpFuogwBtxoJE4qu+nIfNWcA3Jg0wVL2psu 3SFXeznwys3a3V35NudN6anectzslscNGKiR4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=date:from:to:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=fty3b022d66XD1zoX4/FtFgd2pc33xLm2JN42YuWRMiUk9qLcZIHpNfB5QAn1cfmjb w+ccuuNAAXEDJsUnOJ4VvgE98QtrroiGNRUH2sGOI6yVxcbnQ7/A7OvEAyT8cz+g/6Nc nkSpKPxk0sNs7UEoKpBEONOuZHiq8yR+8YFAQ= Received: by 10.216.240.12 with SMTP id d12mr790317wer.8.1306003843449; Sat, 21 May 2011 11:50:43 -0700 (PDT) Received: from brick (cpc1-sgyl2-0-0-cust47.sgyl.cable.virginmedia.com [80.192.18.48]) by mx.google.com with ESMTPS id k76sm2437092wej.43.2011.05.21.11.50.41 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 21 May 2011 11:50:42 -0700 (PDT) Date: Sat, 21 May 2011 19:50:37 +0100 From: Patrick Totzke To: notmuch@notmuchmail.org Subject: Re: a python terminal gui? Message-ID: <20110521185037.GA13447@brick> References: <1305888097-sup-2343@optimusprime> <87pqndoww8.fsf@yoom.home.cworth.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="9amGYk9869ThD9tj" Content-Disposition: inline In-Reply-To: <87pqndoww8.fsf@yoom.home.cworth.org> User-Agent: Sup/git X-Mailman-Approved-At: Sat, 21 May 2011 22:53:56 -0700 X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 May 2011 18:50:47 -0000 --9amGYk9869ThD9tj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Again, sorry if this comes as a repost.. Excerpts from Carl Worth's message of Fri May 20 23:00:23 +0100 2011: > > However, as a vim user I feel that the one thing that's truly missing i= s a=20 > > maintainable, feature-rich commandline GUI. >=20 > "... that's not implemented in emacs" you mean? ;-) of course :D > It's funny to me that you used the name "notmuch-gui" since I've always > understood the 'G' in GUI to indicate "graphical", to distinguish from > non-graphical terminal interfaces like you propose here. I always intuitively understood "graphical" as anything visual. But your right, http://en.wikipedia.org/wiki/Graphical_user_interface suggests that a curses-like interface is not a GUI nor a CLI. Anyhow, I agree that at some point I'll need a real name. > I believe all new code should be doing "import notmuch" rather than > "import cnotmuch", and if there is any package that installs bindings > that work as "cnotmuch" we should get those updated right away. Thanks for the clarification. I assume I'll always get the current bindings distributed with notmuch itself. A make target inside notmuch/bindings/python would indeed be helpful. > > You can find the code at here: https://github.com/pazz/notmuch-gui=20 > I was a bit surprised to see so many results in my initial view. I'd > expect a default view to be tag:inbox rather than tag:unread. (I didn't > realize I had over 100 thousand messages with the unread tag, but > apparently I do.) Perhaps that's a sup default that I've long since > forgotten? Yep, its an artefact of my debugging behaviour. Having the initial buffer show the inbox makes total sense and is also what sup does. > * The interface blocks for a while when searching for something (like > "tag:unread" in my case) that returns a *lot* of results. Are you > somehow sucking in all the results immediately rather than just what > you need to dill the current screen? That is surprising! I only fill the screen by iterating over an initial part of the iterator returned by Query.search_threads() I do a second query to count the messages by Query.count_messages(), but I'd guess that this translates to some sort of "SELECT COUNT" and should also be fast. Maybe there's some copying going on=20 at lower levels? > * I was a bit surprised that 'i' and 'u' kept opening new buffers > rather than switching to an existing buffer. It shouldn't be like this, I agree. I'm just annoyed that sup treats the inbox view different from other searches, in terms of keybindings. But nevertheless one could have "I" point to a unique inbox search buffer. > * The '/' key didn't seem to do anything for me, so I wasn't able to > actually do any custom searches. This is because it really is "\" :P that was a typo in the README. > It looks like a fine start to me. Please let me know if there's anything > I can do to help with this, (in terms of hosting the code or anything > else). Thanks, that's helpful. I guess it would make sense to place this under notmuch/contrib at a later point if it gets usable. Ah I have question regarding "toplevel" messages in threads: How can it be that a mail that is not the one that started a thread is contained in thread.get_toplevel_messages() ? The only thing I can think of is that a user somehow forced two threads to become one. Take this very thread for example. Why do I get Mueen Nawaz's reply as a toplevel message? does this mean that messages header has incorrect Reply-to headers set? @Mueen Nawaz: It's a good idea to post this on the wiki. Will do. Cheers, /p --9amGYk9869ThD9tj Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEARECAAYFAk3YCX0ACgkQlDQDZ9fWxarsDwCgyfCqWxYCrE766LDk6aP9ss2V g8kAn0Y3BUMi7zDPqleASIR26CDZ1IFJ =PjtP -----END PGP SIGNATURE----- --9amGYk9869ThD9tj--