| Commit message (Collapse) | Author | Age |
|\
| |
| | |
Give better feedback on invalid user input.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Replace directory check with file check - we only check for a single
file, no need to check for existende of the directory separately. Also,
this way we can distinguish between file validation error and file
not found.
- Be consistent: we stop iterating, if we find a file and it can be
parsed. If we can't parse it, stop iterating as well, don't keep looking
for the file.
|
| | |
|
| | |
|
| | |
|
|\ \
| |/
|/| |
catch exception about malformed query strings
|
| |
| |
| |
| |
| |
| |
| |
| | |
.. when getting thread message count to build search buffers.
We already had a try/except block for this. This commit just moves the
one offending line into that block.
Fixes #1074
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes the following crashes:
1. tag completion with regex special chars
:search tag:[<tab>
2. Changing tag representation of an (existing) tag with regex special
chars:
[tags]
[[my**tag]]
normal = '','', 'white','light red', 'white','#d66'
3. Contact completion with regex special chars and no external command:
To:**foo<tab>
|
|\
| |
| | |
thread mode message indentation
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
this makes sure that 'tbuffer._indent_width', which stores the requested
indentation width, remains non-negative.
As a consequence, multiple "decrease" operations on zero values can be
reverted by a single "increase", as is intuitive.
|
| |
| |
| |
| |
| |
| | |
this introduces a new argparse validation check that makes sure a
parameter is '+', '-', or an integer, and uses this check for the
'indent' thread mode command.
|
| | |
|
| |
| |
| |
| | |
to dynamically change the message indentation
|
| |
| |
| |
| |
| | |
This adjusts the message/reply indentation according to the new
'thread_indent_replies' config option.
|
| | |
|
|\ \
| | |
| | | |
relay "exclude_tags" in queries
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
this adds exclude tags to every query object. Just as in notmuch (option
search.exclude_tags), this will essentially render messages invisible if
tagged with one of those tags, unless they explicitly appear in the
query. See also man notmuch-config(1).
closes #732
|
| |/
| |
| |
| |
| | |
which will be interpreted just like 'search.exclude_tags' in the notmuch
config.
|
|/
|
|
| |
It seems not to be to handle error messages of different locale than en
|
|
|
|
|
|
|
|
| |
Add account configuration variable 'encrypt_to_self' that if true when
encrypting a message it will also be encrypted with the key defined for
this account.
Fixes #1140
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This will result in wrong behavior, gpg will prompt for a password
rather than using keys to encrypt.
|
| |
|
|
|
|
| |
This makes drafts display correctly.
|
|
|
|
|
|
|
| |
If the message doesn't have a sender, try to come up with one. If the
message has the draft tag we known that the user is the sender, just use
the default account as the from if we can't find one another way. If it
doesn't have the draft tag just set the sending to 'Unknown'.
|
|
|
|
|
|
|
|
|
|
|
| |
This uses a try/except because comparing an address to an empty string
should be a fairly uncommon event and try/except will be faster than
`if '@' not in other` in the case where '@' is in other.
This stops alot from crashing if there is no 'From' header in the
email. Outlook generates drafts without a 'From' header.
Fixes #1050
|
|\ |
|
| |
| |
| |
| |
| | |
This mostly shortens lines down to <=79 chars and fixes some other small
things I found using the pep8 tool.
|
| |\
| | |
| | | |
db/message: Use self._id instead of self.get_message_id()
|
| | |
| | |
| | |
| | |
| | | |
The latter function returns self._id anyway, and this avoids a function
call when sorting.
|
| |\ \
| | | |
| | | | |
Handle servers that treat the user segment of an address as case insensitive
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This just wries the new Address class into alot for use, and fixes up a
few places where such fixups are needed.
Fixes #1107
|
| | |/
| | |
| | |
| | |
| | | |
This class will encapsulate the logic of comparing email addresses and
the rules of handling when capitalization is allowed and when it's not.
|
| |\ \
| | |/
| |/| |
more tests + cleanups
|
| | |
| | |
| | |
| | |
| | | |
add returns and rtype for sphinx and reflow the rest of the docstring a
bit.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
list_keys won't raise an exception if there are not keys, it will return
a generator that creates an empty list:
>>> from alot import crypto
>>> list(crypto.list_keys('doesntexist@example.com'))
[]
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Otherwise the editor will crash.
I can't figure out for the life of me to test this. I thought that I
would be able to do something like detect if stdin is a tty or something
else, but that doesn't seem to work.
Fixes #1137
|
|\ \
| | |
| | | |
Submit/external command tests
|
| | |
| | |
| | |
| | |
| | |
| | | |
If someone passes us something other than None or a callable they're
abusing the API. Instead, use is not None, and let the code except if
something else is passed.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This simplifies the code but not using an if/else, but to just use a
ternary to set the input to Popen.communicate. This also pulls some code
out of the try/except block that isn't being tried.
|
| |/
| |
| |
| | |
It's just a little off
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
An assignment `e = os.environ` creates a reference not a copy, which
means that modifying one necessarily modifies the other. Using
`dict.copy` creates a shallow copy (the keys and values are references,
but the dicts are different objects), which means only modifications to
mutable objects are shared. In the case of os.environ which only
contains immutable objects like strings, bools, and numbers this isn't
an issue.
|