2010-10-02 29 views
5

Trên Emacs trên máy tính ở trường chúng ta có thể sử dụng 'F5' để chạy một đoạn mã perl đã chọn. Tuy nhiên, khi im cố gắng để làm điều này ở nhà nó không thành công. Tôi đã cài đặt Emacs và Activeperl trên máy windows7 của tôi.Chạy mã Perl trực tiếp trong Emacs

Bất cứ khi nào tôi cố gắng chạy một đoạn mã, tôi nhận được lỗi 'F5 là không xác định'. Tuy nhiên, khi tôi nhìn vào tập tin .Emacs tôi thấy rằng phím chức năng F5 được gắn một cách chính xác với hàm perl-eval. Chiều nay nó làm việc bằng cách đặt (defalias 'perl-mode 'cperl-mode) trong tập tin .Emacs của tôi, nhưng khi tôi cố gắng viết mã tối nay tôi nhận được một lần nữa lỗi 'f5 là không xác định'.

Bất kỳ ai có thể giúp tôi về chủ đề này? Tôi biết tôi có thể chạy mã perl của tôi với công cụ cmd, nhưng nó dễ dàng hơn nhiều khi tôi có thể chạy trực tiếp từ Emacs của tôi :).

Trả lời

3

Dường như bạn .emacs là hợp lệ, nhưng nó có thể là ở sai chỗ.

Để kiểm tra nơi .emacs nên làm:

MxgetenvRET CHỦ RET

nào sẽ hiển thị một cái gì đó như: (cửa sổ xp)

C:\Documents and Settings\YourName\Application Data\ 

(hoặc windows7)

C:\Users\YourName\Application Data\ 

Nếu đó là cùng một vị trí như .emacs thì hãy thêm thông báo gỡ lỗi vào cuối tệp .emacs của bạn. ví dụ.

(message " >------------< This is the one >------------< ") 

Và khởi động lại Emacs và xem bộ đệm *messages*.

Nếu nó hiển thị thông điệp debug, các ràng buộc quan trọng nên có sẵn, kiểm tra xem nó với C-h k F5

Cho chúng tôi biết kết quả của những thử nghiệm này.

+0

Cảm ơn bạn :). Thật vậy, các.Tệp emacs phải nằm trong C: \ Users \ Name \ Application Data \ Roaming, bây giờ tệp được tải và tôi có thể chạy mã perl bằng khóa F5. Họ thực sự nên đặt nó trong tệp README vì các tệp .emac ban đầu nằm trong c: \ emacs \. Bạn thưa bạn là một người tiết kiệm cuộc sống;). – Najdo

+0

Không chỉ có nhiều người dùng Emacs đang chạy Windows, và thậm chí ít chạy Windows7 hơn, và những người đang có, không cập nhật Emacs README, hoặc EmacsWiki.org. - Rất may bạn có thể nhận được rất nhiều Emacs giúp đỡ ở đây trên SO. – ocodo

2

Bạn có thể thực hiện C-h k F5 trong cả hai trường hợp Emacs. Nó sẽ cho bạn biết lệnh nào mà khóa F5 bị ràng buộc, vì vậy bạn có thể thấy sự khác biệt. Để ràng buộc các phím trên máy tính cục bộ của bạn sau khi bạn biết những gì để gọi, sử dụng một cái gì đó như:

(add-hook 'perl-mode-hook '(lambda() (local-set-key [f7] 'compile))) 
+0

Tôi đã thử C-h k F5, nhưng sau đó nó cũng nói 'F5 là không xác định'. Nhưng nếu tôi nhìn vào tập tin .Emacs của tôi, tôi thấy lệnh sau: '(global-set-key (kbd "")' perl-eval) ' – Najdo

+0

Điều này khá lạ, bởi vì nó trông hoàn toàn hợp pháp. Bạn có chắc chắn .emacs của bạn được tải không? Nhân tiện: Bạn viết .Emacs, tuy nhiên nó phải được đặt tên .emacs (không có vốn e), điều này có thể là nguyên nhân gây ra lỗi. Làm trong Emacs C-x f ~/.emacs và đảm bảo nó tải đúng tệp. – fschmitt

+0

Như bạn có thể thấy, câu trả lời chính xác đã được đưa ra. Nhưng cảm ơn vì sự giúp đỡ của bạn. – Najdo

2

Trong emacs bạn nộp

(defun perl-eval() "Run selected region as Perl code" (interactive) 
    (shell-command-on-region (mark) (point) "perl ")) 
(global-set-key (kbd "<f5>") 'perl-eval)
+0

Tôi đã nhìn vào điều này và đã tự hỏi tại sao đầu ra của chức năng đi đến thanh trạng thái ở phía dưới? (không chắc chắn những gì thanh ở phía dưới thực sự được gọi là) – Shantanu

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