Emacs中的DBus错误

6

我正在尝试在OS X上使用notify.el,但每次都会出现以下错误:

Symbol's value as variable is void: dbus-message-type-method-call

运行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()

有人知道如何处理它吗?

附:我已经通过homebrew安装了dbus。

1个回答

6
你需要使用支持DBus的Emacs才能实际使用DBus。在OS X上,这相当不寻常,我无法想象你为什么要在Emacs中使用DBus支持,因为在OS X上没有其他东西使用DBus。
但如果你只是想要通知,你不需要DBus。事实上,在OS X上,DBus不会给你通知。
要在OS X上使用notify.el进行通知,你需要Growl。也就是说,你必须购买AppStore中的Growl,或者自己构建它,并另外安装http://growl.info/downloads中的Growlnotifier。

5
然后执行(setq notify-method 'notify-via-growl)(如果无法使用Growl,则将其设置为除'notify-via-dbus以外的选项之一)。 - phils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接