| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
gui: add Utility Window at bottom-right of screen Add a new Utility Window that displays short status text (up to 10 characters) at the bottom-right of the screen. Architecture: - New Bottom Bar container (horizontal, FIXED) wraps the Message Container and Utility Window side by side - Message Container changed from MINIMISE to MAXIMISE so it fills remaining width after the Utility Window - Bottom Bar's req_rows is synced dynamically from msgwin_set_rows(), msgcont_push_window(), and msgcont_pop_window() New files: - gui/bottombar.c/h: Bottom Bar horizontal container - gui/utilwin.c/h: Utility Window (WT_CUSTOM, starts hidden) The Utility Window starts hidden and costs zero screen space. Call utilwin_set_text() to show it, pass NULL to hide it. When the Message Window is multi-line, the Utility Window aligns its text to the bottom line. | 5 个月前 | |
gui: add Utility Window at bottom-right of screen Add a new Utility Window that displays short status text (up to 10 characters) at the bottom-right of the screen. Architecture: - New Bottom Bar container (horizontal, FIXED) wraps the Message Container and Utility Window side by side - Message Container changed from MINIMISE to MAXIMISE so it fills remaining width after the Utility Window - Bottom Bar's req_rows is synced dynamically from msgwin_set_rows(), msgcont_push_window(), and msgcont_pop_window() New files: - gui/bottombar.c/h: Bottom Bar horizontal container - gui/utilwin.c/h: Utility Window (WT_CUSTOM, starts hidden) The Utility Window starts hidden and costs zero screen space. Call utilwin_set_text() to show it, pass NULL to hide it. When the Message Window is multi-line, the Utility Window aligns its text to the bottom line. | 5 个月前 | |
iwyu: fix includes | 7 个月前 | |
fix: display key values in <what-key> Commit 4aebd7e23 changed msgwin_clear_text() to hide the Message Window when it isn't the only Window in the Message Container. In mw_what_key() the Message Window is pushed on top of the container's existing Message Window, so msgwin_clear_text() now hid the what-key Window on every keypress. The subsequent msgwin_add_text() calls don't reveal a hidden Window, so the key values were never shown. Clear the text with msgwin_set_text(win, NULL, ...) instead, which empties the text without hiding the Window. | 3 个月前 | |
Fix memmove in mutt_str_expand_tabs This changes mutt_str_expand_tabs to do its things in a freshly allocated string instead of in-place. This prevents a bug when moving the remainder of the string after making space for a new tab. | 5 个月前 | |
gui: move globals to GuiModuleData Move AllDialogsWindow, MessageContainer, RootWindow, and TsSupported into GuiModuleData struct. | 5 个月前 | |
gui: move globals to GuiModuleData Move AllDialogsWindow, MessageContainer, RootWindow, and TsSupported into GuiModuleData struct. | 5 个月前 | |
global: forget-passphrase Function <forget-passphrase> is available from the Index, Attach and Compose Dialogs. Move it to the 'generic' menu, so that it's available globally. | 3 个月前 | |
tidy code - tidy include guards - drop unused menu refs | 2 个月前 | |
global: forget-passphrase Function <forget-passphrase> is available from the Index, Attach and Compose Dialogs. Move it to the 'generic' menu, so that it's available globally. | 3 个月前 | |
key: guarantee params of function dispatchers | 8 个月前 | |
refactor: split selection helpers into separate files Move ea_add_tagged() and its helpers from gui/mview.c to gui/selection.c. Move ba_add_selection(), aa_add_selection() and their helpers from attach/recvattach.c to attach/selection.c. | 4 个月前 | |
log: fix missing errors on startup Increase the size of the log queue (used before the log file has been initialised). Some startup situations caused lots of logging leading to error messages going missing. | 5 个月前 | |
menu: fold 'dialog' back into 'generic' Fold the short-lived 'dialog' menu functions back into the 'generic' menu. | 3 个月前 | |
msgwin: control own visibility for messages when hidden If another Window is pushed on top of the Message Window in the Message Container (e.g. for user input), the Message Window is hidden and any messages displayed in that state would not be seen. Update the Message Window so that: - when hidden, messages cause it to make itself visible and trigger a reflow - mutt_clear_error() clears the text and, if the Message Window isn't the only Window in the stack, hides itself again and reflows. | 4 个月前 | |
msgcont: add helpers Add helper functions to the Message Container: - msgcont_recalc_rows() - Recalculate the Bottom Bar height - msgcont_num_windows() - Count the Windows in the Message Container - msgwin_has_text() - Does the Message Window currently hold any text? | 4 个月前 | |
fix coloured prompt truncation An upgrade to the Buffer code exposed a bug in prompt-colouring code. msgwin_add_text_n() cached the Buffer's dptr, before adding text. This was done to track where the *new* text began. buf_addstr_n() caused a Buffer reallocation, invalidating dptr. | 3 个月前 | |
msgcont: add helpers Add helper functions to the Message Container: - msgcont_recalc_rows() - Recalculate the Bottom Bar height - msgcont_num_windows() - Count the Windows in the Message Container - msgwin_has_text() - Does the Message Window currently hold any text? | 4 个月前 | |
Use MUTT_MEM_CALLOC() Reviewed-by: Pietro Cerutti <gahr@gahr.ch> Signed-off-by: Alejandro Colomar <alx@kernel.org> | 1 年前 | |
doxy: comments lots of #defines | 8 个月前 | |
trivial code fixes - iwyu: fix #includes - doxy: tidy colour ids | 1 年前 | |
drop config.h from headers only need it where there's a #if dependency or where config.h defines something like OFF_T | 7 个月前 | |
initialise things Ensure that pointers, structs and variables used as outparams are initialised. (some of variable types were obscured by typedefs) | 3 个月前 | |
bugprone: parenthesize macro arguments/replacement lists The last of the three categories flatcap flagged as good candidates on #4970 -- bugprone-macro-parentheses. 28 sites across 13 files fixed; 7 confirmed as genuine false positives and deliberately left untouched (see below). Every site was checked against its actual call sites for a live bug, not just mechanically wrapped: - Simple negative-constant macros (COLOR_DEFAULT, MUTT_WIN_SIZE_UNLIMITED, OP_REPAINT/TIMEOUT/ABORT, IMAP_RES_NO/BAD, MUTT_MAXRANGE) get their replacement list wrapped. - Value-expression arguments used unparenthesized next to an operator (config/types.h's IS_MAILBOX/IS_COMMAND, mutt/array.h's ARRAY_GET, mutt/mbyte.h's IsWPrint/IsBOM, notmuch/private.h's LIBNOTMUCH_CHECK_VERSION) get the argument wrapped -- no live caller currently passes a compound expression, but this is exactly the class of bug that bites the next caller who does. - mutt/string2.h's SKIPWS and mutt/array.h's ARRAY_FOREACH_(REVERSE_)FROM_TO wrap the argument even though it's used as an assignment/increment target, since `(x)++`/`(x) = ...` are equivalent to the unparenthesized form for any valid lvalue -- harmless, satisfies the check. Three false-positive patterns confirmed and left alone, since parenthesizing would either not compile or change meaning: - mutt/atoi.h:39 and mutt/memory.h:57: the macro argument is a type name (a function parameter's type, and a _Generic type-association respectively), not a value expression -- wrapping a type name in parens isn't valid there. - mutt/array.h:52: same class -- `T` is the array element's type name in a struct member declaration. - mutt/queue.h:437/632/887/896 (all four remaining sites in that file): `field` is passed as a member-designator into `__containerof()` (built on `offsetof()`), not a value expression. Verified empirically with a standalone test file: parenthesizing a member-designator argument to `offsetof()` is a genuine compile error ("expected identifier"), not just a style question. Verification: `clang-tidy -p . <file> --checks='-*,bugprone-macro-parentheses' --header-filter='.*'` now reports only the 7 confirmed-false-positive sites above (was 28 fixable + 7 false positives = 35 total unique locations). Full clean build, `make test` passes (all suites), `clang-format --dry-run -Werror` shows no *new* violations in any changed file (checked differentially against each file's pre-existing state, since several of these headers already had unrelated formatting drift). AI assistance: the mechanical location of all sites, the call-site tracing to distinguish live risk from defensive-only fixes, and the identification + empirical verification of the false positives was done by Claude Code; I reviewed the reasoning and diff, including the compile-error test for the offsetof() case, before this went up. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> | 2 个月前 | |
Fix <show-limit> after limiting to thread | 2 个月前 | |
move mview.c to libgui | 8 个月前 | |
docs: upper-case the help messages | 6 个月前 | |
autocrypt: refactor to use enabled/disabled instead of active/inactive - Rename toggle_active() to toggle_enabled() - Rename OP_AUTOCRYPT_TOGGLE_ACTIVE to OP_AUTOCRYPT_TOGGLE_ENABLED - Update function name from 'toggle-active' to 'toggle-enabled' - Update menu label from 'Tgl Active' to 'Tgl Enabled' - Update user-visible strings from 'active/inactive' to 'enabled/disabled' - Update comments and help text throughout This provides clearer terminology and better aligns with the account->enabled field that's used internally. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> | 1 个月前 | |
gui: clamp reflow allocations to available space | 5 个月前 | |
update copyright dates | 2 年前 | |
Sort include <stddef.h> Semi-scripted change: $ find * -type f \ | grep '\.[ch]$' \ | xargs grep -l 'include.*stddef' \ | while read f; do clang-format -i "$f"; done; Plus manually removing unrelated changes. Fixes: ac6ef83f3229 ("fix: build of imap/auth_sasl.c") Closes: <https://github.com/neomutt/neomutt/issues/4284> Cc: Richard Russon <rich@flatcap.org> Signed-off-by: Alejandro Colomar <alx@kernel.org> | 2 年前 | |
gui: add Utility Window at bottom-right of screen Add a new Utility Window that displays short status text (up to 10 characters) at the bottom-right of the screen. Architecture: - New Bottom Bar container (horizontal, FIXED) wraps the Message Container and Utility Window side by side - Message Container changed from MINIMISE to MAXIMISE so it fills remaining width after the Utility Window - Bottom Bar's req_rows is synced dynamically from msgwin_set_rows(), msgcont_push_window(), and msgcont_pop_window() New files: - gui/bottombar.c/h: Bottom Bar horizontal container - gui/utilwin.c/h: Utility Window (WT_CUSTOM, starts hidden) The Utility Window starts hidden and costs zero screen space. Call utilwin_set_text() to show it, pass NULL to hide it. When the Message Window is multi-line, the Utility Window aligns its text to the bottom line. | 5 个月前 | |
module: pass data into helpers Update helper functions reached from module init/cleanup paths so callers pass the module-owned fields they use, or the module data pointer when several fields are needed. This removes extra neomutt_get_module_data() lookups from attach, autocrypt, color, conn, gui, history, hooks, key, menu, ncrypt, and sidebar helpers, and updates the affected tests to match. | 5 个月前 | |
Use MUTT_MEM_CALLOC() Reviewed-by: Pietro Cerutti <gahr@gahr.ch> Signed-off-by: Alejandro Colomar <alx@kernel.org> | 1 年前 | |
doxy: minor non-code fixes - unify #include guards - insert whitespace into tables | 4 年前 | |
selection: don't traverse outside collapsed thread subtree ea_add_collapsed_thread() walked from the root of the thread but did not constrain traversal to the subtree rooted at `top`. When the collapsed Email was itself a top-level thread with a sibling (top->next != NULL), the loop stepped into the sibling subtree and later walked off the top via parent pointers, dereferencing NULL. | 4 个月前 | |
convert menu_window_new to use MenuDefinition | 7 个月前 | |
convert simple_dialog to MenuDefinition | 7 个月前 | |
gui: move globals to GuiModuleData Move AllDialogsWindow, MessageContainer, RootWindow, and TsSupported into GuiModuleData struct. | 5 个月前 | |
gui: move globals to GuiModuleData Move AllDialogsWindow, MessageContainer, RootWindow, and TsSupported into GuiModuleData struct. | 5 个月前 | |
mutt_thread: fix crash from dangling Email->thread pointers mutt_messages_in_thread() crashed in the pager while rendering the thread-position expando (%n) because e->thread pointed at a MuttThread node that had already been freed. Root cause: mutt_clear_threads() walked m->emails[] but bailed out with 'break' on the first NULL slot before freeing the thread nodes. A NULL hole in the middle of the array (partial read, or an expunged message) therefore left every following Email with its ->thread pointer intact while mutt_hash_free() freed the nodes underneath them. Any surviving reference to such an Email (e.g. the pager's shared email) then held a dangling ->thread pointer. Fix by clearing every non-NULL Email instead of stopping at the first hole. Also harden mutt_messages_in_thread() to guard its tree-walk loops against NULL nodes/messages and bail out safely rather than dereferencing them. | 2 个月前 | |
refactor: upgrade macro flags to enum flags Turn #define'd flags into enums. Enums provide: - debugger visibility - compiler diagnostics - symbol scoping by convention - easier navigation/search - cleaner documentation generation - type grouping Naming: - enum has singular ending, e.g. Flag - typedef wrapper has plural ending, e.g. Flags Suffix `_NO_FLAGS` has been renamed to `_NONE` for consistency. | 4 个月前 | |
utilwin: drop unused get_text() utilwin_get_text() isn't used. | 5 个月前 | |
utilwin: drop unused get_text() utilwin_get_text() isn't used. | 5 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 5 个月前 | ||
| 5 个月前 | ||
| 7 个月前 | ||
| 3 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 8 个月前 | ||
| 4 个月前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 7 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 8 个月前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 1 年前 | ||
| 4 年前 | ||
| 4 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 4 个月前 | ||
| 5 个月前 | ||
| 5 个月前 |