Tôi thích phát triển Scala ở Emacs và thỉnh thoảng tôi sử dụng REPL để kiểm tra các đoạn mã hoặc tải và kiểm tra một số mã tôi vừa mới viết. Tôi đang sử dụng Scala 2.9.1, và tôi đã nhận thấy rằng khi tôi mở REPL trong một bộ đệm đầu cuối, mọi thứ đã bị hỏng đáng kể. Đặc biệt, tôi không thể xóa bất kỳ ký tự nào khỏi dòng hiện tại và không thể di chuyển con trỏ lùi về dòng hiện tại. Điều này là rất bực bội như bất cứ lúc nào tôi mistype một cái gì đó, tôi phải bắt đầu lệnh một lần nữa. Tôi đã tự hỏi nếu có ai khác đang gặp vấn đề này bằng cách sử dụng Scala REPL dưới Emacs, và nếu có ai có một giải pháp tiềm năng.Scala REPL trong Emacs
Trả lời
Tôi thấy rằng rlwrap (trình bao bọc readline) hoạt động tốt với anac-term và scala của emacs. Chỉ cần gọi "rlwrap scala", và bạn sẽ có chỉnh sửa dòng bash thông thường, cũng như lịch sử, hoạt động bình thường. Như một phần thưởng, lịch sử của bạn sẽ mở rộng nhiều lần gọi scala, vì vậy bạn sẽ không mất mọi thứ bạn đã gõ sau khi thoát khỏi Scala REPL.
Nếu rlwrap không hoạt động cho bạn, chỉ cần chuyển sang chế độ dòng trong thuật ngữ ansi (Cx Cj theo mặc định) sẽ cho phép bạn sử dụng chỉnh sửa kiểu emacs trên dòng, nhưng không có phần tử giống như lịch sử hoàn thành.
Đảm bảo đã được đề cập, vì vậy tôi sẽ chỉ đứng thứ hai là một tùy chọn tuyệt vời nếu bạn không ngại thiết lập liên quan.
Cảm ơn bạn đã biết mẹo. Điều này dường như làm việc khá tốt cho tôi. Trong thực tế, tôi thích cách tiếp cận rlwrap trên phương thức Ensime bởi vì nó mang lại cho tôi một lịch sử lệnh. Ngay bây giờ, giới hạn còn lại duy nhất để gọi REPL qua Emacs bằng cách sử dụng phương pháp rlwrap là không có khả năng sử dụng hoàn thành tab. – nomad
Làm thế nào bạn nhận được tab-hoàn thành trong REPL thông qua emacs? – CodeKingPlusPlus
Bạn có thể cài đặt ENSIME và follow instructions. Tôi không biết về cách của bạn để gọi REPL, nhưng REPL được gọi từ các công trình ENSIME (nó cho phép di chuyển con trỏ lùi và xóa các biểu tượng, tôi đã kiểm tra).
Cảm ơn mẹo. Dường như việc gọi REPL từ Ensime không giải quyết vấn đề này, nhưng nó giới thiệu một vài vấn đề khác. Cụ thể, REPL được gọi thông qua Ensime không có lịch sử lệnh và dường như không có khả năng hoàn thành tab. – nomad
+1 cho ENSIME, ENSIME rất thú vị –
Bạn bắt đầu REPL trong vòng Emac như thế nào? – leedm777
Tôi mở một bộ đệm mới với ansi hạn. Sau đó, trong bộ đệm đầu cuối đó, tôi bắt đầu REPL bằng cách gọi "scala" trực tiếp hoặc sử dụng giao diện điều khiển sbt. Dù bằng cách nào, vấn đề này dường như xảy ra. – nomad
Bạn có thể có may mắn hơn khi mở một bộ đệm mới có vỏ, và bắt đầu scala hoặc sbt từ trình bao. – leedm777