MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 18.218.164.141
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/emacs/24.3/lisp/mh-e/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/emacs/24.3/lisp/mh-e/mh-thread.elc
;ELC
;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:11:41 2024
;;; from file /builddir/build/BUILD/emacs-24.3/lisp/mh-e/mh-thread.el
;;; in Emacs version 24.3.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\207" [require mh-e mh-scan] 2)
#@71 

(fn &key (ID nil) (REFERENCES nil) (SUBJECT "") (SUBJECT-RE-P nil))
(defalias 'mh-thread-make-message #[(&rest #1=#:--cl-rest--) "\306>A@\307>A@\310>\206\311A@\312>A@
\203H
@\313>\2031
AA\211\202\314>A@\203?\315\211\202\316\317
@\"\210\202)\320	\n\f\257,\207" [#1# id references subject subject-re-p #2=#:--cl-keys-- :id :references :subject (nil "") :subject-re-p (:id :references :subject :subject-re-p :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:id :references :subject :subject-re-p)" mh-thread-message] 6 (#$ . 623)])
(defalias 'mh-thread-message-p #[(arg) ":\205	@\301=\207" [arg mh-thread-message] 2])
(defalias 'mh-message-id '(macro . #[(z) "\301\302E\207" [z nth 1] 3]))
(defalias 'mh-message-references '(macro . #[(z) "\301\302E\207" [z nth 2] 3]))
(defalias 'mh-message-subject '(macro . #[(z) "\301\302E\207" [z nth 3] 3]))
(defalias 'mh-message-subject-re-p '(macro . #[(z) "\301\302E\207" [z nth 4] 3]))
#@72 

(fn &key (MESSAGE nil) (PARENT nil) (CHILDREN nil) (REAL-CHILD-P t))
(defalias 'mh-thread-make-container #[(&rest #1=#:--cl-rest--) "\306>A@\307>A@\310>A@\311>\206\312A@
\203H
@\313>\2031
AA\211\202\314>A@\203?\315\211\202\316\317
@\"\210\202)\320	\n\f\257,\207" [#1# message parent children real-child-p #2=#:--cl-keys-- :message :parent :children :real-child-p (nil t) (:message :parent :children :real-child-p :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:message :parent :children :real-child-p)" mh-thread-container] 6 (#$ . 1621)])
(defalias 'mh-thread-container-p #[(arg) ":\205	@\301=\207" [arg mh-thread-container] 2])
(defalias 'mh-container-message '(macro . #[(z) "\301\302E\207" [z nth 1] 3]))
(defalias 'mh-container-parent '(macro . #[(z) "\301\302E\207" [z nth 2] 3]))
(defalias 'mh-container-children '(macro . #[(z) "\301\302E\207" [z nth 3] 3]))
(defalias 'mh-container-real-child-p '(macro . #[(z) "\301\302E\207" [z nth 4] 3]))
#@53 Hashtable used to canonicalize message identifiers.
(defvar mh-thread-id-hash nil (#$ . 2646))
(make-variable-buffer-local 'mh-thread-id-hash)
#@49 Hashtable used to canonicalize subject strings.
(defvar mh-thread-subject-hash nil (#$ . 2795))
(make-variable-buffer-local 'mh-thread-subject-hash)
#@70 Thread ID table maps from message identifiers to message containers.
(defvar mh-thread-id-table nil (#$ . 2950))
(make-variable-buffer-local 'mh-thread-id-table)
#@57 Table to look up message identifier from message index.
(defvar mh-thread-index-id-map nil (#$ . 3118))
(make-variable-buffer-local 'mh-thread-index-id-map)
#@64 Table to look up message index number from message identifier.
(defvar mh-thread-id-index-map nil (#$ . 3281))
(make-variable-buffer-local 'mh-thread-id-index-map)
#@46 Hashtable used to group messages by subject.
(defvar mh-thread-subject-container-hash nil (#$ . 3451))
(make-variable-buffer-local 'mh-thread-subject-container-hash)
#@72 Hashtable used to associate messages with the same message identifier.
(defvar mh-thread-duplicates nil (#$ . 3623))
(make-variable-buffer-local 'mh-thread-duplicates)
#@289 Variable to remember the transformations to the thread tree.
When new messages are added, these transformations are rewound,
then the links are added from the newly seen messages. Finally
the transformations are redone to get the new thread tree. This
makes incremental threading easier.
(defvar mh-thread-history nil (#$ . 3798))
(make-variable-buffer-local 'mh-thread-history)
#@68 Width of scan substring that contains subject and body of message.
(defvar mh-thread-body-width nil (#$ . 4183))
#@269 Display ancestor of current message.

If you do not care for the way a particular thread has turned,
you can move up the chain of messages with this command. This
command can also take a prefix argument THREAD-ROOT-FLAG to jump
to the message that started everything.
(defalias 'mh-thread-ancestor #[(&optional thread-root-flag) "\303 \210\304>\204\305\306!\210\202m\203\305\307!\210\310 \n\203)\311 \204\312 \202:	\313\232\2035\314\315!\202:\311 \210\312 )\207" [mh-view-ops current-level thread-root-flag beginning-of-line unthread error "Folder isn't threaded" "No message at point" mh-thread-current-indentation-level mh-thread-immediate-ancestor mh-maybe-show 1 message "Message has no ancestor"] 2 (#$ . 4303) "P"])
#@16 Delete thread.
(defalias 'mh-thread-delete #[nil "\304>\204\n\305\306!\207m\203\305\307!\207\310 \212	@b\210\311 \210`	\211A@)X\203<m\204<\312!\2036\313\314!\210\315y\210\202)\316 )\207" [mh-view-ops region x mh-scan-valid-regexp unthread error "Folder isn't threaded" "No message at point" mh-thread-find-children beginning-of-line looking-at mh-delete-a-msg nil 1 mh-next-msg] 3 (#$ . 5045) nil])
#@99 Display next sibling.

With non-nil optional argument PREVIOUS-FLAG jump to the previous
sibling.
(defalias 'mh-thread-next-sibling #[(&optional previous-flag) "\306>\204
\307\310!\210\202m\203\307\311!\210\312 \210`\313\314 \n\204]\f\203+\315\202,\316y\317\232\203]m\204]\314 \211	\232\203D\320\202Y
	W\203Y\321\322\f\203T\323\202U\324\"\210\325)\202\n\320=\203h\326 \202\202\n\325=\203sb\202\202\321\322\f\203}\323\202~\324\"\210b+\207" [mh-view-ops my-level done point previous-flag level unthread error "Folder isn't threaded" "No message at point" beginning-of-line nil mh-thread-current-indentation-level -1 1 0 success message "No %s sibling" "previous" "next" failure mh-maybe-show] 4 (#$ . 5462) nil])
#@27 Display previous sibling.
(defalias 'mh-thread-previous-sibling #[nil "\300\301!\207" [mh-thread-next-sibling t] 2 (#$ . 6211) nil])
#@37 Refile (output) thread into FOLDER.
(defalias 'mh-thread-refile #[(folder) "\305>\204\n\306\307!\207m\203\306\310!\207\311 \212	@b\210\312 \210`	\211A@)X\203=m\204=\313!\2037\314\315\f\"\210\316y\210\202)\317 )\207" [mh-view-ops region x mh-scan-valid-regexp folder unthread error "Folder isn't threaded" "No message at point" mh-thread-find-children beginning-of-line looking-at mh-refile-a-msg nil 1 mh-next-msg] 4 (#$ . 6350) (list (intern (mh-prompt-for-refile-folder)))])
#@33 Toggle threaded view of folder.
(defalias 'mh-toggle-threads #[nil "\306\307!\310 \307\311>\203P\312\311!\204\313\314!\210\307eb\210m\2045\306\307!\211\203.
\fB)\307y\210\202\315\316\317\320\f!\"\321#\210)\203W\322 \210\323 \210\202W\324 \210\311B\n\203a\325\n\321\211#\210\326	!\210\327\307!+\207" [buffer-read-only old-buffer-modified-flag msg-at-point mh-view-ops msg-list index mh-get-msg-num nil buffer-modified-p unthread mh-valid-view-change-operation-p error "Can't unthread folder" mh-scan-folder mapcar #[(x) "\301\302\"\207" [x format "%s"] 3] mh-coalesce-msg-list t mh-index-insert-folder-headers mh-notate-cur mh-thread-folder mh-goto-msg set-buffer-modified-p mh-recenter mh-current-folder mh-index-data] 7 (#$ . 6845) nil])
#@65 Find the number of spaces by which current message is indented.
(defalias 'mh-thread-current-indentation-level #[nil "\212\305	\n\306$\307\310 \210\fu\210\311\312f\313\"\203!T\312u\210\202+\207" [mh-cmd-note mh-scan-date-flag-width mh-scan-date-width level address-start-offset + 1 0 beginning-of-line char-equal nil 32] 5 (#$ . 7614)])
#@44 Jump to immediate ancestor in thread tree.
(defalias 'mh-thread-immediate-ancestor #[nil "\303 \210`\304 \305Z\306	\307W?\2053\204+\310y\307\232\203+	\304 \232\203\311\211\203\2042\nb\210+\207" [done ancestor-level point beginning-of-line mh-thread-current-indentation-level 2 nil 0 -1 t] 4 (#$ . 7966)])
#@206 Return a region containing the current message and its children.
The result is returned as a list of two elements. The first is
the point at the start of the region and the second is the point
at the end.
(defalias 'mh-thread-find-children #[nil "\306 \210m?\205-\307	\n\310$\311 \312\211`\313\211\314
T\"\315\"\312y\210\316\317\215\210`,D\207" [mh-cmd-note mh-scan-date-flag-width mh-scan-date-width begin spaces level beginning-of-line + 1 mh-thread-current-indentation-level nil format "%%%ss" "" --cl-block-nil-- (byte-code "m\204%u\210\302	\303`\304 \"\"\305\232\204\306 \210\307u\210\310\311\312\"\210\312y\210\202\312\207" [address-start-offset spaces string-match buffer-substring-no-properties mh-line-end-position 0 beginning-of-line -1 throw --cl-block-nil-- nil] 5) address-start-offset] 5 (#$ . 8293)])
#@33 Generate thread view of folder.
(defalias 'mh-thread-folder #[nil "\306\307\310 \"\210\311 \210eb\210\312 \210\313edB\247\203:\314edB\315\211#\203,edB\211\316\n\317 \f#\210*	B)\202,edB:\203\221edB@\247\203\221edBA\247\203\221\212edB@b\210\320 \210`edBAX\203\215m\204\215\321
!\203\207\322\315!\211 \316\317  #\210*	B)\323y\210\202[)\202,edB\203\246edB9\203\246\324edB!\202\272edB;\203\267\325!edB\"\202\272edB\326 \"\211#\313\211$\203\346$@\211%\"&\316%\315&#\210*$A\211$\204\311*\212eb\210\320 \210`dX\203+m\204+\321
!\203%\322\315!'\327'\"\"\203$'\211()\316(\317 )#\210*	B))\323y\210\202\356+\330!*\331\310 *\"+ed|\210\332+!\210\333 \210\334 \210\335 \210\306\336\310 \"+\207" [msg-list msg #1=#:v mh-thread-scan-line-map #2=#:v mh-scan-valid-regexp message "Threading %s..." buffer-name mh-thread-initialize mh-remove-all-notation nil mh-goto-msg t puthash mh-thread-parse-scan-line beginning-of-line looking-at mh-get-msg-num 1 mh-seq-to-msgs mh-translate-range make-hash-table gethash mh-coalesce-msg-list mh-thread-generate mh-thread-print-scan-lines mh-notate-user-sequences mh-notate-deleted-and-refiled mh-notate-cur "Threading %s...done" #3=#:v #4=#:v mh-current-folder #5=#:seq-hash-table #6=#:msgs --dolist-tail-- #7=#:v #8=#:v v #9=#:v #10=#:v range thread-tree] 5 (#$ . 9131)])
#@93 Update thread tree for FOLDER.
All messages after START-POINT are added to the thread tree.
(defalias 'mh-thread-inc #[(folder start-point) "\306 \210\307 \210b\210\310m\204/\311\310!\211\247\203(\n	B\n\f\312\313 
#\210*\310y\210)\202\314	\"\310\315 ed|\210\316!\210\317 \210\320 \210\321 \210\322!,\207" [start-point msg-list index #1=#:v mh-thread-scan-line-map #2=#:v mh-thread-rewind-pruning mh-remove-all-notation nil mh-get-msg-num puthash mh-thread-parse-scan-line mh-thread-generate buffer-modified-p mh-thread-print-scan-lines mh-notate-user-sequences mh-notate-deleted-and-refiled mh-notate-cur set-buffer-modified-p folder old-buffer-modified-flag buffer-read-only thread-tree] 5 (#$ . 10500)])
#@91 Initialize the hash table in VAR.
TEST is the test to use when creating a new hash table.
(defalias 'mh-thread-initialize-hash '(macro . #[(var test) "9\204\n\302\303\"\210\304\305D\306\307\310	EEF\207" [var test error "Expected a symbol: %s" if clrhash setq make-hash-table :test] 8 (#$ . 11235)]))
#@57 Make new hash tables, or clear them if already present.
(defalias 'mh-thread-initialize #[nil "\203\306!\210\202\307\310\311\"	\203\306	!\210\202 \307\310\311\"\n\203+\306\n!\210\2020\307\310\312\"\203;\306!\210\202@\307\310\312\"\f\203K\306\f!\210\202P\307\310\313\"
\203[\306
!\210\202`\307\310\313\"
\203m\306
!\210\202s\307\310\312\"
\203\200\306!\210\202\206\307\310\312\"\314\211\207" [mh-thread-id-hash mh-thread-subject-hash mh-thread-id-table mh-thread-id-index-map mh-thread-index-id-map mh-thread-scan-line-map clrhash make-hash-table :test equal eq eql nil mh-thread-subject-container-hash mh-thread-duplicates mh-thread-history] 3 (#$ . 11547)])
#@160 Given ID, return the corresponding container in `mh-thread-id-table'.
If no container exists then a suitable container is created and
the id-table is updated.
(defalias 'mh-thread-id-container #[(id) "\204\305\306!\210\307	\"\206\"	\310\n\311\312\"\313\314\f\")#*\207" [id mh-thread-id-table #1=#:v #2=#:v message error "1" gethash puthash mh-thread-make-message :id mh-thread-make-container :message] 5 (#$ . 12253)])
(put 'mh-thread-id-container 'byte-optimizer 'byte-compile-inline-expand)
#@43 Remove parent link of CHILD if it exists.
(defalias 'mh-thread-remove-parent-link #[(child) "\306!\203\n\202/\211\204\307\310!\210\311	\n\"\206.	\n\312\313\314	\"\315\316
\")\f#*)\3178\211\205\202\320\233\211\3208\321\211:\203q@=\204hBA\211\202P\237+\240\210)AA\211\321\240)*\207" [child id mh-thread-id-table #1=#:v #2=#:v message mh-thread-container-p error "1" gethash puthash mh-thread-make-message :id mh-thread-make-container :message 2 3 nil child-container parent-container #3=#:c #4=#:--cl-var-- elem #5=#:--cl-var-- #6=#:c] 6 (#$ . 12763)])
(put 'mh-thread-remove-parent-link 'byte-optimizer 'byte-compile-inline-expand)
#@225 Add links so that PARENT becomes a parent of CHILD.
Doesn't make any changes if CHILD is already an ancestor of
PARENT. If optional argument AT-END-P is non-nil, the CHILD is
added to the end of the children list of PARENT.
(defalias 'mh-thread-add-link #[(parent child &optional at-end-p) "\204\306\2027\307!\203\2027\211\204\310\311!\210\312	\n\"\2066	\n\313\314\315	\"\316\317
\")\f#*)\307!\203C\202i\211\204N\310\311!\210\312	\n\"\206h	\n\313\314\315	\"\316\317
\")\f#*)\211\203i\320\"\204i\320\"\204i\307!\203\223\202\271\211\204\236\310\311!\210\312	\n\"\206\270	\n\313\314\315	\"\316\317
\")\f#*)\3218\211\205\f\322\233\211\3228\306\211:\203\373@=\204\362BA\211\202\332\237+\240\210)AA\211\306\240)+\210\204&\322\233\211@B\240\210)\202]\3228\204@\322\233\211@B\240\210)\202]\3228\211A\203TA\211\202G\306B\241\210)AA\211\240\210)?\205\371\307!\203\202\245\211\204\212\310\311!\210\312	\n\"\206\244	\n\313\314\315	\"\316\317
\")\f#*)\3218\211\205\370\322\233\211\3228\306\211:\203\347@=\204\336BA\211\202\306\237+\240\210)AA\211\306\240)+*\207" [parent id mh-thread-id-table #1=#:v #2=#:v message nil mh-thread-container-p error "1" gethash puthash mh-thread-make-message :id mh-thread-make-container :message mh-thread-ancestor-p 2 3 child child-container parent-container #3=#:c #4=#:--cl-var-- elem #5=#:--cl-var-- #6=#:c at-end-p #7=#:c #8=#:c last-child #9=#:c] 7 (#$ . 13462)])
(put 'mh-thread-add-link 'byte-optimizer 'byte-compile-inline-expand)
#@54 Restore the thread tree to its state before pruning.
(defalias 'mh-thread-rewind-pruning #[nil "\205V\211A@\211@\306=\203\300	\211A@)\307!\203\"\202M\211\204,\310\311!\210\312\f
\"\206L\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\240\321\233\211\3218\322\211 :\203\217@=\204\206 B A\211\202n \237+\240\210)AA\211!\322\240)+\210	AA@	\211A@)\322\"\211#\204\272\322\202\362\307#!\203\306#\202\362#\211\204\321\310\311!\210\312\f
\"\206\361\f
\313\314\315\f\"\316\317\")#*)\307!\203\374\202'\211\204\310\311!\210\312\f
\"\206&\f
\313\314\315\f\"\316\317\")#*)\211\203)\323\"\204)\323\"\204)\307!\203N\202y\211\204X\310\311!\210\312\f
\"\206x\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\314\321\233\211\3218\322\211 :\203\273@=\204\262 B A\211\202\232 \237+\240\210)AA\211!\322\240)+\210\"\204\346\321\233\211$$@B\240\210)\202\3218\204\321\233\211%%@B\240\210)\202\3218\211&A\203&A\211&\202&\322B\241\210)AA\211'\240\210)?\205\273\307!\203<\202g\211\204F\310\311!\210\312\f
\"\206f\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\272\321\233\211\3218\322\211 :\203\251@=\204\240 B A\211\202\210 \237+\240\210)AA\211!\322\240)+-\210\202R	@\324=\203\254	\211A@)	AA@	AAA(#)(\322\211*\203\222*@\211\307!\203\365\202 \211\204\377\310\311!\210\312\f
\"\206\f
\313\314\315\f\"\316\317\")#*)\3208\211\205s\321\233\211\3218\322\211 :\203b@=\204Y B A\211\202A \237+\240\210)AA\211!\322\240)+\210)\322\"\211#\204\206\322\202\276\307#!\203\222#\202\276#\211\204\235\310\311!\210\312\f
\"\206\275\f
\313\314\315\f\"\316\317\")#*)\307!\203\310\202\363\211\204\322\310\311!\210\312\f
\"\206\362\f
\313\314\315\f\"\316\317\")#*)\211\203\365\323\"\204\365\323\"\204\365\307!\203\202E\211\204$\310\311!\210\312\f
\"\206D\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\230\321\233\211\3218\322\211 :\203\207@=\204~ B A\211\202f \237+\240\210)AA\211!\322\240)+\210\"\204\262\321\233\211$$@B\240\210)\202\351\3218\204\314\321\233\211%%@B\240\210)\202\351\3218\211&A\203\340&A\211&\202\323&\322B\241\210)AA\211'\240\210)?\205\207\307!\203\2023\211\204\310\311!\210\312\f
\"\2062\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\206\321\233\211\3218\322\211 :\203u@=\204l B A\211\202T \237+\240\210)AA\211!\322\240)+-\210*A\211*\204\345*#)\322\"\211#\204\245\322\202\335\307#!\203\261#\202\335#\211\204\274\310\311!\210\312\f
\"\206\334\f
\313\314\315\f\"\316\317\")#*)\307!\203\347\202\211\204\361\310\311!\210\312\f
\"\206\f
\313\314\315\f\"\316\317\")#*)\211\203\323\"\204\323\"\204\307!\2039\202d\211\204C\310\311!\210\312\f
\"\206c\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\267\321\233\211\3218\322\211 :\203\246@=\204\235 B A\211\202\205 \237+\240\210)AA\211!\322\240)+\210\"\204\321\321\233\211$$@B\240\210)\202\3218\204\353\321\233\211%%@B\240\210)\202\3218\211&A\203\377&A\211&\202\362&\322B\241\210)AA\211'\240\210)?\205\246\307!\203'\202R\211\2041\310\311!\210\312\f
\"\206Q\f
\313\314\315\f\"\316\317\")#*)\3208\211\205\245\321\233\211\3218\322\211 :\203\224@=\204\213 B A\211\202s \237+\240\210)AA\211!\322\240)+-\210+\202R	@\325=\203R	\211A@)\211)\307!\203\307\202\362\211\204\321\310\311!\210\312\f
\"\206\361\f
\313\314\315\f\"\316\317\")#*)\3208\211\205E\321\233\211\3218\322\211 :\2034@=\204+ B A\211\202 \237+\240\210)AA\211!\322\240)+\210\326)\233\211+\327\240\210*)\202\207" [mh-thread-history action x child id mh-thread-id-table DROP mh-thread-container-p error "1" gethash puthash mh-thread-make-message :id mh-thread-make-container :message 2 3 nil mh-thread-ancestor-p PROMOTE SUBJECT 4 t #1=#:v #2=#:v message child-container parent-container #3=#:c #4=#:--cl-var-- elem #5=#:--cl-var-- #6=#:c at-end-p parent #7=#:c #8=#:c last-child #9=#:c children node --dolist-tail-- #10=#:c] 7 (#$ . 15157)])
#@164 Return t if ANCESTOR is really an ancestor of SUCCESSOR and nil otherwise.
In the limit, the function returns t if ANCESTOR and SUCCESSOR
are the same containers.
(defalias 'mh-thread-ancestor-p #[(ancestor successor) "\300\301\215\207" [--cl-block-nil-- (byte-code "\203	=\203\302\303\304\"\210\3058\211\204\306\207" [successor ancestor throw --cl-block-nil-- t 2 nil] 4)] 2 (#$ . 19795)])
#@159 Parse a scan line.
If optional argument STRING is given then that is assumed to be
the scan line. Otherwise uses the line at point as the scan line
to parse.
(defalias 'mh-thread-parse-scan-line #[(&optional string) "\206\n\306\307 \310 \"	\n\\	\f\\\311O\211\f
\312ZO
\313OF,\207" [string mh-cmd-note mh-scan-field-from-start-offset address-start mh-scan-field-from-end-offset body-start buffer-substring-no-properties mh-line-beginning-position mh-line-end-position 0 2 nil first-string] 6 (#$ . 20203)])
#@94 Produce canonical string representation for ID.
This allows cheap string comparison with EQ.
(defalias 'mh-thread-canonicalize-id #[(id) "\304\232\203\f\305\304!\206\306	\"\206	\307\n#*\207" [id mh-thread-id-hash #1=#:v #2=#:v "" copy-sequence gethash puthash] 4 (#$ . 20727)])
(put 'mh-thread-canonicalize-id 'byte-optimizer 'byte-compile-inline-expand)
#@289 Prune leading Re:'s, Fwd:'s etc. and trailing (fwd)'s from SUBJECT.
If the result after pruning is not the empty string then it is
canonicalized so that subjects can be tested for equality with
eq. This is done so that all the messages without a subject are
not put into a single thread.
(defalias 'mh-thread-prune-subject #[(subject) "\306\307\310\311\n\"\204\310\312\n\"\203\306\n\313\225\307O\202\310\314\n\"\204+\310\315\n\"\2036\306\n\313\211\224O\202\n\316\232\203B\nD\202U\317\n\"\206S\n\320\f\n
#*D*\207" [subject-pruned-flag case-fold-search subject mh-thread-subject-hash #1=#:v #2=#:v t nil string-match "^[ 	]*\\(re\\|fwd?\\)\\(\\[[0-9]*\\]\\)?:[ 	]*" "^[ 	]*\\[[^\\]][ 	]*" 0 "(fwd)$" "[ 	]+$" "" gethash puthash] 4 (#$ . 21101)])
(put 'mh-thread-prune-subject 'byte-optimizer 'byte-compile-inline-expand)
#@177 Group the set of message containers, ROOTS based on subject.
Bug: Check for and make sure that something without Re: is made
the parent in preference to something that has it.
(defalias 'mh-thread-group-by-subject #[(roots) "\306!\210\307\n\307\211\203\f@\310!\311
\"\211\203\312!\203.\202`\211\204:\313\314!\210\311\"\206_\315\316\317\"\320\321\")#*)\3228\211 \205\263\323 \233\211!\323 8\"\307\211#$\":\203\242\"@##=\204\231#$B$\"A\211\"\202\201$\237+\240\210)AA\211%\307\240)+\210\324&\211\204\307\307\202\312!\203\323\202\211\204\337\313\314!\210\311\"\206\315\316\317\"\320\321\")#*)\312!\203\202C\211\204\313\314!\210\311\"\206B\315\316\317\"\320\321\")#*)\211 \203O\325 \"\204O\325 \"\204O\312!\203m\202\237\211\204y\313\314!\210\311\"\206\236\315\316\317\"\320\321\")#*)\3228\211 \205\362\323 \233\211!\323 8\"\307\211#$\":\203\341\"@##=\204\330#$B$\"A\211\"\202\300$\237+\240\210)AA\211%\307\240)+\210&\204\f\323 \233\211''@B\240\210)\202C\323 8\204&\323 \233\211((@B\240\210)\202C\323 8\211)A\203:)A\211)\202-)\307B\241\210)AA\211* \240\210) ?\205\353\312!\203e\202\227\211\204q\313\314!\210\311\"\206\226\315\316\317\"\320\321\")#*)\3228\211 \205\352\323 \233\211!\323 8\"\307\211#$\":\203\331\"@##=\204\320#$B$\"A\211\"\202\270$\237+\240\210)AA\211%\307\240)+-\210\326\233\211+\307\240\210)\327D,B,\202
-.\315-.#\210*	B*\fA\211\204*	\237)\207" [mh-thread-subject-container-hash results roots root --dolist-tail-- subject clrhash nil mh-thread-container-subject gethash mh-thread-container-p error "1" puthash mh-thread-make-message :id mh-thread-make-container :message 2 3 t mh-thread-ancestor-p 4 SUBJECT parent child id mh-thread-id-table #1=#:v #2=#:v message child-container parent-container #3=#:c #4=#:--cl-var-- elem #5=#:--cl-var-- #6=#:c at-end-p #7=#:c #8=#:c last-child #9=#:c #10=#:c mh-thread-history #11=#:v #12=#:v] 7 (#$ . 21952)])
(put 'mh-thread-group-by-subject 'byte-optimizer 'byte-compile-inline-expand)
#@104 Return the subject of CONTAINER.
If CONTAINER is empty return the subject info of one of its
children.
(defalias 'mh-thread-container-subject #[(container) "A@\203A@A@\203\301A@8\207\302\303\215\210\304\305!\207" [container 3 --cl-block-nil-- (byte-code "\3048\305\211\203.\n@\211A@\203'	A@A@\203'	A@\306\307\3048\"\210)\nA\211\204\n*\305\207" [container kid --dolist-tail-- kid-message 3 nil throw --cl-block-nil--] 5) error "This can't happen"] 2 (#$ . 24259)])
#@205 Message with id, ID is the message in INDEX.
The function also checks for duplicate messages (that is multiple
messages with the same ID). These messages are put in the
`mh-thread-duplicates' hash table.
(defalias 'mh-thread-update-id-index-maps #[(id index) "\306	\"\211\203\f\307\n\306
\"B
#\210*		\307\n	#\210*\n\f
\307
#+\207" [id mh-thread-id-index-map old-index #1=#:v mh-thread-duplicates #2=#:v gethash puthash #3=#:v #4=#:v index #5=#:v mh-thread-index-id-map #6=#:v] 7 (#$ . 24748)])
(put 'mh-thread-update-id-index-maps 'byte-optimizer 'byte-compile-inline-expand)
#@111 Return container which has MESSAGE in it.
If there is no container present then a new container is
allocated.
(defalias 'mh-thread-get-message-container #[(message) "A@\306	\n\"\211\203A\211\240\210)\202(	\n\n\307
\310\311\"\n#**\207" [message id mh-thread-id-table container #1=#:c #2=#:v gethash puthash mh-thread-make-container :message #3=#:v] 6 (#$ . 25357)])
(put 'mh-thread-get-message-container 'byte-optimizer 'byte-compile-inline-expand)
#@132 Return appropriate message.
Otherwise update message already present to have the proper ID,
SUBJECT-RE-P, SUBJECT and REFS fields.
(defalias 'mh-thread-get-message #[(id subject-re-p subject refs) "\306	\"\211\205\f\nA@\211\203=\307\233\211
\240\210)\310\233\211\240\210)A\211\240\210)AA\211\240\210)\202\227\n\203X\nA\211\311\312\313\314\315
&\240)\202\227\311\312\313\315
\314&\211\211\211A@\306	\"\211\203\203\nA\211\240\210)\n\202\224	\316\317\320\"#*+\210)*\207" [id mh-thread-id-table container message #1=#:c subject-re-p gethash 4 3 mh-thread-make-message :id :references :subject :subject-re-p puthash mh-thread-make-container :message #2=#:c subject #3=#:c #4=#:c refs #5=#:c #6=#:c #7=#:v #8=#:v] 11 (#$ . 25826)])
(put 'mh-thread-get-message 'byte-optimizer 'byte-compile-inline-expand)
#@63 Regexp to recognize whether a string is a message identifier.
(defvar mh-message-id-regexp "^<.*@.*>$" (#$ . 26690))
#@107 Scan FOLDER to get info for threading.
Only information about messages in MSG-LIST are added to the tree.
(defalias 'mh-thread-generate #[(folder msg-list) "\306\307!rq\210\310\216\311	!\210\n\203'\312\313\314\f\"\315\316\315\317\320\321\322	\323\324\n\"&\210eb\210\315\325+\326\327\215\210\330\331,\"\210\332+!\211++\333-!\210\315.+\315/\2110\203v0@/\334/!1\3351-\"\2112\203S/3\3363!\203|3\202\2563\2114\204\210\337\340!\210\3354,\"\206\25545,6\3415\342\3434\"7\344\3457\")6#*)8\34688\2119\205\3479\233\211:\34798;\315\211<=;:\203\360;@<8<=\204\347<=B=;A\211;\202\317=\237+\240\210)8AA\211>\315\240)+\2102/\325?3\2112\204\315\202T\3362!\203\"2\202T2\2114\204.\337\340!\210\3354,\"\206S45,6\3415\342\3434\"7\344\3457\")6#*)\3363!\203`3\202\2223\2114\204l\337\340!\210\3354,\"\206\22145,6\3415\342\3434\"7\344\3457\")6#*)8\2119\203\236\35089\"\204\236\35098\"\204\23683\3363!\203\2743\202\3563\2114\204\310\337\340!\210\3354,\"\206\35545,6\3415\342\3434\"7\344\3457\")6#*)8\34688\2119\205A\3479\233\211:\34798;\315\211<=;:\2030;@<8<=\204'<=B=;A\211;\202=\237+\240\210)8AA\211>\315\240)+\210?\204[\3479\233\211@8@@B\240\210)\202\222\34798\204u\3479\233\211A8A@B\240\210)\202\222\34798\211BA\203\211BA\211B\202|B8\315B\241\210)8AA\211C9\240\210)9?\205:83\3363!\203\2643\202\3463\2114\204\300\337\340!\210\3354,\"\206\34545,6\3415\342\3434\"7\344\3457\")6#*)8\34688\2119\2059\3479\233\211:\34798;\315\211<=;:\203(;@<8<=\204<=B=;A\211;\202=\237+\240\210)8AA\211>\315\240)+-\210\351/\233\211D\315\240\210)\352/DEBE\202l1F-G\341F/G#\210*/.B.*0A\2110\204U*.\237*\211+EH	q\210HE.\207" [#1=#:temp-buffer folder msg-list mh-scan-prog mh-progs case-fold-search generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) mh-thread-set-tables apply call-process expand-file-name nil (t nil) "-width" "10000" "-format" "%(msg)\n%{message-id}\n%{references}\n%{in-reply-to}\n%{subject}\n" mapcar #[(x) "\301\302\"\207" [x format "%s"] 3] t --cl-block-nil-- (byte-code "m\204\300\301\215\210\202\300\207" [--cl-block-process-message-- (byte-code "`\306 {\307y\210\310!`\306 {\307y\210`\306 {\307y\210`\306 {\307y\210`\306 {\307y\210\307*\311	+\"\204<\312\313\307\"\210	\250\204F\312\314\307\"\210
\315\307,-\316\317
\"\204\\\316\320
\"\203h\315,
\321\225\307O\202N\316\322
\"\204v\316\323
\"\203\202\315,
\321\211\224O\202h
\324\232\203\217
,D\202\251\311
.\"\206\246
/.0\325/
0#*,D+\2111@1A@*)\326\f!\327\330!\f\"2\307\211342:\203\3542@3\31653\"\203\34334B42A\2112\202\3124\237+\n\211\324\232\203\377\331\324!\206\311\n6\"\206\n768\3257\n8#*)\211	\311\n9\"\211:\203?\n;<=\325;:\311;=\"B=#\210*\n>9?\325>	?#\210*	@AB\325@\nB#-\210\332\333\"\n*
*\311\nC\"\211D\205}DA@\211E\203\264\334E\233\211F*\240\210)\335E\233\211G
\240\210)EA\211H\n\240\210)EAA\211I\240\210)E\202D\203\320DA\211J\336\337\n\340\341
\342*&\240)\202\336\337\n\340\342*\341
&\211E\211E\211A@\311\nC\"\211D\203DA\211KE\240\210)D\202\nLCM\325L\343\344E\"M#*+\210).\210\211NA\203[N@N\2113A@)\307OP\211Q\204<\307\202v\345Q!\203HQ\202vQ\211\204S\346\347!\210\311\nC\"\206u\nRCS\325R\336\337\n\"E\343\344E\")S#*)\345P!\203\202P\202\260P\211\204\215\346\347!\210\311\nC\"\206\257\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\211U\203\270\350TU\"\204\270\350UT\"\204\270TP\345P!\203\332P\202P\211\204\345\346\347!\210\311\nC\"\206\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\351T8\211U\205[\335U\233\211V\335U8W\307\211XYW:\203JW@XTX=\204AXYBYWA\211W\202)Y\237+\240\210)TAA\211Z\307\240)+\210O\204u\335U\233\211[T[@B\240\210)\202\254\335U8\204\217\335U\233\211\\T\\@B\240\210)\202\254\335U8\211]A\203\243]A\211]\202\226]T\307B\241\210)TAA\211^U\240\210)U?\205PTP\345P!\203\316P\202\374P\211\204\331\346\347!\210\311\nC\"\206\373\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\351T8\211U\205O\335U\233\211V\335U8W\307\211XYW:\203>W@XTX=\2045XYBYWA\211W\202Y\237+\240\210)TAA\211Z\307\240)+-\210NA\211N\202N@\203\nP\345P!\203pP\202\236P\211\204{\346\347!\210\311\nC\"\206\235\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\351T8\211U\205\361\335U\233\211V\335U8W\307\211XYW:\203\340W@XTX=\204\327XYBYWA\211W\202\277Y\237+\240\210)TAA\211Z\307\240)+\210N@\n\307OP\211Q\204\307\202@\345Q!\203Q\202@Q\211\204\346\347!\210\311\nC\"\206?\nRCS\325R\336\337\n\"E\343\344E\")S#*)\345P!\203LP\202zP\211\204W\346\347!\210\311\nC\"\206y\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\211U\203\202\350TU\"\204\202\350UT\"\204\202TP\345P!\203\244P\202\322P\211\204\257\346\347!\210\311\nC\"\206\321\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\351T8\211U\205%\335U\233\211V\335U8W\307\211XYW:\203W@XTX=\204XYBYWA\211W\202\363Y\237+\240\210)TAA\211Z\307\240)+\210O\204?\335U\233\211[T[@B\240\210)\202v\335U8\204Y\335U\233\211\\T\\@B\240\210)\202v\335U8\211]A\203m]A\211]\202`]T\307B\241\210)TAA\211^U\240\210)U?\205TP\345P!\203\230P\202\306P\211\204\243\346\347!\210\311\nC\"\206\305\nRCS\325R\336\337\n\"E\343\344E\")S#*)T\351T8\211U\205\335U\233\211V\335U8W\307\211XYW:\203W@XTX=\204\377XYBYWA\211W\202\347Y\237+\240\210)TAA\211Z\307\240)+-\210.\307\207" [index-line index id refs in-reply-to subject mh-line-end-position nil string-to-number gethash throw --cl-block-process-message-- --cl-block-nil-- t string-match "^[ 	]*\\(re\\|fwd?\\)\\(\\[[0-9]*\\]\\)?:[ 	]*" "^[ 	]*\\[[^\\]][ 	]*" 0 "(fwd)$" "[ 	]+$" "" puthash mh-thread-process-in-reply-to append split-string copy-sequence mapcar mh-thread-canonicalize-id 4 3 mh-thread-make-message :id :references :subject :subject-re-p mh-thread-make-container :message mh-thread-container-p error #32="1" mh-thread-ancestor-p 2 subject-re-p mh-thread-scan-line-map subject-pruned-flag case-fold-search mh-thread-subject-hash #2=#:v #3=#:v #4=#:--cl-var-- #5=#:--cl-var-- x #6=#:--cl-var-- mh-message-id-regexp mh-thread-id-hash #7=#:v #8=#:v mh-thread-id-index-map old-index #9=#:v mh-thread-duplicates #10=#:v #11=#:v #12=#:v #13=#:v mh-thread-index-id-map #14=#:v mh-thread-id-table container message #15=#:c #16=#:c #17=#:c #18=#:c #19=#:c #20=#:c #21=#:v #22=#:v ancestors at-end-p child parent #23=#:v #24=#:v child-container parent-container #25=#:c #26=#:--cl-var-- elem #27=#:--cl-var-- #28=#:c #29=#:c #30=#:c last-child #31=#:c] 11)] 2) maphash #[(k v) "\3028?\205\f	B\211\207" [v roots 2] 2] mh-thread-prune-containers clrhash mh-thread-container-subject gethash mh-thread-container-p error #32# puthash mh-thread-make-message :id mh-thread-make-container :message 2 3 mh-thread-ancestor-p 4 SUBJECT roots mh-thread-id-table mh-thread-subject-container-hash results root --dolist-tail-- subject parent child id #23# #24# message child-container parent-container #25# #26# elem #27# #28# at-end-p #29# #30# last-child #31# #33=#:c mh-thread-history #34=#:v #35=#:v history] 15 (#$ . 26814)])
#@45 Use the tables of FOLDER in current buffer.
(defalias 'mh-thread-set-tables #[(folder) "\306\307\310!\203
\310K\202\311\312\216\311=\203\313\310!\210\202\"\310M\210\310\302!\310\303!\310\304!\310\305!\310\314!\f\310\315!
\310\316!\310\317!\310\320!\211+\207" [#1=#:vnew #2=#:old mh-thread-id-hash mh-thread-subject-hash mh-thread-id-table mh-thread-id-index-map #[(symbol) "rq\210	J)\207" [folder symbol] 1] fboundp mh-get-table cl--unbound ((byte-code "\301=\203
\302\303!\210\202\303M\210\301\207" [#2# cl--unbound fmakunbound mh-get-table] 2)) fmakunbound mh-thread-index-id-map mh-thread-scan-line-map mh-thread-subject-container-hash mh-thread-duplicates mh-thread-history] 2 (#$ . 34348)])
#@227 Extract message id's from REPLY-TO-HEADER.
Ideally this should have some regexp which will try to guess if a
string between < and > is a message id and not an email address.
For now it will take the last string inside angles.
(defalias 'mh-thread-process-in-reply-to #[(reply-to-header) "\303\304\"\211\247\205\303\305\306	O\"\211\247\205\n	TOC))\207" [reply-to-header end begin mh-search-from-end 62 60 0] 6 (#$ . 35079)])
#@49 Prune empty containers in the containers ROOTS.
(defalias 'mh-thread-prune-containers #[(roots) "\306	\203/	\211A@\3078\306\211\203&
@\211	B
A\211\204*\nB)\202\n\203\312\n\211A@\310A@A@\"\203V\307\233\211\311\3078!\240\210)\202\306\3078\203\357\3078A\203i\3128\203\357\306\3078\306\211\203I
@\211\313\f!\203\207\f\202\270\f\211\204\222\314\315!\210\310\"\206\267 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205\307$\233\211%\307$8&\306\211'(&:\203\372&@'#'=\204\361'(B(&A\211&\202\331(\237+\240\210)#AA\211)\306\240)+\210\3128\306*\211+\204 \306\202^\313+!\203,+\202^+\211\2048\314\315!\210\310\"\206] !\316 \317\320\"\"\321\322\"\")!#*)\313\f!\203h\f\202\231\f\211\204s\314\315!\210\310\"\206\230 !\316 \317\320\"\"\321\322\"\")!#*)#\211$\203\241\323#$\"\204\241\323$#\"\204\241#\313\f!\203\300\f\202\361\f\211\204\313\314\315!\210\310\"\206\360 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205D\307$\233\211%\307$8&\306\211'(&:\2033&@'#'=\204*'(B(&A\211&\202(\237+\240\210)#AA\211)\306\240)+\210*\204^\307$\233\211,#,@B\240\210)\202\225\307$8\204x\307$\233\211-#-@B\240\210)\202\225\307$8\211.A\203\214.A\211.\202.#\306B\241\210)#AA\211/$\240\210)$?\2059#\313\f!\203\264\f\202\345\f\211\204\277\314\315!\210\310\"\206\344 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\2058\307$\233\211%\307$8&\306\211'(&:\203'&@'#'=\204'(B(&A\211&\202(\237+\240\210)#AA\211)\306\240)+-\210B
A\211\204w*\324\3128BBB0B0\313\f!\203e\f\202\226\f\211\204p\314\315!\210\310\"\206\225 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205\351\307$\233\211%\307$8&\306\211'(&:\203\330&@'#'=\204\317'(B(&A\211&\202\267(\237+\240\210)#AA\211)\306\240)+\210)\202\306\3078\203)\307\233\2111\311\3078!\240\210)\3078@\3078A2\2113\313\f!\203\f\202L\f\211\204&\314\315!\210\310\"\206K !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205\237\307$\233\211%\307$8&\306\211'(&:\203\216&@'#'=\204\205'(B(&A\211&\202m(\237+\240\210)#AA\211)\306\240)+\2102\306\211\203\200
@\211\313\f!\203\273\f\202\354\f\211\204\306\314\315!\210\310\"\206\353 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205?\307$\233\211%\307$8&\306\211'(&:\203.&@'#'=\204%'(B(&A\211&\202
(\237+\240\210)#AA\211)\306\240)+\210\325\233\2114\306\240\210)3\326*\211+\204^\306\202\234\313+!\203j+\202\234+\211\204v\314\315!\210\310\"\206\233 !\316 \317\320\"\"\321\322\"\")!#*)\313\f!\203\246\f\202\327\f\211\204\261\314\315!\210\310\"\206\326 !\316 \317\320\"\"\321\322\"\")!#*)#\211$\203\337\323#$\"\204\337\323$#\"\204\337#\313\f!\203\376\f\202/\f\211\204	\314\315!\210\310\"\206. !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205\202\307$\233\211%\307$8&\306\211'(&:\203q&@'#'=\204h'(B(&A\211&\202P(\237+\240\210)#AA\211)\306\240)+\210*\204\234\307$\233\211,#,@B\240\210)\202\323\307$8\204\266\307$\233\211-#-@B\240\210)\202\323\307$8\211.A\203\312.A\211.\202\275.#\306B\241\210)#AA\211/$\240\210)$?\205w#\313\f!\203\362\f\202#\f\211\204\375\314\315!\210\310\"\206\" !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205v\307$\233\211%\307$8&\306\211'(&:\203e&@'#'=\204\\'(B(&A\211&\202D(\237+\240\210)#AA\211)\306\240)+-\210
A\211\204\253*\324\312832BBBB0B0\313\f!\203\237\f\202\320\f\211\204\252\314\315!\210\310\"\206\317 !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205#\307$\233\211%\307$8&\306\211'(&:\203&@'#'=\204	'(B(&A\211&\202\361(\237+\240\210)#AA\211)\306\240)+\210*\202\306\327\3128E0B0\313\f!\203@\f\202q\f\211\204K\314\315!\210\310\"\206p !\316 \317\320\"\"\321\322\"\")!#*)#\312#8\211$\205\304\307$\233\211%\307$8&\306\211'(&:\203\263&@'#'=\204\252'(B(&A\211&\202\222(\237+\240\210)#AA\211)\306\240)+\210)\202/\3065\330\331\"\210\3115!+\207" [roots work-list dfs-ordered-nodes node child --dolist-tail-- nil 3 gethash mh-thread-sort-containers 2 mh-thread-container-p error "1" puthash mh-thread-make-message :id mh-thread-make-container :message mh-thread-ancestor-p PROMOTE 4 t DROP maphash #[(k v) "\3038?\205\304A@A@	\"\205\nB\211\207" [v mh-thread-id-index-map results 2 gethash] 3] mh-thread-id-index-map #1=#:c children kid id mh-thread-id-table #2=#:v #3=#:v message child-container parent-container #4=#:c #5=#:--cl-var-- elem #6=#:--cl-var-- #7=#:c at-end-p parent #8=#:c #9=#:c last-child #10=#:c mh-thread-history #11=#:c other-kids new-parent #12=#:c results] 7 (#$ . 35518)])
#@71 Sort a list of message CONTAINERS to be in ascending order wrt index.
(defalias 'mh-thread-sort-containers #[(containers) "\301\302\"\207" [containers sort #[(x y) "A@\2053	A@\2053A@A@	A@A@\306\n\f\"\306\f\"
\250\2052\250\2052
W,\207" [x y id-x id-y mh-thread-id-index-map index-x gethash index-y] 3]] 3 (#$ . 40569)])
#@51 Print scan lines in THREAD-TREE in threaded mode.
(defalias 'mh-thread-print-scan-lines #[(thread-tree) "\306\307 	S#\310\f\204\311
\312\"\202\230\313 \310:\203\225@\314 \310A\310:\203l@\315\"\211\203b\316#\210*)A\211\202;*\317!\320V\203\213o\203~\321\202\322@\322\261\210\311
\312\"\210*A\211\202*\323 *\207" [mh-cmd-note mh-scan-field-subject-start-offset mh-thread-last-ancestor mh-thread-body-width mh-index-data thread-tree - window-width nil mh-thread-generate-scan-lines -2 mh-index-group-by-folder make-hash-table gethash puthash hash-table-count 0 "" "\n" mh-index-create-imenu-index #1=#:--cl-var-- x mh-thread-scan-line-map old-map #2=#:--cl-var-- msg v #3=#:v #4=#:v] 5 (#$ . 40911)])
#@188 Generate scan lines.
TREE is the hierarchical tree of messages, SCAN-LINE-MAP maps
message indices to the corresponding scan lines and LEVEL used to
determine indentation of the message.
(defalias 'mh-thread-generate-scan-lines #[(tree level) "\204\306\207\307!\203 A@\211A@\310\n\"\310\n
\"\311\\\312\306\211 !\313\314\315\fB!\"\306\"\211#\203\361#@\211\"\203\350\203l\316\232\203l\317$\"\203l\311\\\311\\\312 \316\232\203\206$\311$8\203\206\311$8$\202v\203\220\202\222%\3208\203\244 \204\244\206\250%\316\232&\"@\321\211\322%\"\323\"&\203\276\324\202\277\325\"\211'A@)&\203\320\326\202\321\327\330\"AA@(%Z\"\331\261\210*\312!\306#A\211#\204@*!\204\373\3328\306)\211#\205#@)\333)\"\210#A\211#\204\306.\n\207\311\\*\306+\211#\205F#@+\333+*\"\210#A\211#\2040\306+\207" [tree message id mh-thread-id-index-map index mh-thread-duplicates nil mh-thread-container-p gethash 2 t mapcar #[(x) "\302	\"\207" [x mh-thread-scan-line-map gethash] 3] reverse 0 mh-thread-ancestor-p 4 format "%%%ss" "" "[" "<" "]" ">" truncate-string-to-width "\n" 3 mh-thread-generate-scan-lines duplicates level new-level dupl-flag force-angle-flag increment-level-flag scan-line --dolist-tail-- mh-thread-last-ancestor lev square-flag x mh-thread-body-width child nlevel ch] 10 (#$ . 41693)])
#@110 In threaded view update `mh-thread-scan-line-map'.
MSG is the message being notated with NOTATION at OFFSET.
(defalias 'mh-thread-update-scan-line-map #[(msg notation offset) "\206\306\307!	\205\310	\"\307\211	\f:\2034\f@\211\205(\310
\"	B	\fA\211\202	\237+\n\n\203O\n@\f

I\210*\n\307\211\205@\211\203u@\fI\210*A\211\204Z\307-\207" [msg mh-thread-scan-line-map cur-scan-line mh-thread-scan-line-map-stack #1=#:--cl-var-- map mh-get-msg-num nil gethash #2=#:--cl-var-- old-scan-lines #3=#:v offset #4=#:v notation line --dolist-tail-- #5=#:v #6=#:v] 4 (#$ . 43096)])
#@91 Find canonicalized subject of MSG.
This function can only be used the folder is threaded.
(defalias 'mh-thread-find-msg-subject #[(msg) "\300\301\302\217\207" [nil (byte-code "\303\304\211	\"\n\"A@8\207" [msg mh-thread-index-id-map mh-thread-id-table 3 gethash] 5) ((error))] 3 (#$ . 43732)])
#@66 Add COUNT spaces to each scan line in `mh-thread-scan-line-map'.
(defalias 'mh-thread-add-spaces #[(count) "\306\211\307\"\310\"m?\2057\311\312!\313\314\n\"8\n\247\2030\n\315
\316\306\317	\f#!#\210**\320y\210\202)\207" [count spaces msg-num mh-thread-scan-line-map old-line #1=#:v format "%%%ss" "" mh-get-msg-num nil 3 gethash puthash mh-thread-parse-scan-line "%s%s" 1 #2=#:v] 7 (#$ . 44032)])
#@53 Forget the message INDEX from the threading tables.
(defalias 'mh-thread-forget-message #[(index) "\306	\"\306\n\"\306\n
\"\307	\"\210\307\f\"\210\310\f\"\203.\204.\307\n\"\202|\310\f\"\203j\n
\311
@#\210*@	\311\n#\210*\n
\311A#*\202|\n
\311\312\"#*+\207" [index mh-thread-index-id-map id mh-thread-id-index-map id-index mh-thread-duplicates gethash remhash eql puthash remove duplicates mh-thread-scan-line-map #1=#:v #2=#:v #3=#:v #4=#:v #5=#:v #6=#:v #7=#:v #8=#:v] 5 (#$ . 44449)])
(provide 'mh-thread)

MMCT - 2023