Календарь и дневник – ЧАСТЬ 3

Персы используют солнечный календарь, основанный на разработках Омара Хайама. Их календарь состоит из двенадцати месяцев, первые шесть из которых содержат 31 дней, следующие пять — 30 дней, а в последнем 29 дней в обычные года и 30 дней в високосные. Високосные года случаются по сложному образцу каждые четыре или пять лет.

Китайский  календарь — это сложная система лунных месяцев, скомбинированных  с солнечными годами. Годы проходят по циклам из шестидесяти лет, обычный год содержит

12 месяцев,  високосный — 13; в каждом месяце  либо 29, либо 30 дней.  Каждый  год, обычный месяц и день именуется комбинацией одного из десяти “небесных  стеблей” и одной из двенадцати “земных ветвей”, в общей сложности есть шестьдесят имен, которые проходят по кругу.

29.9.2  Преобразование в другой календарь

Следующие команды описывают выбранную дату (дату, в которой находится точка) в различных календарных системах:

Mouse-2 Other Calendars

Выводит дату, на которой вы щелкнули, выраженную через различные другие календари.

p c             Выводит   эквивалент  выбранного  дня   в   коммерческом    календаре  ISO (calendar-print-iso-date).

p j     Выводит юлианскую дату для выбранного дня (calendar-print-julian-date).

p a             Выводит  астрономический (юлианский)  номер  дня  для  выбранной даты

(calendar-print-astro-day-number).

p h             Показывает иудейскую дату  для выбранного дня  (calendar-print-hebrewdate).

p i     Показывает исламскую дату для выбранного дня  (calendar-print-islamicdate).

p f       Показывает французскую революционную дату для выбранного дня (calendarprint-french-date).

p C                   Показывает китайскую  дату для выбранного дня  (calendar-print-chinesedate).

p k             Показывает коптскую  дату  для выбранного дня  (calendar-print-copticdate).

p e             Показывает эфиопскую дату для выбранного дня (calendar-print-ethiopicdate).

p p             Показывает дату персидского календаря для выбранного дня (calendar-printpersian-date).

p m                      Показывает дату  календаря Майя  для  выбранного дня  (calendar-printmayan-date).

Если вы используете  X,  простейший способ перевести  дату в другие календари — щелкнуть на ней Mouse-2 и выбрать из появившегося меню пункт  Other Calendars.  Это покажет в виде меню эквивалентные  формы для данной даты во всех календарях, которые понимает Emacs. (Выбор альтернатив из этого меню не делает ничего — оно используется только для показа.)

Переместите точку к желаемой дате в григорианском календаре и нажмите подходящие клавиши. p — это мнемоника для “print”, поскольку Emacs “печатает” эквивалентную дату в эхо-области.

29.9.3  Преобразование из другого календаря

Вы можете использовать поддерживаемые календари для задания даты, к которой следует переместиться. Этот  раздел описывает команды для проделывания  этого во всех календарях, кроме майянского; чтобы узнать, как это сделать для календаря Майя, смотрите следующий раздел.

g c             Переход к дате, заданной в коммерческом календаре ISO (calendar-goto-isodate).

g j     Переход к  дате,  заданной в юлианском календаре  (calendar-goto-juliandate).

g a             Переход  к   дате,   заданной  астрономическим  (юлианским)   номером  дня

(calendar-goto-astro-day-number).

g h             Переход к  дате,  заданной в  иудейском календаре  (calendar-goto-hebrewdate).

g i     Переход к  дате,  заданной в исламском календаре  (calendar-goto-islamicdate).

g f       Переход  к   дате,    заданной  во   французском    революционном календаре

(calendar-goto-french-date).

g C                   Переход к  дате,  заданной в китайском  календаре  (calendar-goto-chinesedate).

g p             Переход к  дате,  заданной в персидском календаре  (calendar-goto-persiandate).

g k             Переход к дате, заданной в коптском календаре (calendar-goto-coptic-date).

g e             Переход к  дате, заданной в эфиопском календаре  (calendar-goto-ethiopicdate).

