aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/aerc.go
Commit message (Collapse)AuthorAgeFilesLines
* Fix selected account to return for messageviewerJeffas2019-10-021-4/+6
| | | | | | This ensures that the selectedaccount is returned if currently selected tab is a messageviewer. This also makes it more extensible for adding other ways of getting the selected account.
* widgets: remove duplicate importWagner Riffel2019-09-121-18/+17
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* Add signaturesJeffas2019-09-121-1/+1
| | | | | | | | | | | | | This adds the ability for per-account signatures in the accounts.conf config file. The signature is added to emails in the editor at the bottom of the email. This includes when forwarding, replying to, and composing emails. There are two config options: signature-file and signature-cmd. The former allows a signature to be read from a file and the latter allows an arbitrary command to be executed to return the signature. The config options have been documented in aerc-config
* Add MouseableJeffas2019-09-111-14/+27
| | | | | | | | | | | | | | | | | | | | | | This adds the Mouseable interface. When this is implemented for a component that item can accept and process mouseevents. At the top level when a mouse event is received it is passed to the grid's handler and then it trickles down until it reaches a component that can actually handle it, such as the tablist, dirlist or msglist. A mouse event is passed so that components can handle other things such as scrolling with the mousewheel. The components themselves then perform the necessary actions. Clicking emails in the messagelist opens them in a new tab. Textinputs can be clicked to position the cursor inside them. Mouseevents are not forwarded to the terminal at the moment. Elements which do not handle mouse events are not required to implement the Mouseable interface.
* all: purge redundant underscoresWagner Riffel2019-09-041-1/+1
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* Add :prompt commandChristopher Vittal2019-08-261-2/+32
| | | | | | | | | | Usage: :prompt <prompt> <command...> Displays the prompt on the status bar, waits for user input, then appends that input as the last argument to the command and executes it. The input is passed as one argument to the command, unless it is empty, in which case no extra argument is added.
* Revert "add close command at global level"Drew DeVault2019-08-131-8/+0
| | | | This reverts commit f0a0c5aa733fa66958c113465bfc5fdd3d7cc9f0.
* add close command at global levelAditya Srivastava2019-08-131-0/+8
|
* Close backends prior to shutdownReto Brunner2019-08-081-0/+19
| | | | | | | We need some way to signal the backends that we are about to shutdown, allowing them to clean up (for example in notmuch committing the db changes). This commit implements a hook which gets called upon shutdown, providing backends implement the io.Closer interface.
* Ring bell when new messages arrive0.2.0Ben Burwell2019-07-291-0/+15
| | | | | | | | Add a "new-message-bell" option to the UI section of aerc.conf. A new hook into the message store allows the msglist widget to detect new messages being added to the displayed list. When new messages are delivered, and the new-message-bell option is enabled (as it is by default), the terminal will beep.
* Add index option to change-tabJeffas2019-07-271-0/+10
| | | | | | | This allows selection of a tab using its index. It attempts to parse the given argument as a number, if it fails then it uses it as a name. Also supports relative indexes using prefixed + or -.
* Add command history and cyclingGalen Abell2019-07-261-2/+11
| | | | | | Aerc will keep track of the previous 1000 commands, which the user can cycle through using the arrow keys while in the ex-line. Pressing up will move backwards in history while pressing down will move forward.
* Support configurable header layout in compose widgetDaniel Bridges2019-07-261-2/+2
|
* Add new-email triggerJeffas2019-07-261-3/+10
| | | | | | | | | | | | | | | | | This patch sets up the trigger config section of aerc.conf. Each trigger has its own function which is called from the place where it is triggered. Currently only the new-email trigger is implemented. The triggers make use of format strings. For instance, in the new-email trigger this allows the user to select the trigger command and also the information extracted from the command and placed into their command. To actually execute the trigger commands the keypresses are simulated. Further triggers can be implemented in the future. Formatting of the command is moved to a new package.
* Add change tab commandJeffas2019-07-231-0/+22
| | | | | | | | | | This command allows the user to change tab by giving the tab name. This can be tab completed too. The previous tab is stored in the tabs module so that when a new tab is created it is still possible to go to the previous one. Normal invocation is :ct folder Previous tab is :ct -
* Add Unix socket for communicating with aercDrew DeVault2019-07-191-0/+40
|
* Show currently pressed keys in statuslineJeffas2019-07-171-0/+3
| | | | | | This patch adds the currently pressed keys to the statusline. This is useful when keybindings are multiple keys long and you might forget which keys are already pressed.
* Add clickable tabsJeffas2019-07-111-0/+2
| | | | | | | | | | | This introduces a new interface `Clickable`. I'd imagine this would be implemented for most widgets eventually and would allow for programs run in the terminal to also have their mouse events forwarded to them. For the tabs it was relatively simple to check that the position of the click is within the boxes for the tabs. For other components I'd imagine that some state representing their currently drawn bounding box would be useful.
* Implement basic tab completion supportGregory Mullen2019-06-291-1/+5
| | | | | Tab completion currently only works on commands. Contextual completion will be added in the future.
* Fix Cc & Bcc handling in repliesDrew DeVault2019-06-211-0/+4
|
* lib/ui/tab: Add Replace methodKevin Kuehler2019-06-111-0/+4
| | | | | | Also expose a light wrapper method in aerc.go for tab replacement Signed-off-by: Kevin Kuehler <kkuehler@brave.com>
* Add :save and :pipe commands to viewerGalen Abell2019-05-271-0/+4
| | | | | | | | | * :save takes a path and saves the current message part to that location * :pipe is the same as pipe on the account page, but uses the current message part rather than the whole email (ie :pipe gzip -d) * Refactored account:pipe and extracted common pipe code to commands.util.QuickTerm * Added helper command aerc.PushError
* Show account wizard if no accounts configuredDrew DeVault2019-05-221-0/+6
|
* Fix always showing last account tabDrew DeVault2019-05-221-2/+2
|
* New account wizard, part oneDrew DeVault2019-05-211-0/+2
|
* Update internal state and draw from the same goroutineSimon Ser2019-05-191-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* s/aerc2/aerc/gDrew DeVault2019-05-171-3/+3
|
* Add distinct keybindings for each compose viewDrew DeVault2019-05-141-2/+9
|
* Add initial compose widgetDrew DeVault2019-05-121-0/+2
|
* Make the message viewer real, part oneDrew DeVault2019-03-311-2/+0
|
* Add message view commands, :closeDrew DeVault2019-03-301-0/+2
|
* Add basic message viewer mockupDrew DeVault2019-03-301-12/+6
|
* Correct color of error messagesDrew DeVault2019-03-301-1/+1
|
* Use tcell.Style.Reverse instead of black on whiteDrew DeVault2019-03-301-1/+1
|
* Expire status errors on inputDrew DeVault2019-03-211-0/+9
|
* Use : for keybindings even when ex is overriddenDrew DeVault2019-03-211-3/+9
|
* Rig up terminal keybinding groupDrew DeVault2019-03-211-0/+2
|
* Use user's configured ex keyDrew DeVault2019-03-211-1/+3
|
* Add context-specific keybindingsDrew DeVault2019-03-211-8/+38
|
* Wrap Terminal in TermHostDrew DeVault2019-03-171-0/+5
|
* Add :term-closeDrew DeVault2019-03-171-0/+8
|
* Handle terminal title, login shellDrew DeVault2019-03-171-1/+0
|
* Implement :next-tab, :prev-tabDrew DeVault2019-03-171-0/+16
|
* Move exline handling up to aerc, add :termDrew DeVault2019-03-171-15/+114
|
* commands: handle case where no account selectedDrew DeVault2019-03-171-1/+5
|
* Add basic terminal widgetDrew DeVault2019-03-171-0/+4
|
* Implement sidebar-width config optionDrew DeVault2019-03-151-2/+1
|
* Rig up key bindingsDrew DeVault2019-03-151-1/+1
|
* Start building out command subsystemDrew DeVault2019-03-101-6/+8
|
* Fix buildElias Naur2019-02-101-1/+2
|