Синхронизация Emacs с Календарем Google и Контактами?

10

Есть ли способ использовать Emacs для синхронизации с Календарем Google и контактами Google, в идеале сохраняя локальную копию, чтобы я мог получить к ним доступ в автономном режиме?

HPY
источник
1
Что вы используете в emacs для хранения контактов? bbdb? Кроме того, что вы используете для своей программы календаря в Emacs? Мой ответ будет отличаться, скажем, от режима орг по сравнению с режимом дневника.
Стивен Д
На самом деле я только начинаю и планирую использовать bbdb для контактов. Я планировал использовать режим дневника для календаря, но теперь, когда я знаю и читал об орг-режиме, это тоже может быть хорошим вариантом. Спасибо!!
hpy
Это был бы отличный вариант, если это вообще возможно, я бы хотел знать. Встраивание клиента Outlook в Emacs было бы здорово.
1
Также спросили у Супер пользователя . Не делай этого! (Исключение: когда у вопроса не было хорошего ответа на сайте, а затем ссылка на исходный вопрос.)
Жиль "ТАК - перестать быть злым"
Я понятия не имел, извините! Тем не менее, все еще ищу хороший ответ.
hpy

Ответы:

3

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

Самый простой путь был бы, если бы работал emacs-g-client , упомянутый Жилем в версии SU этого вопроса. Если это не сработает, я бы посмотрел на следующее:

  • По крайней мере, вы сможете получить некоторые функции календаря, используя календарь Google с помощью ical. Функция icalendar-import-fileможет импортировать файл ical в файл дневника emacs (документация icalendar-import-file ). Таким образом, в вашем файле .emacs вы могли бы получить немного emacs lisp, чтобы получить файл календаря Google и импортировать его в свой дневник. Если вы в конечном итоге используете org-mode, есть несколько способов интегрировать org-mode с дневниковым режимом.

  • Я думаю, что конечной целью было бы использовать API gdata. Я не думаю, что есть простой способ получить доступ к контактам Google за пределами этого API. Существует утилита командной строки, которая поддерживает широкий спектр функциональных возможностей с использованием этого API под названием Google CL , который теоретически может использоваться внутри некоторых функций lisp emacs для обеспечения полного доступа к вашим контактам, календарю и многим другим службам, размещаемым в Google. Это, вероятно, будет гораздо сложнее, чем несколько строк, добавленных в ваш .emacs.

Стивен Д
источник
3

Для Календаря Google у меня есть односторонняя настройка синхронизации успешно. Emacs загружает мои календари при запуске и передает их в дневник Emacs. Затем это отображается с помощью режима org в повестке дня, но вы можете настроить его так, как хотите.

Для отправки обратно в Календарь Google я еще ничего не настроил, так как мне это не нужно. Тем не менее, я думаю, было бы довольно легко иметь функцию, которая добавляет запись в дневник и вызывает googlecl, чтобы добавить запись в ваш календарь Google.

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

(setq mark-diary-entries-in-calendar t)
(defun getcal (url)
  "Download ics file and add to diary"
  (let ((tmpfile (url-file-local-copy url)))
    (icalendar-import-file tmpfile "~/diary" t)
    (kill-buffer (car (last (split-string tmpfile "/"))))
    )
  )
(setq google-calendars '(
                         "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
                         "http://www.google.com/calendar/ical/SDFSADFSADFASD/basic.ics"
                         ))
(defun getcals ()
  (interactive)
  (find-file "~/diary")
  (flush-lines "^[& ]")
  (dolist (url google-calendars) (getcal url))
  (kill-buffer "diary"))

Замените "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"URL-адресами календарей, которые вы хотите получить (вы найдете их в нижней части страницы настройки каждого календаря в календаре Google). Вы можете добавить столько, сколько пожелаете.

Теперь вы можете просто позвонить, (getcals)когда хотите получить календари. Вы можете поместить это в ваш .emacs, чтобы сделать это при запуске, но это может остановить ваш запуск.

Чтобы в режиме org отображались записи в дневнике, просто добавьте (setq org-agenda-include-diary t).emacs. Подробнее см. В руководстве по режиму org .

Мортимер
источник
3

Для интеграции с контактами Google есть сценарий Julien Danjou, который вы можете увидеть в действии здесь (репозиторий github находится здесь ):

Расширение google-contacts для Emacs позволяет отображать ваши контакты Google непосредственно внутри Emacs.

Обратите внимание, что он может работать только с Emacs 24, так как он использует oauth2, который является частью GNU ELPA.

PuercoPop
источник
2

emacs-calfw может синхронизироваться с календарями в .icsформате iCal ( ), такими как Google Calendar.

Бастиан Баллманн
источник