Manos Pitsidianakis
39fab67523
compose: use melib::Bytes pretty print for attachment size
2020-10-11 16:53:05 +03:00
Manos Pitsidianakis
0ca7b0042e
utilities: ensure Form/Button widgets are not always non-dirty
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
406af1848f
compose: add `add-attachment-file-picker` command
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
a4b78532b7
Refactor job structs into JoinHandle
...
Put oneshot::channel<R> into JoinHandle<R>
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
0dd9e6a34b
compose: kill selectors on ComponentKill
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
eb1cb5cec6
compose: expand cursor reach to attachment area
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
e42c9281fd
Fix input events going to hidden components
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
bc74379b27
mailview: don't process_event if coordinates uninitialised
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
be45b0c02d
compose: add encrypt layer
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
3ec1ecb349
Add import mail action
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
a2f11c341d
compose: add async draft filter stack in sending mail
...
Add a stack of "filter" closures that edit a draft before sending it.
Add PGP signing filter. An encryption filter will be added in a future
commit.
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
08df7f39b2
Add toggle encrypt action in composer
...
Does nothing for now, will be used in a future commit.
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
347b54e0f7
segment_tree: get_max() return 0 if tree empty
2020-10-05 21:10:00 +03:00
Manos Pitsidianakis
74f31875b8
listing: fix menu gaining focus if not visible
2020-10-05 21:10:00 +03:00
Manos Pitsidianakis
23ca41e3e8
add libgpgme feature
2020-10-05 21:10:00 +03:00
Manos Pitsidianakis
b9c07bacef
melib: decode text inline message/rfc822 attachments
2020-09-27 20:57:42 +03:00
Manos Pitsidianakis
b0e50a29bd
melib/list_management: don't ignore "NO" in List-Post
2020-09-25 13:45:48 +03:00
Manos Pitsidianakis
baa44109f2
melib/thread: "merge" duplicate messages in threads
2020-09-20 15:00:03 +03:00
Manos Pitsidianakis
a187cee1d3
plugins: place socket in XDG_RUNTIME_DIR, not CWD
...
Closes #78
2020-09-20 13:31:18 +03:00
Manos Pitsidianakis
fba69d1e5d
SearchBackend: add Auto variant as default
2020-09-18 21:38:50 +03:00
Manos Pitsidianakis
7dfa6c0639
view/thread: use reverse colors in cursor in case of NO_COLOR
2020-09-18 21:28:41 +03:00
Manos Pitsidianakis
82cd690005
sqlite3: only update when SearchBackend is sqlite3
2020-09-18 21:06:34 +03:00
Manos Pitsidianakis
8eb78ae01b
sidebar: compute mailbox tree only for subscribed mailboxes
2020-09-18 21:06:33 +03:00
Manos Pitsidianakis
05e4dbcd5a
melib: update smol to 1.0.0
2020-09-18 21:06:33 +03:00
Manos Pitsidianakis
fbf2b7dc7b
sidebar: add customizable mailbox tree
...
Concerns #72
2020-09-17 16:49:19 +03:00
Manos Pitsidianakis
83bee279e6
melib/email/compose: set attachment status
...
Set Content-Disposition: attachment to, well, attachments.
2020-09-16 19:57:06 +03:00
Manos Pitsidianakis
d862e7bf53
statustab: don't process scrolling events if account is open
2020-09-16 15:17:48 +03:00
Manos Pitsidianakis
005c879a12
accounts: remove job timeout
2020-09-16 15:17:48 +03:00
Manos Pitsidianakis
8a8c790f8c
accounts: fix blocking jobs not spawning on blocking workers
2020-09-16 15:17:48 +03:00
Manos Pitsidianakis
e60eb23f4d
statustab: show active jobs
2020-09-16 15:17:48 +03:00
Manos Pitsidianakis
07742ec053
utilities: ensure command suggestions are LIFO
2020-09-16 13:11:28 +03:00
Manos Pitsidianakis
f83df69d2f
utilities/widgets: ensure ProgressSpinner is cleaned up
2020-09-16 13:11:28 +03:00
Manos Pitsidianakis
17a4ccdcbc
melib/imap: perform reconnect on IDLE failure
2020-09-14 19:32:43 +03:00
Manos Pitsidianakis
315af9bc05
shortcut!: prevent panic if shortcut key $section is missing
2020-09-13 16:42:26 +03:00
Manos Pitsidianakis
fadf20d7b1
NotificationType: add melib::ErrorKind
2020-09-13 15:23:14 +03:00
Manos Pitsidianakis
46e3bb8074
conf/accounts: call is_online if Refresh job fails
2020-09-13 00:03:12 +03:00
Manos Pitsidianakis
3ef60f2688
jobs: add module doco
2020-09-12 23:43:10 +03:00
Manos Pitsidianakis
c9a06b9b5c
mail/view: unset self.dirty early on draw
2020-09-12 23:39:07 +03:00
Manos Pitsidianakis
51db5b6c2f
listing/conversations: redraw selection undo on Esc
2020-09-12 23:08:09 +03:00
Manos Pitsidianakis
14de776314
listing/plain: add row_attr! macro
2020-09-12 23:05:58 +03:00
Manos Pitsidianakis
20b02ffd4f
Lookup tag color/ignore settings in all three setting levels
...
There are three setting levels for tag settings:
- per mailbox override ^
- per account override |
- global setting |
depth
So lookup in each of them in this order for configuration, not just the
deepest level.
2020-09-12 23:02:06 +03:00
Manos Pitsidianakis
41664bbe91
Don't panic if no dbus notification server is available
2020-09-12 21:06:50 +03:00
Manos Pitsidianakis
4829e13c47
melib/maildir: impl copy_messages for Maildir
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
a1585d4006
components/listing: draw rows select status at all times
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
ed27ed604c
listing: select multiple messages with a motion
...
- Press a number (movement multiplier)
- Press "select_entry" shortcut (default: v)
- Press a movement (arrow keys, PageUp/Down, Home/End)
- Resulting selection will be symmetric difference of previous selection
plus all the entries traversed with movement
2020-09-11 17:02:27 +03:00
Manos Pitsidianakis
bda5bd963a
mail/view: cache message body/text in MailView state
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
1fe873887f
components/utilities: keep track of finished jobs
...
Keep track of finished jobs in case we get a job notification more than
once.
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
f05dd379ae
Send NewJob event on all job startups
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
65357625ea
conf: impl DotAddressable for NotificationsSettings
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
1ac3a7a903
Make dbus dependency optional
...
Put dbus dependency behing `dbus-notifications` feature.
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
be57b65dae
melib/email: add flags arg to Mail::new
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
d57dd9c98e
melib/email/address: return Option in get_display_name
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
c6c0da7fcb
melib: cleanup commit
...
Cleanup melib module exports, add some document tests, change some
documentation.
2020-09-10 21:19:38 +03:00
Manos Pitsidianakis
8f46c4ebe7
Small fixes
2020-08-27 17:29:27 +03:00
Manos Pitsidianakis
b94342c52b
themes/regexp: fix unwrap check on regexp match byte offsets
2020-08-27 17:27:45 +03:00
Manos Pitsidianakis
f02dde46da
melib/error:Add ErrorKind::Timeout
...
Timeout errors lead to automatic restart of connections without
bothering the user about the details, compared to actual network errors.
2020-08-26 20:01:39 +03:00
Manos Pitsidianakis
25b325dbda
Keep bytes copy in SaveMessage job in case of failure
2020-08-26 20:00:25 +03:00
Manos Pitsidianakis
ca0f37e1f3
Send AccountStatusChange event on receiving mailboxes
2020-08-26 19:59:27 +03:00
Manos Pitsidianakis
843616221e
Add logging level to Generic jobs
...
Not every job success should be shown to the user, for example updating
the sqlite3 database. So introduce a level to only show relevant
notifications.
2020-08-26 19:17:54 +03:00
Manos Pitsidianakis
c6f11fb592
melib: update notify to 4.0.15
2020-08-26 19:17:54 +03:00
Manos Pitsidianakis
14663e46b9
Remove some old TODO comments
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
4217839155
melib/email: remove Envelope::from_token
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
9e9be0b5f3
Remove block_on from mailbox creation/deletion
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
b545a0b905
Show error if watch job fails
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
fc25c7b165
Fix compiler warnings
2020-08-26 00:54:07 +03:00
Manos Pitsidianakis
629997397f
Allow toggle_help (default ?) remapping
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
53e924eb33
Add edit envelope action back as async
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
1ca0bd0d96
sqlite3: add schema versioning
...
To potentially be used with automatic migrations on version update
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
8d50e83a33
melib/email: add case-insensitive Header struct
...
- HeaderName is either 32 or less inlined bytes or heap-allocated vec for more than that.
- Equality and hashing is case-insensitive
- A HeaderMap is a hashmap from HeaderName to Strings that can be
indexed with &str, case insensitive. Insertion order is also preserved
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
94433cfc40
melib/backends: cleanup MailBackend trait definition
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
3eadaba34e
Replace old pseudo-async code with blocking rust async
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
a190805384
melib/backends: Add BackendEvent enum
2020-08-26 00:54:06 +03:00
Manos Pitsidianakis
9928ee78e7
Add Reply{ToAuthor,ToAll} actions
...
- previous Reply action now lets you select recipients by default
- ReplyToAuthor selects the Envelope author as recipient
- ReplyToAll selects all addresses
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
d95aae1987
terminal/keys: add `Space` identifier in Key Display impl
2020-08-26 00:54:05 +03:00
Manos Pitsidianakis
9afbdd4887
Add insert_user_agent option in composing
...
Add option for automatically inserting a 'User-Agent' header in new
drafts.
2020-08-26 00:54:05 +03:00
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
Manos Pitsidianakis
cecd33eb5e
SVGScreenshotFilter: make svg smaller and fix grapheme cluster textLength inaccuracies
2020-06-13 01:15:24 +03:00
Manos Pitsidianakis
58ddfae9a7
execute.rs: fix missing space parsers
2020-06-12 01:46:21 +03:00
Manos Pitsidianakis
fe655e679c
Fix rustfmt suggestions
2020-06-12 01:42:06 +03:00
Manos Pitsidianakis
0618e62ab6
Add optional feature to save SVG screenshot
2020-06-12 01:37:57 +03:00
Manos Pitsidianakis
bc0189ffa1
Spawn workers on demand
2020-06-11 12:01:11 +03:00
Manos Pitsidianakis
55948dd7c2
Use BTreeSet instead of HashSet in copy_area()
...
I kind of forgot about BTreeSets, and kept a separate HashSet and sorted
index of the set's keys.
2020-06-10 19:02:54 +03:00
Manos Pitsidianakis
e97cf98b3b
Add `view` subcommand
...
Add subcommand to view standalone e-mail files in meli's pager without
instantiating any accounts.
2020-06-10 18:07:56 +03:00
Manos Pitsidianakis
7dc8a87a62
Prevent sub overflow in EnvelopeView
2020-06-10 18:07:56 +03:00
Manos Pitsidianakis
05c6c19889
src/conf.rs: Remove debug! prints
2020-06-09 17:20:30 +03:00
Manos Pitsidianakis
9f30cd6bbc
state.rs: send AccountStatusChange
2020-06-09 15:39:53 +03:00
Manos Pitsidianakis
1241b6073f
Clear tags before applying new ones in NewFlags
2020-06-09 15:39:01 +03:00
Manos Pitsidianakis
ca9d4fde58
Discard EnvelopeRename event if envelope is missing from Collection
2020-06-09 15:38:13 +03:00
Manos Pitsidianakis
f3d5edfe14
Add copy/move to other account operations
2020-06-08 22:11:43 +03:00
Manos Pitsidianakis
c07185a3aa
regexp: add priority field to regular expressions
2020-06-08 00:55:30 +03:00
Manos Pitsidianakis
465c78e903
Add Cell::keep_attrs() method
2020-06-08 00:55:29 +03:00
Manos Pitsidianakis
4bc8ff2ce9
Use structopt for command line parsing
2020-06-08 00:55:29 +03:00
Manos Pitsidianakis
a17f0b4fd4
listing: rework MailListingTrait
...
split redraw_list() to redraw_threads_list() and redraw_envelope_list()
2020-06-07 14:35:41 +03:00
Manos Pitsidianakis
9edef4ecd2
ui: add attachment_tree() func in MailView
...
Split ascii attachment tree generation into a function in MailView
2020-06-07 14:35:41 +03:00
Manos Pitsidianakis
6458ccb860
meli: update nom dependency to 5.1.1
2020-06-06 23:22:26 +03:00
Manos Pitsidianakis
6ec249dd7f
melib: update nom dependency from 3.2.0 to 5.1.1
...
That was hecking exhausting
2020-06-06 23:19:07 +03:00
Manos Pitsidianakis
3e31c46a74
Add "regexp" feature, format text with regexps
...
`regexp` feature uses the pcre2 library to enable the user to define
regular expressions for matching text and applying text formatting to
the matches. An example from the theme configuration I used to test
this:
[terminal.themes.win95.text_format_regexps]
"listing.subject" = { "\\[[^\\]]*\\]" = { attrs = "Bold" } }
"listing.from" = { "\\<[^\\>]*\\>(?:(?:\\s*$)|(?=,))" = { attrs = "Italics" } }
[terminal.themes.win95.text_format_regexps."pager.envelope.body"]
"^>.*$" = { attrs = "Italics" }
"\\d+\\s?(?:(?:[KkMmTtGg]?[Bb])|(?:[KkMmTtGg][Bb]?)(?=\\s))" = { attrs = "Bold | Underline" }
2020-06-05 10:56:36 +03:00
Manos Pitsidianakis
ef0f269fbf
terminal: add FormatTag, text format tags
...
FormatTag describes a set of attributes, colors that exist in a
tag_table field of CellBuffer. The field of tag_associations contains
the hash of a tag and the {start,end} index of the cells that have this
attribute. A tag can thus be used many times.
An example of use is
let t = self.pager.insert_tag(FormatTag {
attrs: Attr::ITALICS,
..Default::default()
});
debug!("FormatTag hash = {}", t);
let (width, height) = self.pager.size();
for i in 0..height {
if self.pager.content[(0, i)].ch() == '>' {
self.pager.set_tag(t, (0, i), (width.saturating_sub(1), i));
}
}
This will set reply lines in text as italics.
This feature interface is not used anywhere yet.
2020-06-05 10:56:36 +03:00
Manos Pitsidianakis
5366888dff
Add samples/ directory with config and themes
2020-06-02 18:31:07 +03:00
Manos Pitsidianakis
de03b106f3
themes: Add support for Color/Attribute aliases
...
Add aliases to avoid repetition of raw values when defining new themes.
Aliases are strings starting with "$" and must be defined in the
`color_aliases` and `attr_aliases` fields of a theme.
2020-06-02 18:31:07 +03:00
Manos Pitsidianakis
eca8a30c3f
themes: Add Theme struct
...
Wrap HashMap<Cow<'static, str>, ThemeAttributeInner> into a struct, in
order to add more fields in the future.
2020-06-02 18:31:07 +03:00