emacs中用于plink(putty)的新comint mod:符号的函数定义无效

时间:2016-08-22 13:41:42

标签: emacs putty plink

我想为plink(putty)使用新的comint模式,我把代码放在init.el中,但是如果M-x run-plink,我得到以下错误:

让*:符号的函数定义为void:comint-check-proc

;; path    
(defvar plink-file-path "C:/Programme/Putty/plink.exe"     
  "Path to the program used by `run-plink'") 

;; arguments
(defvar plink-arguments '() 
  "Commandline arguments to pass to `plink'") 

;; prompt
(defvar plink-prompt-regexp "^>\s" 
"Prompt for `run-plink'.")

;; Run-plink     
(defun run-plink ()     
  "Run an inferior instance of `plink.js' inside Emacs."     
  (interactive)     
  (setq plink-buffer "*Plink*")     
  (let* ((plink-program plink-file-path) (buffer (comint-check-proc "Plink")))     
    ;; pop to the "*plink*" buffer if the process is dead, the 
    ;; buffer is missing or it's got the wrong mode. 
    (pop-to-buffer-same-window 
     (if (or buffer (not (derived-mode-p 'plink-mode)) 
             (comint-check-proc (current-buffer))) 
         (get-buffer-create (or buffer "*Plink*")) 
       (current-buffer))) 
    ;; create the comint process if there is no buffer. 
    (unless buffer 
      (apply 'make-comint-in-buffer "Plink" buffer plink-program plink-arguments) 
      (plink-mode)))) 

;; plink-mode    
(define-derived-mode plink-mode comint-mode "plink" nil "plink"     
  (setq comint-process-echoes t)     
  (setq comint-use-prompt-regexp t)     
  (setq comint-prompt-regexp plink-prompt-regexp)     
  ; ">" read-only    
  (setq comint-prompt-read-only t)     
  (set (make-local-variable 'paragraph-separate) "..'")     
  (set (make-local-variable 'paragraph-start) plink-prompt-regexp))

2 个答案:

答案 0 :(得分:0)

您尚未加载库comint。在Emacs了解comint-check-proc之前,您需要这样做。

在您的初始文件中或(require 'comint)的开头附近添加run-plink - 在尝试使用comint-check-proc之前的某个地方。

答案 1 :(得分:0)

要给这个问题一个答案,这对于标记为此问题重复的其他问题也有意义,但实际上是关于其他未加载的包,我会给出一个更一般的答案,这应该适用于其他问题同样。

通常,错误Symbol's function definition is void通常表示未加载包,但是某人/某事试图使用它。

所以一般的答案是,您可能需要在(require '<package name>)init.el,其中包名称是提供当前无效内容的包的名称。