X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch.el;h=f5f0324485f63296ad43403eb8ede17bbda952e8;hb=e02bb7e9fdbc96c66f32ce531509824f8afd4686;hp=804e78ab8c53cf855cd9a5ea3713f19b40da4886;hpb=71eaa19350883b30bafe885ea083c2e3f1621e10;p=notmuch diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 804e78ab..f5f03244 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -188,7 +188,9 @@ there will be called at other points of notmuch execution." (define-key map "-" 'notmuch-search-remove-tag) (define-key map "+" 'notmuch-search-add-tag) (define-key map (kbd "RET") 'notmuch-search-show-thread) + (define-key map (kbd "M-RET") 'notmuch-tree-from-search-thread) (define-key map "Z" 'notmuch-tree-from-search-current-query) + (define-key map "U" 'notmuch-unthreaded-from-search-current-query) map) "Keymap for \"notmuch search\" buffers.") (fset 'notmuch-search-mode-map notmuch-search-mode-map) @@ -522,6 +524,11 @@ thread." (interactive) (notmuch-tree notmuch-search-query-string)) +(defun notmuch-unthreaded-from-search-current-query () + "Call notmuch tree with the current query" + (interactive) + (notmuch-unthreaded notmuch-search-query-string)) + (defun notmuch-tree-from-search-thread () "Show the selected thread with notmuch-tree" (interactive) @@ -557,20 +564,11 @@ thread." (setq output (append output (notmuch-search-get-tags pos))))) output)) -(defun notmuch-search-interactive-region () - "Return the bounds of the current interactive region. - -This returns (BEG END), where BEG and END are the bounds of the -region if the region is active, or both `point' otherwise." - (if (region-active-p) - (list (region-beginning) (region-end)) - (list (point) (point)))) - (defun notmuch-search-interactive-tag-changes (&optional initial-input) "Prompt for tag changes for the current thread or region. Returns (TAG-CHANGES REGION-BEGIN REGION-END)." - (let* ((region (notmuch-search-interactive-region)) + (let* ((region (notmuch-interactive-region)) (beg (first region)) (end (second region)) (prompt (if (= beg end) "Tag thread" "Tag region"))) (cons (notmuch-read-tag-changes @@ -590,8 +588,8 @@ is inactive this applies to the thread at point. If ONLY-MATCHED is non-nil, only tag matched messages." (interactive (notmuch-search-interactive-tag-changes)) (unless (and beg end) - (setq beg (car (notmuch-search-interactive-region)) - end (cadr (notmuch-search-interactive-region)))) + (setq beg (car (notmuch-interactive-region)) + end (cadr (notmuch-interactive-region)))) (let ((search-string (notmuch-search-find-stable-query-region beg end only-matched))) (notmuch-tag search-string tag-changes) @@ -627,7 +625,7 @@ messages will be \"unarchived\" (i.e. the tag changes in `notmuch-archive-tags' will be reversed). This function advances the next thread when finished." - (interactive (cons current-prefix-arg (notmuch-search-interactive-region))) + (interactive (cons current-prefix-arg (notmuch-interactive-region))) (when notmuch-archive-tags (notmuch-search-tag (notmuch-tag-change-list notmuch-archive-tags unarchive) beg end)) @@ -1079,6 +1077,12 @@ current search results AND that are tagged with the given tag." (list (notmuch-select-tag-with-completion "Filter by tag: " notmuch-search-query-string))) (notmuch-search (concat notmuch-search-query-string " and tag:" tag) notmuch-search-oldest-first)) +(defun notmuch-search-by-tag (tag) + "Display threads matching TAG in a notmuch-search buffer." + (interactive + (list (notmuch-select-tag-with-completion "Notmuch search tag: "))) + (notmuch-search (concat "tag:" tag))) + ;;;###autoload (defun notmuch () "Run notmuch and display saved searches, known tags, etc."