簡體   English   中英

idris-mode - 緩沖區沒有進程

[英]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的案例分裂示例 從一個新的會議開始,這是發生的事情:

  1. 我打開vadd.idr文件,該文件已包含3行(其中1行為空白)。
  2. 我移動到最后一行並按\\d
  3. 我收到一條很長的錯誤信息,在我讀完之前就消失了。
  4. Idris REPL將在新的拆分窗格中打開。
  5. 命令行(在窗口底部)顯示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_perlidris按預期在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM