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