From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Hugh Daschbach Newsgroups: gmane.emacs.bugs Subject: bug#43251: 27.1; DBus signals error when GetManagedObjects received while waiting for dbus-call-method Date: Sun, 06 Sep 2020 17:11:02 -0700 Message-ID: <87y2lmqwdl.fsf@ccss.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37735"; mail-complaints-to="usenet@ciao.gmane.io" To: 43251@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Sep 07 02:12:11 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kF4lW-0009fZ-EM for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 07 Sep 2020 02:12:10 +0200 Original-Received: from localhost ([::1]:47910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kF4lV-0003i8-H9 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 06 Sep 2020 20:12:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46932) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kF4lO-0003ho-5g for bug-gnu-emacs@gnu.org; Sun, 06 Sep 2020 20:12:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:35904) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kF4lN-0005CH-Sg for bug-gnu-emacs@gnu.org; Sun, 06 Sep 2020 20:12:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kF4lN-0000pi-Mb for bug-gnu-emacs@gnu.org; Sun, 06 Sep 2020 20:12:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Hugh Daschbach Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 07 Sep 2020 00:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 43251 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.15994374923160 (code B ref -1); Mon, 07 Sep 2020 00:12:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 7 Sep 2020 00:11:32 +0000 Original-Received: from localhost ([127.0.0.1]:47450 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kF4ko-0000op-2j for submit@debbugs.gnu.org; Sun, 06 Sep 2020 20:11:32 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:41648) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kF4kk-0000of-RT for submit@debbugs.gnu.org; Sun, 06 Sep 2020 20:11:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:46812) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kF4kk-0003KO-Kx for bug-gnu-emacs@gnu.org; Sun, 06 Sep 2020 20:11:22 -0400 Original-Received: from mail1.ccss.com ([159.203.255.73]:46852) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kF4kf-000563-5N for bug-gnu-emacs@gnu.org; Sun, 06 Sep 2020 20:11:22 -0400 Original-Received: by mail1.ccss.com (Postfix, from userid 114) id 89987BF8A7; Sun, 6 Sep 2020 17:11:15 -0700 (PDT) Original-Received: from ccss.com (unknown [192.168.76.11]) by mail1.ccss.com (Postfix) with ESMTP id 2455BBF475 for ; Sun, 6 Sep 2020 17:11:13 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by ccss.com (Postfix) with ESMTP id E6F90176065A for ; Sun, 6 Sep 2020 17:11:12 -0700 (PDT) Original-Received: from ccss.com ([127.0.0.1]) by localhost (ccss.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q66UmuMvDXOI for ; Sun, 6 Sep 2020 17:11:03 -0700 (PDT) Original-Received: from klaatu (klaatu.lan [192.168.42.3]) (Authenticated sender: hugh) by ccss.com (Postfix) with ESMTPSA id BD7361760630 for ; Sun, 6 Sep 2020 17:11:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ccss.com; s=mail; t=1599437462; bh=d5xvTEx/7ZZJ7VaO2WHjh5HbwclxQp1djBL4hzxow7s=; h=From:To:Subject:Date:From; b=PfBybMulxjJrpuNh1v2IGZREhnmzbi86obtlOeTDNZr0MrDZJYUJwiiwFj6jvvREx 9StT86WP/+8xr7dxvXKPU9Y6jtv+nIterPd3hIWyA4sGhwGJwqTcQVBiXnmXoZE+uk DmPtZQL4xQ0j/dG1Gcp3RaIyq/QcqyXOI8o5n6+rEn4n11tBOqk2qQrHxNlMwcz3Ys BFMcbK77uJKH8l4OnNjlpVMWuxw42LAhH3hwY2FRchMUxCHXwmJCViKQ2xbRE7NGD2 4FtxN+0ikYWCRS2+bpc/ShNRw3KeO7V3mKYzhvKJ5Ns8PuhTRQQlOkqkEcGaVvV3Dv mCHZFaSXzyCjQ== Received-SPF: pass client-ip=159.203.255.73; envelope-from=hugh@ccss.com; helo=mail1.ccss.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/06 20:11:15 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:187408 Archived-At: --=-=-= Content-Type: text/plain After exporting a property on an interface, that property will be described, correctly, when a GetManagedObjects request is received from another program in the system. But if that GetManagedObjects method call is received while a dbus-call-method request is waiting for a reply message, processing the GetManagedObjects request signals an error. I've attached three files: - backtrace - python test program - elisp test script The Python test program is a modified version of https://gitlab.freedesktop.org/dbus/dbus-python/blob/master/examples/example-service.py. It registers a method which is called by the elisp script. Upon receipt of the elisp method call, the python program launches a "dbus-send" command to issue a GetManagedObjects request back to the source of the method call. That generates the error described above. To reproduce this problem: - python2 /var/tmp/example-service.py - emacs -Q --load ~/.config/emacs/dbus-mo-signal.el --eval "(main)" That should invoke the debugger within ten seconds or so. Thanks, Hugh --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=mo-traceback.txt Content-Description: Backtrace from GetManagedObect processing Debugger entered--Lisp error: (wrong-type-argument listp dbus-call-method-handler) car(dbus-call-method-handler) (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--))) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--)))) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (closure ((result) (property) (interface . "org.freedesktop.DBus.Properties") (method . "GetAll") (path . "/node0") (service . ":1.17675") (bus . :session) (args "org.freedesktop.DBus.Properties") t) (key val) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--))))))((:serial :session 5) dbus-call-method-handler) maphash((closure ((result) (property) (interface . "org.freedesktop.DBus.Properties") (method . "GetAll") (path . "/node0") (service . ":1.17675") (bus . :session) (args "org.freedesktop.DBus.Properties") t) (key val) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) #) (let (result) (maphash #'(lambda (key val) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) dbus-registered-objects-table) (list :array (or result '(:signature "{sv}")))) (cond ((string-equal method "Get") (let ((entry (dbus-get-this-registered-property bus service path interface property))) (if (string-equal path (nth 2 (car entry))) (progn (list (list ':variant (cdr (car (last (car entry)))))))))) ((string-equal method "Set") (let* ((value (car (car (cdr (cdr args))))) (entry (dbus-get-this-registered-property bus service path interface property)) (object (car (last (car entry))))) (if (consp object) nil (signal 'dbus-error (list "Property not registered at path" property path))) (if (member :readwrite (car object)) nil (signal 'dbus-error (list "Property not writable at path" property path))) (puthash (list :property bus interface property) (cons (append (butlast (car entry)) (list (cons (car object) value))) (dbus-get-other-registered-property bus service path interface property)) dbus-registered-objects-table) (if (member :emits-signal (car object)) (progn (dbus-send-signal bus service path dbus-interface-properties "PropertiesChanged" (list (list ':dict-entry property (list ':variant value))) '(:array)))) :ignore)) ((string-equal method "GetAll") (let (result) (maphash #'(lambda (key val) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car ...) (list :variant ...)) result)))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) dbus-registered-objects-table) (list :array (or result '(:signature "{sv}")))))) (let ((bus (dbus-event-bus-name last-input-event)) (service (dbus-event-service-name last-input-event)) (path (dbus-event-path-name last-input-event)) (method (dbus-event-member-name last-input-event)) (interface (car args)) (property (car (cdr args)))) (cond ((string-equal method "Get") (let ((entry (dbus-get-this-registered-property bus service path interface property))) (if (string-equal path (nth 2 (car entry))) (progn (list (list ':variant (cdr (car (last (car entry)))))))))) ((string-equal method "Set") (let* ((value (car (car (cdr (cdr args))))) (entry (dbus-get-this-registered-property bus service path interface property)) (object (car (last (car entry))))) (if (consp object) nil (signal 'dbus-error (list "Property not registered at path" property path))) (if (member :readwrite (car object)) nil (signal 'dbus-error (list "Property not writable at path" property path))) (puthash (list :property bus interface property) (cons (append (butlast (car entry)) (list (cons (car object) value))) (dbus-get-other-registered-property bus service path interface property)) dbus-registered-objects-table) (if (member :emits-signal (car object)) (progn (dbus-send-signal bus service path dbus-interface-properties "PropertiesChanged" (list (list ':dict-entry property (list ':variant value))) '(:array)))) :ignore)) ((string-equal method "GetAll") (let (result) (maphash #'(lambda (key val) (let ((--dolist-tail-- val)) (while --dolist-tail-- (let ((item (car --dolist-tail--))) (if (and (equal (butlast key) (list :property bus interface)) (string-equal path (nth 2 item)) (not (functionp (car (last item))))) (progn (setq result (cons (list :dict-entry (car (last key)) (list :variant (cdr (car (last item))))) result)))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) dbus-registered-objects-table) (list :array (or result '(:signature "{sv}"))))))) dbus-property-handler("org.freedesktop.DBus.Properties") (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)) (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface))) (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))) (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result)))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--)))) (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--))))) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" 'dbus-property-handler)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append (butlast last-input-event 4) (list object dbus-interface-properties "GetAll" ...)))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--))))))) (let ((object (or (nth 2 (car-safe val)) ""))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let ((last-input-event (append ... ...))) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))))) (closure ((result ("/node0")) (interfaces "org.freedesktop.DBus.ObjectManager" "org.freedesktop.DBus.Peer") (path . "/") (bus . :session) t) (key val) (let ((object (or (nth 2 (car-safe val)) ""))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface (let (...) (dbus-property-handler interface)))) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))))))((:method :session "org.freedesktop.DBus.Properties" "Get") ((nil "org.gnu.Emacs" "/node0" dbus-property-handler))) maphash((closure ((result ("/node0")) (interfaces "org.freedesktop.DBus.ObjectManager" "org.freedesktop.DBus.Peer") (path . "/") (bus . :session) t) (key val) (let ((object (or (nth 2 (car-safe val)) ""))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- ...)) (while --dolist-tail-- (let ... ... ... ...))))))) #) (let (interfaces result) (maphash #'(lambda (key val) (if (and (equal (butlast key 2) (list :method bus)) (null (nth 2 (car-safe val)))) (progn (setq interfaces (cons (nth 2 key) interfaces))))) dbus-registered-objects-table) (maphash #'(lambda (key val) (let ((object (or (nth 2 (car-safe val)) ""))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list (cons interface ...)) (cdr (assoc object result))))) (setq --dolist-tail-- (cdr --dolist-tail--))))))))) dbus-registered-objects-table) (list :array (or (mapcar #'(lambda (x) (list :dict-entry :object-path (car x) (cons :array (mapcar #'(lambda (y) (cons :dict-entry y)) (cdr x))))) result) '(:signature "{oa{sa{sv}}}")))) (let* ((last-input-event last-input-event) (bus (dbus-event-bus-name last-input-event)) (path (dbus-event-path-name last-input-event))) (let (interfaces result) (maphash #'(lambda (key val) (if (and (equal (butlast key 2) (list :method bus)) (null (nth 2 (car-safe val)))) (progn (setq interfaces (cons (nth 2 key) interfaces))))) dbus-registered-objects-table) (maphash #'(lambda (key val) (let ((object (or (nth 2 (car-safe val)) ""))) (if (and (equal (butlast key 2) (list :method bus)) (string-prefix-p path object)) (progn (let ((--dolist-tail-- (cons (nth 2 key) interfaces))) (while --dolist-tail-- (let ((interface (car --dolist-tail--))) (if (assoc object result) nil (setq result (cons (list object) result))) (if (assoc interface (cdr (assoc object result))) nil (setcdr (assoc object result) (append (list ...) (cdr ...)))) (setq --dolist-tail-- (cdr --dolist-tail--))))))))) dbus-registered-objects-table) (list :array (or (mapcar #'(lambda (x) (list :dict-entry :object-path (car x) (cons :array (mapcar #'(lambda (y) (cons :dict-entry y)) (cdr x))))) result) '(:signature "{oa{sa{sv}}}"))))) dbus-managed-objects-handler() apply(dbus-managed-objects-handler nil) (setq result (apply (nth 8 event) (nthcdr 9 event))) (let (result) (dbus-check-event event) (if (= dbus-message-type-error (nth 2 event)) (progn (signal 'dbus-error (nthcdr 9 event)))) (setq result (apply (nth 8 event) (nthcdr 9 event))) (if (= dbus-message-type-method-call (nth 2 event)) (progn (condition-case err (progn (if (eq result :ignore) (dbus-method-return-internal (nth 1 event) (nth 4 event) (nth 3 event)) (apply 'dbus-method-return-internal (nth 1 event) (nth 4 event) (nth 3 event) (if (consp result) result (list result))))) (dbus-error (if dbus-debug (progn (signal (car err) (cdr err))))))))) (condition-case err (let (result) (dbus-check-event event) (if (= dbus-message-type-error (nth 2 event)) (progn (signal 'dbus-error (nthcdr 9 event)))) (setq result (apply (nth 8 event) (nthcdr 9 event))) (if (= dbus-message-type-method-call (nth 2 event)) (progn (condition-case err (progn (if (eq result :ignore) (dbus-method-return-internal (nth 1 event) (nth 4 event) (nth 3 event)) (apply 'dbus-method-return-internal (nth 1 event) (nth 4 event) (nth 3 event) (if (consp result) result (list result))))) (dbus-error (if dbus-debug (progn (signal (car err) (cdr err))))))))) (dbus-error (if (= dbus-message-type-method-call (nth 2 event)) (progn (condition-case err (progn (dbus-method-error-internal (nth 1 event) (nth 4 event) (nth 3 event) (car (cdr err)))) (dbus-error (if dbus-debug (progn (signal (car err) (cdr err)))))))) (run-hook-with-args 'dbus-event-error-functions event err) (if dbus-debug (progn (signal (car err) (cdr err)))))) dbus-handle-event((dbus-event :session 1 2 ":1.17675" "/" "org.freedesktop.DBus.ObjectManager" "GetManagedObjects" dbus-managed-objects-handler)) funcall-interactively(dbus-handle-event (dbus-event :session 1 2 ":1.17675" "/" "org.freedesktop.DBus.ObjectManager" "GetManagedObjects" dbus-managed-objects-handler)) call-interactively(dbus-handle-event nil [(dbus-event :session 1 2 ":1.17675" "/" "org.freedesktop.DBus.ObjectManager" "GetManagedObjects" dbus-managed-objects-handler)]) command-execute(dbus-handle-event nil [(dbus-event :session 1 2 ":1.17675" "/" "org.freedesktop.DBus.ObjectManager" "GetManagedObjects" dbus-managed-objects-handler)] t) read-event(nil nil 0.0013400956406250007) (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))) (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05)))))) (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-)) (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-))) (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-)))) (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn (dbus-check-event event)) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events (cons event nil)))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (signal 'dbus-error (list "call timed out"))) -with-timeout-value-)) (progn (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ((inhibit-redisplay t) unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil (progn ...) (error nil)) (setq result (gethash key dbus-return-values-table)) (setq unread-command-events (nconc unread-command-events ...))))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (signal 'dbus-error (list "call timed out"))) -with-timeout-value-)) (if (eq (car result) :error) (progn (signal (car (cdr result)) (cdr (cdr result))))) (cdr result)) (unwind-protect (progn (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let (... unread-command-events) (read-event nil nil check-interval)))) (if event (progn (if (condition-case nil ... ...) (setq result ...) (setq unread-command-events ...)))) (if (< check-interval 1) (progn (setq check-interval (* check-interval 1.05))))))) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (signal 'dbus-error (list "call timed out"))) -with-timeout-value-)) (if (eq (car result) :error) (progn (signal (car (cdr result)) (cdr (cdr result))))) (cdr result)) (remhash key dbus-return-values-table)) (let ((timeout (plist-get args :timeout)) (check-interval 0.001) (key (apply 'dbus-message-internal dbus-message-type-method-call bus service path interface method 'dbus-call-method-handler args)) (result (cons :pending nil))) (puthash key result dbus-return-values-table) (unwind-protect (progn (let ((-with-timeout-value- (catch 'timeout (let* ((-with-timeout-timer- (run-with-timer (if timeout (/ timeout 1000.0) 25) nil #'(lambda nil (throw 'timeout 'timeout)))) (with-timeout-timers (cons -with-timeout-timer- with-timeout-timers))) (unwind-protect (progn (while (eq (car result) :pending) (let ((event (let ... ...))) (if event (progn (if ... ... ...))) (if (< check-interval 1) (progn (setq check-interval ...)))))) (cancel-timer -with-timeout-timer-)))))) (if (eq -with-timeout-value- 'timeout) (progn (signal 'dbus-error (list "call timed out"))) -with-timeout-value-)) (if (eq (car result) :error) (progn (signal (car (cdr result)) (cdr (cdr result))))) (cdr result)) (remhash key dbus-return-values-table))) dbus-call-method(:session "com.example.SampleService" "/SomeObject" "com.example.SampleInterface" "HelloWorld" "xxx") main() eval((main) t) command-line-1(("--load" "/home/hugh/.config/emacs/dbus-mo-signal.el" "--eval" "(main)")) command-line() normal-top-level() --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=example-service.py Content-Transfer-Encoding: base64 Content-Description: Python target for elisp script IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgp1c2FnZSA9ICIiIlVzYWdlOgpweXRob24gZXhhbXBsZS1z ZXJ2aWNlLnB5ICYKcHl0aG9uIGV4YW1wbGUtY2xpZW50LnB5CnB5dGhvbiBleGFtcGxlLWFzeW5j LWNsaWVudC5weQpweXRob24gZXhhbXBsZS1jbGllbnQucHkgLS1leGl0LXNlcnZpY2UKIiIiCgoj IENvcHlyaWdodCAoQykgMjAwNC0yMDA2IFJlZCBIYXQgSW5jLiA8aHR0cDovL3d3dy5yZWRoYXQu Y29tLz4KIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBDb2xsYWJvcmEgTHRkLiA8aHR0cDovL3d3 dy5jb2xsYWJvcmEuY28udWsvPgojCiMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAojCiMg UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24KIyBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbgojIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQKIyByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwKIyBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKIyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwojIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiMKIyBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQoj IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgojCiMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsCiMgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiMgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKIyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAojIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAojIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAojIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKIyBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgpmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0 IEdMaWIKCmltcG9ydCBkYnVzCmltcG9ydCBkYnVzLnNlcnZpY2UKaW1wb3J0IGRidXMubWFpbmxv b3AuZ2xpYgppbXBvcnQgc3VicHJvY2VzcwoKY2xhc3MgRGVtb0V4Y2VwdGlvbihkYnVzLkRCdXNF eGNlcHRpb24pOgogICAgX2RidXNfZXJyb3JfbmFtZSA9ICdjb20uZXhhbXBsZS5EZW1vRXhjZXB0 aW9uJwoKY2xhc3MgU29tZU9iamVjdChkYnVzLnNlcnZpY2UuT2JqZWN0KToKCiAgICBAZGJ1cy5z ZXJ2aWNlLm1ldGhvZCgiY29tLmV4YW1wbGUuU2FtcGxlSW50ZXJmYWNlIiwKICAgICAgICAgICAg ICAgICAgICAgICAgIGluX3NpZ25hdHVyZT0ncycsIG91dF9zaWduYXR1cmU9J2FzJywKICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbmRlcl9rZXl3b3JkPSdzZW5kZXInKQogICAgZGVmIEhlbGxv V29ybGQoc2VsZiwgaGVsbG9fbWVzc2FnZSwgc2VuZGVyPU5vbmUpOgogICAgICAgIHByaW50IChz dHIoaGVsbG9fbWVzc2FnZSkpCiAgICAgICAgcHJpbnQgKHN0cihzZW5kZXIpKQogICAgICAgIHN1 YnByb2Nlc3MuY2FsbChbImRidXMtc2VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1w cmludC1yZXBseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS10eXBlPW1ldGhvZF9jYWxs IiwKICAgICAgICAgICAgICAgICAgICAgICAgICItLXNlc3Npb24iLAogICAgICAgICAgICAgICAg ICAgICAgICAgIi0tZGVzdD17fSIuZm9ybWF0KHNlbmRlciksCiAgICAgICAgICAgICAgICAgICAg ICAgICAiLyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMu T2JqZWN0TWFuYWdlci5HZXRNYW5hZ2VkT2JqZWN0cyJdKQogICAgICAgIHJldHVybiBbIkhlbGxv IiwgIiBmcm9tIGV4YW1wbGUtc2VydmljZS5weSIsICJ3aXRoIHVuaXF1ZSBuYW1lIiwKICAgICAg ICAgICAgICAgIHNlc3Npb25fYnVzLmdldF91bmlxdWVfbmFtZSgpXQoKICAgIEBkYnVzLnNlcnZp Y2UubWV0aG9kKCJjb20uZXhhbXBsZS5TYW1wbGVJbnRlcmZhY2UiLAogICAgICAgICAgICAgICAg ICAgICAgICAgaW5fc2lnbmF0dXJlPScnLCBvdXRfc2lnbmF0dXJlPScnKQogICAgZGVmIFJhaXNl RXhjZXB0aW9uKHNlbGYpOgogICAgICAgIHJhaXNlIERlbW9FeGNlcHRpb24oJ1RoZSBSYWlzZUV4 Y2VwdGlvbiBtZXRob2QgZG9lcyB3aGF0IHlvdSBtaWdodCAnCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnZXhwZWN0JykKCiAgICBAZGJ1cy5zZXJ2aWNlLm1ldGhvZCgiY29tLmV4YW1wbGUu U2FtcGxlSW50ZXJmYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGluX3NpZ25hdHVyZT0n Jywgb3V0X3NpZ25hdHVyZT0nKHNzKScpCiAgICBkZWYgR2V0VHVwbGUoc2VsZik6CiAgICAgICAg cmV0dXJuICgiSGVsbG8gVHVwbGUiLCAiIGZyb20gZXhhbXBsZS1zZXJ2aWNlLnB5IikKCiAgICBA ZGJ1cy5zZXJ2aWNlLm1ldGhvZCgiY29tLmV4YW1wbGUuU2FtcGxlSW50ZXJmYWNlIiwKICAgICAg ICAgICAgICAgICAgICAgICAgIGluX3NpZ25hdHVyZT0nJywgb3V0X3NpZ25hdHVyZT0nYXtzc30n KQogICAgZGVmIEdldERpY3Qoc2VsZik6CiAgICAgICAgcmV0dXJuIHsiZmlyc3QiOiAiSGVsbG8g RGljdCIsICJzZWNvbmQiOiAiIGZyb20gZXhhbXBsZS1zZXJ2aWNlLnB5In0KCiAgICBAZGJ1cy5z ZXJ2aWNlLm1ldGhvZCgiY29tLmV4YW1wbGUuU2FtcGxlSW50ZXJmYWNlIiwKICAgICAgICAgICAg ICAgICAgICAgICAgIGluX3NpZ25hdHVyZT0nJywgb3V0X3NpZ25hdHVyZT0nJykKICAgIGRlZiBF eGl0KHNlbGYpOgogICAgICAgIG1haW5sb29wLnF1aXQoKQoKCmlmIF9fbmFtZV9fID09ICdfX21h aW5fXyc6CiAgICBkYnVzLm1haW5sb29wLmdsaWIuREJ1c0dNYWluTG9vcChzZXRfYXNfZGVmYXVs dD1UcnVlKQoKICAgIHNlc3Npb25fYnVzID0gZGJ1cy5TZXNzaW9uQnVzKCkKICAgIG5hbWUgPSBk YnVzLnNlcnZpY2UuQnVzTmFtZSgiY29tLmV4YW1wbGUuU2FtcGxlU2VydmljZSIsIHNlc3Npb25f YnVzKQogICAgb2JqZWN0ID0gU29tZU9iamVjdChzZXNzaW9uX2J1cywgJy9Tb21lT2JqZWN0JykK CiAgICBtYWlubG9vcCA9IEdMaWIuTWFpbkxvb3AoKQogICAgcHJpbnQgIlJ1bm5pbmcgZXhhbXBs ZSBzZXJ2aWNlLiIKICAgIHByaW50IHVzYWdlCiAgICBtYWlubG9vcC5ydW4oKQo= --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=dbus-mo-signal.el Content-Description: elisp test script ;;; dbus-properties-test.el --- Test program for complex :dict-entry. -*- lexical-binding: t; -*- ;; Copyright (C) 2020 Hugh Daschbach ;; Author: Hugh Daschbach ;; Keywords: tools ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; This program demonstrates an error in handling D-Bus properties ;; interface. ;; ;; `dbus-property-handler' provides an org.freedesktop.DBus.Properties ;; interface to respond to requests for registered properties. But, ;; unlike methods and signals, properties are not stored per interface ;; per object. They are merely stored per interface. ;; ;; So the current implementation cannot support properties on the same ;; interface with a different object path. ;;; Code: (require 'dbus) (defun main () (interactive) (setq dbus-debug t) (setq debug-on-error t) (sit-for 1) (dbus-register-property :session "org.gnu.Emacs" "/node0" "org.bluez.GattService1" "Device" :readwrite "-node0-") (sit-for 1) (dbus-call-method :session "com.example.SampleService" "/SomeObject" "com.example.SampleInterface" "HelloWorld" "xxx")) (provide 'dbus-properties-test) ;;; dbus-properties-test.el ends here --=-=-= Content-Type: text/plain In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2020-08-06 built on klaatu Repository revision: 86d8d76aa36037184db0b2897c434cdaab1a9ae8 Repository branch: emacs-27 Windowing system distributor 'The X.Org Foundation', version 11.0.12008000 System Description: Artix Linux Recent messages: Wrote /home/hugh/.config/emacs/dbus-mo-signal.el Saving file /home/hugh/.config/emacs/dbus-mo-signal.el... Wrote /home/hugh/.config/emacs/dbus-mo-signal.el next-line: End of buffer Mark set Quit Wrote /home/hugh/.config/emacs/mo-traceback.txt Quit Checking spelling of GETMANANAGED... Spell-checking suspended; use C-u M-$ to resume Configured using: 'configure --with-x-toolkit=lucid' Configured features: XAW3D XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: pdf-occur-global-minor-mode: t global-magit-file-mode: t magit-file-mode: t magit-auto-revert-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t ggtags-navigation-mode: t desktop-save-mode: t which-key-mode: t hungry-delete-mode: t paredit-mode: t amx-mode: t ivy-mode: t winner-mode: t shell-dirtrack-mode: t save-place-mode: t global-edit-server-edit-mode: t auto-insert-mode: t override-global-mode: t straight-use-package-mode: t straight-package-neutering-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-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 column-number-mode: t line-number-mode: t transient-mark-mode: t abbrev-mode: t Load-path shadows: /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox hides /home/hugh/.config/emacs/straight/build/org/ox /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-texinfo hides /home/hugh/.config/emacs/straight/build/org/ox-texinfo /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-publish hides /home/hugh/.config/emacs/straight/build/org/ox-publish /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-org hides /home/hugh/.config/emacs/straight/build/org/ox-org /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-odt hides /home/hugh/.config/emacs/straight/build/org/ox-odt /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-md hides /home/hugh/.config/emacs/straight/build/org/ox-md /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-man hides /home/hugh/.config/emacs/straight/build/org/ox-man /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-latex hides /home/hugh/.config/emacs/straight/build/org/ox-latex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-icalendar hides /home/hugh/.config/emacs/straight/build/org/ox-icalendar /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-html hides /home/hugh/.config/emacs/straight/build/org/ox-html /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-beamer hides /home/hugh/.config/emacs/straight/build/org/ox-beamer /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-ascii hides /home/hugh/.config/emacs/straight/build/org/ox-ascii /home/hugh/.config/emacs/straight/build/org-plus-contrib/org hides /home/hugh/.config/emacs/straight/build/org/org /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-timer hides /home/hugh/.config/emacs/straight/build/org/org-timer /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-tempo hides /home/hugh/.config/emacs/straight/build/org/org-tempo /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-table hides /home/hugh/.config/emacs/straight/build/org/org-table /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-src hides /home/hugh/.config/emacs/straight/build/org/org-src /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-refile hides /home/hugh/.config/emacs/straight/build/org/org-refile /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-protocol hides /home/hugh/.config/emacs/straight/build/org/org-protocol /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-plot hides /home/hugh/.config/emacs/straight/build/org/org-plot /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-pcomplete hides /home/hugh/.config/emacs/straight/build/org/org-pcomplete /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-num hides /home/hugh/.config/emacs/straight/build/org/org-num /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-mouse hides /home/hugh/.config/emacs/straight/build/org/org-mouse /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-mobile hides /home/hugh/.config/emacs/straight/build/org/org-mobile /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-macs hides /home/hugh/.config/emacs/straight/build/org/org-macs /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-macro hides /home/hugh/.config/emacs/straight/build/org/org-macro /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-list hides /home/hugh/.config/emacs/straight/build/org/org-list /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-lint hides /home/hugh/.config/emacs/straight/build/org/org-lint /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-keys hides /home/hugh/.config/emacs/straight/build/org/org-keys /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-inlinetask hides /home/hugh/.config/emacs/straight/build/org/org-inlinetask /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-indent hides /home/hugh/.config/emacs/straight/build/org/org-indent /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-id hides /home/hugh/.config/emacs/straight/build/org/org-id /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-habit hides /home/hugh/.config/emacs/straight/build/org/org-habit /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-goto hides /home/hugh/.config/emacs/straight/build/org/org-goto /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-footnote hides /home/hugh/.config/emacs/straight/build/org/org-footnote /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-feed hides /home/hugh/.config/emacs/straight/build/org/org-feed /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-faces hides /home/hugh/.config/emacs/straight/build/org/org-faces /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-entities hides /home/hugh/.config/emacs/straight/build/org/org-entities /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-element hides /home/hugh/.config/emacs/straight/build/org/org-element /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-duration hides /home/hugh/.config/emacs/straight/build/org/org-duration /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-datetree hides /home/hugh/.config/emacs/straight/build/org/org-datetree /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-ctags hides /home/hugh/.config/emacs/straight/build/org/org-ctags /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-crypt hides /home/hugh/.config/emacs/straight/build/org/org-crypt /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-compat hides /home/hugh/.config/emacs/straight/build/org/org-compat /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-colview hides /home/hugh/.config/emacs/straight/build/org/org-colview /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-clock hides /home/hugh/.config/emacs/straight/build/org/org-clock /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-capture hides /home/hugh/.config/emacs/straight/build/org/org-capture /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-attach hides /home/hugh/.config/emacs/straight/build/org/org-attach /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-attach-git hides /home/hugh/.config/emacs/straight/build/org/org-attach-git /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-archive hides /home/hugh/.config/emacs/straight/build/org/org-archive /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-agenda hides /home/hugh/.config/emacs/straight/build/org/org-agenda /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol hides /home/hugh/.config/emacs/straight/build/org/ol /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-w3m hides /home/hugh/.config/emacs/straight/build/org/ol-w3m /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-rmail hides /home/hugh/.config/emacs/straight/build/org/ol-rmail /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-mhe hides /home/hugh/.config/emacs/straight/build/org/ol-mhe /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-irc hides /home/hugh/.config/emacs/straight/build/org/ol-irc /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-info hides /home/hugh/.config/emacs/straight/build/org/ol-info /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-gnus hides /home/hugh/.config/emacs/straight/build/org/ol-gnus /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-eww hides /home/hugh/.config/emacs/straight/build/org/ol-eww /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-eshell hides /home/hugh/.config/emacs/straight/build/org/ol-eshell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-docview hides /home/hugh/.config/emacs/straight/build/org/ol-docview /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-bibtex hides /home/hugh/.config/emacs/straight/build/org/ol-bibtex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-bbdb hides /home/hugh/.config/emacs/straight/build/org/ol-bbdb /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob hides /home/hugh/.config/emacs/straight/build/org/ob /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-vala hides /home/hugh/.config/emacs/straight/build/org/ob-vala /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-tangle hides /home/hugh/.config/emacs/straight/build/org/ob-tangle /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-table hides /home/hugh/.config/emacs/straight/build/org/ob-table /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-stan hides /home/hugh/.config/emacs/straight/build/org/ob-stan /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sqlite hides /home/hugh/.config/emacs/straight/build/org/ob-sqlite /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sql hides /home/hugh/.config/emacs/straight/build/org/ob-sql /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-shen hides /home/hugh/.config/emacs/straight/build/org/ob-shen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-shell hides /home/hugh/.config/emacs/straight/build/org/ob-shell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sed hides /home/hugh/.config/emacs/straight/build/org/ob-sed /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-screen hides /home/hugh/.config/emacs/straight/build/org/ob-screen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-scheme hides /home/hugh/.config/emacs/straight/build/org/ob-scheme /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sass hides /home/hugh/.config/emacs/straight/build/org/ob-sass /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ruby hides /home/hugh/.config/emacs/straight/build/org/ob-ruby /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ref hides /home/hugh/.config/emacs/straight/build/org/ob-ref /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-python hides /home/hugh/.config/emacs/straight/build/org/ob-python /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-processing hides /home/hugh/.config/emacs/straight/build/org/ob-processing /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-plantuml hides /home/hugh/.config/emacs/straight/build/org/ob-plantuml /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-picolisp hides /home/hugh/.config/emacs/straight/build/org/ob-picolisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-perl hides /home/hugh/.config/emacs/straight/build/org/ob-perl /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-org hides /home/hugh/.config/emacs/straight/build/org/ob-org /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-octave hides /home/hugh/.config/emacs/straight/build/org/ob-octave /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ocaml hides /home/hugh/.config/emacs/straight/build/org/ob-ocaml /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-mscgen hides /home/hugh/.config/emacs/straight/build/org/ob-mscgen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-maxima hides /home/hugh/.config/emacs/straight/build/org/ob-maxima /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-matlab hides /home/hugh/.config/emacs/straight/build/org/ob-matlab /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-makefile hides /home/hugh/.config/emacs/straight/build/org/ob-makefile /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lua hides /home/hugh/.config/emacs/straight/build/org/ob-lua /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lob hides /home/hugh/.config/emacs/straight/build/org/ob-lob /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lisp hides /home/hugh/.config/emacs/straight/build/org/ob-lisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lilypond hides /home/hugh/.config/emacs/straight/build/org/ob-lilypond /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ledger hides /home/hugh/.config/emacs/straight/build/org/ob-ledger /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-latex hides /home/hugh/.config/emacs/straight/build/org/ob-latex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-js hides /home/hugh/.config/emacs/straight/build/org/ob-js /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-java hides /home/hugh/.config/emacs/straight/build/org/ob-java /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-io hides /home/hugh/.config/emacs/straight/build/org/ob-io /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-hledger hides /home/hugh/.config/emacs/straight/build/org/ob-hledger /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-haskell hides /home/hugh/.config/emacs/straight/build/org/ob-haskell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-groovy hides /home/hugh/.config/emacs/straight/build/org/ob-groovy /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-gnuplot hides /home/hugh/.config/emacs/straight/build/org/ob-gnuplot /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-fortran hides /home/hugh/.config/emacs/straight/build/org/ob-fortran /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-forth hides /home/hugh/.config/emacs/straight/build/org/ob-forth /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-exp hides /home/hugh/.config/emacs/straight/build/org/ob-exp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-eval hides /home/hugh/.config/emacs/straight/build/org/ob-eval /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-eshell hides /home/hugh/.config/emacs/straight/build/org/ob-eshell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-emacs-lisp hides /home/hugh/.config/emacs/straight/build/org/ob-emacs-lisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ebnf hides /home/hugh/.config/emacs/straight/build/org/ob-ebnf /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-dot hides /home/hugh/.config/emacs/straight/build/org/ob-dot /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ditaa hides /home/hugh/.config/emacs/straight/build/org/ob-ditaa /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-css hides /home/hugh/.config/emacs/straight/build/org/ob-css /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-core hides /home/hugh/.config/emacs/straight/build/org/ob-core /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-coq hides /home/hugh/.config/emacs/straight/build/org/ob-coq /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-comint hides /home/hugh/.config/emacs/straight/build/org/ob-comint /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-clojure hides /home/hugh/.config/emacs/straight/build/org/ob-clojure /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-calc hides /home/hugh/.config/emacs/straight/build/org/ob-calc /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-awk hides /home/hugh/.config/emacs/straight/build/org/ob-awk /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-asymptote hides /home/hugh/.config/emacs/straight/build/org/ob-asymptote /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-abc hides /home/hugh/.config/emacs/straight/build/org/ob-abc /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-R hides /home/hugh/.config/emacs/straight/build/org/ob-R /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-J hides /home/hugh/.config/emacs/straight/build/org/ob-J /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-C hides /home/hugh/.config/emacs/straight/build/org/ob-C /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-loaddefs hides /home/hugh/.config/emacs/straight/build/org/org-loaddefs /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-install hides /home/hugh/.config/emacs/straight/build/org/org-install /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-texinfo hides /usr/local/share/emacs/27.1/lisp/org/ox-texinfo /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-publish hides /usr/local/share/emacs/27.1/lisp/org/ox-publish /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-org hides /usr/local/share/emacs/27.1/lisp/org/ox-org /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-odt hides /usr/local/share/emacs/27.1/lisp/org/ox-odt /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-md hides /usr/local/share/emacs/27.1/lisp/org/ox-md /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-man hides /usr/local/share/emacs/27.1/lisp/org/ox-man /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-latex hides /usr/local/share/emacs/27.1/lisp/org/ox-latex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-icalendar hides /usr/local/share/emacs/27.1/lisp/org/ox-icalendar /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-html hides /usr/local/share/emacs/27.1/lisp/org/ox-html /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox hides /usr/local/share/emacs/27.1/lisp/org/ox /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-beamer hides /usr/local/share/emacs/27.1/lisp/org/ox-beamer /home/hugh/.config/emacs/straight/build/org-plus-contrib/ox-ascii hides /usr/local/share/emacs/27.1/lisp/org/ox-ascii /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-timer hides /usr/local/share/emacs/27.1/lisp/org/org-timer /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-tempo hides /usr/local/share/emacs/27.1/lisp/org/org-tempo /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-table hides /usr/local/share/emacs/27.1/lisp/org/org-table /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-src hides /usr/local/share/emacs/27.1/lisp/org/org-src /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-protocol hides /usr/local/share/emacs/27.1/lisp/org/org-protocol /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-plot hides /usr/local/share/emacs/27.1/lisp/org/org-plot /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-pcomplete hides /usr/local/share/emacs/27.1/lisp/org/org-pcomplete /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-num hides /usr/local/share/emacs/27.1/lisp/org/org-num /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-mouse hides /usr/local/share/emacs/27.1/lisp/org/org-mouse /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-mobile hides /usr/local/share/emacs/27.1/lisp/org/org-mobile /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-macs hides /usr/local/share/emacs/27.1/lisp/org/org-macs /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-macro hides /usr/local/share/emacs/27.1/lisp/org/org-macro /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-list hides /usr/local/share/emacs/27.1/lisp/org/org-list /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-lint hides /usr/local/share/emacs/27.1/lisp/org/org-lint /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-keys hides /usr/local/share/emacs/27.1/lisp/org/org-keys /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-inlinetask hides /usr/local/share/emacs/27.1/lisp/org/org-inlinetask /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-indent hides /usr/local/share/emacs/27.1/lisp/org/org-indent /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-id hides /usr/local/share/emacs/27.1/lisp/org/org-id /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-habit hides /usr/local/share/emacs/27.1/lisp/org/org-habit /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-goto hides /usr/local/share/emacs/27.1/lisp/org/org-goto /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-footnote hides /usr/local/share/emacs/27.1/lisp/org/org-footnote /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-feed hides /usr/local/share/emacs/27.1/lisp/org/org-feed /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-faces hides /usr/local/share/emacs/27.1/lisp/org/org-faces /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-entities hides /usr/local/share/emacs/27.1/lisp/org/org-entities /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-element hides /usr/local/share/emacs/27.1/lisp/org/org-element /home/hugh/.config/emacs/straight/build/org-plus-contrib/org hides /usr/local/share/emacs/27.1/lisp/org/org /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-duration hides /usr/local/share/emacs/27.1/lisp/org/org-duration /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-datetree hides /usr/local/share/emacs/27.1/lisp/org/org-datetree /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-ctags hides /usr/local/share/emacs/27.1/lisp/org/org-ctags /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-crypt hides /usr/local/share/emacs/27.1/lisp/org/org-crypt /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-compat hides /usr/local/share/emacs/27.1/lisp/org/org-compat /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-colview hides /usr/local/share/emacs/27.1/lisp/org/org-colview /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-clock hides /usr/local/share/emacs/27.1/lisp/org/org-clock /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-capture hides /usr/local/share/emacs/27.1/lisp/org/org-capture /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-attach-git hides /usr/local/share/emacs/27.1/lisp/org/org-attach-git /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-attach hides /usr/local/share/emacs/27.1/lisp/org/org-attach /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-archive hides /usr/local/share/emacs/27.1/lisp/org/org-archive /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-agenda hides /usr/local/share/emacs/27.1/lisp/org/org-agenda /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-w3m hides /usr/local/share/emacs/27.1/lisp/org/ol-w3m /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-rmail hides /usr/local/share/emacs/27.1/lisp/org/ol-rmail /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-mhe hides /usr/local/share/emacs/27.1/lisp/org/ol-mhe /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-irc hides /usr/local/share/emacs/27.1/lisp/org/ol-irc /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-info hides /usr/local/share/emacs/27.1/lisp/org/ol-info /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-gnus hides /usr/local/share/emacs/27.1/lisp/org/ol-gnus /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-eww hides /usr/local/share/emacs/27.1/lisp/org/ol-eww /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-eshell hides /usr/local/share/emacs/27.1/lisp/org/ol-eshell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol hides /usr/local/share/emacs/27.1/lisp/org/ol /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-docview hides /usr/local/share/emacs/27.1/lisp/org/ol-docview /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-bibtex hides /usr/local/share/emacs/27.1/lisp/org/ol-bibtex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ol-bbdb hides /usr/local/share/emacs/27.1/lisp/org/ol-bbdb /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-vala hides /usr/local/share/emacs/27.1/lisp/org/ob-vala /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-tangle hides /usr/local/share/emacs/27.1/lisp/org/ob-tangle /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-table hides /usr/local/share/emacs/27.1/lisp/org/ob-table /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-stan hides /usr/local/share/emacs/27.1/lisp/org/ob-stan /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sqlite hides /usr/local/share/emacs/27.1/lisp/org/ob-sqlite /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sql hides /usr/local/share/emacs/27.1/lisp/org/ob-sql /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-shen hides /usr/local/share/emacs/27.1/lisp/org/ob-shen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-shell hides /usr/local/share/emacs/27.1/lisp/org/ob-shell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sed hides /usr/local/share/emacs/27.1/lisp/org/ob-sed /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-screen hides /usr/local/share/emacs/27.1/lisp/org/ob-screen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-scheme hides /usr/local/share/emacs/27.1/lisp/org/ob-scheme /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-sass hides /usr/local/share/emacs/27.1/lisp/org/ob-sass /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ruby hides /usr/local/share/emacs/27.1/lisp/org/ob-ruby /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-R hides /usr/local/share/emacs/27.1/lisp/org/ob-R /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ref hides /usr/local/share/emacs/27.1/lisp/org/ob-ref /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-python hides /usr/local/share/emacs/27.1/lisp/org/ob-python /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-processing hides /usr/local/share/emacs/27.1/lisp/org/ob-processing /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-plantuml hides /usr/local/share/emacs/27.1/lisp/org/ob-plantuml /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-picolisp hides /usr/local/share/emacs/27.1/lisp/org/ob-picolisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-perl hides /usr/local/share/emacs/27.1/lisp/org/ob-perl /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-org hides /usr/local/share/emacs/27.1/lisp/org/ob-org /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-octave hides /usr/local/share/emacs/27.1/lisp/org/ob-octave /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ocaml hides /usr/local/share/emacs/27.1/lisp/org/ob-ocaml /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-mscgen hides /usr/local/share/emacs/27.1/lisp/org/ob-mscgen /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-maxima hides /usr/local/share/emacs/27.1/lisp/org/ob-maxima /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-matlab hides /usr/local/share/emacs/27.1/lisp/org/ob-matlab /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-makefile hides /usr/local/share/emacs/27.1/lisp/org/ob-makefile /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lua hides /usr/local/share/emacs/27.1/lisp/org/ob-lua /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lob hides /usr/local/share/emacs/27.1/lisp/org/ob-lob /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lisp hides /usr/local/share/emacs/27.1/lisp/org/ob-lisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-lilypond hides /usr/local/share/emacs/27.1/lisp/org/ob-lilypond /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ledger hides /usr/local/share/emacs/27.1/lisp/org/ob-ledger /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-latex hides /usr/local/share/emacs/27.1/lisp/org/ob-latex /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-js hides /usr/local/share/emacs/27.1/lisp/org/ob-js /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-J hides /usr/local/share/emacs/27.1/lisp/org/ob-J /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-java hides /usr/local/share/emacs/27.1/lisp/org/ob-java /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-io hides /usr/local/share/emacs/27.1/lisp/org/ob-io /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-hledger hides /usr/local/share/emacs/27.1/lisp/org/ob-hledger /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-haskell hides /usr/local/share/emacs/27.1/lisp/org/ob-haskell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-groovy hides /usr/local/share/emacs/27.1/lisp/org/ob-groovy /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-gnuplot hides /usr/local/share/emacs/27.1/lisp/org/ob-gnuplot /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-fortran hides /usr/local/share/emacs/27.1/lisp/org/ob-fortran /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-forth hides /usr/local/share/emacs/27.1/lisp/org/ob-forth /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-exp hides /usr/local/share/emacs/27.1/lisp/org/ob-exp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-eval hides /usr/local/share/emacs/27.1/lisp/org/ob-eval /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-eshell hides /usr/local/share/emacs/27.1/lisp/org/ob-eshell /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-emacs-lisp hides /usr/local/share/emacs/27.1/lisp/org/ob-emacs-lisp /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob hides /usr/local/share/emacs/27.1/lisp/org/ob /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ebnf hides /usr/local/share/emacs/27.1/lisp/org/ob-ebnf /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-dot hides /usr/local/share/emacs/27.1/lisp/org/ob-dot /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-ditaa hides /usr/local/share/emacs/27.1/lisp/org/ob-ditaa /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-css hides /usr/local/share/emacs/27.1/lisp/org/ob-css /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-core hides /usr/local/share/emacs/27.1/lisp/org/ob-core /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-coq hides /usr/local/share/emacs/27.1/lisp/org/ob-coq /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-comint hides /usr/local/share/emacs/27.1/lisp/org/ob-comint /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-clojure hides /usr/local/share/emacs/27.1/lisp/org/ob-clojure /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-C hides /usr/local/share/emacs/27.1/lisp/org/ob-C /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-calc hides /usr/local/share/emacs/27.1/lisp/org/ob-calc /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-awk hides /usr/local/share/emacs/27.1/lisp/org/ob-awk /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-asymptote hides /usr/local/share/emacs/27.1/lisp/org/ob-asymptote /home/hugh/.config/emacs/straight/build/org-plus-contrib/ob-abc hides /usr/local/share/emacs/27.1/lisp/org/ob-abc /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-loaddefs hides /usr/local/share/emacs/27.1/lisp/org/org-loaddefs /home/hugh/.config/emacs/straight/build/org-plus-contrib/org-install hides /usr/local/share/emacs/27.1/lisp/org/org-install /home/hugh/.config/emacs/straight/build/let-alist/let-alist hides /usr/local/share/emacs/27.1/lisp/emacs-lisp/let-alist Features: (shadow emacsbug sh-script smie python tramp-cmds rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid nxml-mode nxml-outln nxml-rap sgml-mode company-tng company transpose-frame autoload lisp-mnt descr-text gl-bluez-gatt dabbrev quail org-eldoc ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir ol-docview ol-bibtex bibtex ol-bbdb ol-w3m pdf-sync pdf-outline pdf-links pdf-history pdf-occur ibuf-ext pdf-isearch let-alist pdf-annot tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-misc pdf-tools pdf-view pdf-cache pdf-info tq pdf-util rect epa-mail epa-file mailalias face-remap tabify man view timezone gnutls url-http url-gw url-cache url-auth eww mm-url magit-extras magit-bookmark magit-submodule magit-obsolete magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit package url-handlers magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff magit-core magit-autorevert autorevert magit-margin magit-transient magit-process magit-mode git-commit transient magit-git magit-section magit-utils crm log-edit pcvs-util add-log with-editor async-bytecomp async tmm eieio-opt speedbar sb-image ezimage dframe dbus-bluetooth dbus-formatters dbus-inspector tree-mode flyspell repeat bug-reference macrostep-c cmacexp macrostep ggtags etags fileloop ewoc cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs pulse xref project debug backtrace dired-aux tramp-cache tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat ls-lisp recentf tree-widget visual-fill-column sort gnus-cite smiley shr-color qp mm-archive mail-extr gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win gnus nnheader iso-transl csv executable disp-table network-stream nsm cl-print ace-window avy rcirc help-fns radix-tree persistent-soft list-utils pcache eieio-compat eieio-base font-utils unicode-fonts misearch multi-isearch two-column vc-git diff-mode elfeed-org elfeed-show elfeed-search bookmark elfeed-csv elfeed elfeed-curl url url-proxy url-expand url-methods url-history mailcap elfeed-log elfeed-db elfeed-lib url-queue xml-query mu4e mu4e-org mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions ido rfc2368 smtpmail sendmail mu4e-mark mu4e-proc mu4e-utils doc-view jka-compr image-mode exif mu4e-lists mu4e-message flow-fill ox-reveal desktop frameset ox-hugo org-refile ffap thingatpt ox-blackfriday ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-md ox-html table ox-beamer ox-latex ox-ascii ox-publish ox org-element avl-tree generator org org-macro org-footnote org-pcomplete org-list org-faces org-entities noutline outline ob-gnuplot ob-dot ob-ditaa ob-shell ob-awk ob-calc calc-store calc-trail calc-ext calc calc-loaddefs calc-macs ob ob-tangle org-src ob-ref ob-lob ob-table ob-exp ob-comint ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat org-macs org-loaddefs find-func cal-menu calendar cal-loaddefs mule-util hl-line mu4e-vars message rmc format-spec rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs time-date 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 which-key server hungry-delete paredit ivy-posframe posframe ivy-hydra amx ivy flx delsel ivy-faces ivy-overlay colir color winner url-privacy filenotify slime-company-autoloads slime-autoloads macrostep-autoloads shr text-property-search url-cookie url-domsuf url-util url-parse auth-source eieio eieio-core eieio-loaddefs password-cache url-vars puny svg dom zenburn-theme zenburn-theme-autoloads which-key-autoloads visual-fill-column-autoloads unicode-fonts-autoloads ucs-utils-autoloads font-utils-autoloads persistent-soft-autoloads list-utils-autoloads cl pcache-autoloads tree-mode-autoloads transpose-frame-autoloads tex-mode shell pcomplete smtpmail-multi-autoloads smart-mode-line-respectful-theme smart-mode-line rich-minority smart-mode-line-autoloads rich-minority-autoloads saveplace ripgrep-autoloads restclient-autoloads pdf-tools-autoloads tablist-autoloads paredit-autoloads ox-reveal-autoloads ox-hugo-autoloads org-gcal-autoloads persist-autoloads request-deferred-autoloads deferred-autoloads request-autoloads org-caldav-autoloads org-plus-contrib-autoloads magit-svn-autoloads json-mode-autoloads json-snatcher-autoloads json-reformat-autoloads ix grapnel ix-autoloads grapnel-autoloads ivy-posframe-autoloads posframe-autoloads ivy-hydra-autoloads ispell ielm pp ibuffer ibuffer-loaddefs hyperbole-autoloads kotl-autoloads hydra lv hydra-autoloads lv-autoloads hungry-delete-autoloads gnuplot-autoloads ggtags-autoloads geiser-autoloads flx-autoloads forge-autoloads markdown-mode-autoloads magit-autoloads git-commit-autoloads with-editor-autoloads transient-autoloads async-autoloads ghub-autoloads treepy-autoloads let-alist-autoloads closql-autoloads emacsql-sqlite-autoloads emacsql-autoloads esup-autoloads elpher-autoloads emojify apropos tar-mode arc-mode archive-mode pcase json map ht emojify-autoloads ht-autoloads emms-autoloads elfeed-org-autoloads org-autoloads org-version elfeed-autoloads edit-server advice edit-server-autoloads dmenu-autoloads deft-autoloads dired-x use-package-ensure dired-subtree-autoloads dired-hacks-utils-autoloads diminish diminish-autoloads dictionary-autoloads link-autoloads connection-autoloads delight-autoloads deadgrep-autoloads spinner-autoloads dbus-inspector-autoloads dash-functional dash-functional-autoloads csv-autoloads counsel-projectile-autoloads projectile-autoloads pkg-info-autoloads epl-autoloads counsel-autoloads swiper-autoloads ivy-autoloads company-quickhelp-autoloads pos-tip-autoloads company-autoloads use-package-diminish autoinsert amx-autoloads alert log4e rx notifications dbus xml gntp alert-autoloads log4e-autoloads gntp-autoloads ag vc-svn compile comint ansi-color ring find-dired s dash dired dired-loaddefs ag-autoloads s-autoloads dash-autoloads adaptive-wrap adaptive-wrap-autoloads ace-window-autoloads avy-autoloads finder-inf edmacro kmacro browse-url cus-edit cus-start cus-load wid-edit use-package-bind-key bind-key easy-mmode cl-seq use-package-core use-package-autoloads bind-key-autoloads straight-autoloads info cl-extra help-mode easymenu seq byte-opt straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconv early-init 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 tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer 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 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 x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 2360901 225902) (symbols 48 72629 1) (strings 32 326704 30447) (string-bytes 1 11354397) (vectors 16 124188) (vector-slots 8 2364465 244670) (floats 8 5611 2273) (intervals 56 233388 7495) (buffers 1000 242)) --=-=-=--