Commit Graph

407 Commits (3af6f338ce41fb7b7e0bbbc9d17379f852b714de)

Author SHA1 Message Date
Manos Pitsidianakis bc7da4610e
Send MailboxUpdate events when threads are updated
Depending on the insertion order of folders which is non-deterministic
because it relies on the kernel's scheduling of parsing threads, the
listing the user sees might not be up-to-date because later thread
updates are never broadcast. This results in inconsistencies between
threads and mail listings when a thread's root envelope was part of a
not broadcast update leading to `key not found` panics in a listing's
hashmaps.
2019-08-02 15:17:23 +03:00
Manos Pitsidianakis 714f8255fc
ui: fix pageup/dn behaviour 2019-08-02 01:00:54 +03:00
Matthias Beyer 678921d2b7
Remove unused imports
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:54 +03:00
Matthias Beyer fecb66e877
Print to stderr when printing error
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:53 +03:00
Matthias Beyer 02bfda5eed
Prefix unused variables with underscore
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:53 +03:00
Matthias Beyer 092f3694d2
Print error message to stderr
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:53 +03:00
Manos Pitsidianakis d3c658cf00
ui: add attachments in composer tab 2019-08-02 01:00:53 +03:00
Manos Pitsidianakis 131b4abfbe
ui: use $EDITOR 2019-08-02 01:00:53 +03:00
Manos Pitsidianakis d73069bc80
melib: add Other and OctetStream content types 2019-08-02 00:22:20 +03:00
Manos Pitsidianakis c17bb24f0d
melib: refactor attachments and attachment_types interfaces 2019-07-30 21:33:15 +03:00
Manos Pitsidianakis 4f5bcfd1d4
fix compilation error on bsds 2019-07-30 17:56:50 +03:00
Manos Pitsidianakis 38da6c83b9
melib: add read-only support for mbox 2019-07-28 20:20:14 +03:00
Manos Pitsidianakis 8a0e702127
melib,ui: add MailboxEntry enum
Use an enum to describe a mailbox's state in ui::conf::Account instead
of Result.
2019-07-28 20:15:41 +03:00
Manos Pitsidianakis d84ceca88e
create text_processing crate 2019-07-27 01:41:04 +03:00
Manos Pitsidianakis ff37e97cba
ui: add From header in list unsubscribe e-mails 2019-07-22 15:14:39 +03:00
Manos Pitsidianakis 8543a06f59
ui: rename ignore to subscribe to match IMAP term 2019-07-18 20:26:49 +03:00
Manos Pitsidianakis 6e63e8a6f6
ui: rename read/unread uses to seen/unseen 2019-07-18 20:23:02 +03:00
Manos Pitsidianakis a62f1d6c01
add read-only option in accounts 2019-07-18 20:16:51 +03:00
Matthias Beyer 1e729010c1
replace deprecated trim_right() with trim_end()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Message-Id: <20190714115231.7002-1-mail@beyermatthias.de>
2019-07-15 10:49:19 +03:00
Manos Pitsidianakis f13da6a26a
ui: Add pipe action for Pager 2019-07-15 00:12:01 +03:00
Manos Pitsidianakis 0925f2a439
ui: restore Page{Up,Dn} to Pager
When issuing PageUp and PageDn actions to an e-mail pager in
CompactListing, the input action was handled by listing and not the
pager which led to the keys get seemingly ignored.
2019-07-13 22:52:42 +03:00
Manos Pitsidianakis 46a0574713
ui: permanently mark selected rows in self.data_columns
`self.draw_list` detects `bg_color` by checking the first cell of the first column, so set it to make it permanent
2019-07-11 12:29:17 +03:00
Manos Pitsidianakis 93f3d6e230
remove std::dbg uses 2019-07-09 13:05:11 +03:00
Manos Pitsidianakis 70e5949590
ui: add autocomplete for commands in execute bar 2019-07-06 20:44:51 +03:00
Manos Pitsidianakis a028aa9a44
ui: change contact list header colors 2019-07-06 20:36:59 +03:00
Manos Pitsidianakis 74be47ec5a
ui: fix some lints 2019-07-06 12:47:27 +03:00
Manos Pitsidianakis a655a85b5f
ui: fix replies not being synced and inserted properly on RefreshEvents 2019-07-06 12:46:45 +03:00
Manos Pitsidianakis b5ba9c3a8c
ui: force redraw CompactListing after EnvelopeRename event 2019-07-06 00:19:37 +03:00
Manos Pitsidianakis ff2c030c0f
ui: process refresh events immediately 2019-07-06 00:18:55 +03:00
Manos Pitsidianakis 34054d46ea
ui: print and set environment variables 2019-06-26 18:56:29 +03:00
Manos Pitsidianakis 8fefdf80ad
ui: don't send StartupCheck or MailboxUpdate on Envelope change events 2019-06-25 10:41:55 +03:00
Manos Pitsidianakis 22dbc7dd9f
ui: don't print empty history or duplicates 2019-06-25 10:37:19 +03:00
Manos Pitsidianakis f4f3b87f84
ui: add selections to CompactListing
Select multiple entries by pressing 'v'. Set read/unread and delete
actions are then performed on the selected entries.
2019-06-25 10:37:18 +03:00
Manos Pitsidianakis 8c97336307
ui: add set as read/unread, delete actions
Implemented only in compact listing for now.
2019-06-23 11:42:48 +03:00
Manos Pitsidianakis e0e520b2c4
ui: add filter method in ListingTrait
Implemented in CompactListing only for now. Filter results are stored in
the filter* fields of the struct.
2019-06-22 16:13:40 +03:00
Manos Pitsidianakis bb292486f4
ui: expand Listing trait with draw_list and highlight_line
In the course of making the Listing trait a generic way for any kind of
listing (eg. NNTP, RSS, et all)
2019-06-21 12:02:11 +03:00
Manos Pitsidianakis 04fc510ea8
meli: insert new standalone nodes in insert_reply 2019-06-19 19:40:15 +03:00
Manos Pitsidianakis 06862c1484
ui: prevent some unnecessary redraws 2019-06-19 19:39:23 +03:00
Manos Pitsidianakis 9026fb866e
ui: Add ability to call mailing list actions from Envelope view 2019-06-18 22:16:32 +03:00
Manos Pitsidianakis 07700ca00f
ui: Add possible mailing list actions from List-* headers 2019-06-18 22:01:02 +03:00
Manos Pitsidianakis 24831b3c13
Fix warnings, lints, and 2018 errors 2019-06-18 21:14:14 +03:00
Manos Pitsidianakis 9de93b98d5
Update sample-config, and generate it if missing on startup 2019-06-10 19:40:51 +03:00
Manos Pitsidianakis e0df6ce22d
ui: draw to terminal with horizontal sweeping
sweep each line in the dirty areas and avoid redraws because of area
overlap
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis cb83f9fe05
ui: add fluid columns in CompactListing 2019-06-10 19:40:51 +03:00
Manos Pitsidianakis d772d10d66
merge FirstName/LastName fields in Contacts
First names and Last names are an anglocentric concept and do not apply
cleanly to the rest of the world's cultures.
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis b6c0236d24
ui: make EnvelopeRename event not folder specific
And pass EnvelopeRename events to subviews
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis 85d1aaaa69
ui: add PageMovements and colors to ThreadView 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis 6088705745
ui: add PageMovements in ThreadListing 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis 831ec97d64
ui: add columns in PlainListing 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis d3ce424361
ui: add update and expand_headers in MailView 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis 3318123870
ui: add attachment emoji in compact listing 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis d0039740b0
melib: add has_attachments property to Envelope
Check subattachments in has_attachments check.

