Použití emacsu pro editaci Perlu

emacs a perl editovat

K editování zdrojových souborů v různých jazycích existují různé mody. Pokud máme nainstalovanou distribuci debian anebo nějakou z ní odvozenou, např. ubuntu, Morphix či jinou, založenou na balíčkovacím systému dpkg (tj. balíky s příponou .deb), pak většinu takovýchto základních módů budemem mít v balíku emacs21-el (pro emacs verse 21.x). Které módy máme k disposici pro jazyk perl, zjistíme:

dpkg -L emacs21-el | grep perl

Já jsem dostal odpověď:

/usr/share/emacs/21.4/lisp/progmodes/perl-mode.el
/usr/share/emacs/21.4/lisp/progmodes/cperl-mode.el

Po různých diskusních skupinách jsem vypátral všeobecně rozšířenou domněnku, že mód perl-mode bude nejspíš původní mód, zatímco cperl-mode nějaký novější a dokonalejší (jistě to neví asi nikdo, v originální dokumentaci to zřejmě nenajdete) a proto většina lidí používá cperl-mode.

Pokud se rozhodnete editovat např. soubor test.pl, pak emacs (ve své implicitní konfiguraci) podle přípony .pl usoudí, že hodláte editovat perlovský skript a podle toho nastaví i minor mode.

Zajímavé je například chování tabelátoru, tj. klávesy TAB. Co v našem módu provádí zjistíme:

C-h c TAB

– obdržíme např:

TAB runs the command perl-indent-command

Z toho zjistíme, že máme v konfiguraci perl-mode. Což jsme ostatně viděli už ze stavové řádky, kde se zobrazuje (Perl). V případě cperl-mode obdržíme např:

TAB runs `cperl-indent-command'

o kterém se můžeme dočíst:

`cperl-indent-command' is an interactive compiled Lisp function
  -- loaded from "cperl-mode"
(cperl-indent-command &optional WHOLE-EXP)

Documentation:
Indent current line as Perl code, or in some cases insert a tab character.
If `cperl-tab-always-indent' is non-nil (the default), always indent current
line.  Otherwise, indent the current line only if point is at the left margin
or in the line's indentation; otherwise insert a tab.

A numeric argument, regardless of its value,
means indent rigidly all the lines of the expression starting after point
so that this line becomes properly indented.
The relative indentation among the lines of the expression are preserved.

cperl-mode editovat

Ruční start:

M-x cperl-mode

Manuál:

C-h m

Automatický start: do ~/.emacs uvedeme řádku:

(defalias 'perl-mode 'cperl-mode)

Další odkazy: