В Win7 с Emacs24 я сталкиваюсь с проблемами, когда программы Emacs хотят открывать (pdf) файлы. Проблемы остаются, когда я активирую или деактивирую openwith-mode. Я либо получаю сообщение 'неправильный аргумент типа arrayp nil' внутри Emacs, либо запускается Acrobat Reader, но выдает сообщение об ошибке «не удается открыть / найти этот файл».
Я пытался его отладить и всегда заканчивал в файлах .el.
Кажется, что имя открываемого pdf-файла создается путем объединения абсолютного имени файла и расширения файла .pdf. Однако строка имени файла, заданная для AcroRd32, выглядит следующим образом:
AcroRd32 "c:\\absolute\file\name".pdf
Это не работает и в командной строке. Я должен изменить его (вручную) на
AcroRd32 "c:\\absolute\file\name.pdf"
или
AcroRd32 c:\\absolute\file\name.pdf
чтобы заставить это работать.
Я не знаю, считается ли это ошибкой или это проблема только для меня. Я пытался изменить код elisp на что-то вроде
(format "%s" (concat absolute-filename file-extension))
чтобы избавиться от этих двойных кавычек, но безрезультатно. И в любом случае, я не чувствую себя комфортно, возиться с базовой библиотекой, такой как files.el, и действительно трудно отладить эту библиотеку, так как она вызывается постоянно.
Может, кто-то сталкивался с такой же проблемой и нашел решение?
[Я использую GNU Emacs 24.0.91.1 (i386-mingw-nt6.1.7601) 2011-11-22 для MARVIN.]
PS 1 Test Case 1
Я получаю следующее сообщение об ошибке, когда выполняю M-x toggle-debug-on-error и затем пытаюсь открыть pdf-файл в dired:
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 действительно является символической ссылкой Windows (mklink) на папку Dropbox?
PS 2 Test Case 2
вот сообщение, которое я получаю в буфере компиляции maven, когда выполняю C-c C-s (LilyPond-command-view) в буфере ly:
-*- 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 toggle-debug-on-error.