Instead of getting a flattened attachment view of multipart/mixed (eg
[multipart/mixed, text/plain, text/plain]) get only the subattachments
(eg [text/plain, text/plain]). Don't count text-only multipart/mixed as attachments
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis c6674a294d
melib: unwrap mailbox module 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis 6f7b3f20de
move StackVec to melib
closes #120
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis 42654410e3
ui: move Collection to Account
Each account had one mailbox per folder, which had one associated
collection. Now each Account has one Collection for all folders and each
Mailbox object holds only the hashes of each message.

Collection also gets Threads for each folder in order to mix messages
(ie from/to Sent folder).

Insert Sent emails in chronological order

if inserted unsorted, mails a, b with a happened-before b, might never
  get added.

Fix multiple insertions in ThreadTree upon insert_reply

insert_reply was creating multiple copies in threading
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis d8651db93a
delete mailbox_view module 2019-06-10 19:40:50 +03:00
Manos Pitsidianakis f51ea93351
move grapheme stuff to melib 2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 51c913d450
ui: add event queue for folders in Account 2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 7de075df49
ui: add Home/End movements 2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 06b96449c1
ui: add history and autocomplete in execute bar
closes #116 and #117
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 3c575c823d
ui: toggle thread snooze flag
snooze field translated to whether the user wants to be notified of new
email in the thread or not. This is toggled with an (temp) EX cmd: `toggle_thread_snooze`

