2012-03-07 38 views
12

Tôi là người mới tham gia LISP.sơ đồ chạy từ emacs

Tôi đang cố gắng gọi trình thông dịch lược đồ từ bên trong các emacs (phiên bản 23 chạy trên cửa sổ). Tôi đã tải thư viện xscheme bằng cách nói các emacs với số M-x load-library và sau đó nhập xscheme tại dấu nhắc trong bộ chọn minibuffer. Thư viện đã được tải và sau đó tôi đã phát hành lệnh M-x run-scheme. (Tôi nhận ra rằng tất cả việc tải này có thể được thực hiện từ .emacs lúc khởi động, nhưng tôi không quan tâm đến điều đó vào lúc này.)

Cho đến nay rất tốt - bộ đệm *scheme* đã được tạo và bây giờ tôi đang hy vọng tôi có thể nói chuyện với người phiên dịch.

Tuy nhiên, khi tôi cố gắng đánh giá điều gì đó trong bộ đệm *scheme* (ví dụ: (define shoe-size 14)), tôi nhận được thông báo Output file descriptor of scheme is closed này trong minibuffer.

Có ai biết cách khắc phục điều này trong các emacs không?

(Ngoài ra, làm thế nào để thiết lập các chính chế độ như REPL trong bộ đệm *scheme*?)

Cảm ơn bạn.

Trả lời

14

Thử đặt biến số scheme-program-name vào đường dẫn đến trình thông dịch Đề án của bạn. Chế độ chính của bộ đệm lược đồ có lẽ chỉ là comint và bạn không thể làm nhiều về nó trừ khi bạn chuyển sang một cái gì đó có khả năng hơn như Geiser - điều mà tôi khuyên bạn nên làm.

+0

Cảm ơn bạn đã tip trên Geizer - Tôi chỉ cần cài đặt nó và phương thức REPL dường như được làm việc cho tôi. Tôi sẽ thử nghiệm nó một chút và sẽ kiểm tra lại để có câu trả lời sau. – dave

+0

Xin chào, tôi đã cài đặt gói Geizer và có thể tương tác với guile ('M-x run-guile'). Tuy nhiên, nếu tôi tải một tập tin có phần mở rộng .scm (mở nó trong một bộ đệm trong chế độ chính Scheme Guile), và cố gắng biên dịch nó ('C-c C-k'), tôi nhận được thông báo _No Geiser REPL cho vùng đệm này. (Tôi có thể là một chút của một catch22 như một newbie: sự cần thiết phải thiết lập môi trường emacs để có thể tìm hiểu chương trình, clisp, và emacslisp trên một mặt, và cần phải biết ít nhất một số emacslisp để có thể thiết lập môi trường đó lên môi trường khác.) Cảm ơn trước bất cứ ai có thể bình luận về điều này. d. – dave

+1

@dave, tôi đã gặp sự cố này, khắc phục bằng cách sử dụng guile 2.0.x, geiser không hỗ trợ guile 1.x. –

6

Thêm dòng này vào tập tin .emacs của bạn:

(setq scheme-program-name "gsi") 

(Thay thế "gsi" với tên của thông dịch viên Đề án của bạn.)

Sau đó bạn có thể bắt đầu phiên dịch với M-x run-scheme. Bạn có thể đánh giá các đoạn mã bằng cách sử dụng C-x C-e (để đánh giá sexp trước điểm) hoặc với C-M-x để đánh giá sexp bạn đang ở ngay bây giờ. Bạn cũng có thể tải tệp với C-c C-l.

+0

Cảm ơn bạn đã đề xuất! – dave

4

Tôi sẽ bắt đầu bằng cách nói rằng tôi rất mới lập trình, lược đồ và SICP, nhưng tôi đang cố gắng làm việc thông qua khóa học và xem các bài giảng trực tuyến.
Tôi đang chạy emacs trên Ubuntu 12.10 và tôi thực sự muốn có kế hoạch MIT làm việc trong các emac thay vì dựa vào Edwin.
Các lời khuyên trên đây không làm việc cho tôi, nhưng đây là hướng dẫn từng bước mà làm việc:

  1. Cài đặt emacs 24 từ Ubuntu Software Center (tìm kiếm "emacs" và cài đặt nó!)
  2. Mở một terminal (ALT + CTRL + t)
  3. Đến thư mục home của bạn (cd ~)
  4. Mở tập tin ẩn .emacs trong gedit (gedit .emacs)
  5. Trên đầu tiên dòng của tệp, nhập chính xác những gì sau dấu hai chấm: (yêu cầu 'xscheme)
  6. Lưu thay đổi thành .emacs
  7. Đó là nó !!!

Bạn có thể mở .scm tập tin trong emacs và các lệnh sử dụng như C-xC-e.

* hướng biếu không của http://alexott.net/en/writings/emacs-devenv/EmacsScheme.html#sec14

0

My guess is that it's just a known issue tôi vẫn dunno làm thế nào để sắp xếp mà ra (đó là ra các kỹ năng hiện tại của tôi) nhưng tôi có một vĩ mô mà có lẽ giúp: ngay sau khi văn bản cho s-exp bạn có thể làm Cc-Cz (nó gọi là REPL của đại lý) rồi C-spc, C-M-b, M-w, C-x-o, C-yRET.

Có một sự thay đổi (giống, đặt ngay sau khi văn bản cho s-exp): C-spc, C-M-b, M-w, C-c Cz, C-yRET