版上了解到org-capture能做抓取功能,我很想在一个阅读电子书时用orgmode org-capture
快速抓取记录,无奈目前只是orgmode菜鸟使用者,望版上大拿能指点一二,具体需求如下:
- 环境是debian10,主力KDE桌面
- 用任何pdf电子书阅读器时,选中想要摘录的文字(linux环境默认会放入剪贴板)
- 键盘输入一个快捷键
- 文字作为一条新记录自动累计加入到一个特定org文件
- 整个过程中为了避免注意力干扰不需要打开emacs
- 后续再打开特定org文件做复习整理
类似功能在firefox和chrome中有grasp插件,我平时在抓取网页内容时使用较多,想延续使用习惯。
网上有不少介绍org-capture的,但是基本上都是打开emacs,需要输入选择模板之类的,对
阅读过程中注意力有一定干扰。
而且第三部有介绍是在KDE下设快捷键,在KDE PLASMA环境里设置多次不成功。
3 中键盘定义快捷键的时候其实可以直接把选择模板的工作做了。
然后想要避免打开 Emacs 我解决的方法很 dirty,就是特定 capture :immediate-finish t
,然后 capture 完自动切换回上个应用,不过会闪一下的样子。
(defun supress-frame-splitting (&rest r)
(let ((frame-name (frame-parameter nil 'name)))
(when (or (equal "capture" frame-name)
(equal "agenda" frame-name))
(delete-other-windows))))
(defun org-capture-finalize@after (&rest r)
(when (equal "l" (plist-get org-capture-plist :key))
(run-at-time 0 nil #'osx-switch-back-to-previous-application))
(when (equal "capture" (frame-parameter nil 'name))
(delete-frame)))
(defun org-agenda-finalize@after (&rest r)
(when (equal "agenda" (frame-parameter nil 'name))
(delete-frame)))
(defun org-capture-select-template@around (org-capture-select-template &optional keys)
(let ((res (ignore-errors (funcall org-capture-select-template keys))))
(unless res (setq res "q"))
(when (and (equal "capture" (frame-parameter nil 'name))
(equal "q" res))
(delete-frame))
res))
(defun org-agenda-get-restriction-and-command@around (org-agenda-get-restriction-and-command prefix-descriptions)
(let ((res (ignore-errors (funcall org-agenda-get-restriction-and-command prefix-descriptions))))
(when (and (not res)
(equal "agenda" (frame-parameter nil 'name)))
(delete-frame))
res))
(advice-add #'org-agenda-quit :before #'org-save-all-org-buffers)
(advice-add #'org-agenda-quit :after #'org-agenda-finalize@after)
(advice-add #'org-agenda-exit :after #'org-agenda-finalize@after)
(advice-add #'org-agenda-get-restriction-and-command :around #'org-agenda-get-restriction-and-command@around)
(advice-add #'org-capture-finalize :after #'org-capture-finalize@after)
(advice-add #'org-capture-select-template :around #'org-capture-select-template@around)
(advice-add #'org-refile :after #'org-save-all-org-buffers)
(advice-add #'org-switch-to-buffer-other-window :after #'supress-frame-splitting)
1 个赞
发现一个变通的方式,也许是更合理的方式
用org-pdf-tools,装好后整个pdf直接显示在emacs的一个buffer里,记笔记自然会方便多了。
网上搜索的时候还有人提到和org-note结合,等试用过后再来