Najpoužívanejšie vývojové prostredie je editor Emacs (sám používa veľmi špecializovaný derivát Lispu), zvlášť ak sa jedná o open-source implementácie Common Lisp. Komerčné implementácie poskytujú aj vlastné riešenia, no tie tiež používajú Emacs-like editory.
Napriek mnohým schopnostiam Emacsu by samotný nebol veľmi pohodlný, preto sa používa rozšírenie SLIME (Superior Lisp Interaction Mode for Emacs). SLIME podporuje rôzne implementácie Common Lisp a umožňuje oveľa pohodlnejšiu interakciu s interpreterom. Interpreter môže byť aj vzdialený, či dokonca na produkčnom serveri, kde sa priamo dajú nahrávať zmeny kódu bez nutnosti reštartu.
Interpreter sa nazýva REPL (Read-Eval-Print Loop) podľa funkcií, ktoré sa stále vykonávajú – načítanie, vyhodnotenie, vypísanie. Tento štýl vývoja uľahčuje testovanie funkcií už počas ich písania a znižuje tak riziko výskytu chyby (napriek tomu je ale vždy vhodné písať pre svoj kód testy).
Emacs umožňuje príkazom hyperspec-lookup
vyhladávať v
lokálnej alebo online dokumentácii HyperSpec
a výsledok zobrazí napr. pomocou w3m
browseru.
Pri editácii nám môžu pomôcť (každému podľa svojho uváženia) módy
pre Emacs: paredit (balíček paredit-el
), highlight-parentheses
(načítať sa dá príkazom M-x load-file
, použitie skratiek
je vysvetlené nižšie). Spomínaný SLIME a browser sa v Debiane
nachádzajú v týchto balíčkoch: w3m
, w3m-el
,
slime
, hyperspec
(lokálna kópia). A
samozrejme netreba zabudnúť na samotný Lisp, ja používam Steel Bank
Common Lisp (SBCL). Teraz by malo nasledujúce nastavenie SLIME bez
problémov fungovať, používa sa pri otvorení ".lisp" súboru. Zmené
nastavenie sa načíta skratkou C-M-x
(kurzor musí byť nad
nastavením, ktoré chceme načítať).
;; Common Lisp (SBCL) (defvar *hyperspec-path* "/usr/share/doc/hyperspec/Body/") (defun my-lisp-mode-hook () (require &apsslime) (setq slime-net-coding-system &apsutf-8-unix) (setq inferior-lisp-program "sbcl") (slime-mode t) (paredit-mode t) (local-set-key "\r" &apsnewline-and-indent) (setq lisp-indent-function &apscommon-lisp-indent-function) (setq indent-tabs-mode nil) (setq browse-url-browser-function &apsw3m-browse-url) (highlight-parentheses-mode t)) (add-hook &apslisp-mode-hook &apsmy-lisp-mode-hook)
Pokiaľ niekomu nie je jasná vyššie uvedená skratka: C = control, M = meta (alt, esc), x je malé písmeno (so zapnutým caps lock to znamená stlačený shift). Klávesa Esc sa nedrží, iba sa stlačí raz a nasleduje zbytok skratky. V tomto prípade ju nie je možné použiť.
Tento kus konfigurácie je tiež Lisp (Emacs Lisp) a patrí do
hlavného konfiguračného súboru ~/.emacs
. Začiatočník
nemusí rozumieť všetkému, časom sa to poddá, no je vhodné inšpirovať sa
cudzími konfiguráciami – konfigurácia bude jasnejšia a ako bonus
je zvýšenie pohodlnosti editoru. Konfigurácie je možné nájsť na EmacsWiki
alebo cez Google.
Užívatelia editoru Vim sú zrejme trochu zhrození, ale Emacs je takmer nevyhnutnosť a k Lispu patrí. Sú ľudia, ktorí sa pokúšajú vytvoriť podobné prostredie pre Vim a používajú Vim, ale sami uznávajú, že Emacs je vďaka svojim vlastnostiam na to oveľa lepšie vybavený. V prípade núdze je možné ešte použiť viper-mode, ktorý emuluje editor Vi.
V nasledujúcej tabuľke je popis niekoľkých základných skratiek spolu s príkazom, ktorým patrí. Všetky funkcie editoru sú naprogramované v Emacs Lispe a je možné ich vyhladávať cez help (Emacs je "sebadokumentujúci rozšíriteľný textový editor").
skratka | popis | príkaz |
---|---|---|
C‑h ? | help, najlepší pomocník ak hľadáme informácie o Emacse | M‑x help |
M‑` | menu | M‑x tmm-menubar |
C‑SPC | SPC = medzerník. Táto skratka vytvorí značku, potom sa môžeme kurzorom presunúť kamkoľvek a tým vytvoríme označený región. | M‑x set‑mark‑command |
M‑w | kopírovanie | M‑x kill‑ring‑save |
C‑w | "vystrihnutie" (kill) | M‑x kill‑region |
C‑y | vloženie (yank) | M‑x yank |
C‑s | inkrementálne vyhľadávanie (ako Ctrl+F vo Firefoxe alebo / v Opere) | M‑x isearch‑forward |
C‑r | spätné inkrementálne vyhľadávanie | M‑x isearch‑backward |
C‑x C‑f | otvorenie súboru (vytvorí tzv. buffer) | M‑x find‑file |
C‑x k | zruší buffer (kill‑buffer) | M‑x kill‑buffer |
C‑x b | prejsť do iného bufferu | M‑x switch-to-buffer alebo iswitchb-buffer |
C‑x o | aktivuje iné okno (window, Emacs termín – jedná sa o samostatné okno v rámci editoru), ak je viac viditeľných | M‑x other-window |
M‑/ | automatické doplnenie slova | M‑x dabbrev-expand |
M‑% | nahradenie reťazca | M‑x query-replace |
Za spomenutie ešte stoja skratky C-x 0/1/2/3
– v tomto
poradí: dá aktívne okno do pozadia, maximalizuje aktívne okno, rozdelí
okno horizontálne, rozdelí okno vertikálne. Existuje mnoho ďalších
užitočných príkazov, no toto by malo úplne stačiť pre orientáciu a
ovládanie Emacsu. Ešte jedna rada na záver – takmer každý
príkaz očakávajúci vstup sa dá dopĺňať tabulátorom.
Teraz máme príjemné prostredie, kde si môžeme pohodlne vyskúšať
(pokiaľ sa to zatiaľ nezdá byť pohodlné, tak to bude len otázka zvyku)
čo to dokáže. Posledná rada na záver, REPL je na dosah ruky pod
skratkou C-c C-z
a ďalšie užitočné príkazy aj so
skratkami sú v menu SLIME.
Pre pridávanie komentárov sa musíte prihlásiť.