;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\207" [require dash s ht filenotify treemacs-core-utils treemacs-async treemacs-dom treemacs-rendering] 2) #@896 Keeps track of dirs under filewatch due to being collapsed into one. Collapsed directories require special handling since all directories of a series need to be put under watch so as to be notified when the collapsed structure needs to change, but removing the file watch is not straightforward: Assume a series of directories are collapsed into one as '/c1/c2/c3/c4' and a new file is created in '/c1/c2'. A refresh is started and only '/c1/c2' is collapsed now, c3 and c4 are no longer part of the treemacs view and must be removed from the filewatch list. However the event that triggered the refresh was one of a file being created, so it is not possible to know that c3 and c4 need to stop being watched unless one also knows that they and c2 are under file watch because they have been collapsed. This is why this hash is used to keep track of collapsed directories under file watch. (defvar treemacs--collapsed-filewatch-index (make-hash-table :size 100 :test 'equal) (#$ . 307)) #@192 Hash of all directories being watched for changes. A file path is the key, the value is a cons, its car is a list of the treemacs buffers watching that path, its cdr is the watch descriptor. (defvar treemacs--filewatch-index (make-hash-table :size 100 :test 'equal) (#$ . 1306)) #@130 Timer that will run a refresh after `treemacs-file-event-delay' ms. Stored here to allow it to be cancelled by a manual refresh. (defvar treemacs--refresh-timer nil (#$ . 1592)) #@57 Start the filewatch timer if it is not already running. (defalias 'treemacs--start-filewatch-timer #[0 "?\205\302 \303\245\304\305#\211\207" [treemacs--refresh-timer treemacs-file-event-delay run-with-timer 1000 nil treemacs--process-file-events] 4 (#$ . 1776)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--start-filewatch-timer compiler-macro treemacs--start-filewatch-timer--inliner] 4) #@21 (fn INLINE--FORM) (defalias 'treemacs--start-filewatch-timer--inliner #[257 "\3002\301\302\303\302\304\305\306\307E\310\311\312DFEE0\207" [inline--just-use unless treemacs--refresh-timer setf run-with-timer / treemacs-file-event-delay 1000 nil function treemacs--process-file-events] 10 (#$ . 2194)]) #@53 Cancel a the running refresh timer if it is active. (defalias 'treemacs--cancel-refresh-timer #[0 "\205 \301!\210\302\211\207" [treemacs--refresh-timer cancel-timer nil] 2 (#$ . 2505)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--cancel-refresh-timer compiler-macro treemacs--cancel-refresh-timer--inliner] 4) #@21 (fn INLINE--FORM) (defalias 'treemacs--cancel-refresh-timer--inliner #[257 "\3002\301\302\303\302D\304\302\305EF0\207" [inline--just-use when treemacs--refresh-timer cancel-timer setq nil] 7 (#$ . 2844)]) #@274 Watch PATH for file system events. Assumes to be run in the treemacs buffer as it will set PATH to be watched by `current-buffer'. Also add PATH to `treemacs--collapsed-filewatch-index' when COLLAPSE is non-nil. PATH: Filepath COLLAPSE: Bool (fn PATH &optional COLLAPSE) (defalias 'treemacs--start-watching #[513 "\211\203\n\303\304#\210\305 \306#\211\203\"p@>?\205R\211p@B\240\207\30717\306\303pC\310\311\312#B #\2100\207\313\314!\306\304\315#)\266\203?\205P\316@A\"\262\207" [treemacs--collapsed-filewatch-index treemacs--filewatch-index inhibit-changing-match-data puthash t gethash nil (debug file-notify-error) file-notify-add-watch (change) treemacs--filewatch-callback "No file notification program found" error-message-string string-match signal] 11 (#$ . 3060)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--start-watching compiler-macro treemacs--start-watching--inliner] 4) #@45 (fn INLINE--FORM PATH &optional COLLAPSE) (defalias 'treemacs--start-watching--inliner #[770 "\3002\216\301!\203\211\202\302\303!\301!\203\211\202 \302\304!\305\306\307\310\311FE\312\313\314\315ED\316\317\320C\321\313DE\322\313\323\320C\321\313DEEE\324\325\326DC\307\315 \323\327\320CD\330\331\332CD\333\334DFEFEFE=\203o\211\266\203\202x\335DC\"\266\203=\203\204\211\266\203\202\215\335DC\"\266\2030\207" [inline--just-use macroexp-copyable-p make-symbol "path" "collapse" progn when ht-set! treemacs--collapsed-filewatch-index t -if-let watch-info ht-get treemacs--filewatch-index unless memq current-buffer car setcar cons treemacs-with-ignored-errors file-notify-error "No file notification program found" list file-notify-add-watch quote change function treemacs--filewatch-callback macroexp-let*] 24 (#$ . 3992)]) #@420 Stop watching PATH for file events. This also means stopping the watch over all dirs below path. Must be called inside the treemacs buffer since it will remove `current-buffer' from PATH's watch list. Does not apply if this is called in reaction to a file being deleted. In this case ALL is t and all buffers watching PATH will be removed from the filewatch hashes. PATH: Filepath ALL: Bool (fn PATH &optional ALL) (defalias 'treemacs--stop-watching #[513 "\301C\302\303\304$\"\210\211\242\211\205 \211@\305\"\210A\266\202\202\207" [treemacs--filewatch-index nil maphash make-closure #[514 "\300\230\206\304\211GSH\305=\203\202\306P\"\266\202\205\\\211@A\301\2039\307!\210\310 \"\210\302\302\242B\240\207p>\205ZA\203K\311p\"\240\207\307!\210\310 \"\210\302\302\242B\240\266\202\207" [V0 V1 V2 treemacs--collapsed-filewatch-index s-starts-with\? 47 "/" file-notify-rm-watch remhash delq] 8 "\n\n(fn WATCHED-PATH WATCH-INFO)"] remhash] 9 (#$ . 4854)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--stop-watching compiler-macro treemacs--stop-watching--inliner] 4) #@40 (fn INLINE--FORM PATH &optional ALL) (defalias 'treemacs--stop-watching--inliner #[770 "\3002\244\301!\203\211\202\302\303!\301!\203\211\202 \302\304!\305\306C\307\310\311\312D\313\314\311\315 F\305\316\317\312DD\320\321\312DDD\322\n\323\324\320D\325\326\311E\327\311\306EF\313\330\331C\316E\322\321\316D\332\312\333\331C\316EE\324\320D\325\326\311E\327\311\306E\257EFEEF\334\335\306D\325\310\335EEF=\203\205\211\266\203\202\216\336DC\"\266\203=\203\232\211\266\203\202\243\336DC\"\266\2030\207" [inline--just-use macroexp-copyable-p make-symbol "path" "all" let to-remove treemacs--maphash treemacs--filewatch-index watched-path watch-info when treemacs-is-path :in watching-buffers car watch-descr cdr if progn file-notify-rm-watch ht-remove! treemacs--collapsed-filewatch-index push memq current-buffer setcar delq dolist it macroexp-let*] 29 (#$ . 5981)]) #@355 Decide if EVENT is relevant to treemacs or should be ignored. An event counts as relevant when 1) The event's action is not "stopped". 2) The event's action is not "changed" while `treemacs-git-mode' is disabled 3) The event's file will not return t when given to any of the functions which are part of `treemacs-ignored-file-predicates'. (fn EVENT) (defalias 'treemacs--is-event-relevant\? #[257 "\205d\211A@\211\303=\206a\211\304=\203 ?\206aAA@\305\306!!\307\n\310\307\211\211\203V\211A\262\242\262\262\211\262\203V \"\211\262\204V\262\262T\262\202'\266\211\262\205_\311\266\202?\262\207" [treemacs-filewatch-mode treemacs-git-mode treemacs-ignored-file-predicates stopped changed file-name-nondirectory directory-file-name nil 0 t] 13 (#$ . 6879)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put treemacs--is-event-relevant\? compiler-macro treemacs--is-event-relevant\?--inliner side-effect-free t] 5) #@27 (fn INLINE--FORM EVENT) (defalias 'treemacs--is-event-relevant\?--inliner #[514 "\3002`\211\301!\203\211\202\302\303!\304\305\306D\307\310\311DDC\312\313\314\310\315\316DE\317\314\310\315\320DE\312\321DE\322\323\324 DD\325\326\323DDD\327\330\331\325\323F\332EEFDEE=\203V\211\266\203\202_\333DC\"\266\2030\207" [inline--just-use macroexp-copyable-p make-symbol "event" when with-no-warnings treemacs-filewatch-mode let action cadr not or eq quote stopped and changed treemacs-git-mode let* dir caddr filename treemacs--filename --any\? funcall it treemacs-ignored-file-predicates macroexp-let*] 19 (#$ . 7853)]) #@160 Set refresh flags at LOCATION for TYPE and PATH in the dom of every buffer. Also start the refresh timer if it's not started already. (fn LOCATION TYPE PATH) (defalias 'treemacs--set-refresh-flags #[771 "\306\307#\203.\310\"\210\307C\311\312\313# \"\210\211\242\211\203,\211@\310 \"\210A\266\202\202\266\n\211\205\370\211@\211\243\211\314! >\204G\315\316\317D\"\210\211\320H\314! >\204Y\315\316\317D\"\210\321H\322!\203\357\211rq\210\306 \307#\211\203\336\323\324H\"\211A\211\204\222  B\211\324\324HBI\266\202\337\211\325\267\202\310\n\326=\203\334\211\326\241\266\202\337\n\327=\203\334\211\327\241\266\202\337\n\326=\203\334\211\326\241\266\202\337\211\204\334  B\211\324\324HBI\266\266\210\204\356\330\331\245\307\332#*\266A\266\202\202/\207" [treemacs--collapsed-filewatch-index treemacs--filewatch-index treemacs--scope-storage cl-struct-treemacs-scope-shelf-tags treemacs-override-workspace treemacs-dom gethash nil remhash maphash make-closure #[514 "\300\230\206\303\211GSH\304=\203\202\305P\"\266\202\205H\211@Ap>\205FA\2037\306p\"\240\207\307!\210\310\n\"\210\301\301\242B\240\266\202\207" [V0 V1 treemacs--collapsed-filewatch-index s-starts-with\? 47 "/" delq file-notify-rm-watch remhash] 8 "\n\n(fn WATCHED-PATH WATCH-INFO)"] type-of signal wrong-type-argument treemacs-scope-shelf 1 2 buffer-live-p assoc 6 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (created 152 deleted 168 changed 184)) deleted created run-with-timer 1000 treemacs--process-file-events treemacs--refresh-timer treemacs-file-event-delay] 19 (#$ . 8488)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--set-refresh-flags compiler-macro treemacs--set-refresh-flags--inliner] 4) #@40 (fn INLINE--FORM LOCATION TYPE PATH) (defalias 'treemacs--set-refresh-flags--inliner #[1028 "\3002\347\301!\203\211\202\302\303!\301!\203\211\202 \302\304!\301!\203+\211\202.\302\305!\306\307\310\311E\312\311E\313DF\314\315\316 D\317\320\321\322\323DEDC\324\325\320D\326\327D\330\331\fE\322\323DED\332\333D\307\334\332\335DE\336\325\320D\332\335DEED\332\335D\307\334\332\333DE\336\325\320D\332\333DEED\332\337D\307\334\332\335DE\336\325\320D\332\335DEED\257EE\340CEE=\203\263\211\266\203\202\274\341DC\"\266\203=\203\310\211\266\203\202\321\341DC\"\266\203=\203\335\211\266\203\202\346\341DC\"\266\2030\207" [inline--just-use macroexp-copyable-p make-symbol "location" "type" "path" progn when ht-get treemacs--collapsed-filewatch-index ht-remove! treemacs--stop-watching treemacs-run-in-every-buffer --when-let treemacs-find-in-dom let current-flag assoc treemacs-dom-node->refresh-flag it pcase cdr \` nil push cons quote created eq deleted setf changed treemacs--start-filewatch-timer macroexp-let*] 29 (#$ . 10308)]) #@353 Add EVENT to the list of file change events. Do nothing if this event's file is irrelevant as per `treemacs--is-event-relevant?'. Otherwise start a timer to process the collected events if it has not been started already. Also immediately remove the changed file from caches if it has been deleted instead of waiting for file processing. (fn EVENT) (defalias 'treemacs--filewatch-callback #[257 "\205\211A@\211\306=\206a\211\307=\203 ?\206aAA@\310\311!!\312\n\313\312\211\211\203V\211A\262\242\262\262\211\262\203V \"\211\262\204V\262\262T\262\202'\266\211\262\205_\314\266\202?\262\205\211A\211A\262\242@\315=\203\312C\316\317\320# \"\210\211\242\211\203\226\211@\321 \"\210A\266\202\202\204\266\204\f\211\203\211@\211\243\211\322! >\204\265\323\324\325D\"\210\211\326H\322! >\204\307\323\324\325D\"\210\327H\330!\203\n\2115rq\210\3316\312#\211\332H\327H\211\203\365\211\211\333\334\333H\"I\266\210\335\336\"\210\211\332\312I\266\211\333\312I\266*\266A\266\202\202\235\210\337=\203\210\211AAA@\f\211\203m\211@\211\243\211\322! >\2049\323\324\325D\"\210\211\326H\322! >\204K\323\324\325D\"\210\327H\330!\203d\2115rq\210\340#\210*\266A\266\202\202!\210\211;\203\225\341!\211G\326V\203\217\211GSH\342=\203\217\211\313\343O\202\220\211\262\202\365\211@\344=\203\251G\327V\205\365\345!\202\365\211@;\203\301G\327V\203\274\345!\202\365@\202\365\322@!7>\203\361G\327V\203\330\345!\202\365\322@!7>\204\352\323\324\346@D\"\210@\327H\202\365\347\350\"\262\3318\312#\203(\3218\"\210\312C\316\317\351# \"\210\211\242\211\203&\211@\321 \"\210A\266\202\202\266\f\211\203\331\211@\211\243\211\322! >\204A\323\324\325D\"\210\211\326H\322! >\204S\323\324\325D\"\210\327H\330!\203\320\2115rq\210\3316\312#\211\203\277\352\n\353H\"\211A\211\204\215 \315B\211\353\353HBI\266\202\300\211\354\267\202\252\211\315\241\266\202\300\266\202\300\211\315\241\266\202\300\211\204\275 \315B\211\353\353HBI\266\266\2109\204\317\355:\356\245\312\357#9*\266A\266\202\202)\266\314\n\313\312\211\211\203\211A\262\242\262\262\211\262\203\310\311 !!\"?\211\262\203\262\262T\262\202\341\266\211\262\205\207\211\211;\203D\341!\211G\326V\203>\211GSH\342=\203>\211\313\343O\202?\211\262\202\244\211@\344=\203XG\327V\205\244\345!\202\244\211@;\203pG\327V\203k\345!\202\244@\202\244\322@!7>\203\240G\327V\203\207\345!\202\244\322@!7>\204\231\323\324\346@D\"\210@\327H\202\244\347\350\"\262\3318\312#\203\326\3218\"\210\312C\316\317\360# \"\210\211\242\211\203\324\211@\321 \"\210A\266\202\202\302\266\f\211\205\203\211@\211\243\211\322! >\204\357\323\324\325D\"\210\211\326H\322! >\204\323\324\325D\"\210\327H\330!\203z\2115rq\210\3316\312#\211\203i\352 \353H\"\211A\211\204;\n\361B\211\353\353HBI\266\202j\211\362\267\202T\266\202j\211\361\241\266\202j\266\202j\211\204g\n\361B\211\353\353HBI\266\266\2109\204y\355:\356\245\312\357#9*\266A\266\202\202\327\262\262\207\211\211;\203\257\341!\211G\326V\203\251\211GSH\342=\203\251\211\313\343O\202\252\211\262\202\211@\344=\203\303G\327V\205\345!\202\211@;\203\333G\327V\203\326\345!\202@\202\322@!7>\203 G\327V\203\362\345!\202\322@!7>\204\323\324\346@D\"\210@\327H\202\347\350\"\262\3318\312#\203A\3218\"\210\312C\316\317\363# \"\210\211\242\211\203?\211@\321 \"\210A\266\202\202-\266\f\211\205 \211@\211\243\211\322! >\204Z\323\324\325D\"\210\211\326H\322! >\204l\323\324\325D\"\210\327H\330!\203\2115rq\210\3316\312#\211\203\363\352 \353H\"\211A\211\204\247\n\fB\211\353\353HBI\266\202\364\211\364\267\202\335 \315=\203\361\211\315\241\266\202\364 \361=\203\361\211\361\241\266\202\364 \315=\203\361\211\315\241\266\202\364\211\204\361\n\fB\211\353\353HBI\266\266\2109\204\355:\356\245\312\357#9*\266A\266\202\202B\262\262\266\203\207" [treemacs-filewatch-mode treemacs-git-mode treemacs-ignored-file-predicates treemacs--filewatch-index treemacs--scope-storage cl-struct-treemacs-scope-shelf-tags stopped changed file-name-nondirectory directory-file-name nil 0 t deleted maphash make-closure #[514 "\300\230\206\303\211GSH\304=\203\202\305P\"\266\202\2056\211@A\306!\210\307\n\"\210\301\301\242B\240\266\202\207" [V0 V1 treemacs--collapsed-filewatch-index s-starts-with\? 47 #1="/" file-notify-rm-watch remhash] 7 "\n\n(fn WATCHED-PATH WATCH-INFO)"] remhash type-of signal wrong-type-argument treemacs-scope-shelf 1 2 buffer-live-p gethash 3 4 delete treemacs-walk-dom-exclusive #[257 "\301\302H\"\210\211\303H\211\211\304\305\304H\"I\266\211\306H\211\205+\211@\301\"\210A\266\202\202\207" [treemacs-dom remhash 1 2 3 delete 7] 9 "\n\n(fn IT)"] renamed treemacs--on-rename file-name-directory 47 -1 :custom butlast treemacs-project error "Path type did not match: %S" #[514 "\300\230\206\303\211GSH\304=\203\202\305P\"\266\202\205H\211@Ap>\205FA\2037\306p\"\240\207\307!\210\310\n\"\210\301\301\242B\240\266\202\207" [V0 V1 treemacs--collapsed-filewatch-index s-starts-with\? 47 #1# delq file-notify-rm-watch remhash] 8 "\n\n(fn WATCHED-PATH WATCH-INFO)"] assoc 6 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (created 659 deleted 668 changed 673)) run-with-timer 1000 treemacs--process-file-events #[514 "\300\230\206\303\211GSH\304=\203\202\305P\"\266\202\205H\211@Ap>\205FA\2037\306p\"\240\207\307!\210\310\n\"\210\301\301\242B\240\266\202\207" [V0 V1 treemacs--collapsed-filewatch-index s-starts-with\? 47 #1# delq file-notify-rm-watch remhash] 8 "\n\n(fn WATCHED-PATH WATCH-INFO)"] created #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (created 1089 deleted 1094 changed 1103)) #[514 "\300\230\206\303\211GSH\304=\203\202\305P\"\266\202\205H\211@Ap>\205FA\2037\306p\"\240\207\307!\210\310\n\"\210\301\301\242B\240\266\202\207" [V0 V1 treemacs--collapsed-filewatch-index s-starts-with\? 47 #1# delq file-notify-rm-watch remhash] 8 "\n\n(fn WATCHED-PATH WATCH-INFO)"] #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (created 1453 deleted 1469 changed 1485)) treemacs-override-workspace treemacs-dom cl-struct-treemacs-project-tags treemacs--collapsed-filewatch-index treemacs--refresh-timer treemacs-file-event-delay] 23 (#$ . 11391)]) #@140 Dumb helper function. Extracted only so `treemacs--process-file-events' can decide when to call `save-excursion' without code duplication. (defalias 'treemacs--do-process-file-events #[0 "\211\205u\211@\211\243\211\306! >\204\307\310\311D\"\210\211\312H\306! >\204+\307\310\311D\"\210\313H\314!\203l\211rq\210\315\316\317 \320 \321\315$\211\205L\322\323\"\262\324 \211\205\207\211\205\207\325\326\"\327\330\321\"\206fd\323\"\211\203\205\325\326\"W\203\205\327\330\321\"\206~d\323\"\262\202h\262\262\211\205\221\331\332\"\262\211\205\324\325\326\"\333\334T\321\"\206\246e!\211\203\304\325\326\"W\203\304\333\334T\321\"\206\276e!\262\202\247\211\205\322\325\326\"U\205\322\211\266\202\262\211\205\336\331\332\"\262\211\205\351\325\332\"\262\211\205\364\325\335\"\262\211\205\377\325\336\"\262\211\203 \325\337\"\202\211\205\340!\262\341 \211\2058\342!r\343\344\"\216\345@\346\"\210\312\347\350 \320 \"]*\262\f\206= @\306 !A>\204Q\307\310\351 D\"\210\n\313H\211\203\207\211@\306!B>\204k\307\310\352D\"\210\211\313H\353C\315#\262\211\203\354\"\210\210A\266\202\202U\210)\355\267\202\362\356\315\"\211\203\275D\357=\203\256\360 \210\325`\361\"\242\362=\203\256\312u\210\363 \210\364 \211\203\274\365`\"\210\210\210\202\353C\315#\203E\204\334\366F\367\370!!\"\204\356\315\"\211\203\nD\357=\203\373\360 \210\325`\361\"\242\362=\203\373\312u\210\363 \210\364 \211\203 \365`\"\210\210\210\202\371\203O\211 !\203O\356 \315\"\211\203JD\357=\203;\360 \210\325`\361\"\242\362=\203;\312u\210\363 \210\364 \211\203I\365`\"\210\210\266\202\203\217\211!\203\217\356\315\"\211\203\212D\357=\203{\360 \210\325`\361\"\242\362=\203{\312u\210\363 \210\364 \211\203\211\365`\"\210\210\266\202\211;\203\266\372!\211G\312V\203\260\211GSH\373=\203\260\211\374\375O\202\261\211\262\202\211@\376=\203\312G\313V\205\377!\202\211@;\203\342G\313V\203\335\377!\202@\202\306@!B>\203G\313V\203\371\377!\202\306@!B>\204\f\307\310\352@D\"\210@\313H\202\201H\201I\"\262!\204\265\211\211;\203J\372!\211G\312V\203D\211GSH\373=\203D\211\374\375O\202E\211\262\202\256\211@\376=\203^G\313V\205\256\377!\202\256\211@;\203vG\313V\203q\377!\202\256@\202\256\306@!B>\203\246G\313V\203\215\377!\202\256\306@!B>\204\237\307\310\352@D\"\210@\313H\202\256\201H\201I\"\262\262\202\356\315\"\211\203\343D\357=\203\324\360 \210\325`\361\"\242\362=\203\324\312u\210\363 \210\364 \211\203\342\365`\"\210\210\266\202\201J!\210\202\204\375b\210\202\201K1\201J!0\210\202\315\266D\357=\203(\360 \210\325`\361\"\242\362=\203(\312u\210\325`\201L\"\2039\330`\201L\"b\210\211\203e`\342!r\343\201M\"\216\345@\346\"\210\374G\201NS!\210)\365\201O \"\210*\266\266\n)\363 \210*\266A\266\202\202\207" [treemacs--scope-storage cl-struct-treemacs-scope-shelf-tags treemacs-override-workspace treemacs--ready-to-follow treemacs-silent-refresh treemacs-silent-filewatch type-of signal wrong-type-argument treemacs-scope-shelf 1 2 buffer-live-p nil text-property-not-all point-at-bol point-at-eol button copy-marker t point-marker get-text-property :depth next-button next-single-property-change button-get :path previous-button previous-single-property-change :state :collapsed :key treemacs--nearest-path treemacs-get-local-window internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord count-screen-lines window-start treemacs-workspace treemacs-project gethash treemacs--recursive-refresh-descent #s(hash-table size 9 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (root-node-closed 399 root-node-open 399 file-node-closed 449 file-node-open 449 dir-node-closed 449 dir-node-open 449 tag-node 1000 tag-node-closed 1000 tag-node-open 1000)) treemacs-find-file-node treemacs-mode beginning-of-line display image hl-line-highlight get-buffer-window set-window-point s-matches\? file-name-nondirectory directory-file-name #[257 "\303\304#\205 \206\305\n\306\307!!\"?\207" [treemacs-dom treemacs-show-hidden-files treemacs-dotfiles-regex gethash nil s-matches\? file-name-nondirectory directory-file-name] 6 "\n\n(fn IT)"] file-name-directory 47 0 -1 :custom butlast treemacs--no-messages cl-struct-treemacs-workspace-tags cl-struct-treemacs-project-tags treemacs-dom major-mode treemacs-show-hidden-files treemacs-dotfiles-regex scroll-margin error "Path type did not match: %S" treemacs-goto-node (error) invisible #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] recenter selected-window] 23 (#$ . 18016)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--do-process-file-events compiler-macro treemacs--do-process-file-events--inliner] 4) #@21 (fn INLINE--FORM) (defalias 'treemacs--do-process-file-events--inliner #[257 "\3002$\301\302\303\304\305\306\307\310DD\311\312\313\306\314C\315CFD\316\312\306EEEED\317CE0\207" [inline--just-use treemacs-run-in-every-buffer treemacs-save-position -let [treemacs--no-messages (or treemacs-silent-refresh treemacs-silent-filewatch)] dolist project treemacs-workspace->projects workspace -when-let root-node -> treemacs-project->path treemacs-find-in-dom treemacs--recursive-refresh-descent hl-line-highlight] 13 (#$ . 22938)]) #@126 Process the file events that have been collected. Stop watching deleted dirs and refresh all the buffers that need updating. (defalias 'treemacs--process-file-events #[0 "\306\211\n\307=\203\206 \211\205\201\211@\211\243\211\310!\f>\204#\311\312\313D\"\210\211\314H\310!\f>\2045\311\312\313D\"\210\315H\316!\203x\211rq\210\306\317\320 \321 \322\306$\211\205V\323\307\"\262\324 \211\205\221\211\205\221\325\326\"\327\330\322\"\206pd\307\"\211\203\217\325\326\"W\203\217\327\330\322\"\206\210d\307\"\262\202r\262\262\211\205\233\331\332\"\262\211\205\336\325\326\"\333\334T\322\"\206\260e!\211\203\316\325\326\"W\203\316\333\334T\322\"\206\310e!\262\202\261\211\205\334\325\326\"U\205\334\211\266\202\262\211\205\350\331\332\"\262\211\205\363\325\332\"\262\211\205\376\325\335\"\262\211\205 \325\336\"\262\211\203\325\337\"\202\"\211\205 \340!\262\341 \211\205B\342!r\343\344\"\216\345@\346\"\210\314\347\350 \321 \"]*\262@\206IAB\310 !C>\204]\311\312\351 D\"\210\n\315H\211\203\223\211@\310!D>\204w\311\312\352D\"\210\211\315H\353E\306#\262\211\203\213\354\"\210\210A\266\202\202a\210)\355\267\202\376\356\306\"\211\203\311F\357=\203\272\360 \210\325`\361\"\242\362=\203\272\314u\210\363 \210\364 \211\203\310\365`\"\210\210\210\202\353E\306#\203G\204\350\366H\367\370!!\"\204\356\306\"\211\203F\357=\203\360 \210\325`\361\"\242\362=\203\314u\210\363 \210\364 \211\203\365`\"\210\210\210\202\371\203[\211 !\203[\356 \306\"\211\203VF\357=\203G\360 \210\325`\361\"\242\362=\203G\314u\210\363 \210\364 \211\203U\365`\"\210\210\266\202\203\233\211!\203\233\356\306\"\211\203\226F\357=\203\207\360 \210\325`\361\"\242\362=\203\207\314u\210\363 \210\364 \211\203\225\365`\"\210\210\266\202\211;\203\302\372!\211G\314V\203\274\211GSH\373=\203\274\211\374\375O\202\275\211\262\202'\211@\376=\203\326G\315V\205'\377!\202'\211@;\203\356G\315V\203\351\377!\202'@\202'\310@!D>\203G\315V\203\377!\202'\310@!D>\204\311\312\352@D\"\210@\315H\202'\201J\201K\"\262!\204\301\211\211;\203V\372!\211G\314V\203P\211GSH\373=\203P\211\374\375O\202Q\211\262\202\272\211@\376=\203jG\315V\205\272\377!\202\272\211@;\203\202G\315V\203}\377!\202\272@\202\272\310@!D>\203\262G\315V\203\231\377!\202\272\310@!D>\204\253\311\312\352@D\"\210@\315H\202\272\201J\201K\"\262\262\202)\356\306\"\211\203\357F\357=\203\340\360 \210\325`\361\"\242\362=\203\340\314u\210\363 \210\364 \211\203\356\365`\"\210\210\266\202\201L!\210\202\204 b\210\202\201M1\201L!0\210\202\306\266F\357=\2034\360 \210\325`\361\"\242\362=\2034\314u\210\325`\201N\"\203E\330`\201N\"b\210\211\203q`\342!r\343\201O\"\216\345@\346\"\210\374I\201PS!\210)\365\201Q \"\210*\266\266\n)\363 \210*\266A\266\202\202 \262\202 \212 \211\205 \211@\211\243\211\310!\f>\204\240\311\312\313D\"\210\211\314H\310!\f>\204\262\311\312\313D\"\210\315H\316!\203\373\211rq\210\306\317\320 \321 \322\306$\211\205\323\323\307\"\262\324 \211\205\211\205\325\326\"\327\330\322\"\206\355d\307\"\211\203\f\325\326\"W\203\f\327\330\322\"\206d\307\"\262\202\357\262\262\211\205\331\332\"\262\211\205[\325\326\"\333\334T\322\"\206-e!\211\203K\325\326\"W\203K\333\334T\322\"\206Ee!\262\202.\211\205Y\325\326\"U\205Y\211\266\202\262\211\205e\331\332\"\262\211\205p\325\332\"\262\211\205{\325\335\"\262\211\205\206\325\336\"\262\211\203\224\325\337\"\202\237\211\205\235\340!\262\341 \211\205\301\342!r\343\201R\"\216\345@\346\"\210\314\347\350 \321 \"]*\262@\206\310AB\310 !C>\204\334\311\312\351 D\"\210\n\315H\211\203\211@\310!D>\204\366\311\312\352D\"\210\211\315H\353E\306#\262\211\203\n\354\"\210\210A\266\202\202\340\210)\201S\267\202\201\356\306\"\211\203JF\357=\203;\360 \210\325`\361\"\242\362=\203;\314u\210\363 \210\364 \211\203I\365`\"\210\210\210\202\240\353E\306#\203\233G\204i\366H\367\370!!\"\204\233\356\306\"\211\203\227F\357=\203\210\360 \210\325`\361\"\242\362=\203\210\314u\210\363 \210\364 \211\203\226\365`\"\210\210\210\202\240\201T\203\336\211 !\203\336\356 \306\"\211\203\331F\357=\203\312\360 \210\325`\361\"\242\362=\203\312\314u\210\363 \210\364 \211\203\330\365`\"\210\210\266\202\240\203\211!\203\356\306\"\211\203F\357=\203\n\360 \210\325`\361\"\242\362=\203\n\314u\210\363 \210\364 \211\203\365`\"\210\210\266\202\240\211;\203E\372!\211G\314V\203?\211GSH\373=\203?\211\374\375O\202@\211\262\202\252\211@\376=\203YG\315V\205\252\377!\202\252\211@;\203qG\315V\203l\377!\202\252@\202\252\310@!D>\203\242G\315V\203\210\377!\202\252\310@!D>\204\233\311\312\352@D\"\210@\315H\202\252\201J\201K\"\262!\204D\211\211;\203\331\372!\211G\314V\203\323\211GSH\373=\203\323\211\374\375O\202\324\211\262\202=\211@\376=\203\355G\315V\205=\377!\202=\211@;\203G\315V\203\377!\202=@\202=\310@!D>\2035G\315V\203\377!\202=\310@!D>\204.\311\312\352@D\"\210@\315H\202=\201J\201K\"\262\262\202\254\356\306\"\211\203rF\357=\203c\360 \210\325`\361\"\242\362=\203c\314u\210\363 \210\364 \211\203q\365`\"\210\210\266\202\240\201L!\210\202\240\204\214b\210\202\240\201U1\235\201L!0\210\202\240\306\266F\357=\203\267\360 \210\325`\361\"\242\362=\203\267\314u\210\325`\201N\"\203\310\330`\201N\"b\210\211\203\364`\342!r\343\201V\"\216\345@\346\"\210\374I\201PS!\210)\365\201Q \"\210*\266\266\n)\363 \210*\266A\266\202\202\210\262))\207" [treemacs--refresh-timer treemacs--ready-to-follow treemacs--in-this-buffer treemacs--scope-storage cl-struct-treemacs-scope-shelf-tags treemacs-override-workspace nil t type-of signal wrong-type-argument treemacs-scope-shelf 1 2 buffer-live-p text-property-not-all point-at-bol point-at-eol button copy-marker point-marker get-text-property :depth next-button next-single-property-change button-get :path previous-button previous-single-property-change :state :collapsed :key treemacs--nearest-path treemacs-get-local-window internal--before-with-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] select-window norecord count-screen-lines window-start treemacs-workspace treemacs-project gethash treemacs--recursive-refresh-descent #s(hash-table size 9 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (root-node-closed 411 root-node-open 411 file-node-closed 461 file-node-open 461 dir-node-closed 461 dir-node-open 461 tag-node 1012 tag-node-closed 1012 tag-node-open 1012)) treemacs-find-file-node treemacs-mode beginning-of-line display image hl-line-highlight get-buffer-window set-window-point s-matches\? file-name-nondirectory directory-file-name #[257 "\303\304#\205 \206\305\n\306\307!!\"?\207" [treemacs-dom treemacs-show-hidden-files treemacs-dotfiles-regex gethash nil s-matches\? file-name-nondirectory directory-file-name] 6 "\n\n(fn IT)"] file-name-directory 47 0 -1 :custom butlast treemacs-silent-refresh treemacs-silent-filewatch treemacs--no-messages cl-struct-treemacs-workspace-tags cl-struct-treemacs-project-tags treemacs-dom major-mode treemacs-show-hidden-files treemacs-dotfiles-regex scroll-margin error "Path type did not match: %S" treemacs-goto-node (error) invisible #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] recenter selected-window #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2] #s(hash-table size 9 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (root-node-closed 1564 root-node-open 1564 file-node-closed 1614 file-node-open 1614 dir-node-closed 1614 dir-node-open 1614 tag-node 2167 tag-node-closed 2167 tag-node-open 2167)) #[257 "\303\304#\205 \206\305\n\306\307!!\"?\207" [treemacs-dom treemacs-show-hidden-files treemacs-dotfiles-regex gethash nil s-matches\? file-name-nondirectory directory-file-name] 6 "\n\n(fn IT)"] (error) #[0 "\301\300!\207" [V0 internal--after-with-selected-window] 2]] 24 (#$ . 23472)]) #@111 Called when a treemacs buffer is torn down/killed. Will stop file watch on every path watched by this buffer. (defalias 'treemacs--stop-filewatch-for-current-buffer #[0 "\301 \302C\303\304\305#\"\210\211\242\211\205!\211@\306\"\210A\266\202\202\207" [treemacs--filewatch-index treemacs-get-local-buffer nil maphash make-closure #[514 "\211\211A\262\242\300>\205+G\303U\203%\304!\210\305\n\"\210\301\301\242B\240\207\306\300\"\240\207" [V0 V1 treemacs--collapsed-filewatch-index 1 file-notify-rm-watch remhash delq] 9 "\n\n(fn WATCHED-PATH WATCH-INFO)"] remhash] 7 (#$ . 31720)]) #@185 Cancel any and all running file watch processes. Clear the filewatch and collapsed filewatch indices. Reset the refresh flags of every buffer. Called when filewatch mode is disabled. (defalias 'treemacs--stop-watching-all #[0 "\211\203I\211@\211\243\211\306! >\204\307\310\311D\"\210\211\312H\306! >\204+\307\310\311D\"\210\313H\314!\203@\211rq\210\315\316 \"\210*\266A\266\202\202\210\315\317\f\"\210\320\f!\210\321\320 !\210\207" [treemacs--scope-storage cl-struct-treemacs-scope-shelf-tags treemacs-override-workspace treemacs-dom treemacs--filewatch-index treemacs--collapsed-filewatch-index type-of signal wrong-type-argument treemacs-scope-shelf 1 2 buffer-live-p maphash #[514 "\211\211\300\301I\207" [6 nil] 6 "\n\n(fn _ NODE)"] #[514 "\300A!\207" [file-notify-rm-watch] 4 "\n\n(fn _ WATCH-INFO)"] clrhash nil] 9 (#$ . 32327)]) #@63 Stop watch processes, throw away file events, stop the timer. (defalias 'treemacs--tear-down-filewatch-mode #[0 "\301 \210\205\302!\210\303\211\207" [treemacs--refresh-timer treemacs--stop-watching-all cancel-timer nil] 2 (#$ . 33189)]) (byte-code "\300\301\302\303#\300\207" [function-put treemacs--tear-down-filewatch-mode compiler-macro treemacs--tear-down-filewatch-mode--inliner] 4) #@21 (fn INLINE--FORM) (defalias 'treemacs--tear-down-filewatch-mode--inliner #[257 "\3002 \301\302C\303CE0\207" [inline--just-use progn treemacs--stop-watching-all treemacs--cancel-refresh-timer] 4 (#$ . 33588)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313\314\315& \207" [custom-declare-variable treemacs-filewatch-mode funcall function #[0 "\300\207" [nil] 1] "Non-nil if Treemacs-Filewatch mode is enabled.\nSee the `treemacs-filewatch-mode' command\nfor a description of this minor mode.\nSetting this variable directly does not take effect;\neither customize it (see the info node `Easy Customization')\nor call the function `treemacs-filewatch-mode'." :set custom-set-minor-mode :initialize custom-initialize-default :type boolean :group treemacs] 12) #@1762 Minor mode to let treemacs auto-refresh itself on file system changes. Activating this mode enables treemacs to watch the files it is displaying (and only those) for changes and automatically refresh its view when it detects a change that it decides is relevant. This is a minor mode. If called interactively, toggle the `Treemacs-Filewatch mode' mode. If the prefix argument is positive, enable the mode, and if it is zero or negative, disable the mode. If called from Lisp, toggle the mode if ARG is `toggle'. Enable the mode if ARG is nil, omitted, or is a positive number. Disable the mode if ARG is a negative number. To check whether the minor mode is enabled in the current buffer, evaluate `(default-value 'treemacs-filewatch-mode)'. The mode's hook is called both when the mode is enabled and when it is disabled. A file change event is relevant for treemacs if a new file has been created or deleted or a file has been changed and `treemacs-git-mode' is enabled. Events caused by files that are ignored as per `treemacs-ignored-file-predicates' are counted as not relevant. The refresh is not called immediately after an event was received, treemacs instead waits `treemacs-file-event-delay' ms to see if any more files have changed to avoid having to refresh multiple times over a short period of time. The watch mechanism only applies to directories opened *after* this mode has been activated. This means that to enable file watching in an already existing treemacs buffer it needs to be torn down and rebuilt by calling `treemacs' or `treemacs-projectile'. Turning off this mode is, on the other hand, instantaneous - it will immediately turn off all existing file watch processes and outstanding refresh actions. (fn &optional ARG) (defalias 'treemacs-filewatch-mode #[256 "\303 \304\301\305=\203\306\301!?\202!\247\203 \307W\203 \310\202!\311\"\210\312\300!\2038\313\301\"\306\301!\2038\301B \204I\314 \210\n\203I\315\n!\210\310\316\317\306\301!\203U\320\202V\321\"\210\322\323!\203~\324\301!\210\303 \203n\211\303 \232\203~\325\326\306\301!\203z\327\202{\330\331#\210\210\332 \210\306\301!\207" [global-minor-modes treemacs-filewatch-mode treemacs--refresh-timer current-message set-default toggle default-value 1 nil t boundp delq treemacs--stop-watching-all cancel-timer run-hooks treemacs-filewatch-mode-hook treemacs-filewatch-mode-on-hook treemacs-filewatch-mode-off-hook called-interactively-p any customize-mark-as-set message "Treemacs-Filewatch mode %sabled%s" "en" "dis" "" force-mode-line-update] 6 (#$ . 34372) (byte-code "\203\n\301!\202 \302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)]) (defvar treemacs-filewatch-mode-hook nil) (byte-code "\302\303N\204\f\304\302\303\305#\210\304\302\306\307#\210\304\302\310\311C#\210\312\313\311\314\300!\205#\311\211%\210 \2043\315\316M\210\317\320M\210\321\322!\204<\313 \210\323\313!\207" [treemacs-filewatch-mode-map file-notify--library treemacs-filewatch-mode-hook variable-documentation put "Hook run after entering or leaving `treemacs-filewatch-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode treemacs-filewatch-mode boundp treemacs--start-watching #[513 "\300\207" [nil] 3 "\n\n(fn X &optional Y)"] treemacs--stop-watching #[513 "\300\207" [nil] 3 "\n\n(fn X &optional Y)"] featurep treemacs provide] 6)