2009-06-09 20 views
8

Giả sử nếu tôi có như sau:cách căn chỉnh đối số cho các hàm trong các emacs?

func(arg1, arg2, arg3...) 
func(longargarg1, longerarg2, arg3,...) 
... 

Làm thế nào để sắp xếp các đối số để nó giống như dưới đây không?

func(arg1  , arg2  , arg3...) 
func(longargarg1, longerarg2, arg3,...) 
... 

[Tôi có thể sử dụng M-class x-regex để sắp xếp các đối số đầu tiên, nhưng tôi không thể nấu ăn với một regex phù hợp để sắp xếp các phần còn lại của các đối số. Bonus điểm nếu câu trả lời cũng mất quan tâm trong những trường hợp khi một số đối số là chuỗi bằng dấu phẩy trong họ]

+1

điểm thưởng! Ngọt! – Cheeso

Trả lời

16

Chọn khu vực, sau đó:.

C-u M-x align-regexp RET ,\(\s-*\) RET RET RET y 

Các regexp nói để gắn dấu phẩy với không gian theo dõi họ. Giá trị mặc định là 1 cho nhóm paren sửa đổi có nghĩa là chèn khoảng trắng nơi \(\s-*\), giá trị mặc định là 1 cho khoảng trắng để điều chỉnh có nghĩa là có một khoảng trống sau khi mở rộng dài nhất và bạn muốn nó lặp lại trong suốt dòng.

+0

Tuyệt! Tôi thậm chí không biết có một phiên bản phức tạp hơn của align-regexp. Lưu ý về bản thân: đọc tài liệu ... Nhưng có phiên bản nào tốt hơn của regexp bỏ qua dấu phẩy nếu chúng nằm trong cặp ngoặc kép không? (emacs dường như không có kiểu xem trước/kiểu đúng) – polyglot

+0

Bạn có thể viết thói quen căn chỉnh của riêng bạn sử dụng bảng cú pháp để xác định dấu phẩy nào "đếm" trong regex. Tôi không chắc chắn làm thế nào để làm điều đó "dễ dàng", mặc dù. – jrockway

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