Skip to content

Instantly share code, notes, and snippets.

@flatcap
Last active January 20, 2024 19:11
Show Gist options
  • Save flatcap/525f58fc83577efa1e6d6f8f8c1268c4 to your computer and use it in GitHub Desktop.
Save flatcap/525f58fc83577efa1e6d6f8f8c1268c4 to your computer and use it in GitHub Desktop.
neomutt windows and events
// Root Window
WT_ROOT none
WT_HELP_BAR struct HelpbarWindowData
WT_ALL_DIALOGS none
WT_MESSAGE struct MsgWinPrivateData
// Alias Query Dialog (simple)
WT_DLG_QUERY struct Menu
WT_MENU struct AliasMenuData
WT_STATUS_BAR struct SBarPrivateData
// Alias Selection Dialog (simple)
WT_DLG_ALIAS struct Menu
WT_MENU struct AliasMenuData
WT_STATUS_BAR struct SBarPrivateData
// Attachment View Dialog (simple)
WT_DLG_ATTACH struct Menu
WT_MENU struct AttachCtx
WT_STATUS_BAR struct SBarPrivateData
// Autocrypt Account Dialog (simple)
WT_DLG_AUTOCRYPT struct Menu
WT_MENU struct AccountEntry
WT_STATUS_BAR struct SBarPrivateData
// Certificate Verification Dialog (simple)
WT_DLG_CERTIFICATE struct Menu
WT_MENU none
WT_STATUS_BAR struct SBarPrivateData
// File/Mailbox Browser Dialog (simple)
WT_DLG_BROWSER struct Menu
WT_MENU struct BrowserStateEntry
WT_STATUS_BAR struct SBarPrivateData
// GPGME Key Selection Dialog (simple)
WT_DLG_CRYPT_GPGME struct Menu
WT_MENU struct CryptKeyInfo
WT_STATUS_BAR struct SBarPrivateData
// History Selection Dialog (simple)
WT_DLG_HISTORY struct Menu
WT_MENU char **matches
WT_STATUS_BAR struct SBarPrivateData
// Pattern Selection Dialog (simple)
WT_DLG_PATTERN struct Menu
WT_MENU struct PatternEntry
WT_STATUS_BAR struct SBarPrivateData
// PGP Key Selection Dialog (simple)
WT_DLG_PGP struct Menu
WT_MENU struct PgpUid
WT_STATUS_BAR struct SBarPrivateData
// Postponed Email Dialog (simple)
WT_DLG_POSTPONE struct Menu
WT_MENU struct Mailbox
WT_STATUS_BAR struct SBarPrivateData
// SMIME Key Selection Dialog (simple)
WT_DLG_SMIME struct Menu
WT_MENU struct SmimeKey
WT_STATUS_BAR struct SBarPrivateData
// Compose Email Dialog
WT_DLG_COMPOSE struct ComposeSharedData (NT_COMPOSE)
WT_CUSTOM Envelope struct ComposeEnvelopeData
WT_STATUS_BAR Attach Bar struct SBarPrivateData
WT_MENU Attachments struct ComposeAttachData
WT_STATUS_BAR Compose Bar struct ComposeBarData
// Mixmaster Dialog
WT_DLG_REMAILER none
WT_MENU Hosts struct Remailer
WT_STATUS_BAR Chain Bar struct SBarPrivateData
WT_CUSTOM Chain none
WT_STATUS_BAR Remailer Bar struct SBarPrivateData
// Index/Pager Dialog
WT_DLG_INDEX struct IndexSharedData (NT_INDEX)
WT_SIDEBAR struct SidebarWindowData
WT_CONTAINER none
WT_INDEX struct IndexPrivateData
WT_MENU (struct IndexPrivateData)
WT_STATUS_BAR struct IBarPrivateData
WT_PAGER struct PagerPrivateData
WT_CUSTOM struct PagerPrivateData
WT_STATUS_BAR struct PBarPrivateData
// Simple Pager
WT_DLG_DO_PAGER struct IndexSharedData (NT_INDEX)
WT_PAGER struct PagerPrivateData
WT_CUSTOM struct PagerPrivateData
WT_STATUS_BAR struct PBarPrivateData
// Root Window
WT_ROOT rootwin_new()
No data, recalc, repaint
NT_CONFIG rootwin_config_observer()
$status_on_top
NT_WINDOW rootwin_window_observer()
NT_WINDOW_DELETE
SIGWINCH
index/pager/menu: SigWinch => mutt_resize_screen()
rootwin_set_size()
mutt_window_reflow()
window_notify_all()
WT_HELP_BAR see "Help Bar"
WT_ALL_DIALOGS see "All Dialogs"
WT_MESSAGE see "Message Window"
// Help Bar
WT_HELP_BAR helpbar_new()
helpbar_recalc()
helpbar_repaint()
NT_BINDING helpbar_binding_observer()
all key bindings
NT_COLOR helpbar_color_observer()
MT_COLOR_MAX
MT_COLOR_STATUS
NT_CONFIG helpbar_config_observer()
$help
NT_WINDOW helpbar_window_observer()
NT_WINDOW_FOCUS
NT_WINDOW_STATE
NT_WINDOW_DELETE
// All Dialogs
WT_ALL_DIALOGS alldialogs_new()
No data, recalc, repaint
NT_WINDOW alldialogs_window_observer()
NT_WINDOW_DELETE
dialog_push()
hide old window
insert new window
set focus
mutt_window_reflow()
dialog_pop()
hide new window
show old window
set focus
mutt_window_reflow()
// Message Window
WT_MESSAGE msgwin_new()
msgwin_recalc()
msgwin_recursor()
msgwin_repaint()
msgwin_set_text()
msgwin_clear_text()
NT_WINDOW msgwin_window_observer()
NT_WINDOW_STATE
NT_WINDOW_DELETE
// Menu Window
WT_MENU menu_new_window()
menu_recalc()
menu_repaint()
NT_COLOR menu_color_observer()
MT_COLOR_NORMAL
MT_COLOR_INDICATOR
MT_COLOR_MAX
NT_CONFIG menu_config_observer()
$ascii_chars
$arrow_cursor
$arrow_string
$menu_context
$menu_move_off
$menu_scroll
NT_WINDOW menu_window_observer()
NT_WINDOW_STATE
NT_WINDOW_DELETE
// Simple Bar
WT_STATUS_BAR sbar_new()
sbar_recalc()
sbar_repaint()
sbar_set_title()
WA_RECALC
NT_COLOR sbar_color_observer()
MT_COLOR_STATUS
MT_COLOR_MAX
NT_WINDOW sbar_window_observer()
NT_WINDOW_STATE
NT_WINDOW_DELETE
// Simple Dialog
WT_DLG_XXX simple_dialog_new()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
NT_CONFIG simple_config_observer()
$status_on_top
NT_WINDOW simple_window_observer()
NT_WINDOW_DELETE
// Alias Query Dialog (simple)
WT_DLG_QUERY dlg_select_query()
WT_MENU see "Menu Window"
NT_CONFIG alias_config_observer()
$sort_alias
NT_COLOR see "Menu Window"
NT_WINDOW query_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_STATE see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Alias Selection Dialog (simple)
WT_DLG_ALIAS dlg_select_alias()
alias_recalc()
WT_MENU see "Menu Window"
NT_ALIAS alias_alias_observer()
NT_ALIAS_ADD
NT_ALIAS_DELETE
NT_ALIAS_DELETE_ALL
NT_ALIAS_CHANGE
NT_CONFIG alias_config_observer()
$sort_alias
NT_COLOR see "Menu Window"
NT_WINDOW alias_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_STATE see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Attachment View Dialog (simple)
WT_DLG_ATTACH dlg_select_attachment()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Autocrypt Account Dialog (simple)
WT_DLG_AUTOCRYPT dlg_select_autocrypt_account()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Certificate Verification Dialog (simple)
WT_DLG_CERTIFICATE dlg_verify_certificate()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// File/Mailbox Browser Dialog (simple)
WT_DLG_BROWSER mutt_buffer_select_file()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// GPGME Key Selection Dialog (simple)
WT_DLG_CRYPT_GPGME dlg_select_gpgme_key()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// History Selection Dialog (simple)
WT_DLG_HISTORY dlg_select_history()
fixed data set, no sorting, no colouring
WT_MENU see "Menu Window"
NT_COLOR see "Menu Window"
NT_WINDOW see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Pattern Selection Dialog (simple)
WT_DLG_PATTERN create_pattern_menu()
fixed data set, no sorting, no colouring
WT_MENU see "Menu Window"
NT_COLOR see "Menu Window"
NT_WINDOW see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// PGP Key Selection Dialog (simple)
WT_DLG_PGP dlg_select_pgp_key()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Postponed Email Dialog (simple)
WT_DLG_POSTPONE dlg_select_postponed_email()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// SMIME Key Selection Dialog (simple)
WT_DLG_SMIME dlg_select_smime_key()
WT_MENU see "Menu Window"
WT_STATUS_BAR see "Simple Bar"
// Compose Email Dialog
WT_DLG_COMPOSE Compose compose_dlg_init()
NT_CONFIG compose_config_observer()
$status_on_top
NT_WINDOW compose_window_observer()
NT_WINDOW_DELETE
WT_CUSTOM Envelope compose_env_new()
cenv_recalc()
cenv_repaint()
NT_COLOR env_color_observer()
MT_COLOR_BOLD
MT_COLOR_COMPOSE_HEADER
MT_COLOR_COMPOSE_SECURITY_BOTH
MT_COLOR_COMPOSE_SECURITY_ENCRYPT
MT_COLOR_COMPOSE_SECURITY_NONE
MT_COLOR_COMPOSE_SECURITY_SIGN
MT_COLOR_NORMAL
MT_COLOR_STATUS
MT_COLOR_MAX
NT_COMPOSE env_compose_observer()
NT_COMPOSE_ENVELOPE
NT_CONFIG env_config_observer()
$autocrypt
$compose_show_user_headers
$crypt_opportunistic_encrypt
$pgp_sign_as
$smime_encrypt_with
$x_comment_to
NT_HEADER env_header_observer()
NT_HEADER_ADD
NT_HEADER_DELETE
NT_HEADER_CHANGE
NT_WINDOW env_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_STATE
WT_STATUS_BAR Attach Bar, see "Simple Bar"
WT_MENU Attachments attach_new()
menu_recalc()
menu_repaint()
compose_menu_repaint()
NT_COLOR see "Menu Window"
NT_COMPOSE attach_compose_observer()
NT_COMPOSE_ATTACH
NT_CONFIG attach_config_observer()
$attach_format
NT_WINDOW attach_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_STATE see "Menu Window"
WT_STATUS_BAR Compose Bar cbar_new()
cbar_recalc()
cbar_repaint()
NT_COLOR cbar_color_observer()
MT_COLOR_STATUS
MT_COLOR_MAX
NT_COMPOSE cbar_compose_observer()
NT_COMPOSE_ATTACH
NT_COMPOSE_ENVELOPE
NT_CONFIG cbar_config_observer()
$compose_format
NT_WINDOW cbar_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_STATE
// Mixmaster Dialog
WT_DLG_REMAILER Remailer dlg_select_mixmaster_chain()
NT_CONFIG remailer_config_observer()
$status_on_top
NT_WINDOW remailer_window_observer()
NT_WINDOW_DELETE
WT_MENU Hosts see "Menu Window"
WT_STATUS_BAR Chain Bar see "Simple Bar"
WT_CUSTOM Chain mutt_window_new()
none
WT_STATUS_BAR Remailer Bar see "Simple Bar"
// Index Panel
WT_INDEX ipanel_new()
NT_CONFIG ipanel_config_observer()
$status_on_top
NT_WINDOW ipanel_window_observer()
NT_WINDOW_DELETE
WT_MENU Email list menu_new_window()
index_menu_repaint()
NT_ALTERN index_altern_observer()
NT_ALTERN_ADD
NT_ALTERN_DELETE
NT_ALTERN_DELETE_ALL
NT_ATTACH index_attach_observer()
NT_ATTACH_ADD
NT_ATTACH_DELETE
NT_ATTACH_DELETE_ALL
NT_COLOR index_color_observer()
MT_COLOR_INDEX
MT_COLOR_INDEX_AUTHOR
MT_COLOR_INDEX_COLLAPSED
MT_COLOR_INDEX_DATE
MT_COLOR_INDEX_FLAGS
MT_COLOR_INDEX_LABEL
MT_COLOR_INDEX_NUMBER
MT_COLOR_INDEX_SIZE
MT_COLOR_INDEX_SUBJECT
MT_COLOR_INDEX_TAG
MT_COLOR_INDEX_TAGS
NT_CONFIG index_config_observer()
$reply_regex
NT_MENU index_menu_observer()
NT_SCORE index_score_observer()
NT_SUBJRX index_subjrx_observer()
NT_SUBJRX_ADD
NT_SUBJRX_DELETE
NT_SUBJRX_DELETE_ALL
NT_WINDOW index_window_observer()
NT_WINDOW_DELETE
WT_STATUS_BAR Index Bar ibar_new()
ibar_recalc()
ibar_repaint()
NT_COLOR ibar_color_observer()
MT_COLOR_STATUS
MT_COLOR_MAX
NT_CONFIG ibar_config_observer()
$status_format
$ts_enabled
$ts_icon_format
$ts_status_format
NT_INDEX ibar_index_observer()
NT_INDEX_MAILBOX
NT_INDEX_EMAIL
NT_MENU ibar_menu_observer()
all???
NT_MAILBOX ibar_mailbox_observer()
all???
NT_WINDOW ibar_window_observer()
NT_WINDOW_STATE
NT_WINDOW_DELETE
// Pager Panel
WT_PAGER ppanel_new()
NT_CONFIG ppanel_config_observer()
$status_on_top
NT_WINDOW ppanel_window_observer()
NT_WINDOW_DELETE
WT_CUSTOM Email pager_window_new()
pager_menu_repaint()
NT_CONFIG pager_config_observer()
$pager_index_lines
NT_COLOR pager_color_observer()
MT_COLOR_STATUS
MT_COLOR_MAX
NT_INDEX pager_index_observer()
NT_INDEX_MAILBOX
NT_INDEX_EMAIL
NT_MAILBOX pager_mailbox_observer()
all???
NT_EMAIL pager_email_observer()
all???
NT_WINDOW pager_window_observer()
NT_WINDOW_DELETE
WT_STATUS_BAR Pager Bar pbar_new()
pbar_recalc()
pbar_repaint()
NT_COLOR pbar_color_observer()
MT_COLOR_STATUS
MT_COLOR_MAX
NT_CONFIG pbar_config_observer()
$pager_format
NT_PAGER pbar_pager_observer()
NT_PAGER_MAILBOX
NT_PAGER_EMAIL
NT_MAILBOX pbar_mailbox_observer()
all???
NT_EMAIL pbar_email_observer()
all???
NT_WINDOW pbar_window_observer()
NT_WINDOW_DELETE
// Sidebar
WT_SIDEBAR mutt_window_new()
sb_recalc()
sb_repaint()
NT_ACCOUNT sb_account_observer()
all
NT_ACCOUNT_ADD
NT_ACCOUNT_DELETE
NT_ACCOUNT_CHANGE
NT_COLOR sb_color_observer()
MT_COLOR_INDICATOR
MT_COLOR_NORMAL
MT_COLOR_SIDEBAR_DIVIDER
MT_COLOR_SIDEBAR_FLAGGED
MT_COLOR_SIDEBAR_HIGHLIGHT
MT_COLOR_SIDEBAR_INDICATOR
MT_COLOR_SIDEBAR_NEW
MT_COLOR_SIDEBAR_ORDINARY
MT_COLOR_SIDEBAR_SPOOLFILE
MT_COLOR_SIDEBAR_UNREAD
MT_COLOR_MAX
NT_COMMAND sb_command_observer()
sidebar_whitelist
unsidebar_whitelist
NT_CONFIG sb_config_observer()
$sidebar_*
$sidebar_component_depth
$sidebar_delim_chars
$sidebar_divider_char
$sidebar_folder_indent
$sidebar_format
$sidebar_indent_string
$sidebar_new_mail_only
$sidebar_next_new_wrap
$sidebar_non_empty_mailbox_only
$sidebar_on_right
$sidebar_short_path
$sidebar_sort_method
$sidebar_visible
$sidebar_width
$ascii_chars
$folder
$spool_file
NT_MAILBOX sb_mailbox_observer()
all
NT_MAILBOX_ADD
NT_MAILBOX_DELETE
NT_MAILBOX_SWITCH
NT_WINDOW sb_window_observer()
NT_WINDOW_DELETE
NT_WINDOW_FOCUS???
NT_WINDOW_STATE
// Index/Pager Dialog
WT_DLG_INDEX Index index_pager_init()
NT_MAILBOX index_mailbox_observer()
NT_MENU index_menu_observer()
WT_SIDEBAR see "Sidebar"
WT_CONTAINER (added by sidebar) mutt_window_new()
WT_INDEX see "Index Panel"
WT_PAGER see "Pager Panel"
// Simple Pager
WT_DLG_DO_PAGER mutt_do_pager()
WT_PAGER see "Pager Panel"
NT_CONFIG dopager_config_observer()
$status_on_top
NT_WINDOW dopager_window_observer()
NT_WINDOW_DELETE
// Base Windows
WT_ROOT Root Window rootwin_new()
WT_HELP_BAR Help Bar helpbar_new()
WT_ALL_DIALOGS All Dialogs mutt_window_init()
WT_MESSAGE Message Window msgwin_new()
All Dialogs become children of WT_ALL_DIALOGS.
--------------------------------------------------------------------------------
Many simple dialogs use simple_dialog_new().
They have the layout:
// Simple Dialog
WT_DLG_XXX Simple Dialog simple_dialog_new()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Alias Query Dialog
WT_DLG_QUERY Query dlg_select_query()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Alias Selection Dialog
WT_DLG_ALIAS Alias dlg_select_alias()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Attachment View Dialog
WT_DLG_ATTACH Attach dlg_select_attachment()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Autocrypt Account Dialog
WT_DLG_AUTOCRYPT Autocrypt dlg_select_autocrypt_account()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Certificate Verification Dialog
WT_DLG_CERTIFICATE Certificate dlg_verify_certificate()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// File/Mailbox Browser Dialog
WT_DLG_BROWSER Browser mutt_buffer_select_file()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// GPGME Key Selection Dialog
WT_DLG_CRYPT_GPGME Crypt-GPGME dlg_select_gpgme_key()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// History Selection Dialog
WT_DLG_HISTORY History dlg_select_history()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Pattern Selection Dialog
WT_DLG_PATTERN Pattern create_pattern_menu()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// PGP Key Selection Dialog
WT_DLG_PGP Pgp dlg_select_pgp_key()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// Postponed Email Dialog
WT_DLG_POSTPONE Postpone dlg_select_postponed_email()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
// SMIME Key Selection Dialog
WT_DLG_SMIME Smime dlg_select_smime_key()
WT_MENU Menu menu_new_window()
WT_STATUS_BAR Status Bar sbar_new()
--------------------------------------------------------------------------------
Many simple pager users call mutt_do_pager().
They have the layout:
// Simple Pager
WT_DLG_DO_PAGER Pager mutt_do_pager()
WT_PAGER Pager Panel create_panel_pager()
WT_MENU Paged text menu_new_window()
WT_STATUS_BAR Pager Bar pbar_new()
- Verify PGP Key
- OP_VERIFY_KEY
- dlg_select_pgp_key()
- verify_key()
- Show key bindings (:bind)
icmd_bind()
- Show variable settings (:set)
icmd_set()
- Show NeoMutt version (:version)
icmd_version()
- Help Page (OP_HELP)
mutt_help()
- Show Log Messages
OP_SHOW_LOG_MESSAGES
- Sendmail error messages
mutt_invoke_sendmail()
- View Attachment
mutt_view_attachment()
--------------------------------------------------------------------------------
// Index/Pager Dialog
WT_DLG_INDEX Index index_pager_init()
WT_SIDEBAR Sidebar mutt_window_new()
WT_CONTAINER Index Container mutt_window_new()
WT_INDEX Index Panel create_panel_index()
WT_MENU Email list menu_new_window()
WT_STATUS_BAR Index Bar ibar_new()
WT_PAGER Pager Panel create_panel_pager()
WT_MENU Email menu_new_window()
WT_STATUS_BAR Pager Bar pbar_new()
--------------------------------------------------------------------------------
// Compose Email Dialog
WT_DLG_COMPOSE Compose compose_dlg_init()
WT_CUSTOM Envelope compose_env_new()
WT_STATUS_BAR Attach Bar sbar_new()
WT_MENU Attachments cattach_new()
WT_STATUS_BAR Compose Bar cbar_new()
--------------------------------------------------------------------------------
// Mixmaster Dialog
WT_DLG_REMAILER Remailer dlg_select_mixmaster_chain()
WT_MENU Hosts menu_new_window()
WT_STATUS_BAR Chain Bar sbar_new()
WT_CUSTOM Chain compose_env_new()
WT_STATUS_BAR Remailer Bar sbar_new()
--------------------------------------------------------------------------------
set termguicolors
syntax clear
syntax match comment "^//.*"
syntax match config "$\i\+"
syntax match data_struct "struct \i\+"
syntax match error "???"
syntax match function "\<\i\+\>()"
syntax match line "^---\+"
syntax match notify_type "\<NT\i\+\>"
syntax match recalc "\<\i\+_re\(calc\|paint\|cursor\)\+\>()"
syntax match window_type "\<WT\i\+\>"
highlight comment guifg=#80ff80
highlight config guifg=#ff8700
highlight data_struct guifg=#8080ff
highlight error guifg=#ffffff guibg=#ff0000
highlight function guifg=#00ffff
highlight line guifg=#404040
highlight notify_type guifg=#ff00ff
highlight recalc guifg=#ff0000
highlight window_type guifg=#ffff00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment