Re: announce: my fork of alot

Subject: Re: announce: my fork of alot

Date: Mon, 17 May 2021 10:54:09 +0200

To: Johannes Larsen,


From: Anton Khirnov

Quoting Johannes Larsen (2021-05-17 00:09:14)
> > - various architectural restructurings which were needed for the above
> >   or to allow for future changes (I have a large TODO list left)
> I for one at least would be very interested in hearing what sort of
> feature you plan in the road map ahead.

Here's my current roadmap:

* statusbar notification about outstanding async tasks
* more async
    - pass current context to commands:
      now that write operations are async, it is possible for a user to execute a command,
      then move focus
      since the command retrieves the focus (and hence the item to act on) by itself,
      the focus item by the time the command executes might different from the one the user
      intended to target
    - commands themselves should probably be synchronous and only launch
      async tasks where appropriate
      this is necessary to prevent races where a later command conflicts
      with an earlier one
    - indicator of outstanding async operations in statusbar
    - db operations (in a thread)
    - buffer/widget construction
    - message loading/processing
* atomic complex retagging commands
  e.g. add+remove in the same command
* refactor command implementation
    - make them tied to a buffer instead of global
    - number-prefixing commands (like in vim),
      e.g. to allow operating on message/thread <N>
* eliminate helper - it's a mess of random unrelated stuff that should be
  properly organized
* better mouse support
* do something more useful with status bar -- display tabs?
* running external commands in a separate tmux pane/terminal
    - tmux does not have a simple way of "wait for pane to exit"
      but tmux wait-for might be usable
* rethink keypress handling
* improve logging
    - trace and verbose levels
    - logger per object
    - more comprehensive
    - log errors/warnings as ui notifications automatically
* look into the use of email.charset, it looks suspicious
* rename and fork?
* tests
* documentation
* look into dropping twisted
    - replace with asyncio event loop?
      there are urwid performance issues, due to urwid idle horror
* review hooks
    - kill off those that get access to too much private state (e.g. ui)
    - enums for hooks
* look at prompt command
* look at

- search+highlight
- properly handle focus switching between the thread tree and message body
    * message select vs attachment open
    * better styling for which one is focused
- better attachment styling
    * kill off highlightable widgets
- elinks encoding fuckery
- auto-page copiousoutput attachments
- color improvements
    * allow disabling all coloring
    * custom highlighting hooks
    * color HTML rendered by elinks/w3m
    * pygments
        * terminal256
        * configurable theming
        * more configurable lexer detection (custom hook?)
    * assign colors to authors
      for large/many-author threads only?
- folding improvements
    * better styling for folded part
    * smarter quote level detection
        - consider messages in references header?
    * some indicator for current foldlevel?
    * individual folds
    * folding sections of git patches
    * other filetypes?
    * custom folding detection hooks
    * folding in git patch commit messages
    * test case
- message exporting sanitization
    decoded - strip transfer-encoding headers
- better handling of matching vs whole thread
    * make the thread aware of the query it was spawned from (if any)
    * different theming for matching messages?
- better and customizable styling for MIME parts decorations
- prettify headers
    * styling for addresses (name vs mailbox part)
    * styling for subject (styling for [TAG])
    * styling for Date (display in local-preferred format)
- displaying message source should be in the to-be-added message view buffer
- changing indentation levels
- make refresh only refresh changed stuff
    * keep focus
- numbered messages in the thread tree
- scrollbars/scroll indicators
- fix arrow/tree structure theming
  when the tree node spans more than one line
- handle multipart/report better
- cleaner way to pass rendering settings through the call stack
- folding parts of the thread tree
  useful for very large and complex threads
- pipeto refactoring
- decoration-less mode for copying long links (like alt-l in weechat)

- operations on whole threads, not just matching messages
- numbered lines, ability to operate on line <num> directly
- refine is useless - replace with "open modified query in a new buffer"
- retagging tag ordering improvements
    * selected tags to display first/last
- dim threads that no longer match the query
- threadline structure is in the theme, wtf

* commandline history completion by commands
* completing tags with arguments (e.g. --all) is broken
* remove should only complete tags that are present

* count threads
* completion for select

* in a separate tmux pane
* reply including original attachments
* factor out reply code into a module under mail/
* honor_follow_up_to default should most likely be True

new buffer for displaying a single message
* full MIME structure
* toggleable rendering for parts

theme files
* make more user friendly
* inherit from default
* includes?
* referring to previously defined colors

* use threads+async
    - queries
    - message loading
* refreshing threads is really suspect and probably fragile
    * signal changes and have interested code re-create thread objects
* deduplicate tagging operations code in manager/thread/message
* thorough exception catching for database operations
* better missing email file handling

* apparently errors on parsing defaults file are swallowed

* signature parsing for <>
* refactor
* report missing keys as such and not as "bad signature"
* special theming for missing keys?

* urwid
  look at Mail-Followup-To in detail

Anton Khirnov
notmuch mailing list --
To unsubscribe send an email to