Emacs (4) - ďalšie užívateľské nastavenia

Emacs (4) - ďalšie užívateľské nastavenia
14.02.2009 10:20 | Články | Adam Sloboda
Kontrola pravopisu, zálohy a iné užitočné pomôcky a nastavenia.

Na začiatok je potrebné zmieniť, že t je v Lispe kanonická hodnota pre "true" (pravda), nil je významový opak tejto hodnoty. Niektoré premenné vyžadujú túto hodnotu a 0 ju nemôže nahradiť, v niektorých naopak áno. Informácia o tom aké hodnoty by mala premenná obsahovať sa obvykle nachádza v dokumentácii (C-h v)

Úprava užívateľských nastavení

Ako prvé nastavíme UTF-8 prostredie, ktoré by v dnešnej dobe už malo byť samozrejmosťou:

(set-language-environment "UTF-8")

Niektoré funkcie vkladajú e-mail adresu (vrátane odosielania mailov), túto si môžeme nastaviť do premennej user-mail-address:

(setq user-mail-address "mailbox@server.tld")

Ak súbor obsahuje timestamp (časová značka), tak môžeme nastaviť jej formát a automatické aktualizovanie pri ukladaní:

(setq time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S (%u)")
(add-hook 'write-file-hooks 'time-stamp)

Názov okna alebo popis minimalizovaného okna (ak to window manager podporuje):

(setq-default frame-title-format (list "%b [%f]"))

(setq-default icon-title-format (list "%b"))

Nastavenie indikátora prázdnych riadkov na konci bufferu (podobné znakom ~ v editore Vim):

(setq-default indicate-empty-lines t)

Počet riadkov, ktoré sa majú odkryť pri scrollovaní:

(setq scroll-step 1)

Pohodlnejšie prepínanie medzi buffermi:

(iswitchb-mode 1)

Umožnenie krátkej odpovede na otázku s možnosťami Yes/No:

(fset 'yes-or-no-p 'y-or-n-p)

Nastavenie číselnej sústavy pre quoted-insert (C-q) v prípade zadávania špeciálneho znaku jeho kódom:

(setq read-quoted-char-radix 16)

Vynútenie "vizuálneho zvončeka":

(setq visible-bell t)

Ďalšia voľba pre kľud duše – zákaz blikania kurzoru:

(blink-cursor-mode 0)

Pridanie užitočných informácií do stavového riadku:

;; formát a zobrazenie času
(setq display-time-24hr-format t)
(display-time)
;; aktuálny stĺpec a riadok
(column-number-mode t)
(line-number-mode t)

Zálohovanie

Nehody sa niekedy stávajú, preto Emacs zálohuje – lenže normálne to robí v aktuálnom adresári a to nám nemusí vyhovovať:

;; ukladanie všetkých súborov do adresára ~/backup
(setq backup-directory-alist (quote (("." . "~/backup"))))

;; záloha kopírovaním
(setq backup-by-copying t)

Emacs poskytuje možnosť nastaviť rôzne miesta pre rôzne súbory podľa regulárnych výrazov, viac informácií je v popise premennej backup-directory-alist (C-h v).

Desktop

Emacs poskytuje rozšírenie pre ukladanie a načítanie pôvodného stavu pri ukončení a štarte. Nasledujúce nastavenie sa vždy pri ukončení opýta či má uložený "desktop" aktualizovať:

(setq desktop-save 'ask)
(setq desktop-globals-to-save
      (append '((extended-command-history . 30)

                (file-name-history        . 100)
                (grep-history             . 30)
                (compile-history          . 30)
                (minibuffer-history       . 50)
                (query-replace-history    . 60)

                (read-expression-history  . 60)
                (regexp-history           . 60)
                (regexp-search-ring       . 20)
                (search-ring              . 20)
                (shell-command-history    . 50)

                tags-file-name
                register-alist)))
(desktop-save-mode t)

Kontrola pravopisu

Emacs má dobrú integráciu s Ispell/Aspell alebo kompatibilnými kontrolami pravopisu (funkcie a premenné majú prefix ispell-):

(setq-default ispell-program-name "aspell")
(setq-default ispell-dictionary "british")

Slovník je možné meniť funkciou ispell-change-dictionary. Ak chceme kontrolovať zároveň počas písania, na to slúži flyspell-mode (resp. flyspell-prog-mode pre komentáre v zdrojových súboroch).

Vzdialené súbory

Úpravy súborov na vzdialených strojoch je možné vykonávať pomocou rozšírenia tramp (integrovaný v GNU Emacs 22):

(require 'tramp)
(setq tramp-syntax 'url)
(setq shell-prompt-pattern "$ ")

Nastavenie, ktoré pracuje bez problémov aj so zsh/ksh (default pracuje s dash/bash).

Je možné zadať adresu stroja pri otváraní súboru – /login@server:. Za dvojbodkou je možné používať aj dopĺňanie cesty tabulátorom. Na začiatku môžeme aj uviesť protokol, napr. /ssh:login@server: (alebo scp, ftp, smb a iné)

Homepage projektu a manuál je na adrese http://www.gnu.org/software/tramp/.

Manuálové stránky

Ani po manuálové stránky netreba ísť z Emacsu ďaleko, stačí spustiť woman a otvoriť si stránku.

Obyčajne sa otvára v samostatnom frame, ak by toto nevyhovovalo, stačí toto správanie vypnúť:

(setq woman-use-own-frame nil)

Praktické použitie značiek

Značky sme už používali na vyznačenie regiónov, no môžeme ich aj použiť na pohyb v texte. Predstavme si dlhší dokument a potrebujeme na chvíľu prejsť na iné miesto, spravíme si značku C-SPC a prejdeme kam potrebujeme. Naspäť sa môžeme jednoducho vrátiť skratkou C-x C-x (exchange-point-and-mark).

Ďalšie užitočné funkcie na prácu si môžeme nabindovať na vhodné skratky:

(define-key global-map (kbd "s-,") 
  '(lambda () (interactive) (marker-visit-prev)))

(define-key global-map (kbd "s-.")
  '(lambda () (interactive) (marker-visit-next)))

Teraz môžeme prechádzať po uložených skratkách pomocou s-, a s-. (vysvetlenie modifikátoru s je v prvej časti seriálu).

Syntax highlighting

Zvýrazňovanie sa v Emacs terminológii nazýva font-lock-mode. Pravdepodobne chceme mať zvýrazňovanie vždy zapnuté, vtedy môžeme nastaviť tento režim globálne:

(global-font-lock-mode t)

Tu už sa dostávame bližšie k módom pre programovacie jazyky, v ktorých je veľmi praktické aj párovanie zátvoriek:

(show-paren-mode t)

Teraz sa budu zvýrazňovať dvojice zátvoriek ak je kurzor za koncovou alebo na otváracej zátvorke.

Záver

Týmto by sme mali pokryté veľké množstvo bežne používaných nastavení a funkcií. Vďaka veľkej prispôsobiteľnosti a programovateľnosti Emacs poskytuje oveľa väčšie množstvo ďalších premenných a funkcií, ktorých dokumentácia je prístupná cez Help.

    • znacky 20.03.2009 | 13:07
      Avatar Marek Ochaba Gentoo  Používateľ
      Ked chcem pouzit prechadzanie po znackach, podla tohto navodu, tak dostanem chybovu hlasku: "function definition is void: marker-visit-prev". Robim nieco zle, alebo navod nieje kompletny ?
      • Re: znacky 30.03.2009 | 19:53
        autor   Návštevník
        zda sa, ze tato funkcia sa nachadza v balicku emacs-goodies-el
        • Re: znacky 14.05.2009 | 14:48
          Avatar Marek Ochaba Gentoo  Používateľ
          Ano, uz som to nasiel. Ale "emacs-goodies-el" je balicek iba pre Debian. Takze som pouzil priamo library-modul marker-visit.el
    • clanky o emacse 09.07.2009 | 12:42
      thorn   Návštevník
      Emacs sa uz vela rokov (ba desatroci) tesi oblube.

      Tu je seria starsich, ale stale aktualnych clankov:
      http://www.root.cz/clanky/emacs-viac-nez-len-editor/