EMACS a <TAB>

Michal Kubecek kubecek na karlin.mff.cuni.cz
Neděle Březen 16 21:42:46 CET 1997


> potreboval bych vedet, jak donutit Emacs, aby se klavesa <TAB> chovala
> jako <TAB>. Mackat C-q <tab> mne nebavi...

Pokud tim rozumite pozadavek, aby se tabulator choval "rozumne",
t.j. tak, jak je obvykle, nejjednodussi bude asi prepnout se
do normalniho modu, t.j. 'M-x fundamental-mode'.

> Nasel jsem v /usr/src/linux/Documentation/CodingStyle tohle:

On se zpusob implementace c-mode (a c++-mode) vyrazne zmenil,
takze ruzna literatura (vcetne dokumentace k Emacsu) je v tomto
smeru ponekud zastarala. Kazdopadne ted (19.34 - ale asi i driv)
umoznuje Emacs pouzit rozlicne styly indentace pomoci prikazu
c-set-style. Pri naproste neznalosti LISPu jsem dospel metodou
pokusu a (mnoha) omylu ke zjisteni, ze vlastni styl je mozno
vytvorit (a prohlasit za standardni) napr. tim, ze pridate
do sveho '~/.emacs' nasledujici radky:

(setq c-mode-hook
  '(lambda ()
     (c-add-style "mk"
                  '((c-basic-offset . 2)
                    (c-offsets-alist . ((brace-list-open   . -)
                                        (case-label        . +)
                                        (substatement-open . 0)
                                        (access-label      . 0)))))
     (c-set-style "mk")))
(setq c++-mode-hook
  '(lambda ()
     (c-add-style "mk"
                  '((c-basic-offset . 2)
                    (c-offsets-alist . ((brace-list-open   . -)
                                        (case-label        . +)
                                        (substatement-open . 0)
                                        (access-label      . 0)))))
     (c-set-style "mk")))



(FUJ). Blizsi vysvetleni, co jednotlive veci znamenaji, viz.
soubor c-mode.el. To, co doporucuji v tom dokumentu, by nejspis
znamenalo pouzit


(setq c-mode-hook
  '(lambda ()
     (c-set-style "K&R")
     (setq c-basic-offset 8)))


(a totez pro c++-mode). Ale i pak samozrejme <TAB> bude znamenat
"preindentuj aktualni radek".

Jeste poznamku k tomu vami zminovanemu dokumentu: ten clovek
pise, ze "GNU people are not evil but they are just severely misguided
in this matter" nebo tak nejak. Myslim, ze na autora tech radek
to plati tim spis... Je sice logicka snaha o to, aby zdrojaky
jadra vypadaly jednotne, ale tvrdit, ze by tak meli psat sve zdrojaky
vsichni, je nesmysl. Argumentace typu "tabulator je osm znaku,
takze indentovat se ma taky po osmi znacich a cokoli jineho
je jako definovat, ze \pi je 3" je primo ukazkovy priklad
demagogie. Indentujte si sve zdrojaky tak, jak to vyhovuje vam.

Posledni odstavec berte jako muj soukromy nazor, zbytek
snad nekomu pomuze.
                                                Michal Kubecek


Další informace o konferenci Linux