% Reference Card for GNU Emacs version 20 on Unix systems
%**start of header
\newcount\columnsperpage

% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here.  Nothing else needs to be changed.

\columnsperpage=1

% Copyright (c) 1987, 1993, 1996, 1997 Free Software Foundation, Inc.

% This file is part of GNU Emacs.

% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.

% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.

% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING.  If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.

% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
%    produces six separate pages, each of which needs to be reduced to 80%.
%    This gives the best resolution.
% 2 columns per page
%    produces three already-reduced pages.
%    You will still need to cut and paste.
% 3 columns per page
%    produces two pages which must be printed sideways to make a
%    ready-to-use 8.5 x 11 inch reference card.
%    For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author:
%  Stephen Gildea
%  Internet: gildea@mit.edu
%
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.

% If there were room, it would be nice to see a section on Dired.

\def\versionnumber{2.2}
\def\year{1997}

\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
  \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
  Permissions on back.  v\versionnumber}}

\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{v\versionnumber{} for GNU Emacs version 20, June \year}
\centerline{designed by Stephen Gildea}

Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.

For copies of the GNU Emacs manual, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

\endgroup}

% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}

\newdimen\intercolumnskip       %horizontal space between columns
\newbox\columna                 %boxes to hold columns already built
\newbox\columnb

\def\ncolumns{\the\columnsperpage}

\message{[\ncolumns\space 
  column\if 1\ncolumns\else s\fi\space per page]}

\def\scaledmag#1{ scaled \magstep #1}

% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns                  %one-column format uses normal size
  \hsize 4in
  \vsize 10in
  \voffset -.7in
  \font\titlefont=\fontname\tenbf \scaledmag3
  \font\headingfont=\fontname\tenbf \scaledmag2
  \font\smallfont=\fontname\sevenrm
  \font\smallsy=\fontname\sevensy

  \footline{\hss\folio\hss}
  \def\makefootline{\baselineskip10pt\hsize4in\line{\the\footline}}
\else                           %2 or 3 columns uses prereduced size
  \hsize 3.2in
  \vsize 7.95in
  \hoffset -.75in
  \voffset -.745in
  \font\titlefont=cmbx10 \scaledmag2
  \font\headingfont=cmbx10 \scaledmag1
  \font\smallfont=cmr6
  \font\smallsy=cmsy6
  \font\eightrm=cmr8
  \font\eightbf=cmbx8
  \font\eightit=cmti8
  \font\eighttt=cmtt8
  \font\eightmi=cmmi8
  \font\eightsy=cmsy8
  \textfont0=\eightrm
  \textfont1=\eightmi
  \textfont2=\eightsy
  \def\rm{\eightrm}
  \def\bf{\eightbf}
  \def\it{\eightit}
  \def\tt{\eighttt}
  \normalbaselineskip=.8\normalbaselineskip
  \normallineskip=.8\normallineskip
  \normallineskiplimit=.8\normallineskiplimit
  \normalbaselines\rm           %make definitions take effect

  \if 2\ncolumns
    \let\maxcolumn=b
    \footline{\hss\rm\folio\hss}
    \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
  \else \if 3\ncolumns
    \let\maxcolumn=c
    \nopagenumbers
  \else
    \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
    \errmessage{Illegal number of columns per page}
  \fi\fi

  \intercolumnskip=.46in
  \def\abc{a}
  \output={%                    %see The TeXbook page 257
      % This next line is useful when designing the layout.
      %\immediate\write16{Column \folio\abc\space starts with \firstmark}
      \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
      \else\if a\abc
        \global\setbox\columna\columnbox \global\def\abc{b}
        %% in case we never use \columnb (two-column mode)
        \global\setbox\columnb\hbox to -\intercolumnskip{}
      \else
        \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
  \def\multicolumnformat{\shipout\vbox{\makeheadline
      \hbox{\box\columna\hskip\intercolumnskip
        \box\columnb\hskip\intercolumnskip\columnbox}
      \makefootline}\advancepageno}
  \def\columnbox{\leftline{\pagebody}}

  \def\bye{\par\vfill\supereject
    \if a\abc \else\null\vfill\eject\fi
    \if a\abc \else\null\vfill\eject\fi
    \end}  
\fi

% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12

\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}

\hyphenation{mini-buf-fer}

\parindent 0pt
\parskip 1ex plus .5ex minus .5ex

\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}

% newcolumn - force a new column.  Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}

