Команды для естественных языков – ЧАСТЬ 4

В режиме Text  hTABi  запускает функцию indent-relative (см.  Глава 20 [Отступы], с. 177), чтобы вам было удобно делать отступ как в предыдущей строке. Когда в предыдущей строке нет отступа, indent-relative запускает tab-to-tab-stop, которая использует устанавливаемые вами позиции табуляции (см. Раздел 20.2 [Позиции табуляции],  с. 178).

Режим Text выключает средства, связанные с комментариями, кроме тех случаев, когда вы явно вызовете их.  Он изменяет синтаксическую таблицу таким образом, что точки не рассматриваются  как часть слова, тогда как знак забоя, подчеркивание  и апострофы считаются таковыми.

Если вы  делаете  отступ  в  первой строке  абзаца, вам нужно  использовать режим Paragraph-Indent  Text вместо режима Text.  В этом режиме вам не обязательно  ставить между абзацами пустые строки, потому что отступа в первой строке достаточно для начала нового абзаца; однако, абзацы, в которых каждая строка имеет отступ, не поддерживаются. Чтобы войти в этот режим, используйте M-x paragraph-indent-text-mode.

Режим Text и все режимы, основанные на нем, определяют M-hTABкак команду ispellcomplete-word, которая производит завершение части слова перед точкой в данном буфере, используя орфографический словарь как пространство возможных слов. См. Раздел 13.4 [Правописание], с. 102.

Вход в режим Text  запускает ловушку text-mode-hook.    Другие основные  режимы, родственные с режимом Text, также запускают эту ловушку и потом свои ловушки; к ним относятся режим Paragraph-Indent Text, режим Nroff, режим TEX, режим Outline и режим

Mail.   Функции  ловушки text-mode-hook  могут  проверить значение major-mode, чтобы

узнать, в какой из этих режимов вы на самом деле входите.  См. Раздел 31.2.3 [Ловушки],

с. 349.

21.8  Режим Outline

Режим Outline — это основной режим, очень похожий на режим Text,  но предназначенный для редактирования структурированного текста. Он позволяет вам делать части текста временно невидимыми,  так что вы можете видеть просто просмотреть структуру текста. Наберите M-x outline-mode, чтобы включить режим Outline в текущем буфере.

Когда  режим Outline делает строку невидимой,  эта строка не появляется  на экране. Экран имеет точно такой же  вид, как  если бы невидимая строка была удалена, за исключением того, что в конце предыдущей видимой строки появляется многоточие (только одно, независимо от того, сколько невидимых строк следует дальше).

Команды редактирования, работающие со строками, такие как C-n и C-p, трактуют текст невидимой строки как часть предыдущей видимой. Уничтожение полной видимой строки, включая ограничивающий ее знак новой строки, на самом деле уничтожает вместе с ней все следующие невидимые строки.

Второстепенный режим Outline  предоставляет те  же  команды, что  и  основной режим Outline,  но вы можете  использовать его совместно  с другими основными режимами.   Чтобы включить  второстепенный режим Outline  в текущем буфере, наберите  M-x outline-minor-mode. Вы также можете указать это в тексте файла с помощью локальной переменной в форме ‘mode: outline-minor’ (см. Раздел 31.2.5 [Переменные файла], с. 351).

Основной режим, режим Outline, предоставляет  особые привязки ключей на префиксе C-c.   Второстепенный режим Outline  предоставляет  похожие привязки с C-c @   в качестве префикса; это нужно, чтобы уменьшить риск конфликта со специальными командами основного режима. (Используемый префикс управляется переменной outline-minor-modeprefix.)

При входе в режим Outline запускается ловушка text-mode-hook  сразу после ловушки

outline-mode-hook (см. Раздел 31.2.3 [Ловушки], с. 349).

21.8.1  Формат схем текста

Режим Outline предполагает, что строки в буфере делятся на два типа: строки заголовка и строки тела. Строки заголовка представляет тему в схеме текста.  Они начинаются с одной или более звездочек;  число звездочек определяет глубину заголовка в структуре текста.  Таким образом, строка заголовка с одной звездочкой — это основная тема; все строки заголовка с двумя звездочками между этой строкой и следующей строкой заголовка с одной звездочкой являются  ее подтемами  и так далее. Любая строка, которая не является строкой заголовка, — это строка тела. Строки тела относятся к предшествующей строке заголовка. Вот пример:

* Еда

Это тело,  которое говорит что-то  о еде.

** Вкусная еда

Это тело заголовка  второго уровня.

** Противная еда Здесь тоже могло бы быть тело на нескольких строках.

*** Общепит

* Приют

Еще  одна тема первого уровня со своей строкой заголовка.

Строка заголовка вместе со всеми последующими  строками тела в совокупности называются вхождением. Строка заголовка вместе со всеми следующими  более глубокими заголовками и их строками тела называется поддеревом.

Вы можете  настроить критерий для различения строк заголовка, установив переменную outline-regexp.  Любая строка, чье начало содержит совпадение  с этим регулярным выражением, рассматривается  как  строка заголовка.   Соответствия, которые начинаются с середины строки (не  в начале),  не рассматриваются.  Длина текста соответствия определяет уровень заголовка: более длинное соответствие  создает глубже вложенный уровень. Например, если программа форматирования имеет команды ‘@chapter’,

