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 5FDF7431FB6 for ; Fri, 4 May 2012 03:38:24 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.1 X-Spam-Level: X-Spam-Status: No, score=-0.1 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1] 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 SpwhaGDuAAsP for ; Fri, 4 May 2012 03:38:23 -0700 (PDT) Received: from ks3536.kimsufi.com (schnouki.net [87.98.217.222]) by olra.theworths.org (Postfix) with ESMTP id 3AEF6431FAE for ; Fri, 4 May 2012 03:38:23 -0700 (PDT) Received: from thor.loria.fr (thor.loria.fr [152.81.12.250]) by ks3536.kimsufi.com (Postfix) with ESMTPSA id 84D1B6C000B; Fri, 4 May 2012 12:38:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=schnouki.net; s=key-schnouki; t=1336127904; bh=k2vQdUdNF4pEiT7h+r9d6yZAP+jpk2k0rDmxIljJvHk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=S1BNjNpD9s47cdXZcVZevsbl1xoEEtJST9QT++1sJ+dRQar2fFzkuLSlDnqtWYp7e TEpDO9/DG1txHqC3iCvfg+WMdo4TsrZk6b9jz04T4yU6FvFxWz8t6W3XLgqpTkIJCu LzfHHQmcJBoykZLKJ1Lz6zUOo3HH8pm5AgLTr87Q= From: Thomas Jost To: notmuch@notmuchmail.org Subject: [PATCH v6] emacs: Let the user choose where to compose new mails Date: Fri, 4 May 2012 12:37:56 +0200 Message-Id: <1336127876-6765-1-git-send-email-schnouki@schnouki.net> X-Mailer: git-send-email 1.7.10.1 In-Reply-To: <87k40yfj2z.fsf@zancas.localnet> References: <87k40yfj2z.fsf@zancas.localnet> 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: Fri, 04 May 2012 10:38:24 -0000 Introduce a new defcustom notmuch-mua-compose-in that allows users to specify where new mails are composed, either in the current window or in a new window or frame. Signed-off-by: Jameson Rollins --- Hi David et al., Here it is again, with a warning in the customize message that only appears in Emacs 23. The indentation is a little bit of a mess but that's needed for the docstring to look good :) (If you want I can remove the test and also display the Emacs 23 warning in Emacs 24.) Does it look good to you? I'm not comfortable with writing docs in English, so feel free to rephrase it if needed. I also moved notmuch-mua-compose-in to the 'notmuch-send group, just as other notmuch-mua-* variables. Regards, Thomas emacs/notmuch-mua.el | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 87bd88d..641dae7 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -36,6 +36,26 @@ :group 'notmuch-send :group 'notmuch-hooks) +(defcustom notmuch-mua-compose-in 'current-window + (concat + "Where to create the mail buffer used to compose a new message. +Possible values are `current-window' (default), `new-window' and +`new-frame'. If set to `current-window', the mail buffer will be +displayed in the current window, so the old buffer will be +restored when the mail buffer is killed. If set to `new-window' +or `new-frame', the mail buffer will be displayed in a new +window/frame that will be destroyed when the buffer is killed. +You may want to customize `message-kill-buffer-on-exit' +accordingly." + (when (< emacs-major-version 24) + " Due to a known bug in Emacs 23, you should not set +this to `new-window' if `message-kill-buffer-on-exit' is +disabled: this would result in an incorrect behavior.")) + :group 'notmuch-send + :type '(choice (const :tag "Compose in the current window" current-window) + (const :tag "Compose mail in a new window" new-window) + (const :tag "Compose mail in a new frame" new-frame))) + (defcustom notmuch-mua-user-agent-function 'notmuch-mua-user-agent-full "Function used to generate a `User-Agent:' string. If this is `nil' then no `User-Agent:' will be generated." @@ -55,6 +75,23 @@ list." ;; +(defun notmuch-mua-get-switch-function () + "Get a switch function according to `notmuch-mua-compose-in'." + (cond ((eq notmuch-mua-compose-in 'current-window) + 'switch-to-buffer) + ((eq notmuch-mua-compose-in 'new-window) + 'switch-to-buffer-other-window) + ((eq notmuch-mua-compose-in 'new-frame) + 'switch-to-buffer-other-frame) + (t (error "Invalid value for `notmuch-mua-compose-in'")))) + +(defun notmuch-mua-maybe-set-window-dedicated () + "Set the selected window as dedicated according to +`notmuch-mua-compose-in'." + (when (or (eq notmuch-mua-compose-in 'new-frame) + (eq notmuch-mua-compose-in 'new-window)) + (set-window-dedicated-p (selected-window) t))) + (defun notmuch-mua-user-agent-full () "Generate a `User-Agent:' string suitable for notmuch." (concat (notmuch-mua-user-agent-notmuch) @@ -148,7 +185,8 @@ list." collect pair))) (notmuch-mua-mail (plist-get reply-headers :To) (plist-get reply-headers :Subject) - (notmuch-headers-plist-to-alist reply-headers)))) + (notmuch-headers-plist-to-alist reply-headers) + nil (notmuch-mua-get-switch-function)))) ;; Insert the message body - but put it in front of the signature ;; if one is present @@ -186,6 +224,7 @@ list." (set-buffer-modified-p nil)) (defun notmuch-mua-forward-message () + (funcall (notmuch-mua-get-switch-function) (current-buffer)) (message-forward) (when notmuch-mua-user-agent-function @@ -195,6 +234,7 @@ list." (message-sort-headers) (message-hide-headers) (set-buffer-modified-p nil) + (notmuch-mua-maybe-set-window-dedicated) (message-goto-to)) @@ -217,6 +257,7 @@ OTHER-ARGS are passed through to `message-mail'." (message-sort-headers) (message-hide-headers) (set-buffer-modified-p nil) + (notmuch-mua-maybe-set-window-dedicated) (message-goto-to)) @@ -273,7 +314,7 @@ the From: address first." (let ((other-headers (when (or prompt-for-sender notmuch-always-prompt-for-sender) (list (cons 'From (notmuch-mua-prompt-for-sender)))))) - (notmuch-mua-mail nil nil other-headers))) + (notmuch-mua-mail nil nil other-headers nil (notmuch-mua-get-switch-function)))) (defun notmuch-mua-new-forward-message (&optional prompt-for-sender) "Invoke the notmuch message forwarding window. -- 1.7.10.1