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ề.
Nguồn
2012-02-24 07:10:03
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ề. –
Đ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