Эти  команды запрашивают у вас дату из другого  календаря, перемещают  точку  к эквивалентной дате григорианского календаря и показывают дату другого календаря в эхо-области. При считывании названия месяца Emacs использует строгое завершение (см. Раздел 5.3 [Завершение], с. 47), поэтому вам не нужно беспокоиться о правильности написания иудейских, исламских или французских названий.

Один из вопросов, часто возникающих в связи с иудейским календарем, — вычисление годовщины смерти, называемой “yahrzeit”. Календарь Emacs включает средства для таких

вычислений. Если вы находитесь в календаре,  команда M-x list-yahrzeit-dates спрашивает вас о промежутке лет и затем показывает для этого промежутка список yahrzeit для даты в точке.  Если вы не в календаре, эта команда сначала спросит о дате смерти и промежутке лет, а затем покажет список дат yahrzeit.

29.9.4  Преобразование из календаря Майя

Это команды для выбора дат, оснаванных на календаре Майя:

g m l    Переходит к дате, заданной календарем долгого счета (calendar-goto-mayanlong-count-date).

g m n t    Переходит к  следующему  появлению некоторого места в календаре  тцолкин

(calendar-next-tzolkin-date).

g m p t    Переходит к предыдущему появлению некоторого места в календаре тцолкин

(calendar-previous-tzolkin-date).

g m n h       Переходит к  следующему  появлению некоторого  места в  календаре хааб

(calendar-next-haab-date).

g m p h       Переходит к  предыдущему появлению некоторого места в  календаре хааб

(calendar-previous-haab-date).

g m n c       Переходит к  следующему  появлению некоторого места в календарном  круге

(calendar-next-calendar-round-date).

g m p c       Переходит к предыдущему появлению некоторого места в календарном круге

(calendar-previous-calendar-round-date).

Чтобы понять эти команды, вы должны понимать календари Майя. Долгий счет — это подсчет дней в следующих единицах:

1 кин = 1 день  1 уинал = 20 кин   1 тун = 18 уинал

1 катун = 20 тун   1 бактун = 20 катун

Таким образом, дата 12.16.11.16.6 в долгом счете означает 12 бактун, 16 катун,  11 тун,

16 уинал и 6 кин.  Календарь Emacs может обрабатывать майянские даты долгого счета от 7.17.18.13.1, но не более ранние. Когда  вы используете команду g m l,  набирайте майянскую дату долгого счета, разделяя бактун, катун, тун, уинал и кин точками.

Майянский календарь тцолкин — это цикл из 260 дней, формируемый  парой независимых циклов из 13 и 20 дней. Поскольку этот цикл повторяется бесконечно, Emacs предоставляет команды для перемещения назад и вперед к предыдущей или следующей точке цикла. Наберите g m p t, чтобы перейти к предыдущей дате в тцолкин; Emacs спросит у вас дату в тцолкин и переместит точку к предыдущему появлению этой даты. Аналогично, наберите g m n t, чтобы перейти к следующему появлению даты в тцолкин.

Майянский календарь хааб — это цикл из 365 дней, собранный из 18 месяцев по 20 в каждом, за которыми следует пятидневный период без месяца. Подобно циклу тцолкин, этот цикл повторяется бесконечно, и есть команды для перехода назад и вперед к предыдущей или следующей точке этого цикла. Наберите g m p h, чтобы перейти к предыдущей дате хааб; Emacs спросит у вас дату в хааб и переместит точку к предыдущему появлению этой даты. Аналогично, наберите g m n h, чтобы перейти к следующему появлению даты в хааб.

Майя также использовали комбинацию дат тцолкин и хааб. Эта комбинация — цикл примерно в 52 года,  назыавемый календарным кругом.  Если вы наберете g m p c, Emacs спросит у вас даты хааб и тцолкин и затем переместит точку к предыдущему появлению этой комбинации. Используйте g m n c для перемещения точки к следующему появлению комбинации.  Эти команды сообщают об ошибке,  если набранная вами комбинация дат хааб/тцолкин невозможна.

