任何人都可以帮我打开一个 *.pdf 使用 Skim 以便它有焦点。Skim 可以正确打开文件,但仍保留在后台。我在 OSX 机器上使用最新版本的 Emacs Trunk。
如果我在 Skim 的绝对路径之前插入“open -a”或“open -o”之类的内容,那么 Emacs 会抱怨没有该名称的应用程序。我尝试在文件名后放置“-o”,但这没有任何影响。
以下代码适用于 Wanderlust,但我认为这start-process
是通用的。
(eval-after-load "mime-view"
'(progn
(ctree-set-calist-strictly
'mime-acting-condition
'((mode . "play")
(type . application)(subtype . pdf)
(method . lawlist-mime-view)))))
(defun lawlist-mime-view (&optional a b)
(let* ((entity (get-text-property (point) 'mime-view-entity))
(filename (mime-entity-safe-filename entity)))
(mime-write-entity-content entity (concat "/tmp/" filename))
(process-kill-without-query
(start-process "hello-world" nil "/Applications/Skim.app/Contents/MacOS/Skim" filename))))
编辑——1:这是一个帮助诊断问题的简单函数。我创建了一个 *.pdf 文件并将其保存为"/tmp/test.pdf"
.
(defun test-start-process ()
(interactive)
(start-process "hello-world" nil "open" "-a Skim" "/tmp/test.pdf"))
编辑——2:感谢来自——非常感谢的帮助,这是修改后的工作代码tungd
!
(eval-after-load "mime-view"
'(progn
(ctree-set-calist-strictly
'mime-acting-condition
'((mode . "play")
(type . application)(subtype . pdf)
(method . lawlist-mime-view)))))
(defun lawlist-mime-view (&optional a b)
(let* (
(entity (get-text-property (point) 'mime-view-entity))
(name (mime-entity-safe-filename entity))
(filename (concat "/tmp/" name)) )
(mime-write-entity-content entity filename)
(start-process "hello-world" nil "open" "-a" "Skim" filename)))