Manos Pitsidianakis
bb4754e38a
themes/shortcuts: preserve order of keys
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
8a6bf3b217
Preserve Account order from configuration file
...
Use IndexMap to preserve the order of accounts in the UI from the
account definitions.
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
b9e53a7451
melib/smtp: add recipient argument in mail_transaction()
2020-08-16 15:16:27 +03:00
Manos Pitsidianakis
79b2b38e32
melib: add supports_submission backend capability
...
To be used by NNTP, JMAP and some IMAP servers with BURL capability
2020-08-09 14:56:34 +03:00
Manos Pitsidianakis
fe4dae12df
listing/*: show MailboxEntry::status() when length is 0
...
Show the MailboxEntry::status() string when self.length == 0, instead of
"MAILBOX is empty".
2020-08-07 00:39:17 +03:00
Manos Pitsidianakis
c88eac1cc5
melib/jmap: implement search
...
Closes #59
2020-08-06 19:46:46 +03:00
Manos Pitsidianakis
52bcecfd4a
conf.rs: reject unknown configuration options
...
Closes #11
2020-08-03 22:53:06 +03:00
Manos Pitsidianakis
750e32c8e1
mail/listing: use mailbox count() total instead of loaded total
2020-08-02 16:52:19 +03:00
Manos Pitsidianakis
5db749c258
terminal/cells.rs: fix resize to grow actually making the grid smaller
2020-08-02 16:52:19 +03:00
Manos Pitsidianakis
fb523c140a
terminal/cells: resize growable grid when exactly at bounds
2020-08-02 00:49:59 +03:00
Manos Pitsidianakis
890000bd0e
status page: trim extension name at 30 chars
...
NNTP has some long protocol extension names
2020-08-02 00:48:44 +03:00
Manos Pitsidianakis
c5d0a6c3b6
conf/accounts.rs: don't retry connect on auth error
2020-08-02 00:46:37 +03:00
Manos Pitsidianakis
ec0153e7b2
melib: add protocol extension info in MailBackendCapabilities
2020-08-02 00:22:15 +03:00
Manos Pitsidianakis
3ac2c12e7a
Small fixes
2020-07-29 14:33:09 +03:00
Manos Pitsidianakis
44fdc0765e
conf/accounts.rs: add 30s job timeout
2020-07-29 14:27:43 +03:00
Manos Pitsidianakis
2db983ae1f
mail/view.rs: try restarting future if get bytes fails
2020-07-27 15:06:56 +03:00
Manos Pitsidianakis
70a4409e59
mail/listing*: various theme color fixes
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
74673880e6
command.rs: add eof() parser to action parsers
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
26b327d86a
mail/listing*: clear selection after perform_action()
2020-07-26 16:09:41 +03:00
Manos Pitsidianakis
b5530860d2
conf/DotAddressable: impls for more types
2020-07-26 16:09:35 +03:00
Manos Pitsidianakis
0d198dbb56
conf.rs: fix struct decl/impl order in file
...
Impls and type declarations were out of order
2020-07-26 15:38:11 +03:00
Manos Pitsidianakis
7fd511e149
conf/shortcuts.rs: implement DotAddressable for Shortcuts
2020-07-26 15:38:11 +03:00
Manos Pitsidianakis
1cc1b0604c
conf/accounts.rs: use QueryTrait when search_backend is None
2020-07-26 15:38:08 +03:00
Manos Pitsidianakis
3f8aa560f0
melib/MailBackend: add MailBackendCapabilities struct
2020-07-25 17:53:04 +03:00
Manos Pitsidianakis
4aaa784d8f
Fix panic on empty command history when browsing history
2020-07-25 16:34:53 +03:00
Manos Pitsidianakis
8b90c7fcb6
conf/shortcuts: add shortcut for COMMAND mode
...
Replace hardcoded Key value with customisable shortcut
"general.enter_command_mode"
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
c2550f60b6
Rename EXECUTE mode to COMMAND
...
vim uses COMMAND, and we want to be consistent with vim when possible.
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
b20bdea8f0
EXECUTE: cancel command with Esc
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
989cfcc877
conf/accounts.rs: use mailbox alias if available in MailboxEntry::name()
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
7744ef1462
conf/accounts.rs: make JobRequest::Generic name Cow<'_, str>
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
d6ef3567f4
conf/accounts.rs: add hash() method
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
688060ceb6
conf/accounts.rs: always load Inbox
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
ed3b2fa6c8
types.rs: add JobCanceled event
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
00acba7717
melib/MailBackend: add copy_messages,set_flags,delete_messages methods
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
a049a83fe3
conf/accounts: add insert_job() method
2020-07-25 15:19:53 +03:00
Manos Pitsidianakis
246ac4b84a
Update smallvec dependency to 1.4.1
2020-07-25 15:19:52 +03:00
Manos Pitsidianakis
f9efaea0ec
ConversationsListing: fix invalid update_line colors
2020-07-25 15:17:35 +03:00
Manos Pitsidianakis
99fbac3806
Remove unused variables/functions
2020-07-23 13:39:58 +03:00
Manos Pitsidianakis
1bd89b3c96
themes: add mail.sidebar_account_name key
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
44ffbe54e2
input_thread: add atomic refcount to check if thread is dead
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
0882dbbad0
melib/Collection: put all fields behind a mutex
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
fadb3634e0
melib: take MailboxHash instead of &Mailbox in fetch*()
2020-07-23 13:23:23 +03:00
Manos Pitsidianakis
9103d05617
melib: s/get/fetch in MailBackend methods
2020-07-18 12:34:13 +03:00
Manos Pitsidianakis
996abd323f
Add print setting action
...
Add experimental print setting action. The command is of the form:
print account_name listing.index_style
account_name is currently ignored.
The path, e.g. listing.index_style is split by "." and fed to
DotAddressable lookup trait method. The method checks the first segment
in the path if it matches any of the struct's fields, and then calls the
field's lookup method.
2020-07-17 13:33:40 +03:00
Manos Pitsidianakis
b4dadf20b6
ThreadListing: don't print previous link on root envelopes
...
If a thread root is missing (i.e. we never received that message or it
was deleted) threads rendered like this:
├─>Re: original subject
├─>Re: original subject
└─>Re: original subject
This causes visual ambiguity if the parentless thread follows another:
Another thread
└─>Re: Another thread
├─>Re: original subject
├─>Re: original subject
└─>Re: original subject
This commit removes the "previous link" from every first message in a group:
┬─>Re: original subject
├─>Re: original subject
└─>Re: original subject
2020-07-17 13:33:40 +03:00
Manos Pitsidianakis
08d8c05a67
CompactListing: update self.rows{,_drawn} on row update
...
self.rows{,_drawn} were left unupdated, and stale envelope hashes could
result in panics
2020-07-17 00:04:59 +03:00
Manos Pitsidianakis
1bac926bdc
CompactListing: add row_attr macro
...
Add macro to calculate theme attribute for given thread row
2020-07-17 00:04:26 +03:00
Manos Pitsidianakis
5e1fa2d8d7
CompactListing: add select command
...
Select envelopes based on query
2020-07-17 00:03:35 +03:00
Manos Pitsidianakis
0d3fe288c5
sqlite3: make reindex operation async
2020-07-17 00:02:14 +03:00
Manos Pitsidianakis
32f196143e
melib: add supports_search() method to MailBackend
2020-07-17 00:02:02 +03:00
Manos Pitsidianakis
5ef62a39b8
conf: Rename cache_type to search_backend
2020-07-16 23:57:00 +03:00
Manos Pitsidianakis
017a45d5cd
conf/accounts: add JobRequest::Generic
2020-07-16 22:54:50 +03:00
Manos Pitsidianakis
eb62463e7d
jobs: add spawn_blocking() method
2020-07-16 22:53:16 +03:00
Manos Pitsidianakis
1f9cdb8be5
conf/accounts: update mailbox status on payload delivery
2020-07-16 18:00:53 +03:00
Manos Pitsidianakis
587eaf7215
ThreadListing: add columns
2020-07-15 19:02:52 +03:00
Manos Pitsidianakis
77dc1d74bf
Add smtp client support for sending mail in UI
...
`mailer_command` was removed, and a new setting `send_mail` was added.
Its possible values are a string, consisting of a shell command to
execute, or settings to configure an smtp server connection. The
configuration I used for testing this is:
[composing]
send_mail = { hostname = "smtp.mail.tld", port = 587, auth = { type = "auto", username = "yoshi", password = { type = "command_eval", value = "gpg2 --no-tty -q -d ~/.passwords/msmtp/yoshi.gpg" } }, security = { type = "STARTTLS" } }
For local smtp server:
[composing]
send_mail = { hostname = "localhost", port = 25, auth = { type = "none" }, security = { type = "none" } }
2020-07-15 15:24:01 +03:00
Manos Pitsidianakis
ddafde7b37
jobs: save handle for each Job
...
If we save the JoinHandle for each task, we can cancel it in future
commits if we have to timeout network requests.
2020-07-15 15:22:33 +03:00
Manos Pitsidianakis
9db6b07b71
Remove some needless clones and stuff (thanks to Clippy)
2020-07-13 21:36:55 +03:00
Manos Pitsidianakis
edfd2b1fef
conf.rs: accept default action "Y" when asking to create config
...
Reported by: bronsen
2020-07-10 15:55:15 +03:00
Manos Pitsidianakis
d914f7afd9
MailView: send NewJob event on mail body request
2020-07-08 13:43:48 +03:00
Manos Pitsidianakis
899d497c9c
Rename _cmd options to _command for consistency
2020-07-08 12:12:15 +03:00
Manos Pitsidianakis
bfc08f892d
Show account online error status in status tab
2020-07-08 12:10:14 +03:00
Manos Pitsidianakis
3a16dc6522
Show account online error status when offline
2020-07-08 12:10:14 +03:00
Manos Pitsidianakis
931863436d
imap: remove blocking imap backend, replace with async
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
89dedbedb7
imap: launch async watch when connection comes online
...
Closes #38 Make async watch/refresh work in imap
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
b5748c247a
MailBackend: remove connect() method
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
f48343ca89
conf/accounts: add is_{async,remote} fields
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
231471fa8c
MailBackend: add is_{async,online} methods
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
94e0aa4fe7
MailBackend: change get() ret type to Result<_>
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
a7e177586a
Fix clippy lints
2020-07-06 15:27:08 +03:00
Manos Pitsidianakis
bbedeed3e3
More imap async fixes
2020-07-06 15:27:06 +03:00
Manos Pitsidianakis
b3876113aa
BackendOp: return future in as_bytes()
2020-07-06 15:26:39 +03:00
Manos Pitsidianakis
4721073bc3
Rename jobs1 to jobs
2020-07-06 15:26:39 +03:00
Manos Pitsidianakis
1ddde9ccba
BackendOp: change fetch_flags() retval to future
2020-07-06 15:26:35 +03:00
Manos Pitsidianakis
ed3e66cedf
BackendOp: remove description() method
2020-07-06 15:26:03 +03:00
Manos Pitsidianakis
e06308fed2
MailBackend: change more methods to Futures
2020-07-06 15:26:00 +03:00
Manos Pitsidianakis
03522c0298
melib: Fixup warnings in imap_async, maildir
2020-07-06 15:25:17 +03:00
Manos Pitsidianakis
21051fa862
JobRequest: add more variants
2020-07-06 15:13:01 +03:00
Manos Pitsidianakis
c82367e00d
BackendOp: Change set_{flag,tag} methods
2020-07-06 15:12:33 +03:00
Manos Pitsidianakis
8c1fc031e5
BackendOp: change fetch_flags retval to Result<Flag>
2020-07-06 15:12:11 +03:00
Manos Pitsidianakis
ee10cdbcd5
Make get_async() return a Stream
2020-07-06 15:12:11 +03:00
Manos Pitsidianakis
a38764f490
Add somewhat-working async IMAP backend
2020-07-06 15:12:05 +03:00
Manos Pitsidianakis
4f3a98f90a
Add job executor
2020-07-06 15:07:44 +03:00
Manos Pitsidianakis
ca7bbd9de4
Fix pasted text not being registered immediately
...
Input thread reading from stdin should continue reading after receiving
the magic BRACKET START sequence until receiving the BRACKET END
sequence.
2020-06-26 21:12:57 +03:00
Manos Pitsidianakis
58aff83b95
Change "Draft saved" to "Message saved"
2020-06-26 21:12:57 +03:00
Manos Pitsidianakis
c0c19268ee
Add ProgressSpinner widget
2020-06-26 21:12:57 +03:00
Manos Pitsidianakis
c4bc7be5d1
Tabbed: correctly pass events to other children
...
When passing an event to the focused tab and it is not handled, the
other children weren't then each called to see if they handle the
event. That led to refresh events etc not being processed by the mail
list tab if it wasn't focused.
2020-06-23 20:11:05 +03:00
Manos Pitsidianakis
4ae7a57d45
Add save-draft command
2020-06-23 20:11:05 +03:00
Manos Pitsidianakis
bfbaf3d617
Utilize EnvelopeRemove events
...
EnvelopeRemove events were not ever used in the UI
2020-06-23 20:11:04 +03:00
Manos Pitsidianakis
efb06be09b
melib: return Result<_> from operation()
...
Envelope might have been deleted before main thread requests an
operation, which is a race condition.
2020-06-23 20:10:54 +03:00
Manos Pitsidianakis
b946b61cf1
terminal/cells.rs: remove unused variables
2020-06-23 17:31:25 +03:00
Manos Pitsidianakis
eca1921a8a
collection: add update_flags() method
...
On NewFlags events, the threads in Collection were not being updated, so
if an envelope's seen status was toggled the thread's unseen count was
not updated, and thus not reflected in the UI even though the
envelope's new flags event was registered properly.
2020-06-23 12:27:10 +03:00
Manos Pitsidianakis
a6a30f3adb
conf/accounts.rs return Result on init()
2020-06-22 17:32:51 +03:00
Manos Pitsidianakis
688a798fa2
XDGNotifications: increase rate limiting
...
3 notifications evenly spread per second did not make any sense.
Increase it to 1000 and see if it's ok
2020-06-22 17:31:18 +03:00
Manos Pitsidianakis
6bdd9b07bb
bin: remove unwrap from timer thread
2020-06-22 17:29:47 +03:00
Manos Pitsidianakis
ca11c8e474
Remove useless debug prints
2020-06-22 11:33:03 +03:00
Manos Pitsidianakis
9fb86ab2f2
components: create layouts module in utilities
2020-06-21 12:51:49 +03:00
Manos Pitsidianakis
0169025d50
build.rs: add proc-macro to generate Override structs for configuration
2020-06-20 23:58:53 +03:00
Manos Pitsidianakis
02c881ac00
Add save-attachment option for entire message as eml
2020-06-15 01:07:50 +03:00
Manos Pitsidianakis
d7e4bd9379
conf: set default override value to None
2020-06-13 12:48:15 +03:00