При запросе майянской даты Emacs использует строгое завершение (см.  Раздел 5.3.3 [Строгое завершение], с. 48), поэтому вам не нужно беспокоиться о правильности написания.

29.10  Дневник

С помощью дневника Emacs можно прослеживать назначенные встречи и другие события на ежедневной основе и в совокупности с календарем. Чтобы воспользоваться этими возможностями, вы должны сначала создать файл дневника, содержащий перечень событий и их дат. Тогда Emacs сможет автоматически подобрать и показать вам события на сегодняшний день, на ближайшее будущее или для указанной даты.

По умолчанию в качестве файла дневника Emacs использует  файл ‘~/diary’. Это тот же самый файл, что применяеися в утилите calendar.  Вот пример файла ‘~/diary’:

12/22/1988    Twentieth wedding anniversary!!

&1/1.             Happy New  Year!

10/22             Ruth’s  birthday.

* 21,  *:    Payday

Tuesday-weekly meeting  with  grad  students at  10am

Supowit,  Shen, Bitner, and Kapoor to  attend.

1/13/89          Friday   the  thirteenth!!

&thu 4pm         squash game  with  Lloyd. mar 16          Dad’s birthday

April 15,  1989 Income tax  due.

&* 15            time  cards  due.

В данном примере для выравнивания описаний в большинстве вхождений событий исполь-

зованы пробелы. Такое форматирование полностью  является делом вкуса.

Хотя вероятнее всего вы начнете составлять ежедневник вручную, Emacs предоставляет вам несколько команд для просмотра, добавления и изменения записей дневника.

29.10.1  Команды для просмотра записей в дневнике

После того как вы создали файл ‘~/diary’, вы можете просматривать его из календаря.

Вы также можете просмотреть список сегодняшних событий извне режима Calendar.

d                Показывает  все записи дневника для выбранной даты (view-diary-entries).

Mouse-2 Diary

Показывает  все записи дневника для даты, на которой вы щелкнули.

s                 Показывает  весь файл дневника (show-all-diary-entries).

m                           Помечает все видимые даты, для которых есть записи в дневнике (mark-diaryentries).

u                Убирает метки из окна календаря (calendar-unmark).

M-x print-diary-entries

Печатает твердую копию отображаения дневника в том виде, в каком он есть на экране.

M-x diary  Показывает все вхождения дневника для сегодняшней даты.

M-x diary-mail-entries

Отправляет вам по почте напоминание о предстоящих событиях.

Отображение  записей дневника с помощью d показывает в отдельном окне вхождения дневника для выбранной в календаре даты. Строка режима нового окна показывает дату для этих записей и все выпадающие  на нее праздники. Если вы зададите для d числовой аргумент, она покажет все записи дневника на указанное число дней. То есть, 2 d покажет все записи для выбранной даты и для следующего дня.

Другой способ просмотреть  записи дневника для какой-либо даты — щелкнуть на этой дате Mouse-2, а затем выбрать из появившегося меню пункт Diary.

Чтобы получить более широкий обзор упомянутых в календаре дней, используйте команду m.    Она показывает даты, для которых  в дневнике  есть записи, другим начертанием (или помещает  после них знак ‘+’, если дисплей  не может отобразить несколько начертаний).  Эта команда применяется как к видимым в данный момент месяцам, так и к остальным, которые становятся видимыми при последующей прокрутке.  Чтобы выключить разметку и стереть текущие метки, нажмите u, что выключает также и метки праздников (см. Раздел 29.6 [Праздники], с. 307).

Чтобы увидеть файл дневника полностью, а не только некоторые его вхождения, ис-

пользуйте команду s.

При выводе  избранных записей дневника применяется  средство выборочного показа,

чтобы скрыть ненужные записи.

Буфер дневника в той форме, как вы его видите — это иллюзия, поэтому простая его печать не даст то, что вы видите на экране. Для получения твердой копии буфера дневника таким, каким он виден, есть особая команда; это команда M-x print-diary-entries. Она посылает данные непосредственно на принтер. Вы можете настраивать  ее, как lpr-region (см. Раздел 30.4 [Распечатка], с. 331).

