2011-12-19 10 views
2

Win7でEmacs24を使用している場合、Emacsプログラムが(pdf)ファイルを開くときに問題が発生します。 openwith-modeを有効または無効にするときに問題は残ります。私はEmacs内で「間違った型の引数arrayp nil」というメッセージが出るか、Acrobat Readerが起動しますが、「開くことはできません/そのファイルを見つける」というエラーメッセージが表示されます。Emacs lisp - win7上のファイル名文字列の問題

私はそれをデバッグしようとしましたが、いつもfiles.elで終わりました。 開かれるPDFファイルの名前は、絶対ファイル名とファイル拡張子.pdfを連結して構成されているようです。しかし、AcroRd32に与えられたファイル名の文字列は次のように見えるように表示されます。これは、コマンドライン上では動作しません

AcroRd32 "c:\\absolute\file\name".pdf 

。私はそれを動作させるために

AcroRd32 c:\\absolute\file\name.pdf 

AcroRd32 "c:\\absolute\file\name.pdf" 

かに(手動で)それを変更する必要があります。

これはバグと見なされているのか、それとも私にとって問題であるのか分かりません。私はelispコードを

などのように変更しようとしましたが、これらの二重引用符を取り除くことはできません。とにかく、私はfiles.elのような基本的なライブラリや、それが永久に呼び出されて以来、そのライブラリをedebugするのは本当に難しいと感じることはありません。

多分誰かが同じ問題に遭遇し、解決策を見つけましたか?

[IがMARVINに2011-11-22のGNU Emacsの24.0.91.1(I386-mingwの-nt6.1.7601)を使用する。]

PS 1つのテストケース1

Iは、次のエラーメッセージを取得します私はのMxトグル・デバッグ・オン・エラーを行い、その後の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) 

と、次のメッセージ:

Openwith mode enabled 
find-file-noselect-1: Wrong type argument: arrayp, nil 

私の.emacs.dは本当にDropboxfolderへのWindowsシンボリックリンク(mklink)ですか?

PSここでは2テスト・ケース2

は、LYバッファでCcのCS(のLilyPond-コマンドビュー)を行っているとき、私は、Mavenのコンパイルバッファに取得するメッセージです。

-*- 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 

メッセージバッファでは、私は、私は、MXのトグル・デバッグ・オン・エラーをしましたが、このエラーは、デバッガをトリガしません

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

を見つけます。

+0

[このチップ](http://www.emacswiki.org/emacs/Sunrise_Commander_Tips#ExternalApps)は役に立ちますか? Emacsのリリース版でこの問題がありますか?これを再現する方法を説明した完全なテストケースを教えてください。 –

+0

私はそのパッチをopenwith.elに適用しましたが、これまでと同じエラーはありません。実際には2つのテストケースがあります:dired(fまたはCm)でpdfファイルを開く - > "間違った型引数:arrayp、nil"を与え、lilypond-modeでpdfファイルを開く - > Acrobat Readerを開き、エラーメッセージを表示します、 "ファイルを開くことができません"のようなものです。 – Thorsten

答えて

2

私には、バグのような音がします。報告することを検討してください:M-x report-emacs-bug

知らんなぜマイケル・H.はOpenWithに関する先端でSunrise Commanderページにあなたを送りました。おそらく私はあなたがそれらのパッケージの1つを使用することを示すあなたの質問に何かを見逃していますか?

私はEmacsのバグを報告することをお勧めします。また、ファイルタイプなどに関連するWindowsアプリを開く方法についてもっと詳しく知りたい場合は、this pageに相談することをお勧めします。

+0

さて、私はopenwith-modeを使っていますが、それはLinux上でうまく動作します。私はそれを報告しようとします - 私の最初のバグレポート;) – Thorsten

+0

これは一貫性のある単一のバグですか分かりません。これらは2つの別々の問題かもしれません。 WindowsでEmacs 23.3.1で 'C-m'を使ってPDFを開くと' doc-view-mode'に入り、 'wrong-type-argument stringp nil'を取得します。しかし、Acrobatとは関係ありません。私は、Windows上でdoc-view-modeを動作させるために必要なすべてのライブラリとユーティリティを設定しているかどうかはわかりません。 –

+0

'emacs -Q'で始まる、一貫性のあるレシピを再現することを含む、可能な限り多くの情報を提供するバグを報告してください。 Emacsのメンテナーはバグがあるかどうかを判断します(または2つ...)。 – Drew

0

これはopenwith.elに問題があると思われるので、openwith.elはEmacsには含まれていないので、Emacsのバグレポートで多くの助けを得ることはできません。

私はLinux上にある同様のエラーを発見し、find-file-noselectを調整しない(より詳しくはemacs.sxeのページを参照してください) "クリーナー"な方が良いと判断しました。 OpenWith wiki pageは、グルーコードのあまり人気の少しに私を指摘

このパッケージのrun-associated-programとうまく統合されていません通常のEmacsのワークフローですが、ここに​​と統合する方法もあります(上記のリンクにも記載されています)。

(require 'run-assoc) 
(setq associated-program-alist 
     '(("evince" "\\.pdf$") 
     ("play" "\\.mp3$"))) 

(defun helm-find-files-maybe-run-assoc (orig-fun &rest args) 
    (let ((sel (helm-get-selection))) 
    (if (string-match (mapconcat 
       (lambda (x) (second x)) 
       associated-program-alist "\\|") 
       (helm-get-selection)) 
    (run-associated-program sel) 
     (apply orig-fun args)))) 

(advice-add 'helm-execute-selection-action 
     :around #'helm-find-files-maybe-run-assoc)