2016-08-22 5 views
2

Я хочу использовать новый режим comint для plink (putty), я помещаю код в init.el, но если Mx run-plink, i получил под ошибкой:новый comint mod в emacs для plink (putty): определение функции символа пустое

LET *: определение функции Symbol является недействительным: Comint-чек-прок

;; 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)) 
+0

Возможно, вы должны перенести это в отдельный файл и зарезервировать 'init.el' строго для своих личных предпочтений. В руководстве Emacs есть дополнительные рекомендации по написанию модульного кода. Начало, например. на https://www.gnu.org/software/emacs/manual/html_node/eintr/Simple-Extension.html – tripleee

+0

спасибо. я думаю, код работает без отдельного файла. в любом случае, я должен изучить некоторые elisp. –

+0

Уверенный, что его можно снять, это просто серьезное неудобство, которое вы, вероятно, хотите избежать. – tripleee

ответ

0

Вы не загрузили библиотеку comint. Вам нужно сделать это, прежде чем Emacs сможет узнать о comint-check-proc.

Добавить (require 'comint) либо в ваш файл инициализации, либо в начале run-plink - где-то перед тем, как он попытается использовать comint-check-proc.

+0

Привет, Дрю, спасибо. Код работает, но я получил «Text is read-only » и «comint-send-input: текущий буфер не имеет никакого процесса». Нет приглашающего символа, и я не могу ввести. Я просто хочу иметь новый режим comint для plink (putty). Я новичок в emacs. Не могли бы вы увидеть это снова? –

+0

Извините, только один вопрос за вопрос, пожалуйста. Пожалуйста, отправляйте любые другие вопросы отдельно. Это сайт Q & A, а не сайт здесь-мой-код-пожалуйста-debug-it-for-me. Постарайтесь держать вопросы узкими. Спасибо. – Drew

+0

Спасибо. Я отправляю отдельно. –