Команда M-x diary показывает записи дневника для текущей даты, независимо от того, виден ли календарь, и кроме того, возможно, для нескольких следующих дней; переменная number-of-diary-entries задает число включаемых дней. См.  раздел “Calendar” в The Emacs Lisp Reference Manual.

Если вы поместите  в ваш файл ‘.emacs’ строку (diary),  то при входе в Emacs вам будет автоматически показываться окно с записями дневника на сегодняшний день. Строка режима этого окна показывает дату и выпадающие на нее праздники.

Многим  пользователям нравится  получать  напоминания о  событиях  из  ежедневника  по  почте.      Чтобы  послать  себе   такие  сообщения, используйте   команду  M-x diary-mail-entries.       Префиксный аргумент  указывает,  сколько  дней  (начиная  с сегодняшнего)  следует   проверять;   иначе  число  дней  определяется по  переменной diary-mail-days.

29.10.2  Файл дневника

Ваш файл дневника — это файл, в котором записаны события, связанные с опреде-

ленными датами.  Имя этого файла задается переменной diary-file;  по умолчанию это

‘~/diary’. Программа calendar  поддерживает подмножество формата, допускаемого средствами дневника в Emacs, так что вы можете использовать эту утилиту  для просмотра файла дневника с разумными результатами, если не считать вхождений, которые она не понимает.

Каждая  запись в файле  дневника описывает одно событие и состоит из одной или нескольких строк. Запись всегда начинается со спецификации даты с левого края. Остальная часть записи — это просто текст, описывающий событие. Если запись содержит более одной строки, то строки после первой должны начинаться с отступа, как указание на то, что они продолжают предыдущее вхождение. Строки, которые не начинаются с правильной даты и не продолжают предыдущее вхождение, игнорируются.

Вы можете  подавить разметку определенных  записей из дневника в окне  календаря;

чтобы сделать так,  вставьте  в начале записи перед датой знак ‘&’.   Это не  влияет на

отображение записи в окне дневника; это затрагивает только метки дат в окне календаря. Запрет пометки записи особенно полезен для обобщенных вхождений, которые иначе пометили бы слишком много разных дней.

Если первая строка записи состоит только из даты или названия дня недели, и после нее нет пропусков или пунктуации, то такая строка не выводится в окне  дневника; там появляются только строки продолжения. Например, такая запись:

02/11/1989

Bill B.  visits Princeton today

2pm  Cognitive Studies  Committee meeting

2:30-5:30 Liz  at  Lawrenceville

4:00pm Dentist  appt

7:30pm Dinner  at  George’s

8:00-10:00pm  concert

появляется в окне дневника без строки с датой в начале.  Такой стиль записей выглядит красивее, если вы просматриваете вхождения для одного дня, но может запутать, если вы попросите показать записи для нескольких дней.

Вы можете редактировать записи дневника в том виде, как они появляются в окне, но важно помнить, что этот показанный  буфер содержит  полный файл дневника, но некоторые его части скрыты из вида.  Это означает в частности, что команда C-f  (forward-char) может поместить точку в таком месте, которое кажется концом строки, но на самом деле это середина какой-то скрытой строки.

Будьте внимательны при редактировании записей дневника! Вставка новых строк или добавление/удаление знаков в середине видимой строки не могут причинить проблем, но редактирование в конце строки может делать не то, что вы ожидаете.  Удаление строки может удалить другие невидимые записи, которые следуют за ней. Перед редактированием дневника лучше всего отобразить файл полностью с помощью команды s (show-alldiary-entries).

29.10.3  Формат дат

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

4/20/93    Switch-over  to  new tabulation system apr. 25   Start tabulating annual  results

4/30    Results  for April are  due

*/25    Monthly  cycle   finishes

Friday    Don’t  leave  without backing  up files