% title - page title.  Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}

% section - new major section.  Argument is section name.
\outer\def\section#1{\par\filbreak
  \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
  \vskip 2ex plus 1ex minus 1.5ex}

\newdimen\keyindent

% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys

% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted.  Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}

% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}

% kbd - argument is characters typed literally.  Like the Texinfo command.
\def\kbd#1{{\tt#1}\null}        %\null so not an abbrev even if period follows

% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
  \obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}

% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
  {\hsize=.75\hsize\rightskip=1em
  \hskip\keyindent\relax#1}\kbd{#2}\hfil}}

\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox

% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name.  (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
  {\hskip\keyindent\relax#1\hfil}%
  \hskip -\metaxwidth minus 1fil
  \kbd{#2}\hfil}}

% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
  &\kbd{#3}\hfil\quad\cr}

%**end of header


\title{Справочная карта по GNU Emacs}

\centerline{(для версии 21)}

\section{Запуск Emacs}

Для запуска GNU Emacs 21, просто наберите имя программы~--- \kbd{emacs}

О чтении файлов, читайте далее в разделе Файлы.

\section{Выход из Emacs}

\key{Приостановить работу Emacs (или свернуть в иконку при работе в X)}{C-z}
\key{Выйти из Emacs}{C-x C-c}

\section{Файлы}

\key{{\bf загрузить} файл в Emacs}{C-x C-f}
\key{{\bf сохранить} файл обратно на диск}{C-x C-s}
\key{сохранить {\bf все} файлы}{C-x s}
\key{{\bf вставить} содержимое другого файла}{}
\key{\ \ \ в текущий буфер}{C-x i}
\key{заменить данный файл, нужным вам файлом}{C-x C-v}
\key{сохранить буфер в указанном файле}{C-x C-w}
\key{Выполнить следующую логическую}{}
\key{\ \ \ операцию системы контроля версий}{C-x C-q}

\section{Получение помощи}

Справочная система достаточно проста. Hажмите \kbd{C-h} (или \kbd{F1}) и
следуйте инструкциям. Если вы пользуетесь первый раз, то наберите \kbd{C-h
  t} для вызова {\bf учебника}.

\key{Удалить окно справки}{C-x 1}
\key{Прокрутить окно справки}{C-M-v}

\key{apropos: показать команды,}{}
\key{\ \ \  соответствующие строке}{C-h a}
\key{показать имя функции, которая}{}
\key{\ \ \  запускается клавишей}{C-h c}
\key{описать функцию}{C-h f}
\key{получить информацию о режиме}{C-h m}

\section{Исправление ошибок}

\key{{\bf прервать} частично набранную,}{}
\key{\ \ \  или выполняемую команду}{C-g}
\metax{{\bf восстановить} файл,}{}
\key{\ \ \  потерянный при крахе системы}{M-x recover-file}
\key{{\bf отменить} нежелательные изменения}{C-x u {\rm or} C-_}
\metax{восстановить буфер в}{}
\key{\ \ \  первоначальное состояние}{M-x revert-buffer}
\key{перерисовать заполненный мусором экран}{C-l}

\section{Hаращиваемый поиск}

\key{поиск вперед}{C-s}
\key{поиск назад}{C-r}
\key{поиск по регулярному выражению}{C-M-s}
\key{поиск по регулярному выражению назад}{C-M-r}

\key{выбрать предыдущую строку поиска}{M-p}
\key{выбрать следующую строку поиска}{M-n}
\key{прекратить наращиваемый поиск}{RET}
\key{отменить эффект ввода последнего символа}{DEL}
\key{прервать текущий поиск}{C-g}

\key{Для повтора поиска в любом направлении}{}
\key{используйте клавиши \kbd{C-s} или \kbd{C-r}. }{}
\key{Если Emacs все ещепроизводит поиск,  }{}
\key{то \kbd{C-g} отменит только невыполненную часть.}{}

%\shortcopyrightnotice

\section{Перемещение}

\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf объекты, через которые происходит перемещение}}{{\bf назад}}{{\bf вперед}}
\threecol{символ}{C-b}{C-f}
\threecol{слово}{M-b}{M-f}
\threecol{строка}{C-p}{C-n}
\threecol{начало (или конец) строки}{C-a}{C-e}
\threecol{предложение}{M-a}{M-e}
\threecol{абзац}{M-\{}{M-\}}
\threecol{страница}{C-x [}{C-x ]}
\threecol{выражение (sexp)}{C-M-b}{C-M-f}
\threecol{функция}{C-M-a}{C-M-e}
\threecol{переход в начало (или конец) буфера}{M-<}{M->}
}

\key{прокрутка следующего экрана}{C-v}
\key{прокрутка предыдущего экрана}{M-v}
\key{прокрутка влево}{C-x <}
\key{прокрутка вправо}{C-x >}
\key{прокрутка текущей строки для помещения в ее центре экрана}{C-u C-l}

\section{Уничтожение и Удаление}

\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf уничтожаемый объект}}{{\bf назад}}{{\bf вперед}}
\threecol{символ (удаление, а не уничтожение)}{DEL}{C-d}
\threecol{слово}{M-DEL}{M-d}
\threecol{строка (до конца строки)}{M-0 C-k}{C-k}
\threecol{предложение}{C-x DEL}{M-k}
\threecol{выражение}{M-- C-M-k}{C-M-k}
}

