2009-04-23 31 views
43

Tôi đang sử dụng chế độ Emacs-Speaks-Statistics (ESS) cho Emacs. Khi chỉnh sửa mã R, mọi dòng chú thích (bắt đầu bằng #) sẽ tự động được gắn thẻ ở phía xa bên phải khi tôi tạo một dòng mới phía trên nó. Tôi nên thay đổi tệp .emacs.el của mình như thế nào để sửa lỗi này?Chế độ ESS Emacs - Tabbing cho Vùng Nhận xét

Ví dụ, tôi có:

# Comment 

Bây giờ, sau khi đưa con trỏ của tôi vào đầu dòng và nhấn Enter, tôi nhận được:

       # Comment 

Thanks cho bất kỳ gợi ý.

Trả lời

51

Sử dụng '###' nếu bạn không muốn nhận xét thụt vào. Theo manual,

Theo mặc định, bình luận bắt đầu với ‘###’ được liên kết với đầu dòng. Các nhận xét bắt đầu bằng ‘##’ được căn chỉnh với cấp hiện tại là thụt đầu dòng cho khối có chứa nhận xét. Cuối cùng, các nhận xét bắt đầu bằng '#' được căn chỉnh theo cột ở bên phải (cột thứ 40 theo mặc định, nhưng giá trị này là được điều khiển bởi biến cột nhận xét) hoặc chỉ sau biểu thức trên dòng chứa các chú thích nếu nó mở rộng vượt ra ngoài cột thụt đầu dòng .

+1

Tôi rất vui vì tôi đã xem trước khi hỏi chính xác câu hỏi này. Tôi đã đánh dấu câu trả lời này bởi vì tôi nghĩ nó thực sự là một giải pháp tốt hơn câu trả lời ở trên. Tôi đã nghĩ rằng đây là một lỗi/vấn đề với chế độ ESS, nhưng sau khi tinh chỉnh cú pháp của tôi, các vấn đề của tôi đã biến mất. – Choens

+3

Quy ước này có vẻ kỳ lạ nếu bạn không sử dụng nhiều Emac. Tuy nhiên, quy ước này xuất phát từ lisp và emacs-lisp, nơi mà số lượng dấu chấm phẩy biểu thị loại bình luận và do đó nó được thụt vào như thế nào. –

29

Hoặc

(setq ess-fancy-comments nil) 

nếu bạn không bao giờ muốn thụt đơn # ý kiến, hoặc

(add-hook 'ess-mode-hook 
      (lambda() 
      (local-set-key (kbd "RET") 'newline))) 

nếu bạn muốn thay đổi hành vi của Nhập nên nó không thụt lề.

+0

Đây chỉ là tuyệt vời! Cảm ơn!!! – aL3xa

+4

Thay vào đó, tôi nghĩ bạn nên sử dụng "#" cho các chú thích cuối dòng, và chúng được thụt lề một cách độc đáo với cùng một mục đích -> mã tốt đẹp "liệt kê". Đối với các ý kiến ​​khác, thực sự làm quen với thói quen sử dụng "##" (nhiều hơn "###"): Các thụt lề này dưới dạng "tuyên bố" khác trong khối mã –

+2

Tôi vẫn đang có lợi quyết định số lần tôi nên sử dụng. Một là nói chung đủ để câu trả lời này được đánh giá cao như bình luận của tôi không được di chuyển đến một vị trí tôi không muốn nó được ... – user989762

1

Câu trả lời của Jouni không phù hợp với tôi. Nhưng tôi đã tìm thấy một cách tiếp cận ở đây: https://stat.ethz.ch/pipermail/ess-help/2016-May/010970.html

(defun my-ess-settings() 
    (setq ess-indent-with-fancy-comments nil)) 
    (add-hook 'ess-mode-hook #'my-ess-settings) 
+0

Có, tôi phải làm điều này để nó hoạt động, nếu không nó sẽ bị quá tải cục bộ. –

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