<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
  <head>
    <title>history</title>
  </head>

  <body>
    <h1>history</h1>

    <p>Команда работает со списком выполнявшихся команд.</p>
    
    <h2>СИНТАКСИС</h2>
    
    <pre>
      <strong>history</strong> ?<em>option</em>? ?<em>arg</em> <em>arg</em>
    </pre>

    <h2>ОПИСАНИЕ</h2> 

    <p> Команда <strong>history</strong> выполняет действия по отношению к
      недавно выполненным командам, занесенным в журнал. Каждая из
      этих зарегистрированных команд обозначается термином
      &quot;событие&quot;. Ссылаться на события в команде
      <strong>history</strong> можно одним из следующих способов:</p>
    <ol>
      <li><em>Число</em>. Если положительное - ссылается на событие с
	этим номером (все события нумеруются начиная с 1). Если число
	отрицательное, то оно указывает номер события относительно
	текущего (<strong>-1</strong> - предыдущее, <strong>-2</strong> - перед предыдущим
	и т.д.). Событие <strong>0</strong> ссылается на текущее событие.</li>

      <li><em>Строка</em>. Ссылается на наиболее позднее событие,
	которое удовлетворяет строке. Событие удовлетворяет строке,
	если оно начинается со строки, или в соответствии с правилами
	команды <strong>string match</strong>.</li>
    </ol>
    
    <p>Команда <strong>history</strong> может принимать одну из следующих
      форм.</p>

    <dl>
      <dt><strong>history</strong></dt>

      <dd> То же самое, что команда <strong>history info</strong>, описанная
	ниже. </dd>

      <dt><strong>history</strong> <strong>add</strong> <em>command</em> ?<em>exec</em>? </dt>

      <dd> Добавляет аргумент <em>command</em> в журнал как новое
        событие. Если присутствует аргумент <strong><a href=
        exec.html>exec</a></strong>(или произвольное сокращение), то
        команда <em>command</em> выполняется и возвращается ее
        результат. В противном случае возвращается пустая строка.
      </dd>
      
      <dt><strong>history</strong> <strong>change</strong> <em>newValue</em>
	?<em>event</em>?</dt>

      <dd> Заменяет описание события <em>event</em> на <em>newValue</em>.
        Аргумент <em>event</em> определяет событие, описание которого
        будет заменено. По умолчанию - текущее событие (даже не
        предыдущее!). Эта форма команды предназначается для
        использования в тех случаях, когда переформировывается журнал
        событий и позволяет заменить текущее событие (переформирование
        журнала) на необходимое. Команда возвращает пустую строку.
      </dd>

      <dt> <strong>history</strong> <strong>clear</strong> </dt>

      <dd> Удаляет журнал событий. Количество запоминаемых событий
        (см. <strong>history</strong> <strong>keep</strong>) сохраняется. Нумерация
        событий начинается сначала.
      </dd>
      
      <dt><strong>history</strong> <strong>event</strong> ?<em>event</em>?</dt>

      <dd> Возвращает описания события <em>event</em>. Значение по
	умолчанию <strong>-1.</strong>
      </dd>

      <dt> <strong>history</strong> <strong>info</strong> ?<em>count</em>? </dt>

      <dd> Возвращает в удобном для чтения виде список, состоящий из
        номеров и описаний событий (кроме текущего). Если аргумент
        <em>count</em> задан, то только <em>count</em> последних событий
        возвращаются.
      </dd>

      <dt> <strong>history</strong> <strong>keep</strong> ?<em>count</em>? </dt>

      <dd> Команда изменяет размер журнала на <em>count</em> событий.
        Исходно в журнале сохраняются 20 последних событий. Если
        аргумент <em>count</em> не указан, команда возвращает текущее
        значение размера журнала.
      </dd>

      <dt> <strong>history</strong> <strong>nextid</strong> </dt>

      <dd> Возвращает номер следующего события, которое будет записано
        в журнал. Полезно, например, для вывода номера события в
        приглашении командной строки.
      </dd>

      <dt> <strong>history</strong> <strong>redo</strong> ?<em>event</em>? </dt>

      <dd> Повторно выполняет команду, указанную с помощью аргумента
        <em>event</em>. Значение аргумента по умолчанию <strong>-1</strong>.  Эта
        команда вызывает переформирование журнала, см. <a href=
	  #ПЕРЕФОРМИРОВАНИЕ>ниже</a>.
      <dd>
    </dl>
    
    <h2><a name=ПЕРЕФОРМИРОВАНИЕ></a>ПЕРЕФОРМИРОВАНИЕ ЖУРНАЛА</h2>
    
    <p> До версии 8.0 Tcl имел весьма сложный механизм
      переформирования журнала. Новый механизм несколько сокращен за
      счет старых опций <strong>substitute</strong> и <strong>words</strong>.  (Взамен
      добавлена новая опция <strong>clear</strong>).

    <p>Опция <strong>redo</strong> позволяет переформировывать журнал
      значительно проще. При ее выполнении последнее событие
      изменяется таким образом, что удаляется &quot;служебная&quot;
      команда <strong>history</strong>, которая реально выполнялась, а вместо
      нее записывается та команда, которая необходима.</p>

    <p>Если вы хотите повторить прежнюю команду, не модифицируя
      журнал, выполните сначала команду <strong>history event</strong>, чтобы
      извлечь описание команды, а затем <strong>history add</strong>, чтобы
      выполнить ее.</p>

  </body>
</html>