File: nnmairix.el.html

This is a back end for using the mairix search engine with Gnus. Mairix is a tool for searching words in locally stored mail. Mairix is very fast which allows using it efficiently for
"smart folders", e.g. folders which are associated with search
queries. Of course, you can also use this back end just for calling mairix with some search query.

Mairix is written by Richard Curnow. More information can be found at http://www.rpcurnow.force9.co.uk/mairix/

Commentary on the code: nnmairix sits between Gnus and the "real" back end which handles the mail (currently nnml, nnimap and nnmaildir were tested). I know this is all a bit hacky, but so far it works for me. This is the first back end I've written for Gnus, so I'd appreciate any comments, suggestions, bug reports (and, of course, patches) for improving nnmairix.

nnmairix does not use an active file, since I wanted to contain the back end "inside Gnus" as much as possible without the need of an external file. It stores the query/folder information in the group parameters instead. This also implies that once you kill a mairix group, it's gone for good. I don't think that this is really problematic, since I don't see the need in unsubscribing and re-subscribing search groups

Every mairix server is "responsible" for one mairix installation, i.e. you can have several mairix servers for different mairix configurations. Not that I think anyone will actually do this, but I thought it would be a "nice to have feature"...

KNOWN BUGS:
* Mairix does only support us-ascii characters.

TODO/MISSING FEATURES:
* Support of more back ends (nnmh, nnfolder, nnmbox...)?
* Maybe use an active file instead of group parameters?
* Maybe use "-a" when updating groups which are not newly created?

Defined variables (27)

nnmairix-allowfast-defaultWhether fast entering should be the default for nnmairix groups.
nnmairix-backendBack end where mairix stores its searches.
nnmairix-backend-serverName of the server where mairix stores its searches.
nnmairix-current-serverCurrent server.
nnmairix-customize-query-bufferName of the buffer for customizing Mairix queries.
nnmairix-default-groupDefault search group.
nnmairix-delete-and-create-on-changeControls on which back ends groups should be deleted and re-created.
nnmairix-group-prefixPrefix for mairix search groups on back end server.
nnmairix-group-regexpRegexp for mairix groups on back end.
nnmairix-hidden-foldersSet this to t if the back end server uses hidden directories for
nnmairix-interactive-query-parametersThings that should be editable during interactive query generation.
nnmairix-last-serverLast chosen server.
nnmairix-mairix-commandCommand to call mairix for this nnmairix server.
nnmairix-mairix-output-bufferBuffer used for mairix output.
nnmairix-mairix-search-optionsOptions when calling mairix for searching.
nnmairix-mairix-synchronous-updateSet this to t if you want Emacs to wait for mairix updating the database.
nnmairix-mairix-update-optionsOptions when calling mairix for updating the database.
nnmairix-marks-cacheCache for marks which should be set upon closing current group.
nnmairix-only-use-registryUse only the registry for determining original group(s).
nnmairix-propagate-marks-to-nnmairix-groupsFlag if marks from original articles should be seen in nnmairix groups.
nnmairix-propagate-marks-upon-closeFlag if marks should be propagated upon closing a group.
nnmairix-rename-files-for-nnmlRename nnml mail files so that they are consecutively numbered.
nnmairix-valid-backendsBack ends supported by nnmairix.
nnmairix-version-outputVersion string of mairix binary.
nnmairix-widget-fields-listFields that should be editable during interactive query customization.
nnmairix-widget-otherOther editable mairix commands when using customization widgets.
nnmairix-widget-select-window-functionFunction for selecting the window for customizing the mairix query.

Defined functions (71)

