Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Document :forward in aerc(1) | Drew DeVault | 2019-05-25 | 1 | -0/+3 |
| | |||||
* | binds.conf: make reply -a easier to use than reply | Drew DeVault | 2019-05-25 | 1 | -4/+4 |
| | |||||
* | Update README.md | Drew DeVault | 2019-05-25 | 1 | -1/+1 |
| | |||||
* | Update README.md | Drew DeVault | 2019-05-25 | 1 | -13/+4 |
| | |||||
* | Update README.md | Drew DeVault | 2019-05-25 | 1 | -1/+3 |
| | |||||
* | ensureScroll on text input frames | Drew DeVault | 2019-05-25 | 1 | -0/+2 |
| | |||||
* | Implement scrolling in text input | Drew DeVault | 2019-05-25 | 1 | -3/+31 |
| | |||||
* | Implement :forward | Drew DeVault | 2019-05-25 | 1 | -31/+81 |
| | |||||
* | Fix special characters in address.PersonalName | Drew DeVault | 2019-05-25 | 5 | -33/+47 |
| | |||||
* | Change ex command to C-x when using terminal | Drew DeVault | 2019-05-24 | 2 | -2/+5 |
| | |||||
* | Bind :compose to C in binds.conf | Francis Dinh | 2019-05-23 | 1 | -0/+2 |
| | | | | | The tutorial mentions using "C" for composing messages, but this was not actually implemented in binds.conf. | ||||
* | Fix key value typo in documentation | Roshless | 2019-05-23 | 2 | -2/+2 |
| | |||||
* | Mention custom headers in aerc-tutorial(7) | Drew DeVault | 2019-05-22 | 1 | -1/+3 |
| | |||||
* | Minor fixes to list of filter dependencies | Francis Dinh | 2019-05-22 | 1 | -1/+1 |
| | | | | | - "sockify" -> "socksify" - Added colorama dependency | ||||
* | Makefile: Minor improvements, usage of $@ and $(RM) | Stefan Tatschner | 2019-05-22 | 1 | -2/+2 |
| | |||||
* | Correct typo in Makefile | Drew DeVault | 2019-05-22 | 1 | -1/+1 |
| | |||||
* | Install $(MANDIR)/man7 | Drew DeVault | 2019-05-22 | 1 | -1/+1 |
| | |||||
* | Install aerc-tutorial man page with make install | Drew DeVault | 2019-05-22 | 1 | -0/+1 |
| | |||||
* | Minor improvements to aerc-tutorial | Drew DeVault | 2019-05-22 | 1 | -7/+4 |
| | |||||
* | Install default configs to XDG config if not found | Drew DeVault | 2019-05-22 | 3 | -14/+53 |
| | |||||
* | Add GOFLAGS variable to Makefile | Drew DeVault | 2019-05-22 | 1 | -1/+3 |
| | |||||
* | Show account wizard if no accounts configured | Drew DeVault | 2019-05-22 | 4 | -12/+12 |
| | |||||
* | Implement :help | Drew DeVault | 2019-05-22 | 1 | -0/+21 |
| | |||||
* | Implement opening tutorial after account wizard | Drew DeVault | 2019-05-22 | 4 | -2/+170 |
| | |||||
* | Write new accounts to config and open tab | Drew DeVault | 2019-05-22 | 2 | -8/+140 |
| | |||||
* | Fix always showing last account tab | Drew DeVault | 2019-05-22 | 1 | -2/+2 |
| | |||||
* | Remove excess padding from incoming config page | Drew DeVault | 2019-05-21 | 1 | -1/+1 |
| | |||||
* | New account wizard, part one | Drew DeVault | 2019-05-21 | 7 | -13/+683 |
| | |||||
* | Use kebab-case for cred-cmds | Drew DeVault | 2019-05-21 | 2 | -9/+7 |
| | |||||
* | Load IMAP worker for imap+insecure | Drew DeVault | 2019-05-20 | 3 | -4/+13 |
| | |||||
* | Pass ServerName to tls.Config for SMTP | Drew DeVault | 2019-05-20 | 1 | -2/+12 |
| | |||||
* | Show unsupported mimetype message in red | Drew DeVault | 2019-05-20 | 1 | -1/+1 |
| | |||||
* | Show attachment names in multipart view | Drew DeVault | 2019-05-20 | 1 | -1/+5 |
| | |||||
* | Implement :next-part, :prev-part | Drew DeVault | 2019-05-20 | 3 | -2/+76 |
| | |||||
* | Flesh out multipart switcher | Drew DeVault | 2019-05-20 | 5 | -70/+146 |
| | |||||
* | Refactor message part into dedicated widget | Drew DeVault | 2019-05-20 | 1 | -86/+148 |
| | |||||
* | Verify TLS certificates | Drew DeVault | 2019-05-20 | 2 | -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. | ||||
* | asdf | Drew DeVault | 2019-05-20 | 2 | -48/+4 |
| | |||||
* | pipe.go: let tab widget handle ellipsis | Drew DeVault | 2019-05-20 | 1 | -2/+1 |
| | |||||
* | Missed a spot | Drew DeVault | 2019-05-19 | 1 | -0/+1 |
| | |||||
* | Rename :delete-message et al to :delete et al | Drew DeVault | 2019-05-19 | 5 | -16/+20 |
| | |||||
* | Advance cursor after :delete and :move | Drew DeVault | 2019-05-19 | 3 | -4/+7 |
| | | | | So that you can repeat the action on the next message if appropriate | ||||
* | Reset message list cursor when switching stores | Drew DeVault | 2019-05-19 | 1 | -1/+1 |
| | |||||
* | Advance message list cursor when messages arrive | Drew DeVault | 2019-05-19 | 1 | -0/+13 |
| | |||||
* | Implement :pwd command | Amin Bandali | 2019-05-19 | 2 | -0/+28 |
| | |||||
* | worker/types/worker: remove mutex | Simon Ser | 2019-05-19 | 1 | -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 atomic | Simon Ser | 2019-05-19 | 2 | -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 message | Simon Ser | 2019-05-19 | 1 | -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 channel | Simon Ser | 2019-05-19 | 1 | -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 goroutine | Simon Ser | 2019-05-19 | 7 | -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. |