summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* Document :forward in aerc(1)Drew DeVault2019-05-251-0/+3
|
* binds.conf: make reply -a easier to use than replyDrew DeVault2019-05-251-4/+4
|
* Update README.mdDrew DeVault2019-05-251-1/+1
|
* Update README.mdDrew DeVault2019-05-251-13/+4
|
* Update README.mdDrew DeVault2019-05-251-1/+3
|
* ensureScroll on text input framesDrew DeVault2019-05-251-0/+2
|
* Implement scrolling in text inputDrew DeVault2019-05-251-3/+31
|
* Implement :forwardDrew DeVault2019-05-251-31/+81
|
* Fix special characters in address.PersonalNameDrew DeVault2019-05-255-33/+47
|
* Change ex command to C-x when using terminalDrew DeVault2019-05-242-2/+5
|
* Bind :compose to C in binds.confFrancis Dinh2019-05-231-0/+2
| | | | | The tutorial mentions using "C" for composing messages, but this was not actually implemented in binds.conf.
* Fix key value typo in documentationRoshless2019-05-232-2/+2
|
* Mention custom headers in aerc-tutorial(7)Drew DeVault2019-05-221-1/+3
|
* Minor fixes to list of filter dependenciesFrancis Dinh2019-05-221-1/+1
| | | | | - "sockify" -> "socksify" - Added colorama dependency
* Makefile: Minor improvements, usage of $@ and $(RM)Stefan Tatschner2019-05-221-2/+2
|
* Correct typo in MakefileDrew DeVault2019-05-221-1/+1
|
* Install $(MANDIR)/man7Drew DeVault2019-05-221-1/+1
|
* Install aerc-tutorial man page with make installDrew DeVault2019-05-221-0/+1
|
* Minor improvements to aerc-tutorialDrew DeVault2019-05-221-7/+4
|
* Install default configs to XDG config if not foundDrew DeVault2019-05-223-14/+53
|
* Add GOFLAGS variable to MakefileDrew DeVault2019-05-221-1/+3
|
* Show account wizard if no accounts configuredDrew DeVault2019-05-224-12/+12
|
* Implement :helpDrew DeVault2019-05-221-0/+21
|
* Implement opening tutorial after account wizardDrew DeVault2019-05-224-2/+170
|
* Write new accounts to config and open tabDrew DeVault2019-05-222-8/+140
|
* Fix always showing last account tabDrew DeVault2019-05-221-2/+2
|
* Remove excess padding from incoming config pageDrew DeVault2019-05-211-1/+1
|
* New account wizard, part oneDrew DeVault2019-05-217-13/+683
|
* Use kebab-case for cred-cmdsDrew DeVault2019-05-212-9/+7
|
* Load IMAP worker for imap+insecureDrew DeVault2019-05-203-4/+13
|
* Pass ServerName to tls.Config for SMTPDrew DeVault2019-05-201-2/+12
|
* Show unsupported mimetype message in redDrew DeVault2019-05-201-1/+1
|
* Show attachment names in multipart viewDrew DeVault2019-05-201-1/+5
|
* Implement :next-part, :prev-partDrew DeVault2019-05-203-2/+76
|
* Flesh out multipart switcherDrew DeVault2019-05-205-70/+146
|
* Refactor message part into dedicated widgetDrew DeVault2019-05-201-86/+148
|
* Verify TLS certificatesDrew DeVault2019-05-202-18/+1
| | | | | | I was partway done implementing a UI for users to approve untrusted certs with, but let's just make them configure their servers right instead.
* asdfDrew DeVault2019-05-202-48/+4
|
* pipe.go: let tab widget handle ellipsisDrew DeVault2019-05-201-2/+1
|
* Missed a spotDrew DeVault2019-05-191-0/+1
|
* Rename :delete-message et al to :delete et alDrew DeVault2019-05-195-16/+20
|
* Advance cursor after :delete and :moveDrew DeVault2019-05-193-4/+7
| | | | So that you can repeat the action on the next message if appropriate
* Reset message list cursor when switching storesDrew DeVault2019-05-191-1/+1
|
* Advance message list cursor when messages arriveDrew DeVault2019-05-191-0/+13
|
* Implement :pwd commandAmin Bandali2019-05-192-0/+28
|
* worker/types/worker: remove mutexSimon Ser2019-05-191-36/+21
| | | | | | | | | | Worker.callbacks contains two types of callbacks: some are action callbacks, some are message callbacks. Each of those is access from one side of the communication channel (UI goroutine vs. worker goroutine). Instead of using a channel, we can use two different maps for each kind. This simplifies the code and also ensures we don't call an action callback instead of a message callback (or the other way around).
* worker/types/worker: make ID allocation atomicSimon Ser2019-05-192-10/+11
| | | | | | | | Message IDs are allocated for both messages from UI to workers and the other way around. Hence, the global nextId variable is accessed from multiple goroutines. Instead, use atomic to access the global counter.
* worker/types/worker: set ID before sending messageSimon Ser2019-05-191-3/+9
| | | | | The previous code set the message ID after sending it, which could result in the receiver reading the ID before it's set.
* lib/ui/ui: use atomic instead of channelSimon Ser2019-05-191-26/+21
| | | | | | | | | This makes it so an atomic `invalid` value is used instead of an unbuffered channel. When many invalidations kick in, a lot of values were sent to the channel. (Since OnInvalidate's callback can be run in any goroutine, we need to be careful about races here.)
* Update internal state and draw from the same goroutineSimon Ser2019-05-197-51/+32
| | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces a new Aerc.Tick function that should be called to refresh the internal state. This in turn makes each AccountView process worker events. The UI goroutine repeatedly refreshes the internal state before drawing a new frame. The reason for this is that many worker messages may need to be processed for a single frame, and drawing the UI is far slower than refreshing the internal state. This has been confirmed in my testing (calling Aerc.Tick only once per frame results in a slower display). Many synchronization code has been removed. We can now write widgets without having to care so much about races. The remaining sync users are: - widgets/spinner: the spinner value is updated from inside an internal goroutine - lib/ui/invalidatable: Invalidate may be called from any goroutine - lib/ui/grid: same - lib/ui/ui: an internal goroutine needs read access to UI.exit - worker/types/worker: Worker.callbacks is used for both worker and UI callbacks The exact goroutine requirements for Drawable have been documented.