nnmairix-backend-to-server(SERVER)
nnmairix-call-backend(FUNC &rest ARGS)
nnmairix-call-mairix-binary(COMMAND FOLDER SEARCHQUERY THREADS)
nnmairix-call-mairix-binary-raw(COMMAND QUERY)
nnmairix-check-mairix-version(VERSION &optional SERVER)
nnmairix-close-group(GROUP &optional SERVER)
nnmairix-close-server(&optional SERVER DEFS)
nnmairix-create-message-line-for-search()
nnmairix-create-search-group(SERVER GROUP QUERY THREADS)
nnmairix-create-search-group-from-message()
nnmairix-create-server-and-default-group()
nnmairix-delete-recreate-group(GROUP)
nnmairix-determine-original-group-from-path(MID SERVER)
nnmairix-determine-original-group-from-registry(MID)
nnmairix-get-backend-folder(GROUP &optional SERVER)
nnmairix-get-group-from-file-path(FILE)
nnmairix-get-groups-from-server(SERVERNAME)
nnmairix-get-nnmairix-servers(&optional ALL)
nnmairix-get-numcorr(GROUP &optional SERVER)
nnmairix-get-server()
nnmairix-get-valid-servers()
nnmairix-goto-original-article(&optional NO-REGISTRY)
nnmairix-group-change-query-this-group(&optional QUERY)
nnmairix-group-delete-recreate-this-group()
nnmairix-group-mode-hook()
nnmairix-group-toggle-allowfast-this-group(&optional ALLOWFAST)
nnmairix-group-toggle-parameter(GROUP PARAMETER DESCRIPTION &optional PAR)
nnmairix-group-toggle-propmarks-this-group(&optional PROPMARKS)
nnmairix-group-toggle-readmarks-this-group(&optional READMARKS)
nnmairix-group-toggle-threads-this-group(&optional THREADS)
nnmairix-map-range(FUNC RANGE)
nnmairix-open-server(SERVER &optional DEFINITIONS)
nnmairix-propagate-marks(&optional SERVER)
nnmairix-purge-old-groups(&optional DONTASK SERVER)
nnmairix-remove-tick-mark-original-article()
nnmairix-rename-files-consecutively(PATH)
nnmairix-replace-group-and-numbers(ARTICLES BACKENDGROUP MAIRIXGROUP NUMC TYPE)
nnmairix-replace-illegal-chars(HEADER)
nnmairix-request-article(ARTICLE &optional GROUP SERVER TO-BUFFER)
nnmairix-request-close(&rest ARGS)
nnmairix-request-create-group(GROUP &optional SERVER ARGS)
nnmairix-request-group(GROUP &optional SERVER FAST INFO)
nnmairix-request-group-with-article-number-correction(FOLDER QUALGROUP)
nnmairix-request-list(&optional SERVER)
nnmairix-request-list-newsgroups(&rest ARGS)
nnmairix-request-marks(GROUP INFO &optional SERVER)
nnmairix-request-post(&rest ARGS)
nnmairix-request-set-mark(GROUP ACTIONS &optional SERVER)
nnmairix-retrieve-headers(ARTICLES GROUP &optional SERVER FETCH-OLD)
nnmairix-search(QUERY &optional SERVER THREADS)
nnmairix-search-from-this-article()
nnmairix-search-interactive()
nnmairix-search-thread-this-article()
nnmairix-sentinel-mairix-update-finished(PROC STATUS)
nnmairix-server-opened(&optional SERVER)
nnmairix-show-original-article(GROUP MID)
nnmairix-status-message(&optional SERVER)
nnmairix-summary-mode-hook()
nnmairix-update-and-clear-marks(GROUP &optional METHOD)
nnmairix-update-database(&optional SERVERS)
nnmairix-update-groups(SERVERNAME &optional SKIPDEFAULT UPDATEDB)
nnmairix-widget-add(NAME &rest ARGS)
nnmairix-widget-build-editable-fields(VALUES)
nnmairix-widget-create-group(WIDGETS &optional WITHVALUES)
nnmairix-widget-create-query(&optional VALUES)
nnmairix-widget-get-values()
nnmairix-widget-make-query-from-widgets(WIDGETS)
nnmairix-widget-search(&optional MVALUES)
nnmairix-widget-search-from-this-article()
nnmairix-widget-send-query(WIDGETS &optional WITHVALUES)
nnmairix-widget-toggle-activate(WIDGET)

Defined faces (0)