2009-10-11 31 views
7

Trong GNU Emacs, là có một cách tốt để thay đổi lệnh comment vùng trong chế độ C từEmacs bình luận vùng trong chế độ C

/* This is a comment which extends */ 
/* over more than one line in C. */ 

để

/* This is a comment which extends 
    over more than one line in C. */ 

? Tôi đã thử

(setq comment-multi-line t) 

nhưng điều này không hiệu quả. Có một section on multi-line comments in the Emacs manual, nhưng nó không đề cập đến bất cứ điều gì.

Trả lời

7

Kể từ Emacs 21, đã có một module có tên 'newcomment, trong đó có phong cách bình luận khác nhau (xem biến 'comment-styles Thiết lập này được gần với những gì bạn muốn:

(setq comment-style 'multi-line) 

(Lưu ý: có lẽ bạn nên làm cho điều đó .. thiết lập trong 'c-mode-hook)

Tuy nhiên, không ai trong số các thiết lập làm cho các ý kiến ​​giống như những gì bạn muốn

cách đơn giản nhất tôi thấy để có được những gì bạn muốn là thêm hack này:

(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate) 
    "override 4th argument to be just spaces" 
    (when (eq major-mode 'c-mode) ; some condition here 
    (let ((arg (ad-get-arg 4))) 
     (when arg 
     (ad-set-arg 4 (make-string (length arg) ?\)))))) 

Cài đặt hiện tại cho comment-style luôn đặt tiền tố cho dòng chú thích bằng "* *").

Nếu bạn không có Emacs 21, tôi cho rằng bạn chỉ cần tải xuống newcomment.el từ kho lưu trữ. Tôi không biết nếu nó hoạt động như-là trong các phiên bản trước của Emacs, nhưng nó có thể có giá trị một shot, mặc dù nâng cấp Emacs sẽ là một giải pháp tốt hơn.

Tách của tôi vi phạm số 'uncomment-region. Sửa chữa thích hợp sẽ thay đổi 'comment-padright. Điều đó sẽ mất một ít nghiên cứu hơn để không phá vỡ những thứ khác. Các hack trên chỉ thay đổi hành vi trong 'c-mode (điều chỉnh tình trạng theo ý thích của bạn).

+0

Điều duy nhất Google cung cấp cho tôi "kiểu nhận xét" là http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3371 Emacs Kiểu nhận xét không đưa ra bất cứ điều gì hoặc. –

+0

Được xác định trong Emacs 23.1, bạn có đang sử dụng phiên bản cũ hơn không? –

+0

Tôi đang sử dụng các Emacs đi kèm với Ubuntu/FreeBSD. Trên Windows tôi có Emacs 23.1 nhưng hiện tại tôi đang sử dụng FreeBSD và nó nói 22.3.1. Dù sao ví dụ của bạn đã làm việc, vì vậy cảm ơn. –

3

gần nhất tôi có thể tìm thấy với built-in cho ý kiến ​​ủng hộ là nếu bạn thiết lập comment-style-multi-line, mà sẽ sản xuất này:

/* This is a comment which extends 
* over more than one line in C. */ 

Nếu đó không phải là đủ gần, hãy nhìn vào newcomment.el và xác định các chức năng bình luận của riêng bạn khi thích hợp. .

+0

Cảm ơn câu trả lời của bạn. –

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