[英]idris-mode – Buffer has no process
我是emacs的新手(來自vim,我無法讓idris-vim工作)並通過el-get安裝這些軟件包:
ace-jump-mode installed A quick cursor location minor mode for emacs.
el-get installed Manage the external elisp bits and pieces you depend upon.
evil-leader installed Add <leader> shortcuts to Evil, the extensible vim emulation layer
evil-numbers installed Increment/decrement numbers in Evil, the extensible vim emulation layer. Like C-a/C-x in vim. After installation, you will need to add a key-binding for evil-numbers. For example: (define-key evil-normal-state-map (kbd "C-c +") 'evil-numbers/inc-at-pt) (define-key evil-normal-state-map (kbd "C-c -") 'evil-numbers/dec-at-pt)
evil-surround installed Emulate Tim Pope's surround.vim in evil, the extensible vim emulation layer for emacs
evil installed Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions.
goto-chg installed Goto the point of the most recent edit in the buffer.
haskell-mode installed A Haskell editing mode
idris-mode installed Major mode for the Idris language
j-mode installed Emacs major mode for editing J code.
linum-relative installed Display relative line number in the left margin
undo-tree installed Treat undo history as a tree
我的〜/ .emacs.d / init.el看起來像這樣:
(add-to-list 'load-path "~/.emacs.d/")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict")
(ac-config-default)
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1)))
(setq mouse-wheel-progressive-speed nil)
(setq mouse-wheel-f 't)
(setq scroll-s 1)
(add-to-list 'load-path "~/.emacs.d/lojban")
(autoload 'lojban-parse-region "lojban" nil t)
(autoload 'lojban-mode "lojban-mode" nil t)
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
(unless (require 'el-get nil 'noerror)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.github.com/dimitri/el-get/master/el-get-install.el")
(goto-char (point-max))
(eval-print-last-sexp)))
(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync)
(add-to-list 'load-path "~/.emacs.d/j-mode/")
(autoload 'j-mode "j-mode.el" "Major mode for editing J files" t)
(add-to-list 'auto-mode-alist '("\\.ij[rstp]$" . j-mode))
;(custom-set-face
; '(j-verb-face ((t (:foreground "cornflower blue"))))
; '(j-adverb-face ((t (:foreground "goldenrod"))))
; '(j-conjunction-face ((t (:foreground "olive drab"))))
; '(j-other-face ((t (:foreground "Black")))))
(require 'evil-leader)
(global-evil-leader-mode)
(add-to-list 'load-path "~/.emacs.d/evil")
(require 'evil)
(evil-mode 1)
;(require 'lalopmak-evil)
(define-key evil-normal-state-map "," 'evil-ex)
(define-key evil-motion-state-map ":" 'evil-repeat-find-char-reverse)
(define-key evil-window-map "j" 'evil-window-left)
(define-key evil-window-map "J" 'evil-window-move-far-left)
(define-key evil-window-map "k" 'evil-window-down)
(define-key evil-window-map "K" 'evil-window-move-very-bottom)
(define-key evil-window-map "h" 'evil-window-up)
(define-key evil-window-map "H" 'evil-window-move-very-top)
(define-key evil-motion-state-map "j" 'evil-backward-char)
(define-key evil-motion-state-map "J" 'evil-window-top)
(define-key evil-motion-state-map "k" 'evil-next-line)
(define-key evil-motion-state-map "h" 'evil-previous-line)
(define-key evil-motion-state-map (kbd "C-n") 'evil-scroll-line-up)
(define-key evil-normal-state-map (kbd "M-x") 'execute-extended-command)
由於我使用邪惡,而idris模式具有與邪惡一起工作的綁定,我試圖遵循vim的案例分裂示例 。 從一個新的會議開始,這是發生的事情:
\\d
。 Buffer vadd.idr has no process
。 我也嘗試了REPL,輸入插入模式。 按Enter鍵后,我得到Buffer *idris-repl* has no process
,也沒有進一步發生。 在Linux shell中, echo $PATH
生成/home/james/bin /home/james/.cabal/bin /home/james/bin /usr/local/sbin /usr/local/bin /usr/bin /usr/bin/vendor_perl /usr/bin/core_perl
, idris
按預期在shell中運行。
退出emacs時(通過幾個ZZ
),我被告知存在活動進程。 這是我顯示的進程列表:
Process Status Buffer TTY Command
idris run *idris-process* /dev/pts/3 idris --ideslave-socket
因為它可能是連接的,所以這是我使用idris-vim從vim中的同一文件獲得的錯誤:
:call IdrisReload(0)
"vadd.idr" 3L, 62C written
Uncaught error: connect: does not exist (Connection refused)
Press ENTER or type command to continue
我使用ex命令,因為領導者綁定不起作用(我有另一個問題)。
很抱歉提出這么長的問題。 我想要包含最相關的信息,即使這意味着添加不相關的東西。
編輯 :更多; 我找到了調試器(從菜單中設置“Enter Errorger on Error”)。
我按下\\d
,然后在緩沖區中看到這個:
Debugger entered--Lisp error: (file-error "make client process failed" "connection refused" :name "Idris Ideslave" :buffer "*idris-connection*" :host "127.0.0.1" :service 0 :nowait nil)
make-network-process(:name "Idris Ideslave" :buffer "*idris-connection*" :host "127.0.0.1" :service 0 :nowait nil)
open-network-stream("Idris Ideslave" "*idris-connection*" "127.0.0.1" 0)
idris-connect(0)
idris-process-filter(" ____ __ _ \n / _/___/ /____(_)____ \n / // __ / ___/ / ___/ Version 0.9.12\n _/ // /_/ / / / (__ ) http://www.idris-lang.org/ \n /___/\\__,_/_/ /_/____/ Type :? for help \n\n")
comint-output-filter(#<process idris> " ____ __ _ \n / _/___/ /____(_)____ \n / // __ / ___/ / ___/ Version 0.9.12\n _/ // /_/ / / / (__ ) http://www.idris-lang.org/ \n /___/\\__,_/_/ /_/____/ Type :? for help \n\n")
accept-process-output(#<process idris> 3)
idris-run()
idris-ensure-process-and-repl-buffer()
idris-load-file-sync()
idris-add-clause(nil)
call-interactively(idris-add-clause nil nil
並在前命令行中看到
make client process failed: connection refused, :name, Idris Ideslave, :buffer, *idris-connection*, :host, 127.0.0.1, :service, 0, :nowait, nil
我不知道它想要做什么。
編輯 :這是vadd.idr緩沖區狀態行的右端(正確的術語?):
(Idris (Not loaded) ElDoc Ind Undo-Tree)
Not loaded
看起來令人擔憂,但我不知道更多關於它。
編輯 :回到Vim問題,我跑了
$ vim -V9vimlog vadd.idr
:call IdrisReload(0)
ZZ
$ ack idris vimlog
日志中的所有內容看起來都很正常,直到結束(由錯誤引起):
Calling shell to execute: "(idris --check vadd.idr) &> /tmp/vbKELys/1"
Error detected while processing function <SNR>38_BufWritePostHook..<SNR>38_UpdateErrors..<SNR>38_CacheErrors..16..15..SyntaxCheckers_idris_idris_GetLocList..SyntasticMake:
Calling shell to execute: "(idris --client ':l /mnt/sda9/home/james/Documents/idris/vadd.idr') >/tmp/vbKELys/2 2>&1"
所以,我發現日志文件包含
Calling shell to execute: "(idris --check vadd.idr) &> /tmp/vbKELys/1"
Error detected while processing function <SNR>38_BufWritePostHook..<SNR>38_UpdateErrors..<SNR>38_CacheErrors..16..15..SyntaxCheckers_idris_idris_GetLocList..SyntasticMake:
line 66:
E380: At bottom of quickfix stack
error list 1 of 1; 1 errors
Calling shell to execute: "(idris --client ':l /mnt/sda9/home/james/Documents/idris/vadd.idr') >/tmp/vbKELys/2 2>&1"
Uncaught error: connect: does not exist (Connection refused)
從shell運行那些shell命令,我得到:
$ idris --check vadd.idr
$ idris --client ':l /mnt/sda9/home/james/Documents/idris/vadd.idr'
Uncaught error: connect: does not exist (Connection refused)
$ idris --client vadd.idr
Uncaught error: connect: does not exist (Connection refused)
idris vaddr.idr
,簡單的idris vaddr.idr
工作得很好。
在我看來,您可能在Idris和idris-mode
之間存在版本不匹配。 最近, idris-mode
開始使用套接字與編譯器進行通信而不是stdin / stdout。 如果您正在使用MELPA的idris-mode
,那就是它所期望的。 通常,MELPA上的版本將需要編譯器的最新Git版本。 來自Github的最新標記版本(可在MELPA-stable中獲得)將與最新版本的Idris一起使用。
在Vim中,運行子進程比在Emacs中運行困難得多,因此在Vim中,您需要單獨運行Idris REPL。 然后使用--client
選項發送命令,這會導致命令在后台REPL中運行。 此后台REPL應具有正確的工作目錄。 我看到你使用了--check
上面 - 這告訴Idris鍵入檢查文件,然后退出。 嘗試在一個終端中啟動REPL,然后使用另一個終端中的--client
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.