File Emacs lisp-win7上的文件名字符串存在问题

File Emacs lisp-win7上的文件名字符串存在问题,file,pdf,windows-7,emacs,elisp,File,Pdf,Windows 7,Emacs,Elisp,在使用Emacs24的Win7上,当Emacs程序想要打开(pdf)文件时,我会遇到问题。当我激活或停用openwith模式时,问题仍然存在。我在Emacs中收到一条“错误类型参数arrayp nil”消息,或者Acrobat Reader已启动,但给出了一条错误消息“无法打开/找到该文件” 我试着调试它,结果总是出现在files.el中。 似乎要打开的pdf文件的名称是通过连接绝对文件名和文件扩展名.pdf来构造的。但是,提供给AcroRd32的文件名字符串如下所示: AcroRd32 "c:

在使用Emacs24的Win7上,当Emacs程序想要打开(pdf)文件时,我会遇到问题。当我激活或停用openwith模式时,问题仍然存在。我在Emacs中收到一条“错误类型参数arrayp nil”消息,或者Acrobat Reader已启动,但给出了一条错误消息“无法打开/找到该文件”

我试着调试它,结果总是出现在files.el中。 似乎要打开的pdf文件的名称是通过连接绝对文件名和文件扩展名.pdf来构造的。但是,提供给AcroRd32的文件名字符串如下所示:

AcroRd32 "c:\\absolute\file\name".pdf
这在命令行上也不起作用。我必须(手动)将其更改为

让它工作

我不知道这是否被认为是一个bug,或者这是否只是我的问题。我试图将elisp代码更改为

(format "%s" (concat absolute-filename file-extension))
摆脱那些双引号,但没有用。不管怎么说,我不喜欢在files.el这样的基本库中乱搞,而且很难对该库进行调试,因为它会被永久调用

也许有人遇到了同样的问题并找到了解决方案

[我在马文上使用2011-11-22的GNU Emacs 24.0.91.1(i386-mingw-nt6.1.7601)。]

PS 1测试用例1

当我执行M-x toggle debug on error,然后尝试在dired中打开pdf文件时,会收到以下错误消息:

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  file-truename(nil)
  find-file-noselect-1(#<buffer test.pdf<4>> "~/.emacs.d/org/projects/sandbox/test.pdf" nil nil "~/.emacs.d/org/projects/sandbox/test.pdf" ((2816 7 . 27468) (16087 . 35227)))
  find-file-noselect("c:/Users/tj2/.emacs.d/org/projects/sandbox/test.pdf" nil nil nil)
  find-file("c:/Users/tj2/.emacs.d/org/projects/sandbox/test.pdf")
  dired-find-file()
  call-interactively(dired-find-file nil nil)
my.emacs.d是否真的是Dropboxfolder的windows符号链接(mklink)

PS 2测试用例2

以下是我在maven编译缓冲区中得到的消息,当在一个ly缓冲区中执行C-C C-s(LilyPond命令视图)时:

-*- mode: compilation; default-directory: "~/.emacs.d/org/projects/sandbox/" -*-
Compilation started at Tue Dec 20 09:16:28

AcroRd32 "c:/Users/tj2/.emacs.d/org/projects/sandbox/2test".pdf

Compilation exited abnormally with code 1 at Tue Dec 20 09:16:35
在我找到的消息缓冲区中

Compilation exited abnormally with code 1
Error during redisplay: (invalid-regexp "Unmatched ( or \\(")

此错误不会触发调试器,尽管我在错误时切换了M-x调试

对我来说,听起来像个虫子。考虑报告它:<代码> M X报告Emacs Bug < /C> > < /P> 不知道为什么Michael H.给你发了一个关于。也许我在你的问题中遗漏了一些东西,你指出你使用了其中的一个软件包


我建议报告一个Emacs错误。如果你想了解更多关于打开与文件类型相关的Windows应用程序的信息,那么我建议你咨询。

这似乎是openwith.el的问题,因此我认为你不会从Emacs错误报告中得到太多帮助,因为openwith.el不是Emacs的一部分

我发现了一个类似的错误(我在Linux上),并决定最好使用一个不需要调整的“更干净”的替代方案(请参阅emacs.sxe上的页面了解原因)。这让我想到了一个不太流行的胶水代码

  • (代码)
  • (文件)
默认情况下,此软件包的
运行关联程序
未与通常的Emacs工作流很好地集成,但下面是如何将其与
helm find files
集成的方法(也在上面的链接中进行了说明)

(需要“联合运行”)
(setq关联程序)
“(“证据”\\.pdf$”)
(“播放”“\\.mp3$”)
(defun头盔查找文件可能会运行assoc(orig fun&rest args)
(让((选择(掌舵获得选择)))
(如果字符串匹配(mapconcat
(lambda(x)(第二个x))
关联程序列表“\\\\”)
(掌舵选择)
(运行相关程序sel)
(应用源代码参数)))
(建议添加“掌舵执行选择动作”
:大约#'helm-find-files-maybe-run-assoc)

有帮助吗?在Emacs的发布版本中是否存在此问题?你能给出一个完整的测试用例来描述如何复制它吗?我将这个补丁应用到openwith.el,但没有用-和以前一样的错误。实际上有两个测试用例:在dired中打开一个pdf文件(使用f或C-m)->给出“错误的类型参数:arrayp,nil”,在lilypond模式下打开一个pdf文件->打开一个带有错误消息的Acrobat Reader,类似于“无法打开文件”。好吧,我使用openwith模式,它在linux上运行良好。我将尝试报告它-我的第一个bug报告;)我不确定这是一个连贯的错误。这可能是两个不同的问题。当我在Windows上的Emacs 23.3.1上用
C-m
打开PDF时,它会进入
doc视图模式
,在那里我得到
错误的类型参数stringp nil
。不过,这和杂技演员无关。不过,我不确定我是否已经设置了使文档视图模式在Windows上工作所需的所有库和实用程序。报告错误,提供尽可能多的您认为可能相关的信息,最好包括一个连贯的复制方法,从
emacs-Q
开始。Emacs维护人员将确定是否存在一个bug(或两个…)。我为此做了两个bug报告。谢谢你们两位的帮助。顺便说一句,我可以在Emacs 23.3.1上确认文档视图问题。(据我记忆所及,我现在正在使用Emacs24)。
Openwith mode enabled
find-file-noselect-1: Wrong type argument: arrayp, nil
-*- mode: compilation; default-directory: "~/.emacs.d/org/projects/sandbox/" -*-
Compilation started at Tue Dec 20 09:16:28

AcroRd32 "c:/Users/tj2/.emacs.d/org/projects/sandbox/2test".pdf

Compilation exited abnormally with code 1 at Tue Dec 20 09:16:35
Compilation exited abnormally with code 1
Error during redisplay: (invalid-regexp "Unmatched ( or \\(")