emacs中的dbus错误

d12*_*ted 5 emacs dbus notify

我试图在OS X上使用notify.el,但每次都会出现下一个错误:

Symbol's value as variable is void: dbus-message-type-method-call
Run Code Online (Sandbox Code Playgroud)

emacs --debug-init给出下一个输出:

Debugger entered--Lisp error: (void-variable dbus-message-type-method-call)
  dbus-call-method(:session "org.freedesktop.Notifications" "/org/freedesktop/DBus" "org.freedesktop.DBus.Peer" "Ping")
  byte-code("\305^H!\203^S^@\306        \n^K\f\307\310^H&^G\202^Z^@\306 \n^K\f\307%?\207" [timeout bus service dbus-path-dbus dbus-interface-peer natnump dbus-call-method "Ping" :timeout] 8)
  dbus-ping(:session "org.freedesktop.Notifications")
  (and (require (quote dbus) nil t) (dbus-ping :session "org.freedesktop.Notifications"))
  (cond ((executable-find "growlnotify") (quote notify-via-growl)) ((and (require (quote dbus) nil t) (dbus-ping :session "org.freedesktop.Notifications")) (defvar notify-id 0 "Current D-Bus notification$
  (setq notify-method (cond ((executable-find "growlnotify") (quote notify-via-growl)) ((and (require (quote dbus) nil t) (dbus-ping :session "org.freedesktop.Notifications")) (defvar notify-id 0 "Curren$
  (cond ((null notify-method) (setq notify-method (cond ((executable-find "growlnotify") (quote notify-via-growl)) ((and (require (quote dbus) nil t) (dbus-ping :session "org.freedesktop.Notifications"))$
  eval-buffer(#<buffer  *load*-569235> nil "/Users/araeris/.emacs.d/packages/notify/notify.el" nil t)  ; Reading at buffer position 3614
  load-with-code-conversion("/Users/araeris/.emacs.d/packages/notify/notify.el" "/Users/araeris/.emacs.d/packages/notify/notify.el" nil t)
  require(notify)
  (if (fboundp name) nil (add-to-list (quote load-path) (concat (file-name-directory (or load-file-name (buffer-file-name))) "packages/" (symbol-name name))) (require name))
  (progn (if (fboundp name) nil (add-to-list (quote load-path) (concat (file-name-directory (or load-file-name (buffer-file-name))) "packages/" (symbol-name name))) (require name)))
  (while (consp --cl-var--) (setq name (car --cl-var--)) (progn (if (fboundp name) nil (add-to-list (quote load-path) (concat (file-name-directory (or load-file-name (buffer-file-name))) "packages/" (sym$
  (let* ((--cl-var-- packages) (name nil)) (while (consp --cl-var--) (setq name (car --cl-var--)) (progn (if (fboundp name) nil (add-to-list (quote load-path) (concat (file-name-directory (or load-file-n$
  (progn (let* ((--cl-var-- packages) (name nil)) (while (consp --cl-var--) (setq name (car --cl-var--)) (progn (if (fboundp name) nil (add-to-list (quote load-path) (concat (file-name-directory ...) "pa$
  eval-buffer(#<buffer  *load*> nil "/Users/araeris/.emacs.d/init.el" nil t)  ; Reading at buffer position 1796
  load-with-code-conversion("/Users/araeris/.emacs.d/init.el" "/Users/araeris/.emacs.d/init.el" t t)
  load("/Users/araeris/.emacs.d/init" t t)
  #[0 "^H\205\262^@     \306=\203^Q^@\307^H\310Q\202;^@ \311=\204^^^@\307^H\312Q\202;^@\313\307\314\315#\203*^@\316\202;^@\313\307\314\317#\203:^@\320\nB^R\321\202;^@\316\322^S\323^A\322\211#\210^K\322=\$
  command-line()
  normal-top-level()
Run Code Online (Sandbox Code Playgroud)

有谁知道如何处理它?

PS我已经通过自制软件安装了dbus.

lun*_*orn 5

您需要构建具有DBus支持的Emacs才能实际使用DBus.在OS X上,这是相当不寻常的,我无法看到你想在Emacs中使用DBus支持,因为在OS X上没有其他任何东西使用DBus.

但是,如果您刚刚收到通知,则不需要DBus.事实上,DBus不会在OS X上给你通知.

对于使用notify.el的 OS X上的通知,您需要Growl.也就是说,您必须在AppStore中购买Growl,或者自己构建它,并另外从http://growl.info/downloads安装Growlnotifier .

  • 然后`(setq notify-method'notify-via-growl)`(或者失败的咆哮,只需将其设置为不是''notify-via-dbus`的选项之一) (3认同)