好久不见,2025大家还好吗,新的一年,送上礼物:org-protocol firefox/chrome插件

新的(也是唯一的)你需要的 org-protocol Chrome 扩展

选择一个区域,将弹出配置的 org-protocol 来使用,通过 org-protocol 将 HTML 发送到 Emacs,如果未选择,点击任何按钮将 URL 发送到 Emacs。

paw – Get this Extension for 🦊 Firefox (en-US) → 也支持 Firefox 移动版(我经常使用 Emacs 安卓版,运行完美)。 Chrome 审核中。 在配置中设置协议,逗号分隔:paw,capture-html,wallabag,eaf-browser 不仅仅是用于 paw,你可以添加任意多的协议。例如,我添加了以下五个协议,将创建五个条目(第一个协议是默认协议): https://preview.redd.it/the-new-and-only-org-protocol-chrome-extension-you-need-v0-jjoc2zkl7lbe1.png?width=378&format=png&auto=webp&s=b9ce90afd1a39e6a369582a9d773756cdd58d291 然后你可以从 Emacs 访问 URL,标题,正文和笔记。例如,在 paw.el 中,我有:

(defun paw-org-protocol (data)
  (let* ((note (plist-get data :note))
         (url (plist-get data :url))
         (title (plist-get data :title))
         (word (plist-get data :body))
         (entry (or (car (paw-candidate-by-word word))
                    (car (paw-candidate-by-word (downcase word)))))
         (entry (if entry (append `((context . ,note)) entry) nil))
         (paw-note-target-buffer (get-buffer paw-view-note-buffer-name)))
    (paw-view-note (or entry (paw-new-entry word
                                            :origin_type "browser"
                                            :serverp 3
                                            :content (json-encode data)
                                            :origin_path url
                                            :origin_point title
                                            :lang (paw-check-language word)
                                            :context note ) )
                   ;; :buffer-name (format "*Paw: %s*" title)
                   :buffer-name paw-view-note-buffer-name
                   :display-func paw-org-protocol-display-function)
    nil))
(defun paw-org-setup-org-protocol()
  (require 'org-protocol)
  (add-to-list 'org-protocol-protocol-alist '("paw"
                                              :protocol "paw"
                                              :function paw-org-protocol
                                              :kill-client t)))

当你选择任何区域时,将显示浮动按钮。 有两个更新的 org-capture 扩展,但要么不稳定,要么使用书签小工具不太方便:https://chromewebstore.google.com/detail/org-capture/kkkjlfejijcjgjllecmnejhogpbcigdcGitHub - alphapapa/org-protocol-capture-html: Capture HTML from the browser selection into Emacs as org-mode content 如果有很多人喜欢或需要,我将推送文档和源代码,否则我只为自己制作。

一个隐藏的功能是,它支持本地 HTTP(paw-server, 是paw的一部分)服务器,我正在开发并用它来将主页分享给本地 HTTP 服务器,例如在 paw.el 中突出显示单词(突出显示按钮),将页面保存到 wallabag(保存到 Wallabag 按钮,为什么需要它?我在移动版 Firefox 中使用,而移动版 Firefox 的 wallabager 扩展无法工作)等。但源代码尚未准备好推送,我会在准备好后推送到 GitHub - chenyanming/paw: Emacs Annotation and Language Learning tool. 。 我还计划为它添加更多功能,可能会使用 React 等(我仍在学习),但不着急。也许将来。 原文在此,懒得再写一遍,直接用本插件拉选,然后使用paw翻译https://www.reddit.com/r/emacs/comments/1hvtlsa/the_new_and_only_orgprotocol_chrome_extension_you/

15 个赞

感觉是我想要的,然而我怎么文档都看不懂 :upside_down_face:

1 个赞

可以固定一个参数,使其获取到的内容始终为选中的文字吗?

note 在选中有引用的内容时,会包含其他内容

而 body 又会引用css元素

类似于 org-capture-extension 只有选中的文字

暂时只有paw是protocol的时候是纯文字,其他protocol是html,后期可以加一个配置参数

很简单的,装了就能用,配置页面配置一下protocol(s),逗号分割如果需要添加多个protocol,然后Emacs端写一个(或者多个)接受的函数加到org-protocol-protocol-alist就可以了。

还有一些额外的按钮,我在想通过配置把他们隐藏了。