[PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-02-24 Thread Tomi Ollila
On Tue, Feb 24 2015, Jani Nikula  wrote:

> On Tue, 24 Feb 2015, Tomi Ollila  wrote:
>> On Tue, Jan 27 2015, Jani Nikula  wrote:
>>
>>> Use the new notmuch address command to do completion for addresses in
>>> from: and to:.
>>>
>>> ---
>>>
>>> This patch is more of an RFC. The to: completion is slw because
>>> typically there are more matches to begin with, and then producing the
>>> results requires reading the messages. Maybe it would be better to use
>>> the same mechanism as from: for both, even if it's not accurate for
>>> to:?
>>
>> Shameless marketing puff: Imagine how fast would it would be to use
>> nottoomuch-addresses -- the completions are there before one
>> sees TAB KeyRelease event... ;)
>
> Like this? ;)
>
> $ notmuch search to:tomiTABnottoomuch-addresses.sh: command not found

Yes! ;)

Tomi

> I like the completion to be self contained.
>
> BR,
> Jani.


[PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-02-24 Thread Tomi Ollila
On Tue, Jan 27 2015, Jani Nikula  wrote:

> Use the new notmuch address command to do completion for addresses in
> from: and to:.
>
> ---
>
> This patch is more of an RFC. The to: completion is slw because
> typically there are more matches to begin with, and then producing the
> results requires reading the messages. Maybe it would be better to use
> the same mechanism as from: for both, even if it's not accurate for
> to:?

Shameless marketing puff: Imagine how fast would it would be to use
nottoomuch-addresses -- the completions are there before one
sees TAB KeyRelease event... ;)

Tomi


