emacs 中用于 plink (putty) 的新 comint mod:Symbol 的函数定义无效
new comint mod in emacs for plink (putty): Symbol's function definition is void
我想为 plink(putty) 使用新的 comint 模式,我把代码放在 init.el,但是如果 M-x 运行-plink,我得到以下错误:
let*: Symbol 的函数定义无效: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))
您还没有加载库 comint
。您需要在 Emacs 知道 comint-check-proc
.
之前执行此操作
添加 (require 'comint)
,在您的初始文件中或 run-plink
的开头附近 - 在它尝试使用 comint-check-proc
.
之前的某处
为了给这个问题一个答案,这对其他标记为重复的问题也有意义,但实际上是关于其他包没有加载的,我会给出一个更笼统的答案,应该适用于还有其他问题。
一般来说,错误 Symbol's function definition is void
通常表示未加载包,但随后 someone/something 尝试使用它。
所以一般的答案,你可能需要在你的 init.el
中 (require '<package name>)
,其中包名称是提供当前无效内容的包的名称。
我想为 plink(putty) 使用新的 comint 模式,我把代码放在 init.el,但是如果 M-x 运行-plink,我得到以下错误:
let*: Symbol 的函数定义无效: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))
您还没有加载库 comint
。您需要在 Emacs 知道 comint-check-proc
.
添加 (require 'comint)
,在您的初始文件中或 run-plink
的开头附近 - 在它尝试使用 comint-check-proc
.
为了给这个问题一个答案,这对其他标记为重复的问题也有意义,但实际上是关于其他包没有加载的,我会给出一个更笼统的答案,应该适用于还有其他问题。
一般来说,错误 Symbol's function definition is void
通常表示未加载包,但随后 someone/something 尝试使用它。
所以一般的答案,你可能需要在你的 init.el
中 (require '<package name>)
,其中包名称是提供当前无效内容的包的名称。