closes #112
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 22d868f499
save Account to disk
closes #114
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 4582bcd5ae
fix warnings and lints 2019-06-10 19:40:49 +03:00
Manos Pitsidianakis de81fd1a68
ui: don't show notifications if folder is ignore
Also ignore Sent folder by default
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 3bc22abdff
ui: draw thread arrows correctly in other sortings
thread arrows in ThreadListing weren't drawn correctly when subsorting
was changed (eg date -> subject)

has_sibling was delegated to ThreadsIterator.
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis 2dec7fa6b6
ui: set plain/threaded/compact keeps mailbox position
closes #109
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis f972f69bad
ui: send RefreshMailbox events in every refresh_mailbox call
closes #108
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis a0b1a079b8
ui: add "application/pgp-signature" content type 2019-06-10 19:40:48 +03:00
Manos Pitsidianakis 4c88422d71
ui: fix scrollbar calculations 2019-06-10 19:40:48 +03:00
Manos Pitsidianakis 6e7ab0421b
ui: fix pager scrolling getting stuck 2019-06-10 19:40:48 +03:00
Manos Pitsidianakis 5d6c4ee2c8
ui: remove useless padding from ThreadView items 2019-06-10 19:40:48 +03:00
Manos Pitsidianakis bf35894a18
ui: distinct shortcut maps with description
put shortcuts in different maps according to their source component
instead of bagging them all in the same one, and then print each
shortcut section on its own in the shortcut window
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis 5a564dee63
melib: print folder tree in Listing menu properly
Depths weren't calculated correctly, and index (eg 0 Inbox) wasn't
colored correctly if the folder's name started with a number (eg 11 2019)
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis d231865f88
ui: add scrollbar widget in view/thread.rs 2019-06-10 19:40:48 +03:00
Manos Pitsidianakis 8b23ddb920
ui: correct mailview visibility toggle
Grid wasn't updated when user toggles mailview's visibility in
view/thread.rs.
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis ca64e4cd4a
ui: rename `b` cmd to `go` 2019-06-10 19:40:47 +03:00
Manos Pitsidianakis 0f4db97b75
ui: display headers in ViewMode::Raw 2019-06-10 19:40:47 +03:00
Manos Pitsidianakis c26dd0685b
ui: print menu entries in order
FolderNode is a tree structure to represent the sorted or user defined
order inside the Account type
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis f1734048c8
ui: fix memory overflow in WordBreakIter 2019-06-10 19:40:47 +03:00
Manos Pitsidianakis 35bac364b1
ui: correctly display multipart html in Views
- Use Alt-r for entering raw mode
- Use r to exit raw mode
- added shortcuts
- add attachment footer in HtmlView::new
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis 59d912e2ee
ui: send events to active subview only in CompactListing 2019-06-10 19:40:47 +03:00
Manos Pitsidianakis aade41401e
ui: add column sep between menu and listing 2019-06-10 19:40:47 +03:00
Manos Pitsidianakis 99527f5684
ui: format From column in CompactListing
closes #87
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis 02083032bf
ui: add From column in CompactListing 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 1f2c0b4fa7
melib: multipart/mixed with html messages not displayed as html 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 7e76cb7a4a
ui: align columns in CompactListing 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis e7c50c8dc5
pager: wrong max_cursor_pos setting 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis fb406667ab
add debug! macro to replace eprintlns 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 9143b2e791
ui: view: small fixes 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 13cd6b2741
ui: CompactListing: change only highlight in EnvelopeRename event 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 681cd7d1df
ui: update unicode-rs and fix invalid iterator return 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 03b9641bc6
ui: fix acc navigation shortcuts direction 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 3415a382a1
ui: make StackVec return an Option<T> 2019-06-10 19:40:46 +03:00
Manos Pitsidianakis 4ae8cbadbf
ui: reassign listing shortcuts
after `312011c ui: move account menu functions to Listing`, shortcuts like prev_folder etc should be generic over all listing types.
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 69031e66f9
ui: move account menu functions to Listing
AccountMenu was completely semantically attached to Listing, so there's
no reason for them to be separate and communicating via events.
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis de8b733d92
ui: initialize cursor in AccountMenu
Previous behavior was cursor highlight jumping around freshly loaded
folders
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 72d347eb6b
ui: make word_break an iter 2019-06-10 19:40:45 +03:00
Manos Pitsidianakis b104a71544
ui: highlight entries in ThreadView within grid boundaries
If entry string length + indentation was more than available width an
out of index panic occurs when opening the thread.
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 28859542e8
ui: don't wait for workers to join in Drop
for large folders, they will take a lot of time during which the
  terminal is hung up
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 1e44089d84
ui: Refer to child/parents with FolderHash in BackendFolder
- use a stack to build folder order list in conf/accounts.rs
- update side menu print
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 8e06e298ab
ui: send only appropriate events to current view 2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 499113acd2
melib: encode header values
closes #102
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis 87adc6dd19
melib/ui: refer to Folders by FolderHash 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 04eb8d926f
ui: remove debug_log feature, add log positions 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis ea331327b2
ui: return to first tab on TabClose 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 188e359301
ui: fix nil default ComponentId 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 9bc76e3bcb
ui: unwrap UIEventType 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 106744c7ca
ui: remove Entity 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis b993375fa0
ui: put INBOX first in AccountMenu 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 42a512d010
ui: save sent messages to Sent folder 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 8149f5712f
don't overwrite 'From' in Composer' 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 7e80ad2a86
ui: hold live entries for each mailbox in CompactListing 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 0e2e8b09f6
ui: update accounts tab on mailboxupdate 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis adb3123c57
ui: reverse visible entries if self.reversed in ThreadView 2019-06-10 19:40:44 +03:00
Manos Pitsidianakis 7fa599d13e
ui: clear threadview properly 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis ada0950854
ui: retain hidden properties in ThreadView 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis e3d0ad9170
ui: fix paging in ThreadView 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 4be1b52089
ui: add hide option in ThreadView 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 6b3c4d57d6
ui: add mailer setting and send shortcut in composer 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis ce2317da95
ui: print tabs as two spaces
closes #88
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 4bf1f6b9c9
ui: make Composer account specific 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis cfb7dcec64
ui: make html filter optional in config
closes #92
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 92f42ad8fa
ui: don't print Carriage Return 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 2a93463f74
ui: complete fmt::Display impl for Key 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis 067a8e5c81
Run clippy for 2018 edition 2019-06-10 19:40:43 +03:00
Manos Pitsidianakis ee4462881e
run cargo fmt 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis 1c7aa0ec9c
update to 2018 edition 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis 37f95dd86d
ui: fix crash when ThreadView is initiated without a ready mailbox 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis d7a4bd24c3
ui: do not recreate ThreadView on envelope update event 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis db6e83b755
ui: highlight unseen thread entries in ThreadView
closes #78
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis aa95c89ba8
ui: fix erasure of first body line in MailView 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis ff821e4fca
ui: don't set seen flag in Plainlisting 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis c91f0d73a5
ui: add ListingTrait to get/set coordinates 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis dcb62798f8
ui: properly update cursor on refresh_mailbox in PlainListing 2019-06-10 19:40:42 +03:00
Manos Pitsidianakis 11b2abd1d1
ui: fix seen property of threads on open, add env rename events 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis f36cb111b5
ui: add reverse order option in ThreadView
closes #70
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 5d9af8e32b
ui: improve contact additions from mail view 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 37716c85df
ui: add table to contact list 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 9356d43787
ui: change menu toggle shortcut 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis e4aec7c17e
ui: add shortcuts in compose menu 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis c3adc244d7
ui: Implement fmt::Display for Key 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis a774aaebf6
ui: fix boundary drawing in Thread view 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 551db51b00
ui: avoid full renders when worker threads return StartupChecks
Now listings only re-render when their folder gets a StartupCheck event,
account menu always re-renders to update new mail counts

closes #76
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis d19bda8977
melib: properly save drafts in maildir backend 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 1aa4eaa314
ui: add paste event to Field 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 1867bb6aa3
ui: hide divider column in VSplit if !self.show_divider 2019-06-10 19:40:41 +03:00
Manos Pitsidianakis 4629e6a22f
meli: add debug_logs feature
Conditional print of debug logs in stderr. Previously they were always
printed
2019-06-10 19:40:40 +03:00
Manos Pitsidianakis d50c201776
ui: add hide menu shortcut 2019-06-10 19:40:40 +03:00
Manos Pitsidianakis b741899fcf
ui: Add some docs and mini cleanups 2019-06-10 19:40:40 +03:00
Manos Pitsidianakis 9b4b6051f1
ui: use any email as composing template with edit command
concerns #38
2019-06-10 19:40:40 +03:00