2013-09-23 26 views
6

Giả sử tôi có mã nàycách quấn hình thức với một hình thức bên ngoài đã viết bằng paredit

(hello world) 
(hi world) 

Sau đó, nó nói đến cái tâm của tôi rằng tôi nên quấn rằng với các hình thức sau đây:

(let (acc) 
    <> 
    (nreverse acc)) 

dẫn đến mã này:

(let (acc) 
    (hello world) 
    (hi world) 
    (nreverse acc)) 

Đây là cách tôi thường làm. Trước tiên tôi viết một hình thức bên ngoài không đầy đủ trước khi các hình thức to-be-bọc như thế này:

(let (acc)) 
(hello world) 
(hi world) 

Sau đó, tôi nhấn C-) (paredit-forward-slurp-sexp) hai lần để húp điều:

(let (acc) 
    (hello world) 
    (hi world)) 

Sau đó, tôi kết thúc bằng cách thêm (nreverse acc) ở cuối.

Bây giờ những gì tôi tự hỏi là những gì nếu tôi bắt đầu bằng cách đầu tiên viết mẫu biểu mẫu bên ngoài hoàn chỉnh như thế này?

(let (acc) 
    (nreverse acc)) 
(hello world) 
(hi world) 

hay như thế này

(hello world) 
(hi world) 
(let (acc) 
    (nreverse acc)) 

Có một chuỗi ngắn paredit hoặc không paredit lệnh mà tôi có thể nhấn để hoàn thành công việc từ đó bắt đầu?

Tôi có thể di chuyển điểm, cắt hai biểu mẫu được bao gói, di chuyển điểm, dán các biểu mẫu. Nhưng tôi tự hỏi nếu có một cách thuận tiện hơn.

Tôi hài lòng với cách tôi làm các gói, nhưng nó cảm thấy như tôi có thể thiếu một số thủ thuật chỉnh sửa gọn gàng khác được tìm thấy từ một khởi đầu khác nhau.

+0

Nếu tất cả không thành công, hãy sử dụng macro bàn phím. Bạn cũng có thể mở rộng paredit để làm bất cứ điều gì bạn muốn. GNU Emacs có thể mở rộng. –

Trả lời

7

Thay vì liên tục sử dụng paredit-forward-slurp-sexp hoặc giết-yank'ing khu vực, bạn có thể đánh dấu các khu vực của sexps gửi kèm và sử dụng paredit-wrap-roundM (

Nếu tôi được gõ ví dụ của bạn tôi sẽ bắt đầu với biểu hiện cuối cùng:

(hello world) 
(hi world) 
(nreverse acc)_ 

C-SPCCMACMAC-M-mộtM ( sản lượng:

(_(hello world) 
    (hi world) 
    (nreverse acc)) 

Chèn let (acc) và kết thúc với RETC-M-hTAB để reindentify.

Có lẽ một cách tốt hơn =), nhưng ngay cả khi bạn không sử dụng transient-mark-mode bạn có thể cung cấp tùy chọn khác để gói:

  • Củ kết thúc tốt đẹp vào cuối của bộ đệm hoặc danh sách kèm theo
  • Củ # kết thúc tốt đẹp # ngữ dưới đây

Xem docstring cho paredit-wrap-sexp

+3

Điều này. Lưu ý rằng chỉ cần sử dụng '(' khi vùng đang hoạt động và khi 'transient-mark-mode' được bật sẽ đạt được điều tương tự như sử dụng' paredit-wrap-sexp'. Tôi sử dụng nó, và nó làm cho vùng bao quanh với dấu ngoặc đơn tự nhiên. –

1

Bạn cũng có thể muốn nhìn vào redshank, một gói emacs mà thực hiện một loạt những thứ hữu ích như thế này. Làm việc với paredit rất độc đáo.

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