2013-09-23 8 views
6

Załóżmy, że mam ten kodjak owinąć formy z już pisemnej formie zewnętrznej w paredit

(hello world) 
(hi world) 

Wtedy to przychodzi mi na myśl, że powinienem owinąć że w następującej postaci:

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

w wyniku tego kodu:

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

Oto, jak zwykle pakuję. Najpierw napisać niekompletny zewnętrzną przed którą ma być owinięty formach, takich jak poniżej:

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

Następnie nacisnąć C-) (paredit-forward-slurp-sexp) dwukrotnie SLURP rzeczy:

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

Następnie dokończyć dodając (nreverse acc) na końcu.

Teraz zastanawiam się, co jeśli zacznę od napisania całego szablonu zewnętrznego formularza?

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

lub jak to

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

Czy jest krótka sekwencja paredit lub non-paredit poleceń, które można nacisnąć przycisk, aby zakończyć pracę od tego zacząć?

Mogłem przesunąć punkt, przeciąć dwie zawinięte formy, przesunąć punkt, wkleić formularze. Ale zastanawiam się, czy istnieje wygodniejszy sposób.

Jestem zadowolony z tego, jak robię zawijanie, ale wydaje mi się, że brakuje mi innych, ciekawych trików do edycji, które można znaleźć na innym początku.

+0

Jeśli wszystko zawiedzie, użyj makra z klawiaturą. Możesz także przedłużyć kredyt na to, co chcesz. GNU Emacs jest rozszerzalny. –

Odpowiedz

7

Zamiast wielokrotnie używając paredit-forward-slurp-sexp lub kill-yank'ing region, można zaznaczyć obszar sexps do zamykania i korzystania paredit-wrap-roundM- (

Gdybym wpisując przykład chciałbym zacząć z ostatnie wyrażenie:

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

C SPCCMaCMaC-K-AM- ( Wydajność:

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

Włóż let (acc) i zakończyć RETC-M-HTAB do reindentify.

Nie ma chyba lepszego sposobu =), ale nawet jeśli nie używają transient-mark-mode można dostarczać inne opcje do owijania:

  • Cu okłady do końca buforu lub listy otaczającej
  • Cu # owija następujące # wyrażeń

Zobacz docstring dla paredit-wrap-sexp

+3

To. Zauważ, że po prostu użycie '(' gdy region jest aktywny i kiedy włączony jest 'tryb przejściowych znaków 'osiągnie to samo, co użycie' paredit-wrap-sexp' .Używam go i sprawia, że ​​obszary zawijania z nawiasami naturalny. –

1

Możesz również chcieć spojrzeć na redshank, pakiet emacs, który zawiera kilka użytecznych rzeczy. Bardzo ładnie współpracuje z pared.

Powiązane problemy