让org-protocol在Firefox Quantum上运行 - “没有服务器缓冲区可以编辑”错误

时间:2017-12-05 07:08:15

标签: firefox emacs org-mode

所以我试图让org-protocol第一次在Firefox Quantum上工作。我通过各种博客文章和文档,但仍然无法通过这个特定的错误

Greedy org-protocol handler.  Killing client. 
No server buffers remain to edit.

所以我在Ubuntu Linux x64 16.04上使用emacs 25.3,以及新发布的Firefox Quantum。

我试图以两种方式做到这一点。

  1. 通过创建桌面条目然后在Firefox中设置bookmarklet来设置org-protocol的传统方法。

  2. 在Firefox中使用org-capture插件。

  3. 两者都给了我同样的错误。

    对于方法1,我遵循documentation以及非常有用的stackexchange帖子:

    How to make org-protocol work?

    还有这个有用的博客post

    这是我做的:

    一个。我创建了一个桌面条目:

    [Desktop Entry]
    Name=org-protocol
    Exec=emacsclient -n %u
    Type=Application
    Terminal=false
    Categories=System;
    MimeType=x-scheme-handler/org-protocol;
    

    B中。将配置添加到.spacemacs文件。

    我添加了一行:

    (server-start)
    (require 'org-protocol)
    

    然后我在.spacemacs文件中设置了捕获模板:

    (setq org-capture-templates
          (quote 
                  ("p" "org-protocol" entry (file+headline "~/Dropbox/config/org/refile/refile.org")
                    "* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%:initial\n#+END_QUOTE\n\n\n%?")
                  ("l" "org-protocol link" entry (file "~/Dropbox/config/org/refile/refile.org")
                    "* %? [[%:link][%:description]] \nCaptured On: %U")
    ... Additional templates.
    ))
    

    ℃。然后我创建了带有位置的书签:

    javascript:location.href='org-protocol://store-link://l/'+encodeURIComponent(location.href)
    
    javascript:location.href='org-protocol://capture://l/'+encodeURIComponent(location.href)+'/'+encodeURIComponent(document.title)+'/'+encodeURIComponent(window.getSelection())
    

    在完成所有这些之后,我仍然会收到上面引用的错误消息。

    其次,我在Firefox中尝试了org-capture加载项。但它也没有用。

    不确定错误的原因是什么。任何帮助表示赞赏。

    在其他阅读中,如果Greedy模板中存在问题,则会出现此org-capture错误,但我没有发现任何错误。

2 个答案:

答案 0 :(得分:1)

我过去也遇到了一些麻烦。

现在我使用的解决方案是firefox add-on - >您可以直接从Firefox安装它。这很简单,在我看来,它开箱即用(Debian发行版,Firefox 52.5.0)。我不知道它是否适用于Firefox Quantum。

像往常一样配置

org-protocol。就我而言:

cat > "${HOME}/.local/share/applications/org-protocol.desktop" << EOF
[Desktop Entry]
Name=org-protocol
Exec=emacsclient %u
Type=Application
Terminal=false
Categories=System;
MimeType=x-scheme-handler/org-protocol;
EOF

然后

update-desktop-database ~/.local/share/applications/

在您的Emacs init.el文件中:

(server-start)
(require 'org-protocol)

(setq org-capture-templates `(
    ("p" "Protocol" entry (file+headline ,(concat org-directory "notes.org") "Inbox")
        "* %^{Title}\nSource: %u, %c\n #+BEGIN_QUOTE\n%i\n#+END_QUOTE\n\n\n%?")
    ("L" "Protocol Link" entry (file+headline ,(concat org-directory "notes.org") "Inbox")
        "* %? [[%:link][%:description]] \nCaptured On: %U")
))

这就是全部。在我的配置下它可以工作,我希望你的相同。

额外:前段时间我提出了一个小模板改进来处理ArXiv.org标题,详细信息如下:https://github.com/sprig/org-capture-extension/issues/37

答案 1 :(得分:1)

好的,这是一个棘手的解决方案。问题是由use-package emacs包中最近的一些更改引起的。该问题记录在github上。

https://github.com/jwiegley/use-package/issues/557

让我告诉你我是如何找到这个问题的,以防其他人注册类似的问题。

我按照README中的建议设置了org-capture-extension,但是我在emacs消息缓冲区中不断收到以下错误(如下所示)。我在Ubuntu 16.04x64上使用Emacs 25.3和新的Firefox Quantum浏览器以及Chrome。

所以我尝试使用以下命令手动通过emacsclient传递链接

emacsclient -n "org-protocol:///capture?url=http%3a%2f%2fduckduckgo%2ecom&title=DuckDuckGo"

但是我一直在Messages缓冲区中得到这个奇怪的响应,其中warning399和警告931之间存在循环行为。

condition-case: Symbol’s value as variable is void: use-package--warning349
condition-case: Symbol’s value as variable is void: use-package--warning931
condition-case: Symbol’s value as variable is void: use-package--warning349
condition-case: Symbol’s value as variable is void: use-package--warning931
condition-case: Symbol’s value as variable is void: use-package--warning349

解决方案记录在github问题中,但我不认为用户应该手动实现修复。相反,我认为作者将进行更改并将其合并为master - 此时用户可以重新下载并安装use-package包。