\key{kill {\bf область}}{C-w}
\key{скопировать область в список уничтожений}{M-w}
\key{удалить до следующего вхождения символа {\it char}}{M-z {\it char}}

\key{вставить последний уничтоженный объект}{C-y}
\key{заменить только что восстановленный текст предшествующим уничтоженным
текстом}{M-y}

\section{Пометка}

\key{установить пометку}{C-@ {\rm or} C-SPC}
\key{обменять местами точку и пометку}{C-x C-x}

\key{пометить {\it N\/} {\bf слов}}{M-@}
\key{пометить {\bf параграф}}{M-h}
\key{пометить {\bf страницу}}{C-x C-p}
\key{пометить {\bf выражение}}{C-M-@}
\key{пометить {\bf функцию}}{C-M-h}
\key{пометить весь {\bf буфер}}{C-x h}

\section{Замена с запросом}

\key{интерактивная замена текстовой строки}{M-\%}
\metax{с использованием регулярных выражений}{M-x query-replace-regexp}

Возможными ответами для режима замена с запросом  являются:

\key{{\bf заменить} данное соответствие, перейти к следующему}{SPC}
\key{заменить это соответствие, не перемещаться}{,}
\key{{\bf пропустить} соответствие без замены}{DEL}
\key{заменить все оставшиеся соответствия без запросов}{!}
\key{{\bf вернуться} к предыдущему соответствию}{^}
\key{{\bf выйти} из режима замены с запросом}{RET}
\key{войти в режим рекурсивного редактирования (для выхода используется\kbd{C-M-c})}{C-r}

\section{Множество окон}

Когда показано две команды, то вторая используется для ``другого фрейма.''

\key{удалить все остальные окна}{C-x 1}

{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{разбить окно по горизонтали}{C-x 2\ \ \ \ }{C-x 5 2}
\threecol{удалить данное окно}{C-x 0\ \ \ \ }{C-x 5 0}
}}
\key{разбить окно по вертикали}{C-x 3}

\key{выполнить прокрутку в другом окне}{C-M-v}

{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{переместить курсор в другое окно}{C-x o}{C-x 5 o}

\threecol{выбрать буфер в другом окне}{C-x 4 b}{C-x 5 b}
\threecol{показать буфер в другом окне}{C-x 4 C-o}{C-x 5 C-o}
\threecol{загрузить файл в другое окно}{C-x 4 f}{C-x 5 f}
\threecol{открыть файл в режиме чтения в другом окне}{C-x 4 r}{C-x 5 r}
\threecol{запустить Dired в другом окне}{C-x 4 d}{C-x 5 d}
\threecol{найти таг в другом окне}{C-x 4 .}{C-x 5 .}
}}

\key{увеличить высоту окна}{C-x ^}
\key{сузить текущее окно}{C-x \{}
\key{расширить текущее окна}{C-x \}}

\section{Форматирование}

\key{сделать отступ для текущей {\bf строки} (в зависимости от режима)}{TAB}
\key{сделать отступ для {\bf региона} (в зависимости от режима)}{C-M-\\}
\key{сделать отступ для {\bf выражение} (в зависимости от режима)}{C-M-q}
\key{сделать отступ к заданной {\it N\/} колонке}{C-x TAB}