> ---
>  completion/notmuch-completion.bash | 30 +-
>  1 file changed, 25 insertions(+), 5 deletions(-)
>
> diff --git a/completion/notmuch-completion.bash 
> b/completion/notmuch-completion.bash
> index e0498903f22f..db49294fc58c 100644
> --- a/completion/notmuch-completion.bash
> +++ b/completion/notmuch-completion.bash
> @@ -27,10 +27,30 @@
>  # on completion.
>  #
>  
> -_notmuch_user_emails()
> +# $1: current input of the form prefix:partialinput, where prefix is
> +# to or from.
> +_notmuch_email()
>  {
> -notmuch config get user.primary_email
> -notmuch config get user.other_email
> +local output prefix cur
> +
> +prefix="${1%%:*}"
> +cur="${1#*:}"
> +
> +# Cut the input to be completed at punctuation because
> +# (apparently) Xapian does not support the trailing wildcard '*'
> +# operator for input with punctuation. We let compgen handle the
> +# extra filtering required.
> +cur="${cur%%[^a-zA-Z0-9]*}"
> +
> +case "$prefix" in
> + to) output=recipients;;
> + from) output=sender;;
> + *) return;;
> +esac
> +
> +# Only emit plain, lower case, unique addresses.
> +notmuch address --output=$output $prefix:"${cur}*" | \
> + sed 's/[^<]*<\([^>]*\)>/\1/' | tr "[:upper:]" "[:lower:]" | sort -u
>  }
>  
>  _notmuch_search_terms()
> @@ -44,10 +64,10 @@ _notmuch_search_terms()
>   COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags 
> \*`" -- ${cur##tag:}) )
>   ;;
>   to:*)
> - COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_user_emails`" -- 
> ${cur##to:}) )
> + COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_email ${cur}`" -- 
> ${cur##to:}) )
>   ;;
>   from:*)
> - COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_user_emails`" -- 
> ${cur##from:}) )
> + COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_email ${cur}`" -- 
> ${cur##from:}) )
>   ;;
>   path:*)
>   local path=`notmuch config get database.path`
> -- 
> 2.1.4
>
> ___
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-02-24 Thread Jani Nikula
On Tue, 24 Feb 2015, Tomi Ollila  wrote:
> On Tue, Jan 27 2015, Jani Nikula  wrote:
>
>> Use the new notmuch address command to do completion for addresses in
>> from: and to:.
>>
>> ---
>>
>> This patch is more of an RFC. The to: completion is slw because
>> typically there are more matches to begin with, and then producing the
>> results requires reading the messages. Maybe it would be better to use
>> the same mechanism as from: for both, even if it's not accurate for
>> to:?
>
> Shameless marketing puff: Imagine how fast would it would be to use
> nottoomuch-addresses -- the completions are there before one
> sees TAB KeyRelease event... ;)

Like this? ;)

$ notmuch search to:tomiTABnottoomuch-addresses.sh: command not found

I like the completion to be self contained.

BR,
Jani.


Re: [PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-02-23 Thread Tomi Ollila
On Tue, Jan 27 2015, Jani Nikula j...@nikula.org wrote:

 Use the new notmuch address command to do completion for addresses in
 from: and to:.

 ---

 This patch is more of an RFC. The to: completion is slw because
 typically there are more matches to begin with, and then producing the
 results requires reading the messages. Maybe it would be better to use
 the same mechanism as from: for both, even if it's not accurate for
 to:?

Shameless marketing puff: Imagine how fast would it would be to use
nottoomuch-addresses -- the completions are there before one
sees TAB KeyRelease event... ;)

Tomi


 ---
  completion/notmuch-completion.bash | 30 +-
  1 file changed, 25 insertions(+), 5 deletions(-)

 diff --git a/completion/notmuch-completion.bash 
 b/completion/notmuch-completion.bash
 index e0498903f22f..db49294fc58c 100644
 --- a/completion/notmuch-completion.bash
 +++ b/completion/notmuch-completion.bash
 @@ -27,10 +27,30 @@
  # on completion.
  #
  
 -_notmuch_user_emails()
 +# $1: current input of the form prefix:partialinput, where prefix is
 +# to or from.
 +_notmuch_email()
  {
 -notmuch config get user.primary_email
 -notmuch config get user.other_email
 +local output prefix cur
 +
 +prefix=${1%%:*}
 +cur=${1#*:}
 +
 +# Cut the input to be completed at punctuation because
 +# (apparently) Xapian does not support the trailing wildcard '*'
 +# operator for input with punctuation. We let compgen handle the
 +# extra filtering required.
 +cur=${cur%%[^a-zA-Z0-9]*}
 +
 +case $prefix in
 + to) output=recipients;;
 + from) output=sender;;
 + *) return;;
 +esac
 +
 +# Only emit plain, lower case, unique addresses.
 +notmuch address --output=$output $prefix:${cur}* | \
 + sed 's/[^]*\([^]*\)/\1/' | tr [:upper:] [:lower:] | sort -u
  }
  
  _notmuch_search_terms()
 @@ -44,10 +64,10 @@ _notmuch_search_terms()
   COMPREPLY=( $(compgen -P tag: -W `notmuch search --output=tags 
 \*` -- ${cur##tag:}) )
   ;;
   to:*)
 - COMPREPLY=( $(compgen -P to: -W `_notmuch_user_emails` -- 
 ${cur##to:}) )
 + COMPREPLY=( $(compgen -P to: -W `_notmuch_email ${cur}` -- 
 ${cur##to:}) )
   ;;
   from:*)
 - COMPREPLY=( $(compgen -P from: -W `_notmuch_user_emails` -- 
 ${cur##from:}) )
 + COMPREPLY=( $(compgen -P from: -W `_notmuch_email ${cur}` -- 
 ${cur##from:}) )
   ;;
   path:*)
   local path=`notmuch config get database.path`
 -- 
 2.1.4

 ___
 notmuch mailing list
 notmuch@notmuchmail.org
 http://notmuchmail.org/mailman/listinfo/notmuch
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-01-27 Thread Jani Nikula
Use the new notmuch address command to do completion for addresses in
from: and to:.

---

This patch is more of an RFC. The to: completion is slw because
typically there are more matches to begin with, and then producing the
results requires reading the messages. Maybe it would be better to use
the same mechanism as from: for both, even if it's not accurate for
to:?
---
 completion/notmuch-completion.bash | 30 +-
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/completion/notmuch-completion.bash 
b/completion/notmuch-completion.bash
index e0498903f22f..db49294fc58c 100644
--- a/completion/notmuch-completion.bash
+++ b/completion/notmuch-completion.bash
@@ -27,10 +27,30 @@
 # on completion.
 #

-_notmuch_user_emails()
+# $1: current input of the form prefix:partialinput, where prefix is
+# to or from.
+_notmuch_email()
 {
-notmuch config get user.primary_email
-notmuch config get user.other_email
+local output prefix cur
+
+prefix="${1%%:*}"
+cur="${1#*:}"
+
+# Cut the input to be completed at punctuation because
+# (apparently) Xapian does not support the trailing wildcard '*'
+# operator for input with punctuation. We let compgen handle the
+# extra filtering required.
+cur="${cur%%[^a-zA-Z0-9]*}"
+
+case "$prefix" in
+   to) output=recipients;;
+   from) output=sender;;
+   *) return;;
+esac
+
+# Only emit plain, lower case, unique addresses.
+notmuch address --output=$output $prefix:"${cur}*" | \
+   sed 's/[^<]*<\([^>]*\)>/\1/' | tr "[:upper:]" "[:lower:]" | sort -u
 }

 _notmuch_search_terms()
@@ -44,10 +64,10 @@ _notmuch_search_terms()
COMPREPLY=( $(compgen -P "tag:" -W "`notmuch search --output=tags 
\*`" -- ${cur##tag:}) )
;;
to:*)
-   COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_user_emails`" -- 
${cur##to:}) )
+   COMPREPLY=( $(compgen -P "to:" -W "`_notmuch_email ${cur}`" -- 
${cur##to:}) )
;;
from:*)
-   COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_user_emails`" -- 
${cur##from:}) )
+   COMPREPLY=( $(compgen -P "from:" -W "`_notmuch_email ${cur}`" -- 
${cur##from:}) )
;;
path:*)
local path=`notmuch config get database.path`
-- 
2.1.4



[PATCH 5/5] completion: complete addresses in from:/to: search terms

2015-01-27 Thread Jani Nikula
Use the new notmuch address command to do completion for addresses in
from: and to:.

---

This patch is more of an RFC. The to: completion is slw because
typically there are more matches to begin with, and then producing the
results requires reading the messages. Maybe it would be better to use
the same mechanism as from: for both, even if it's not accurate for
to:?
---
 completion/notmuch-completion.bash | 30 +-
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/completion/notmuch-completion.bash 
b/completion/notmuch-completion.bash
index e0498903f22f..db49294fc58c 100644
--- a/completion/notmuch-completion.bash
+++ b/completion/notmuch-completion.bash
@@ -27,10 +27,30 @@
 # on completion.
 #
 
-_notmuch_user_emails()
+# $1: current input of the form prefix:partialinput, where prefix is
+# to or from.
+_notmuch_email()
 {
-notmuch config get user.primary_email
-notmuch config get user.other_email
+local output prefix cur
+
+prefix=${1%%:*}
+cur=${1#*:}
+
+# Cut the input to be completed at punctuation because
+# (apparently) Xapian does not support the trailing wildcard '*'
+# operator for input with punctuation. We let compgen handle the
+# extra filtering required.
+cur=${cur%%[^a-zA-Z0-9]*}
+
+case $prefix in
+   to) output=recipients;;
+   from) output=sender;;
+   *) return;;
+esac
+
+# Only emit plain, lower case, unique addresses.
+notmuch address --output=$output $prefix:${cur}* | \
+   sed 's/[^]*\([^]*\)/\1/' | tr [:upper:] [:lower:] | sort -u
 }
 
 _notmuch_search_terms()
@@ -44,10 +64,10 @@ _notmuch_search_terms()
COMPREPLY=( $(compgen -P tag: -W `notmuch search --output=tags 
\*` -- ${cur##tag:}) )
;;
to:*)
-   COMPREPLY=( $(compgen -P to: -W `_notmuch_user_emails` -- 
${cur##to:}) )
+   COMPREPLY=( $(compgen -P to: -W `_notmuch_email ${cur}` -- 
${cur##to:}) )
;;
from:*)
-   COMPREPLY=( $(compgen -P from: -W `_notmuch_user_emails` -- 
${cur##from:}) )
+   COMPREPLY=( $(compgen -P from: -W `_notmuch_email ${cur}` -- 
${cur##from:}) )
;;
path:*)
local path=`notmuch config get database.path`
-- 
2.1.4

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch