W poprzednim poście obiecałem, że zajmę się kwestią ustawień klawiatury…
Nie no teraz to już przesadzasz, zabrał byś się do pisania projektu a nie posty sobie nabijasz…
Yup, w większości przypadków ustawianie klawiatury jest zbędne. Każde IDE ma tam jakieś swoje kombinacje klawiszy ale zwykle wystarczy sobie załatwić odpowiedni cheat sheet i po sprawie.
Jednakże! Tym razem mamy wyjątek.
Zanim jednak zaczniemy, musimy nauczyć się kilku nowych słówek.
“S-Expression”, bądź “sexpr”, ewentualnie “symbolic expression”.
Jest to wyrażenie w formie listy (drzewa).
Np. wyrażenie (* 2 (+ 3 4)) rozbijamy na:
Oczywiście z tą samą notacją mamy do czynienia przy pisaniu w clojure.
A co nam daje taka notacja? Otóż umożliwia nam tzw. “Structural editing”.
“Structured editing” inaczej zwany “Paredit” (od trybu w edytorze Emacs) dość pokaźnie zmienia sposób w jaki edytujemy nasz kod.
Nie każdy lubi, nie każdy używa – ale warto spróbować.
Przejdźmy się zatem po funkcjonalnościach edycji strukturalnej którą umożliwia na Cursive.
Keeps parentheses balanced
Korzystając z języka opartego na S-Expressions można zauważyć, że natężenie nawiasów wszelakich w kodzie źródłowym pokaźnie wzrasta. Edytory strukturalne dbają o to aby ich ilość zawsze się zgadzała. Co początkowo może powodować agresję, wybuchy złości oraz wyprowadzać z równowagi.
****! Ja chcę usunąć TEN nawias a nie oba!
Zaznaczanie:
- Expand selection
 
Rozszerza zaznaczenie o kolejne sexpr.
- Wrap
 
Okala zaznaczenie wybranym nawiasem.
REPL
Czasami kod jaki pleciemy w REPL bywa wielolinijkowy. Powoduje to iż standardowe funkcje nie są dostępne. Np. Enter zrobi nam nową linię zamiast uruchomienia kodu.
- Execute current statement
 
Aby uruchomić kod w REPL musimy znajdować się w ostatniej linijce kodu. A co jeżeli jesteśmy gdzieś w środku? To makro umożliwia nam uruchamianie kodu w REPL niezależnie od pozycji kursora.
- Next/Previous repl history item
 
Podobnie – strzałki w wielolinijkowcach nie przeglądają historii. Więc i do tego mamy makro.
- Run test under caret in REPL
 
Do uruchamiania konkretnego testu nad którym pracujemy.
- Send form before caret to REPL
 
Oczywiście możemy wysyłać nie tylko testy do REPL a wręcz całe funkcje (pliki).
Edycja
Czyli to co nas najbardziej interesuje.
- Slurp
 
Wciąganie sexpr do obecnego nawiasu
- Barf
 
Wyrzucanie najdalszego sexpr poza nawias
- Kill
 
Usuwa wybrane sexpr (razem ze wszystkimi sexpr wewnątrz)
- Split
 
Dzieli string/sexpr na dwa.
- Join
 
Łączy string/sexpr w jedno.
A tutaj lista moich ustawień (standardowo nie wszystkie są ustawione):
Expand selection: 
Shrink selection: 
Execute current statement (REPL): 
Next REPL history item: 
Previous REPL history item: 
Run test under caret in REPL: 
Send form before caret to REPL: 
Slurp (forwards): 
Barf (forwards): 
Kill: 
Split: 
Join: 
Słówko jeszcze o kombinacjach pokroju Slurp czy Barf.
Z racji, że są to funkcjonalności z których korzysta się kilka razy pod rząd.
Np. aby przenieść 4 elementy poza nawias. To muszą być ustawione na tyle wygodnie aby można było używać ich wielokrotnie. Kombinacje które tu przedstawiłem z wygodnym nie mają dużo wspólnego…
No to po co je tak ustawiłeś? WTF man?
A no widzisz, sekret tkwi w odpowiedniej klawiaturze. Na mojej1, znajduje się szereg przycisków do makr (całe 5). A usytuowane są o na tyle wygodnie (na lewo od tabulatora), że warto by było z nich skorzystać. Dlatego Barf/Slurp mam przypisane pod jeden przycisk makra który wywołuje bardziej skomplikowaną kombinację.










Be First to Comment