\key{вставить новую строку после точки}{C-o}
\key{сдвинуть остаток строки вертикальное вниз}{C-M-o}
\key{удалить пустые строки вокруг точки}{C-x C-o}
\key{объединить строку с предыдущей (со следующими N строками)}{M-^}
\key{удалить пустое пространство вокруг точки}{M-\\}
\key{поместить только один пробел в точке}{M-SPC}

\key{заполнить текущий параграф}{M-q}
\key{установить столбец заполнения}{C-x f}
\key{установить префикс заполнения каждой строки}{C-x .}

\key{установить начертание}{M-g}

\section{Изменение регистра}

\key{сделать буквы слова заглавными}{M-u}
\key{сделать буквы слова прописными}{M-l}
\key{сделать первую букву слова заглавной}{M-c}

\key{сделать буквы области заглавными}{C-x C-u}
\key{сделать буквы области прописными}{C-x C-l}

\section{Минибуфер}

В минибуфере определены следующие клавиши (ключи).

\key{дополнить, насколько возможно}{TAB}
\key{дополнить, до одного слова}{SPC}
\key{дополнить и выполнить}{RET}
\key{показать возможные дополнения}{?}
\key{выбрать предыдущий ввод в минибуфер}{M-p}
\key{выбрать следующий ввод в минибуфер}{M-n}
\key{поиск в истории по регулярному выражению в обратном напрвлении}{M-r}
\key{поиск в истории по регулярному выражению в прямом напрвлении}{M-s}
\key{прервать команду}{C-g}

Наберите \kbd{C-x ESC ESC} для редактирования и повторения последней команды
набранной в минибуфере. Наберите \kbd{F10} для активации линейки меню,
используя минибуфер.

%\newcolumn
%\title{Справочная карта по GNU Emacs}

\section{Буфера}

\key{выбрать другой буфер}{C-x b}
\key{выдать список всех буферов}{C-x C-b}
\key{убить буфер}{C-x k}

\section{Обмен местами}

\key{обменять местами {\bf символы}}{C-t}
\key{обменять местами {\bf слова}}{M-t}
\key{обменять местами {\bf строки}}{C-x C-t}
\key{обменять местами {\bf выражения}}{C-M-t}

\section{Проверка грамматики}

\key{проверить текущее слово}{M-\$}
\metax{проверить все слова в области}{M-x ispell-region}
\metax{выполнить проверку всего буфера}{M-x ispell-buffer}

\section{Тэги}

\key{найти определение тэга}{M-.}
\key{найти следующее вхождение тэга}{C-u M-.}
\metax{указать новый файл с тэгами}{M-x visit-tags-table}

\metax{поиск по шаблону по всей таблице тэгов}{M-x tags-search}
\metax{выполнить query-replace над всеми файлами}{M-x tags-query-replace}
\key{продолжить поиск или поиск-замену тэга}{M-,}

\section{Командные процессоры}

\key{Выполнить команду командного процессора}{M-!}
\key{выполнить команду командного процессора над регионом}{M-|}
\key{пропустить содержимое области через команду командного процессора}{C-u M-|}
\key{запустить командный процессор в окне \kbd{*shell*}}{M-x shell}

\section{Прямоугольные области}

\key{скопировать прямоугольную область в регистр}{C-x r r}
\key{удалить прямоугольную область}{C-x r k}
\key{уничтожить прямоугольную область}{C-x r y}
\key{открыть прямоугольную область, сдвигая текст вправо}{C-x r o}
\key{очистить прямоугольную область}{C-x r c}
\key{предварить каждую строку строкой текста}{C-x r t}

\section{Сокращения}

\key{добавить глобальное сокращение}{C-x a g}
\key{добавить локальное для режима сокращение}{C-x a l}
\key{добавить глобальное значение для данного сокращения}{C-x a i g}
\key{добавить специфическое для режима значение данного сокращения}{C-x a i l}
\key{явно вставить значение для сокращения}{C-x a e}

\key{динамически дополнить предыдущее слово}{M-/}

\section{Регулярные выражения}

\key{любой одиночный символ (за исключением символа новой строки)}{. {\rm(dot)}}
\key{ноль или более повторений}{*}
\key{одно или более повторений}{+}
\key{ноль или одно повторение}{?}
\key{прикрыть специальный символ {\it c\/}}{\\{\it c}}
\key{выбор между альтернативами (``или'')}{\\|}
\key{группировка}{\\( {\rm$\ldots$} \\)}
\key{текст в {\it n\/}-й группе}{\\{\it n}}
\key{граница слова}{\\b}
\key{не граница слова}{\\B}