Первая запись появляется только один раз, 20 апреля 1993 года.  Вторая и третья появляются каждый год в заданные дни, а четвертая использует для месяца символ подстановки (звездочку), поэтому она появляется 25-го числа каждого месяца. Последняя запись появляется каждую неделю в пятницу.

Для выражения даты вы можете использовать только числа, как ‘месяц/день’ или ‘месяц/день/год’.  После этого должна идти не-цифра.  В самой дате,  месяц и день должны быть однозначными или двузначными числами. Необязательный год  — это тоже  число, его можно сокращать до последних двух цифр; то есть вы можете писать как ‘11/12/1989’, так и ‘11/12/89’.

Даты также можно записывать в формате ‘названиемесяца день’ или ‘названиемесяца день, год’, где название месяца можно писать полностью или сокращать до трех букв (с точкой или без). Регистр значения не имеет.

Дата может быть обобщенной, то есть частично недоопределенной. Тогда она применяется ко всем датам, соответствующим  спецификации. Если дата не содержит год, то она обобщенная и относится ко всем годам.  Или же месяц, день или год могут быть знаком

‘*’; это соответствует любому месяцу, дню или году.  Таким образом, вхождение дневника

‘3/*/*’ соответствует любому дню марта в каждом году; то же и для ‘march *’.

Если вы предпочитаете  европейский стиль написания дат — когда день идет перед месяцем  —  наберите  в календаре M-x european-calendar  или установите  переменную european-calendar-style в значение t перед использованием  любой команды календаря или дневника. Этот режим интерпретирует все даты в дневнике в европейском стиле, а также применяет европейский стиль при отображении дат дневника. (Заметьте, что после названиямесяца  в европейском стиле нет запятой.) Чтобы вернуться к американскому (принимаемому по умолчанию) стилю написания дат, наберите M-x american-calendar.

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

29.10.4  Команды для добавления к дневнику

Когда вы находитесь в календаре, вам доступны несколько команд для создания записей в дневнике:

i d             Добавляет в дневник запись для выбранной даты (insert-diary-entry).

i w                   Добавляет в  дневник запись для выбранного дня недели  (insert-weeklydiary-entry).

i m                      Добавляет в дневник запись для выбранного дня месяца  (insert-monthlydiary-entry).

i y             Добавляет в дневник запись для выбранного дня года (insert-yearly-diaryentry).

Вы можете  создать в дневнике запись для конкретной даты, выбрав эту дату в окне календаря и выполнив команду i d. Эта команда показывает конец вашего файла дневника в другом окне и вставляет дату; затем вы можете напечатать остальную часть записи.

Если вы хотите сделать в дневнике запись, которая относится к какому-то дню недели, выберите этот день (можно любое его появление) и наберите i w.  Это вставит название дня недели как обобщенную дату; потом вы можете ввести остальную часть записи. Таким же способом вы можете создать ежемесячную запись. Выберите день месяца, примените команду i m и введите остаток записи. Аналогично вы можете вставить ежегодную запись при помощи команды i y.

Все описанные выше команды по умолчанию создают помечаемые записи. Чтобы сделать в дневнике непомечаемую запись, дайте команде числовой аргумент. Например, C-u i w создает  в дневнике непомечаемую еженедельную запись.

Когда вы измените файл дневника,  убедитесь, что вы сохранили его перед выходом  из

Emacs.

29.10.5  Особые записи  дневника

Помимо вхождений, основанных на календарных датах, файл дневника может содержать sexp-вхождения для регулярных событий, таких как годовщины.  Такие записи основаны на лисповских выражениях (s-выражениях), которые Emacs выполняет по мере сканирования файла дневника. Вместо даты sexp-вхождение содержит строку ‘%%’, за которой

идет лисповское выражение, заключенное в круглые скобки. Это выражение определяет, к каким датам относится данная запись.

Режим Calendar предоставляет команды для вставки некоторых часто используемых

sexp-вхождений:

i a             Добавляет в дневник запись о годовщине события для текущей даты (insertanniversary-diary-entry).

i b             Добавляет блочную запись дневника для текущей области  (insert-blockdiary-entry).

i c             Добавляет циклическую запись дневника, начинающуюся от  текущей даты

(insert-cyclic-diary-entry).

Если вы хотите  создать в дневнике запись, которая относится к годовщине  какой-то даты, переместите  точку  к  этой дате  и используйте  команду i a.   Это покажет конец вашего файла дневника в другом окне  и вставит описание годовщины;  затем вы можете набрать остальную часть записи. Запись выглядит так:

%%(diary-anniversary 10 31 1948) Arthur’s birthday

Эта запись относится к  31 октября каждого года  после  1948; ‘10 31 1948’ задает дату. (Если вы используете  европейский  стиль календаря, месяц и день меняются местами.) Причина того, что это выражение требует указания начального года, состоит в том, что продвинутые функции календаря могут использовать его для подсчета истекших лет.

Блочная запись дневника применяется к заданному промежутку последовательных дат. Вот блочная запись, которая относится ко всем датам от 24 июня 1990 до 10 июля 1990 года.

%%(diary-block  6 24 1990 7 10 1990) Vacation

‘6 24 1990’ обозначает начальную дату, а ‘7 10 1990’ — конечную.  (Опять же,  если вы используете европейский стиль календаря, месяц и день меняются местами.)

Чтобы вставить блочную запись, поместите  точку  и метку  на двух датах, которые начинают и завершают промежуток, и наберите i b. Эта команда показывает конец вашего файла дневника в другом окне и вставляет описание блока; потом вы можете напечатать остальную часть записи.

Циклические записи дневника повторяются после фиксированного интервала дней. Чтобы создать такую запись, выберите начальную дату и используйте команду i c.  Эта команда спросит у вас длину интервала, а затем вставит запись, выглядящую следующим образом:

%%(diary-cyclic 50 3 1 1990) Renew  medication

Эта запись относится к 1 марта 1990 года  и к каждому 50-ому последующему дню; ‘3 1

1990’ задает начальную дату. (Если вы используете европейский стиль календаря, месяц и день меняются местами.)

Все три эти команды создают помечаемые записи. Чтобы вставить непомечаемую запись, дайте команде числовой аргумент. Например, C-u i a создает непомечаемую запись для годовщины некоторого события.

Пометка sexp-вхождений дневника в календаре чрезвычайно требовательна ко времени, поскольку должна быть отдельно проверена каждая видимая в окне календаря дата. Поэтому лучше делать sexp-вхождения дневника непомечаемыми (с ‘&’), если возможно.

Другой, усложненный вид sexp-вхождения, плавающая запись, задает регулярно случающееся событие по сдвигу, выраженному в днях, неделях и месяцах. Ее можно сравнить с записями crontab, интерпретируемыми утилитой cron.   Вот непомечаемая  плавающая запись, которая относится к последнему четвергу ноября:

&%%(diary-float  11 4 -1) American Thanksgiving

Число 11 обозначает ноябрь (одиннадцатый  месяц), 4 обозначает четверг (четвертый день недели, где воскресенье считается нулем), а ?1 обозначает “последний” (1 обозначало бы “первый”,  2 обозначало бы “второй”,  ?2  — “предпоследний” и так далее).  Месяц может быть единственным или списком месяцев. Таким образом, вы могли бы изменить 11 выше на ‘’(1 2 3)’  и получить запись, относящуюся к последнему четвергу января, февраля и марта. Если месяц задан как t, запись относится ко всем месяцам года.

В  самом общем виде,  sexp-вхождения  дневника могут  производить для определения своей применимости  любые вычисления.  См. раздел “Sexp Diary Entries” в The Emacs Lisp Reference Manual.

29.11  Напоминания о назначенных событиях

Если у вас в дневнике есть запись о назначенном событии, и эта запись начинается с распознаваемого описания времени, Emacs может предупредить вас за несколько минут о приближении этого времени. Emacs предупреждает  вас о назначении, показывая сообщение в строке режима.

Чтобы включить напоминание о назначенных событиях, вы должны задействовать средство Emacs для показа времени, M-x display-time (см. Раздел 1.3 [Строка режима], с. 25). Вы также должны добавить к ловушке diary-hook функцию appt-make-list следующим образом:

(add-hook  ’diary-hook ’appt-make-list)

Помещение такого текста в ваш файл ‘.emacs’ делает все сразу:

(display-time)

(add-hook  ’diary-hook ’appt-make-list) (diary 0)

Если сделана такая подготовка, то когда вы отображаете дневник (с помощью команды d в окне  календаря или через M-x diary), для всех записей дневника, в которых  есть распознаваемые описания времени, настраивается  список назначенных событий, и перед каждым из них вам делается напоминание.

Предположим например, что файл дневника содержит такие строки:

Monday

9:30am Coffee  break

12:00pm Lunch

Тогда по понедельникам,  после того как вы отобразите дневник, вам будут напоминать в

9:20 о перерыве для кофе и в 11:50 об обеде.

Вы можете  записывать время в стиле  am/pm  (где  ‘12:00am’ обозначает  полночь, а

‘12:00pm’ — полдень) или в двадцатичетырехчасовом европейском/военном стиле.  Необя-

зательно быть постоянным;  файл дневника может содержать  смесь этих двух стилей.

Emacs автоматически обновляет список напоминаний сразу после полуночи. Это также отображает в буфере дневника  записи для следующего дня, если только вы не установили appt-display-diary равной nil.

Вы также  можете  использовать  средства напоминания  о назначенных событиях в качестве будильника.  Команда M-x appt-add  добавляет записи в список напоминаний, не затрагивая ваш файл дневника. Для удаления записей из списка напоминаний применяется команда M-x appt-delete.

Вы можете в любое время выключить средство напоминания о назначенных событиях,

установив appt-issue-message  в значение nil.

29.12  Сезонный перевод  времени

Emacs понимает разницу между стандартным и сезонным временем — времена, выдаваемые для восходов и закатов Солнца, солнцестояний, равноденствий и фаз Луны, учитывают его.  Правила сезонного  перевода времени  меняются от места к месту и кроме того колебались исторически от года к году. Чтобы делать свою работу правильно, Emacs должен знать, какое правило использовать.

Некоторые операционные системы отслеживают правила, применяющиеся в той местности, где вы находитесь; на таких системах Emacs получает необходимую информацию от системы автоматически. Если часть этой информации или вся она неизвестна, Emacs заполняет пробелы правилами, используемыми в данное время в Кембридже,  Массачусетс. Если получившиеся правила — это не то, что вы хотите, вы можете сообщить Emacs нужные правила, устанавливая  определенные переменные:  calendar-daylight-savingsstarts и calendar-daylight-savings-ends.

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

Emacs использует эти выражения для определения даты перевода времени при создании списка праздников и для корректровки времени при вычислениях, связанных с Луной и Солнцем.

Для массачусетского Кембриджа эти значения таковы:

(calendar-nth-named-day  1 0 4 year) (calendar-nth-named-day  -1  0 10 year)

Это обозначает первый нулевой день недели (воскресенье)  четвертого месяца (апреля) в году,  задаваемом переменной  year,  и последнее воскресенье  десятого месяца (октября) в этом же году. Если момент перевода времени сменился бы на 1 октября, вы установили бы переменную calendar-daylight-savings-starts в такое значение:

(list 10 1 year)

Если в вашей местности время не  переводится, или если вы хотите  получать всегда  стандартное время, установите   calendar-daylight-savings-starts  и  calendardaylight-savings-ends равными nil.

Переменная calendar-daylight-time-offset задает разницу во времени после перево-

да, измеряемую в минутах. Для массачусетского Кембриджа это 60.

Переменные calendar-daylight-savings-starts-time и calendar-daylight-savingsends-time  задают число минут после полуночи по местному времени, когда происходит перевод часов. Для массачусетского Кембриджа значения обоих этих переменных равны

120.

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

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

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

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