2013-12-17 33 views
3

我無法訪問我通常的方式遠程文件:當我試圖使用tramp訪問遠程文件時,如何解決「錯誤類型參數:listp」錯誤?

C-X C-F [server]:[path][file]

和我拋出這個錯誤: Wrong Type Argument: listp, [[server]:[path][file]

我什至不知道如何進一步調試這一點。

任何幫助表示讚賞。

編輯:嘗試調試時

輸出:

Debugger entered: nil 
(progn (debug) (ido-mode t) (progn (ad-add-advice (quote completing-read) (quote (foo nil 
t (advice lambda nil (if (boundp ...) ad-do-it (setq ad-return-value ...))))) (quote 
around) (quote nil)) (ad-activate (quote completing-read) nil) (quote completing-read)) (define-key global-map [(meta 120)] (function (lambda nil (interactive) (call-interactively 
(intern (ido-completing-read "M-x " (all-completions "" obarray ...)))))))) 
(if (fboundp (quote ido-mode)) (progn (debug) (ido-mode t) (progn (ad-add-advice (quote 
completing-read) (quote (foo nil t (advice lambda nil (if ... ad-do-it ...)))) (quote 
around) (quote nil)) (ad-activate (quote completing-read) nil) (quote completing-read)) 
(define-key global-map [(meta 120)] (function (lambda nil (interactive) (call- 
interactively (intern (ido-completing-read "M-x " ...)))))))) 
eval-buffer() ; Reading at buffer position 16103 
call-interactively(eval-buffer) 
(lambda nil (interactive) (call-interactively (intern (ido-completing-read "M-x " (all- 
completions "" obarray (quote commandp))))))() 
call-interactively((lambda nil (interactive) (call-interactively (intern (ido-completing- 
read "M-x " (all-completions "" obarray (quote commandp)))))) nil nil) 

recursive-edit() 
debug(debug) 
implement-debug-on-entry() 
* ido-find-file() 
call-interactively(ido-find-file nil nil) 

這從我的init.el:

(require 'ido) 
(if (fboundp 'ido-mode) 
(progn 
    (debug) 
    (ido-mode t) 
    (defadvice completing-read 
    (around foo activate) 
    (if (boundp 'ido-cur-list) 
     ad-do-it 
     (setq ad-return-value 
      (ido-completing-read 
      prompt 
      (all-completions "" collection predicate) 
      nil require-match initial-input hist def)))) 
    (define-key global-map [(meta ?x)] 
    (lambda() 
     (interactive) 
     (call-interactively 
     (intern 
     (ido-completing-read "M-x " (all-completions "" obarray 'commandp)))))))) 

回答

1

檢查什麼命令C-x C-f勢必(使用C-h k)。它是標準綁定find-file? (聽起來不像。)

如果不是,請檢查它的interactive規範。該命令期望收到一個列表作爲參數,而它正在接收(看起來像)一個字符串。

這是interactive規範的find-file

(interactive 
(find-file-read-args "Find file: " (confirm-nonexistent-file-or-buffer))) 

如果interactive規範的C-x C-f命令,像這樣的,有一個非字符串作爲它的參數,那麼您可以M-x debug-on-entry THE-FUNCTION,其中THE-FUNCTION是要求的參數的函數(find-file-read-args,在find-file的情況下),或包裹這樣的說法,使得調試器被調用:

(progn (debug) (WHATEVER-WAS-THERE-BEFORE)) 

無論採用哪種方式,調試器都會打開讀取文件名的交互式部分,並且您可以通過調試器查看出了什麼問題。

但可能你可以通過檢查代碼 - interactive規範來找出問題。你的命令的參數(不管它是什麼)預計是一個列表,但它是一個字符串。

我會從看到本地文件名會發生什麼開始。你也有錯誤嗎?

我注意到的另一件事是錯誤報告額外[,在你說你輸入作爲輸入的前面。這應該提供一個線索。你認爲它正在閱讀的不是它讀過的內容。

+0

哎呀對不起,我打了複製粘貼後,然後粘貼在那裏,然後用盡編輯... 讓我再試一次... 嗨德魯,並感謝您的快速和詳細的迴應。 C-x C-f運行命令ido-find-file,因爲我啓用了ido。 我在哪裏可以找到interactive規格你認爲?,它內置到emacs中,但我不確定在哪裏尋找。 – techquila

+0

'ido-find-file'在文件「ido.el」中。它的'交互式'規範只是'(交互式)':它不需要任何參數。粗略看一下你的調試輸出表明你正在使用的東西已經建議「完成讀取」(並且AFAICT,Ido不這麼做)。我建議你從那裏開始:在你加載的代碼或代碼中尋找'completion-read'的defadvice。嘗試從'emacs -Q'開始重現問題,即沒有初始化文件 - 只需從init文件中添加需要的內容來重現問題。 – Drew

+0

嗨德魯,再次感謝您花時間回覆。 我似乎沒有將ido.el作爲它的內置於我的emacs版本。 我的init.el包含你說的代碼,並且一直有,所以我不確定爲什麼我現在只有這個問題。 當我刪除除了(需要'IDO)的行以外的所有東西,我失去了流氓功能。 我不知道這可能是ido和yasnippet之間的衝突嗎? – techquila

相關問題