‘@section’ и ‘@subsection’ для деления документа на главы и разделы, вы можете сделать эти строки воспринимаемыми в качестве строк заголовка, установив outline-regexp равной ‘"@chap\\|@\\(sub\\)*section"’.  Обратите  внимание на хитрость:  слова ‘chapter’ и ‘section’ имеют равную длину, но определив регулярное выражение как совпадающее только с ‘chap’, мы гарантируем, что длина текста, соответствующего заголовку главы, будет короче; таким образом, режим Outline будет знать, что разделы содержатся в главах. Это работает, если никакая другая команда не начинается  с ‘@chap’.

Есть возможность изменить правило подсчета уровня строк заголовка, путем установки переменной outline-level. Значение outline-level должно быть функцией,  не принима-

ющей аргументов и возвращающей номер уровня текущего заголовка. Некоторые основные режимы, например режимы C, Nroff и Emacs Lisp, устанавливают эту переменную, чтобы ими можно было пользоваться со второстепенным режимом Outline.

21.8.2  Команды перемещения  по структуре

Режим Outline предоставляет  особые команды перемещения, которые передвигают на-

зад и вперед по строкам заголовков.

C-c C-n      Передвинуть точку  к  следующей  видимой строке  заголовка  (outline-nextvisible-heading).

C-c C-p      Передвинуть  точку   к   предыдущей видимой  строке   заголовка   (outlineprevious-visible-heading).

C-c C-f       Передвинуть точку к следующей видимой строке заголовка того же уровня, что и строка, на которой находится точка (outline-forward-same-level).

C-c C-b      Передвинуть точку  к предыдущей видимой строке заголовка этого же уровня

(outline-backward-same-level).

C-c C-u      Передвинуть точку  назад к  видимой строке  заголовка более  низкого уровня

(outline-up-heading).

C-c C-n (outline-next-visible-heading) переходит вниз на следующую  строку заголовка.  C-c C-p (outline-previous-visible-heading)  передвигает аналогично, но назад. Обе принимают числовой аргумент как  счетчик повторов.  Имена этих команд подчеркивают,  что невидимые  заголовки пропускаются, но это на самом деле  не  специальная особенность.  Все команды редактирования, которые просматривают строки, игнорируют невидимые строки автоматически.

Более мощные команды движения понимают уровневую структуру заголовков. C-c C-f (outline-forward-same-level) и C-c C-b (outline-backward-same-level) передвигают от одной строки заголовка к другой видимой строке заголовка той же самой глубины в структуре.   C-c C-u (outline-up-heading) передвигает назад к  другому заголовку, который имеет меньшую глубину вложенности.

21.8.3  Команды управления видимостью структуры

Чтобы сделать строки видимыми или невидимыми, используются другие специальные команды режима Outline. Все их имена начинаются либо с hide, либо с show. Большинство из них составляют пары противоположностей. Они не могут быть отменены; вместо этого вы можете произвести отмену безотносительно к видимости текста. Изменение видимости строк просто не записывается механизмом отмены.

C-c C-t       Сделать  все строки тела в буфере невидимыми  (hide-body).

C-c C-a      Сделать  все строки в буфере видимыми  (show-all).

C-c C-d      Сделать  все под этим заголовком невидимым, но не сам этот заголовок (hidesubtree).

C-c C-s      Сделать все под этим заголовком видимым, включая тело,  подзаголовки и их тела (show-subtree).

C-c C-l       Сделать тело этой строки заголовка и все его подзаголовки невидимыми (hideleaves).

C-c C-k      Сделать все подзаголовки этого заголовка видимыми на всех  уровнях (showbranches).

C-c C-i       Сделать непосредственные подзаголовки (на один уровень вниз) этого заголовка видимыми (show-children).

C-c C-c      Сделать тело этого заголовка невидимым (hide-entry).

C-c C-e      Сделать тело этого заголовка видимым (show-entry).

C-c C-q      Скрыть все, кроме n верхних уровней строк заголовков (hide-sublevels).

C-c C-o      Скрыть все, кроме заголовка или тела, в котором находится точка, и заголов-

ков, ведущих отсюда к верхнему уровню структуры  (hide-other).

Две команды, которые строго противоположны, — это C-c C-c (hide-entry) и C-c C-e (show-entry). Они применяются, когда точка расположена на заголовке, и относятся только к строкам тела этого заголовка. Подтемы и их тела не затрагиваются.

Две более мощные противоположности — это C-c C-d (hide-subtree) и C-c C-s (showsubtree).  Обе предполагают использование, когда точка находится на заголовке, и обе применяются ко всем строкам поддерева этого заголовка: его телу, всем его подзаголовкам, как прямым, так и косвенным, и всем их телам. Другими словами,  поддерево содержит все, что следует за этим заголовком, вплоть до (но не включая) следующего заголовка того же самого или более высокого ранга.

Промежуточное состояние между видимым и невидимым  поддеревом — это когда видимы все подзаголовки, но не видимо ни одно тело.  Для осуществления этого есть две команды, в зависимости от того, хотите ли вы скрыть тела или сделать видимыми подзаголовки. Это C-c C-l  (hide-leaves) и C-c C-k (show-branches).

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий