about summary refs log tree commit diff stats
Commit message (Collapse)AuthorAgeFilesLines
* feat(pgp): Add <ESC> to cancel password promptRay Ganardi2020-05-252-10/+19
| | | | Previously there was no way to cancel the password prompt.
* pgp: fail gracefully from email decryptionRay Ganardi2020-05-255-11/+31
| | | | | Aerc panics when there's an error on email decryption. Instead, an error message should be shown.
* msg/reply: scoping error of part slice for quotingSrivathsan Murali2020-05-221-1/+1
| | | | | part was left unassigned in the outer scope. Leading to errors while quoting.
* Fix typosMartin Michlmayr2020-05-218-11/+11
|
* Update version to 0.4.0 0.4.0Drew DeVault2020-05-191-1/+1
|
* Add contrib/_incr_versionDrew DeVault2020-05-191-0/+4
|
* gofmtDrew DeVault2020-05-191-1/+1
|
* msg/forward: fix body part selectionReto Brunner2020-05-171-2/+8
|
pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
package ui

import (
	"github.com/gdamore/tcell"
)

type Tabs struct {
	Tabs       []*Tab
	TabStrip   *TabStrip
	TabContent *TabContent
	Selected   int

	onInvalidateStrip   func(d Drawable)
	onInvalidateContent func(d Drawable)
}

type Tab struct {
	Content Drawable
	Name    string
	invalid bool
}

type TabStrip Tabs
type TabContent Tabs

func NewTabs() *Tabs {
	tabs := &Tabs{}
	tabs.TabStrip = (*TabStrip)(tabs)
	tabs.TabContent 
2020-05-063-2/+4
| | | | Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
* templates: add version funcReto Brunner2020-05-063-0/+19
| | | | Fixes #316
* docs: extract template function to their own sectionReto Brunner2020-05-061-28/+39
| | | | The functions were located in the data section, which was suboptimal.
* lib/messageview: mark messages as readReto Brunner2020-05-061-0/+1
| | | | | | | | | Currently at least the notmuch and maildir worker only set messages as read if a body part is fetched. The gpg abstraction however fetches the full message. We can simply set the readstate when we create the messageview, avoiding the issue. Once this is merged, we can cleanup both workers.
* msg/reply: Deduplicate TO: and CC:Reto Brunner2020-05-061-0/+12
| | | | If a recipient is already in TO:, there's no need to also put them in CC:
* Guess date from received if not presentelumbella2020-05-061-1/+41
|
* Allow maildir subdirectoriesGrégoire Delattre2020-05-051-11/+27
|
* libui: don't require beeper for main contentDrew DeVault2020-05-051-2/+4
|
* Fix array out of bounds errorburrowing-owl2020-05-051-1/+1
|
* store.FetchFull: Change callback type to expose entire messageBen Fiedler2020-05-015-11/+17
| | | | | This is a prerequisite for allowing the FetchFull message to return both the message content and the message headers.
* Implement :header commandRay Ganardi2020-05-012-0/+78
| | | | | | Usage: *header* [-f] <field> [value] Add a new email header. If the header already exists, -f must be specified to replace the given value.
* Changing aerc.conf delimiter parsing to use only =, and not : as wellBen Cohen2020-04-291-2/+6
|
* Remove unecessary <Enter> from aerc.conf.inErazem Kokot2020-04-281-1/+1
| | | | | | The new-email config example has "<Enter>" at the end unecessarily, since this makes the "<Enter>" text show up in a notification instead of functioning as a Return keypress.
* add template structure to aerc-templates(7)Reto Brunner2020-04-261-2/+19
|
* aerc-config: remove bold modifier within textReto Brunner2020-04-261-1/+1
| | | | | Partial bold ("highlighted") text looks very strange and it doesn't really add anything, might as well remove it.
* remove mention of header addition via the editor from tutorialReto Brunner2020-04-241-3/+1
|
* Fix headers in built-in templatesDrew DeVault2020-04-242-0/+2
|
* gofmt fixesDrew DeVault2020-04-2414-20/+20
|
* imap/fetch.go: report error when fetching headers failsBen Fiedler2020-04-241-3/+4
| | | | | Correct me if I'm wrong, but shouldn't this raise an error when it fails?
* Add recall commandJeffas2020-04-247-5/+154
| | | | | | This command allows recalling the selected postponed email to edit in the composer. The command only allows recalling from the postpone directory.
* Add postpone commandJeffas2020-04-2411-27/+166
| | | | | | | This command uses the Postpone folder from the account config to save messages to. Messages are saved as though they were sent so have a valid 'to' recipient address and should be able to be read back in for later editing.
* Add :choose commandRay Ganardi2020-04-243-0/+84
| | | | | | | Usage: *choose* -o <key> <text> <command> [-o <key> <text> <command>]... Prompts the user to choose from various options.
* Remove ability to specify headers in the editorReto Brunner2020-04-243-152/+48
| | | | | | | | | | Due to headers being essentially free text, we constantly run into issues with parts of the body being interpreted as headers. Remove the ability to overwrite headers to avoid that, while keeping the ability to specify headers in the template files. Fixes #383
* templates/quoted_reply: fix incorrect timezone identifierReto Brunner2020-04-241-1/+1
|
* Ensure documented defaults match given defaultsBen Fiedler2020-04-231-3/+3
|
* Use aerc.PushError where appropriateBen Fiedler2020-04-2313-52/+20
| | | | Forgot an unused import, to save you the hassle here is v2.
* Bump ProtonMail/crypto to fix build on OpenBSDAnirudh Oppiliappan2020-04-202-3/+3
| | | | Signed-off-by: Anirudh Oppiliappan <x@icyphox.sh>
* fix binding for delete messageRay Ganardi2020-04-201-1/+1
| | | | | I guess confirm command was removed sometime ago, but the config template was not updated.
* fix: Close unused MessageView when swapping viewRay Ganardi2020-04-202-1/+7
| | | | | | | Closes https://todo.sr.ht/~sircmpwn/aerc2/379 The old `MessageView` was not closed when replacing the tab content, which causes a memory leak.
>} func (content *TabContent) Invalidate() { if content.onInvalidateContent != nil { content.onInvalidateContent(content) } tab := content.Tabs[content.Selected] tab.Content.Invalidate() } func (content *TabContent) OnInvalidate(onInvalidate func(d Drawable)) { content.onInvalidateContent = onInvalidate }