\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf объект}}{{\bf начало соответствия}}{{\bf конец соответствия}}
\threecol{строка}{^}{\$}
\threecol{слово}{\\<}{\\>}
\threecol{буфер}{\\`}{\\'}

\threecol{{\bf класс символов}}{{\bf соответствует им}}{{\bf соответствует
другим}}
\threecol{явный набор}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
\threecol{символ-буква}{\\w}{\\W}
\threecol{символ с синтаксисом {\it c}}{\\s{\it c}}{\\S{\it c}}
}

\section{Международные наборы символов}

\metax{выбрать язык}{M-x set-language-environment}
\metax{показать все возможные методы ввода}{M-x list-input-methods}
\key{разрешить или запретить метод ввода}{C-\\}
\key{установить систему кодирования для следующей команды}{C-x RET c}
\metax{показать список всех систем кодирования}{M-x list-coding-systems}
\metax{выбрать предпочтительную систему кодирования}{M-x prefer-coding-system}

\section{Информация (система Info)}

\key{запустить систему доступа к документации}{C-h i}
\key{найти в документации указанную функцию или переменную}{C-h C-i}
\beginindentedkeys

Перемещение внутри узла (нодами):

\key{прокрутка вперед}{SPC}
\key{прокрутка назад}{DEL}
\key{перейти к началу узла}{. {\rm (dot)}}

Перемещение между узлами:

\key{{\bf следующий} узел}{n}
\key{{\bf предыдущий} узел}{p}
\key{перейти к {\bf верхнему} узлу}{u}
\key{выбрать меню по имени}{m}
\key{выбрать {\it n\/}-й пункт меню по номеру (1--9)}{{\it n}}
\key{перейти по ссылке  (возврат с помощью \kbd{l})}{f}
\key{возвратится к последнему просмотренному узлу}{l}
\key{возвратится к узлу-каталогу}{d}
\key{перейти к узлу, заданному именем}{g}

Другие команды:

\key{запустить {\bf учебник} по системе документации}{h}
\key{{\bf прекратить работу} с документацией}{q}
\key{поиск в узлах с помощью регулярного выражений}{M-s}

\endindentedkeys

\section{Регистры}

\key{сохранить область в регистре}{C-x r s}
\key{вставить содержимое регистра в буфер}{C-x r i}

\key{сохранить значение точки в регистре}{C-x r SPC}
\key{перейти к точке, сохраненной в регистре}{C-x r j}

\section{Клавиатурные макросы}

\key{{\bf начать} определение клавиатурного макроса}{C-x (}
\key{{\bf закончить} определение клавиатурного макроса}{C-x )}
\key{{\bf выполнить} макрос, определенный последним}{C-x e}
\key{дополнить последний определенный макрос}{C-u C-x (}
\metax{задать имя для последнего определенного макроса}{M-x name-last-kbd-macro}
\metax{вставить в буфер определение макроса на языке Lisp}{M-x insert-kbd-macro}

\section{Команды связанные с Emacs Lisp}

\key{оценить {\bf выражение} перед точкой}{C-x C-e}
\key{оценить текущее {\bf defun}}{C-M-x}
\metax{оценить {\bf область}}{M-x eval-region}
\key{считать и оценить буфер}{M-:}
\metax{загрузить из стандартного системного каталога}{M-x load-library}

\section{Простая настройка}

\metax{настроить переменные и начертания}{M-x customize}

% The intended audience here is the person who wants to make simple
% customizations and knows Lisp syntax.

Создать глобальное присвоение ключей на Emacs Lisp (пример):

\beginexample%
(global-set-key "\\C-cg" 'goto-line)
(global-set-key "\\M-\#" 'query-replace-regexp)
\endexample

\section{Написание команд}

\beginexample%
(defun \<command-name> (\<args>)
  "\<documentation>" (interactive "\<template>")
  \<body>)
\endexample

Пример:

\beginexample%
(defun this-line-to-top-of-window (line)
  "Reposition line point is on to top of window.
With ARG, put point on line ARG."
  (interactive "P")
  (recenter (if (null line)
                0
              (prefix-numeric-value line))))
\endexample

Спецификация \kbd{interactive} сообщает о том, что аргумент надо считывать
интерактивно. Для получения дополнительной информации наберите \kbd{C-h f
interactive}.

\copyrightnotice

\bye

% Local variables:
% compile-command: "tex refcard"
% End:
