2012-02-23 26 views
7

Trong quá khứ, tôi sử dụng các kịch bản sau đây để bắt đầu SBCL:Cách đặt thư mục hiện tại của SBCL bằng chất nhờn?

breakchars="(){}[],^%$#@\"\";:''|\\" 
cd /media/E/work 

exec rlwrap --remember -c -b "$breakchars" -f "$HOME"/.sbcl_completions sbcl --noinform --userinit "$HOME"/.sbclrc "[email protected]" 

Bây giờ khi sử dụng chất nhờn trong emacs, tôi doonot biết làm thế nào để thiết lập thư mục hiện SBCL không?

Bất kỳ đề xuất nào được đánh giá cao!

Trả lời

5

Tại sao bạn cần thay đổi thư mục hiện tại từ SLIME? Tôi cho rằng đó không phải là vì bạn muốn truy cập một tệp nguồn Lisp từ hệ thống bạn hiện đang viết, nhưng vì bạn muốn viết mã để đọc hoặc ghi một tệp có chứa dữ liệu.

Nếu có, tốt hơn hết là hãy thử local-projects trong Quicklisp. Cùng với quickproject, nó cho phép bạn dễ dàng tạo hệ thống, sau đó bạn có thể tải bằng cách sử dụng (ql:quickload 'my-system) hoặc thậm chí (require 'my-system).

Nếu bạn cần tham chiếu đến tệp dữ liệu có liên quan đến thư mục gốc của hệ thống my-system (chỉ sử dụng tên từ đoạn cuối để giữ ví dụ phù hợp), bạn có thể sử dụng asdf:system-relative-pathname. Ví dụ: (asdf:system-relative-pathname 'my-system "files/data.txt").

Chắc chắn, triển khai là một doanh nghiệp hoàn toàn khác. Giải pháp của tôi là xem how the running executable was called để xác định xem mã được triển khai hay đang phát triển. Nếu đang phát triển, tôi sử dụng asdf:system-relative-pathname. Nếu được triển khai, tôi xác định đường dẫn của các tệp dựa trên đường dẫn của tệp thực thi (kịch bản lệnh xây dựng của tôi 'sao chép các tệp này bên cạnh các tệp thi hành khi xây dựng dự án).

Vì tôi đã bắt đầu sử dụng phương pháp này, nhu cầu của tôi đối với cd -ing trong SBCL giảm xuống 0. cd -ing xung quanh không phải là khó khăn, nhưng nó là tốt đẹp để có những điều ít hơn để lo lắng về.

8

SLIME bắt đầu hệ thống Lisp với thư mục hiện tại được lấy từ thư mục chứa tệp được liên kết với bộ đệm hiện tại. Thông thường, bạn sẽ mở một tệp nơi bạn muốn SLIME bắt đầu trước tiên.

Nếu bạn muốn thay đổi thư mục hiện tại đang chạy Lisp thì cách tốt nhất là sử dụng ,cd shortcut. Điều này giả định bạn có một thiết lập slime-repl thích hợp, vì các cài đặt Slime hiện tại rất tối thiểu theo mặc định. Xem contributed packages, bạn có thể muốn ít nhất slime-fancy metapackage.

+1

slime-cd là một hàm Lisp được biên dịch tương tác trong 'slime.el '. (slime-cd DIRECTORY) Làm cho DIRECTORY trở thành thư mục hiện tại của Lisp. Trả lại bất cứ điều gì swank: set-default-directory trả về. –

+0

Điều này hữu ích. Tuy nhiên, liên kết đến "lối tắt cd" đã chết. Bạn đã nghĩ gì vậy? – MadPhysicist

Các vấn đề liên quan