From unknown Sun Jun 22 03:52:13 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#41220 <41220@debbugs.gnu.org> To: bug#41220 <41220@debbugs.gnu.org> Subject: Status: 26.3; Repeated yielding in worker thread insufficient to process input events in the main thread Reply-To: bug#41220 <41220@debbugs.gnu.org> Date: Sun, 22 Jun 2025 10:52:13 +0000 retitle 41220 26.3; Repeated yielding in worker thread insufficient to proc= ess input events in the main thread reassign 41220 emacs submitter 41220 Alexander Miller severity 41220 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Tue May 12 17:56:43 2020 Received: (at submit) by debbugs.gnu.org; 12 May 2020 21:56:43 +0000 Received: from localhost ([127.0.0.1]:56738 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jYctG-0002o0-EW for submit@debbugs.gnu.org; Tue, 12 May 2020 17:56:43 -0400 Received: from lists.gnu.org ([209.51.188.17]:58940) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jYctE-0002nq-25 for submit@debbugs.gnu.org; Tue, 12 May 2020 17:56:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40496) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYctD-0002kX-P6 for bug-gnu-emacs@gnu.org; Tue, 12 May 2020 17:56:39 -0400 Received: from mout.web.de ([212.227.15.4]:43293) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jYctB-0007FR-JQ for bug-gnu-emacs@gnu.org; Tue, 12 May 2020 17:56:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1589320594; bh=OKt0SwwABhxPDh3kD0BajWgCqXSV1c/zaha8T2u0PR4=; h=X-UI-Sender-Class:To:Subject:From:Date; b=LP8lCNUsOXJB2koV3iyhdpV5DhuliBwCiGhpoB1icZQU3HrJFxY0cupJcrzSgQM7i dW6k4WyeicBImqdwH9VBjvPA1KK+Hay1FUHY/0eLy+i1OvI7piQXC4GhXWw/a14cNl oAeQ1tUDQTJMP9a/JBVCPb+z8RLxL630RLmEwrsQ= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from [192.168.2.107] ([217.240.190.124]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LqUG9-1ius9T116X-00e6Uw for ; Tue, 12 May 2020 23:56:34 +0200 To: bug-gnu-emacs@gnu.org Subject: 26.3; Repeated yielding in worker thread insufficient to process input events in the main thread From: Alexander Miller Message-ID: Date: Tue, 12 May 2020 23:56:52 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Content-Language: en-US X-Provags-ID: V03:K1:2zlYXSgdDDnoUUWEfPYdRC9fj7W0RRSiJ0R43cedvtIwV4bIbTz Cqh/XLBUrorS+/Avl2wa00GLKZKw4u3uPJYOIT3RaKBcfOLQYrEwxuYkJhc6FPL8co6r352 2UJ3NhsqfsWAsXsOOoBFusfle+V0xD3azz95aYxZG+O0Gd4JsqkU5+moqQTAPKH+C58BdZH MMAruX/Nrd6eIppY7yycg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:03N4AHrGcDY=:8oLqejkr83yO79crTDkNLn X49zzS5IYohToYTuY8lNQii78SJzn/4eaN5cm6LznsXU3+sJBmgAICzks6JIs5F/ROThVFE+T Lnqp/9Oa9ETy/tqt7VQNWDhaz6hH85bdqqL3ZnyieDsw0N0GxT45/7GFRrlN5KuB0Xn7+SYZd RxtWCW32bZxPu1elEscfBCk81D/X85YsQekYCL6Gi6glC5M3h9mPYw1rbi/atARkxHZX0/m/o tmLtZK0libfZOhQBJfrYVwySMwHL4QMv405fK1hWdUv/LuHA+xJka4G33jJAlPdQkmzCyNdWl eSw2lsrW7q/a5U/PRhZU4d1xkr48ivN8ONW8yW9i+2OR2oA2tdRGoHbVNHLiJRaH+A3j7108q fYzYvUvLZfmBMrn+UtyCaeFD2+qGu9rFNYopO+uMXZYZkoxr7GGiV/bxhnX8ucCHsc+tDagfR FUIVz6EGe1oAPEQlcf4AmjtEFzS8QjKynRYQKezoDTyYKQhPVoEJ4MAs93T8HnOs/7tFbSZZG U82egdqNYsTAKGt4LITi2Kj9u+1jP2oY6utfhix0mALLfoRNkB9ut1oD7QyrhT2TlityZBXtR dC/cuOPNwU14PDQHtTOOmiUZjJMjPgC8z7vqe/q+vqz4FpQSr7mis5Lp5ld3gZ7HNYWbcspMN eRhWHKP3vbBBVp9jdYUBw8E5rsavd4PwUb79h1+BmYVnBZxRPzLX5qi6FAPUiOqte9UGrnEXc hKYgH/Ne66+nlf10qBvHY1LF2k0UY1WkClAzKhB+PCWWN0QNJXGgU3egstaPwlodxmjy02whx rPsPwwQBiana8lXLpAzIBNsREBQLEo+r7vPaXwP1Ea9rQdIJMFgmuxbN5jeYmOmM0uebQyYnJ HFAFpINXNi/jt6J4ec+nxD6PuZXes0n8PZvPh9lc8wlQI3GQYM6nZgw6rNUhiRh6J/GJR8q3g qQSgICEiH4jlSXw17xdNtWzKkWzwFbF8Hg7qx3/KdiWO5vTspHTzEpW3PD2bRtEAWsXZdgwRF rFUpaHWjUThDneEJGSHoIn2jxnfdusxdONeJQdiAmJMj6tydpUePwVUizcpuqngGa7IOTP0MQ cPdrPPjMG5svqCN+g5E2o/db3evxvDy6W33J5FMw1Z1dyL7JWkxMFkElqmAKaTKrzW5PrZ3s7 pBKfyX4nv6s9m6uTgcxF155corBc2k1e6WXlsK2r08W8brI7zZoYj0HrYvsQ3Z7/s1CPUtnPt eQQ+uSz7U6W7T3lA0 Received-SPF: pass client-ip=212.227.15.4; envelope-from=alexanderm@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/12 17:56:34 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-Spam-Score: 0.6 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) This report is based on the discussion in https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg01566.html. In this thread we were thinking up ways how to make Elisp asynchronous with the help of threads - to do heavy lifting in a worker thread, but yield for user interactions. Part of that was a benchmark for how well persistently yielding in the worker thread after every finished work-unit would perform. My conclusion was that it doesn't, input was ignored most of the time. Stefan thought that it *should* work, and asked me to make a bug report, so here it is. I have modified my benchmark to work with emacs -q. It will set up a worker thread, a queue, a timer to check the queue and wake up the worker, as well as a long CPU consuming task that emulates the kind of work I would want to use threads for in a real-world scenario. The task needs close to half a minute on my system. While it runs navigation with C-n/p is barely possible. Here is the full code: (defconst worker-mutex (make-mutex "*WORKER MUTEX*")) (defconst worker-cond-var (make-condition-variable worker-mutex)) (defvar worker-queue (list)) (setf =C2=A0worker =C2=A0(make-thread =C2=A0 (lambda () =C2=A0=C2=A0=C2=A0 (while t =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (while worker-queue =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (let* ((work-unit (pop worker-= queue)) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (fn (car work-unit)) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (args (cdr work-unit))) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (apply fn args) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (thread-yield))) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (message "Worker Goes To Sleep") =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (with-mutex worker-mutex =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (condition-wait worker-cond-va= r)))) =C2=A0 "*WORKER*")) (setf worker-timer =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (run-with-idle-timer =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1 t (lambda () =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = (when worker-queue =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (with-mutex worker-mutex =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 (condition-notify worker-cond-var)))))) (defun get-the-things () =C2=A0 (let ((run-start (float-time)) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (things)) =C2=A0=C2=A0=C2=A0 (dotimes (_ 100000) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (let* ((status (prog1 (random 4) (dotimes = (_ 1000) (random)))) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = (thing (pcase status =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (0 'a) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (1 'b) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (2 'c) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (3 'd)))) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (push thing things)) =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (thread-yield)) =C2=A0=C2=A0=C2=A0 (message "Run Time %ss" (- (float-time) run-start)))) (push (list #'get-the-things) worker-queue) In GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.10) of 2019-08-29 built on juergen Windowing system distributor 'The X.Org Foundation', version 11.0.12008000 System Description: Manjaro Linux Recent messages: worker-cond-var worker-queue # Worker Goes To Sleep [nil 0 1 0 t (closure (t) nil (if worker-queue (progn (let ((mutex worker-mutex)) (mutex-lock mutex) (unwind-protect (progn (condition-notify worker-cond-var)) (mutex-unlock mutex)))))) nil idle 0] get-the-things ((get-the-things)) Auto-saving... Run Time 90.80384421348572s Worker Goes To Sleep Configured using: 'configure --prefix=3D/usr --sysconfdir=3D/etc --libexecdir=3D/usr/lib =2D-localstatedir=3D/var --with-x-toolkit=3Dgtk3 --with-xft --with-modules 'CFLAGS=3D-march=3Dx86-64 -mtune=3Dgeneric -O2 -pipe -fno-plt' CPPFLAGS=3D-D_FORTIFY_SOURCE=3D2 LDFLAGS=3D-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD LCMS2 Important settings: value of $LC_MONETARY: de_DE.UTF-8 value of $LC_NUMERIC: de_DE.UTF-8 value of $LC_TIME: de_DE.UTF-8 value of $LANG: en_GB.utf8 locale-coding-system: utf-8 Major mode: Emacs-Lisp Minor modes in effect: ivy-posframe-mode: t diff-auto-refine-mode: t rainbow-delimiters-mode: t rainbow-mode: t display-line-numbers-mode: t helm-mode: t async-bytecomp-package-mode: t helm--remap-mouse-mode: t projectile-mode: t global-company-mode: t company-mode: t global-evil-vimish-fold-mode: t evil-vimish-fold-mode: t vimish-fold-mode: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-global-mode: t smartparens-mode: t org-super-agenda-mode: t treemacs-icons-dired-mode: t treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: deferred treemacs-fringe-indicator-mode: t gcmh-mode: t framey-mode: t purpose-mode: t shackle-mode: t winum-mode: t eyebrowse-mode: t global-subword-mode: t subword-mode: t global-evil-surround-mode: t evil-surround-mode: t evil-lion-mode: t evil-goggles-mode: t global-undo-tree-mode: t undo-tree-mode: t shell-dirtrack-mode: t evil-mode: t evil-local-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t prettify-symbols-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /usr/share/emacs/26.3/lisp/emacs-lisp/let-alist hides /home/am/.emacs.d/straight/build/let-alist/let-alist /usr/share/emacs/site-lisp/mu4e/mu4e-headers hides /home/am/.emacs.d/straight/build/mu4e/mu4e-headers /usr/share/emacs/site-lisp/mu4e/mu4e-draft hides /home/am/.emacs.d/straight/build/mu4e/mu4e-draft /usr/share/emacs/site-lisp/mu4e/mu4e-lists hides /home/am/.emacs.d/straight/build/mu4e/mu4e-lists /usr/share/emacs/site-lisp/mu4e/mu4e-proc hides /home/am/.emacs.d/straight/build/mu4e/mu4e-proc /usr/share/emacs/site-lisp/mu4e/org-mu4e hides /home/am/.emacs.d/straight/build/mu4e/org-mu4e /usr/share/emacs/site-lisp/mu4e/mu4e-message hides /home/am/.emacs.d/straight/build/mu4e/mu4e-message /usr/share/emacs/site-lisp/mu4e/mu4e-compose hides /home/am/.emacs.d/straight/build/mu4e/mu4e-compose /usr/share/emacs/site-lisp/mu4e/mu4e-speedbar hides /home/am/.emacs.d/straight/build/mu4e/mu4e-speedbar /usr/share/emacs/site-lisp/mu4e/mu4e-vars hides /home/am/.emacs.d/straight/build/mu4e/mu4e-vars /usr/share/emacs/site-lisp/mu4e/mu4e-org hides /home/am/.emacs.d/straight/build/mu4e/mu4e-org /usr/share/emacs/site-lisp/mu4e/mu4e-mark hides /home/am/.emacs.d/straight/build/mu4e/mu4e-mark /usr/share/emacs/site-lisp/mu4e/mu4e-context hides /home/am/.emacs.d/straight/build/mu4e/mu4e-context /usr/share/emacs/site-lisp/mu4e/mu4e-view hides /home/am/.emacs.d/straight/build/mu4e/mu4e-view /usr/share/emacs/site-lisp/mu4e/mu4e-utils hides /home/am/.emacs.d/straight/build/mu4e/mu4e-utils /usr/share/emacs/site-lisp/mu4e/mu4e-contrib hides /home/am/.emacs.d/straight/build/mu4e/mu4e-contrib /usr/share/emacs/site-lisp/mu4e/mu4e-actions hides /home/am/.emacs.d/straight/build/mu4e/mu4e-actions /usr/share/emacs/site-lisp/mu4e/mu4e hides /home/am/.emacs.d/straight/build/mu4e/mu4e /usr/share/emacs/site-lisp/mu4e/mu4e-main hides /home/am/.emacs.d/straight/build/mu4e/mu4e-main /usr/share/emacs/site-lisp/mu4e/mu4e-icalendar hides /home/am/.emacs.d/straight/build/mu4e/mu4e-icalendar ~/Documents/git/treemacs/src/elisp/treemacs-interface hides /home/am/.emacs.d/straight/build/treemacs/treemacs-interface ~/Documents/git/treemacs/src/elisp/treemacs-rendering hides /home/am/.emacs.d/straight/build/treemacs/treemacs-rendering ~/Documents/git/treemacs/src/elisp/treemacs-dom hides /home/am/.emacs.d/straight/build/treemacs/treemacs-dom ~/Documents/git/treemacs/src/elisp/treemacs-tags hides /home/am/.emacs.d/straight/build/treemacs/treemacs-tags ~/Documents/git/treemacs/src/elisp/treemacs hides /home/am/.emacs.d/straight/build/treemacs/treemacs ~/Documents/git/treemacs/src/elisp/treemacs-workspaces hides /home/am/.emacs.d/straight/build/treemacs/treemacs-workspaces ~/Documents/git/treemacs/src/elisp/treemacs-customization hides /home/am/.emacs.d/straight/build/treemacs/treemacs-customization ~/Documents/git/treemacs/src/elisp/treemacs-faces hides /home/am/.emacs.d/straight/build/treemacs/treemacs-faces ~/Documents/git/treemacs/src/elisp/treemacs-themes hides /home/am/.emacs.d/straight/build/treemacs/treemacs-themes ~/Documents/git/treemacs/src/elisp/treemacs-mouse-interface hides /home/am/.emacs.d/straight/build/treemacs/treemacs-mouse-interface ~/Documents/git/treemacs/src/elisp/treemacs-mode hides /home/am/.emacs.d/straight/build/treemacs/treemacs-mode ~/Documents/git/treemacs/src/elisp/treemacs-icons hides /home/am/.emacs.d/straight/build/treemacs/treemacs-icons ~/Documents/git/treemacs/src/elisp/treemacs-compatibility hides /home/am/.emacs.d/straight/build/treemacs/treemacs-compatibility ~/Documents/git/treemacs/src/elisp/treemacs-follow-mode hides /home/am/.emacs.d/straight/build/treemacs/treemacs-follow-mode ~/Documents/git/treemacs/src/elisp/treemacs-visuals hides /home/am/.emacs.d/straight/build/treemacs/treemacs-visuals ~/Documents/git/treemacs/src/elisp/treemacs-core-utils hides /home/am/.emacs.d/straight/build/treemacs/treemacs-core-utils ~/Documents/git/treemacs/src/elisp/treemacs-extensions hides /home/am/.emacs.d/straight/build/treemacs/treemacs-extensions ~/Documents/git/treemacs/src/elisp/treemacs-filewatch-mode hides /home/am/.emacs.d/straight/build/treemacs/treemacs-filewatch-mode ~/Documents/git/treemacs/src/elisp/treemacs-persistence hides /home/am/.emacs.d/straight/build/treemacs/treemacs-persistence ~/Documents/git/treemacs/src/elisp/treemacs-async hides /home/am/.emacs.d/straight/build/treemacs/treemacs-async ~/Documents/git/treemacs/src/elisp/treemacs-bookmarks hides /home/am/.emacs.d/straight/build/treemacs/treemacs-bookmarks ~/Documents/git/treemacs/src/elisp/treemacs-tag-follow-mode hides /home/am/.emacs.d/straight/build/treemacs/treemacs-tag-follow-mode ~/Documents/git/treemacs/src/elisp/treemacs-logging hides /home/am/.emacs.d/straight/build/treemacs/treemacs-logging ~/Documents/git/treemacs/src/elisp/treemacs-fringe-indicator hides /home/am/.emacs.d/straight/build/treemacs/treemacs-fringe-indicator ~/Documents/git/treemacs/src/elisp/treemacs-diagnostics hides /home/am/.emacs.d/straight/build/treemacs/treemacs-diagnostics ~/Documents/git/treemacs/src/elisp/treemacs-macros hides /home/am/.emacs.d/straight/build/treemacs/treemacs-macros ~/Documents/git/treemacs/src/elisp/treemacs-scope hides /home/am/.emacs.d/straight/build/treemacs/treemacs-scope Features: (shadow sort mail-extr emacsbug cl-print debug benchmark eros company-quickhelp pos-tip ivy-posframe posframe swiper ivy delsel ivy-overlay colir help-fns radix-tree org-clock holidays hol-loaddefs diary-lib diary-loaddefs cal-iso smartparens-javascript js smartparens-html sgml-mode cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs smartparens-python python tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize json map fish-mode conf-mode i3wm-config-mode writeroom-mode visual-fill-column autorevert org-indent disp-table ol-eww eww mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range gnus-win gnus nnheader ol-docview ol-bibtex bibtex ol-bbdb ol-w3m elfeed-org elfeed-show elfeed-search wid-edit treemacs-bookmarks bookmark elfeed-csv elfeed elfeed-curl url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf elfeed-log elfeed-db elfeed-lib url-queue xml-query mailcap vc-mtn vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher rainbow-delimiters rainbow-mode xterm-color display-line-numbers elec-pair winner helm-command helm-elisp helm-eval edebug helm-info info shr-color color url-util url-parse url-vars shr svg dom face-remap pp helm-mode helm-projectile helm-files helm-tags helm-buffers helm-occur helm-grep helm-regexp helm-utils helm-locate helm-help helm-types framey-helm helm-config async-bytecomp helm helm-source helm-multi-match helm-lib async view treemacs-projectile projectile grep compile ibuf-ext ibuffer ibuffer-loaddefs mu4e-alert time alert log4e notifications dbus company-keywords company-dabbrev-code company-dabbrev company-yasnippet company-files company-capf company server evil-vimish-fold vimish-fold smartparens-config smartparens-org smartparens-text paren smartparens xml gntp org-mu4e mu4e desktop frameset mu4e-org german-holidays org-super-agenda ts org-habit org-element avl-tree generator org-agenda org-refile org-bullets org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat org-macs org-loaddefs find-func mu4e-main mu4e-view cal-menu calendar cal-loaddefs browse-url mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions ido rfc2368 smtpmail auth-source sendmail mu4e-mark mu4e-message flow-fill mu4e-proc mu4e-utils doc-view jka-compr mu4e-lists mu4e-vars message rmc puny seq treemacs-icons-dired treemacs-evil treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-extensions treemacs-persistence treemacs-mouse-interface treemacs-tag-follow-mode treemacs-filewatch-mode treemacs-tags imenu xref project filenotify treemacs-follow-mode treemacs-rendering treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture ace-window avy hl-line treemacs-macros treemacs-logging treemacs-customization easy-mmode dired+ image-dired image-mode image-file dired-x dired-aux dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader mu4e-meta gcmh hydra lv pcase doom-modeline doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path rx f all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons memoize subr-x framey inline ht s window-purpose window-purpose-fixes window-purpose-prefix-overload window-purpose-switch let-alist window-purpose-layout window-purpose-core window-purpose-configuration eieio-compat eieio byte-opt bytecomp byte-compile cconv window-purpose-utils shackle trace cl-extra help-mode winum eyebrowse format-spec morning-star-theme cap-words superword subword evil-surround evil-lion evil-goggles pulse cl-seq evil evil-keybindings evil-integration undo-tree diff evil-maps evil-commands reveal flyspell ispell evil-jumps evil-command-window evil-types evil-search evil-ex shell pcomplete comint ansi-color evil-macros evil-repeat evil-states evil-core advice evil-common windmove thingatpt rect evil-digraphs evil-vars ring edmacro kmacro dash yasnippet-autoloads yaml-mode-autoloads xterm-color-autoloads wttrin-autoloads writeroom-mode-autoloads with-editor-autoloads winum-autoloads window-purpose-autoloads eieio-core cl-macs gv eieio-loaddefs cl-loaddefs cl-lib vterm-autoloads visual-fill-column-autoloads vimish-fold-autoloads undo-tree-autoloads ts-autoloads tridactylrc-mode-autoloads treepy-autoloads treemacs-autoloads transient-autoloads swiper-autoloads straight-autoloads spinner-autoloads smartparens-autoloads shrink-path-autoloads shackle-autoloads s-autoloads rainbow-mode-autoloads rainbow-delimiters-autoloads projectile-autoloads pretty-hydra-autoloads posframe-autoloads pos-tip-autoloads popup-autoloads pkg-info-autoloads pfuture-autoloads persp-mode-autoloads org-super-agenda-autoloads org-bullets-autoloads org-autoloads multi-compile-autoloads mu4e-alert-autoloads mu4e-autoloads morning-star-autoloads memoize-autoloads markdown-mode-autoloads magit-autoloads macrostep-autoloads lv-autoloads lsp-ui-autoloads lsp-treemacs-autoloads lsp-mode-autoloads loop-autoloads log4e-autoloads let-alist-autoloads ledger-mode-autoloads ivy-posframe-autoloads ivy-autoloads imenu-list-autoloads i3wm-config-mode-autoloads hydra-autoloads ht-autoloads helpful-autoloads helm-projectile-autoloads helm-org-autoloads helm-easymenu easymenu helm-core-autoloads helm-ag-autoloads helm-autoloads goto-chg-autoloads gntp-autoloads git-commit-autoloads ghub-autoloads german-holidays-autoloads gcmh-autoloads framey-autoloads forge-autoloads flycheck-pos-tip-autoloads flycheck-autoloads fish-mode-autoloads fill-column-indicator-autoloads f-autoloads eyebrowse-autoloads expand-region-autoloads evil-vimish-fold-autoloads evil-surround-autoloads evil-nerd-commenter-autoloads evil-magit-autoloads evil-lion-autoloads evil-ledger-autoloads evil-goggles-autoloads evil-exchange-autoloads evil-collection-autoloads evil-autoloads eros-autoloads epl-autoloads emacsql-sqlite-autoloads emacsql-autoloads elisp-refs-autoloads elfeed-org-autoloads elfeed-autoloads doom-modeline-autoloads doct-autoloads dired+-autoloads dash-functional-autoloads dash-autoloads company-shell-autoloads company-quickhelp-autoloads company-makefile-autoloads company-box-autoloads company-autoloads closql-autoloads buttercup-autoloads avy-autoloads async-autoloads anzu-autoloads annalist-autoloads all-the-icons-autoloads alert-autoloads ace-window-autoloads time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 1134735 336269) (symbols 48 62609 1) (miscs 40 669 2944) (strings 32 246316 89817) (string-bytes 1 7685472) (vectors 16 113372) (vector-slots 8 2276151 279318) (floats 8 6416 2552) (intervals 56 38016 2345) (buffers 992 44))