¿Hay alguna manera de usar Emacs para sincronizar con Google Calendar y Google Contacts, idealmente manteniendo una copia local para poder acceder a ellos sin conexión?
¿Hay alguna manera de usar Emacs para sincronizar con Google Calendar y Google Contacts, idealmente manteniendo una copia local para poder acceder a ellos sin conexión?
Respuestas:
Lamentablemente, no puedo dar una respuesta completa. Todo lo que tengo es un consejo sobre algunos posibles caminos para pasear.
La ruta más fácil sería si el emacs-g-client que Gilles mencionó en la versión SU de esta pregunta funciona. Si eso no funciona, investigaría lo siguiente:
Como mínimo, debería poder obtener alguna funcionalidad de calendario accediendo a su calendario de Google usando ical. La función icalendar-import-file
puede importar un archivo ical a un archivo de diario de emacs (documentación icalendar-import-file ). Por lo tanto, en su archivo .emacs podría tener un poco de emacs lisp para obtener el archivo ical del calendario de Google e importarlo a su diario. Si termina usando el modo org, hay varias formas de integrar el modo org con el modo diario.
Creo que el objetivo final sería hacer uso de la API de gdata. No creo que haya una manera fácil de acceder a los contactos de Google fuera de esta API. Hay una utilidad de línea de comandos que admite una amplia gama de funcionalidades utilizando esta API llamada Google CL , que en teoría podría usarse dentro de algunas funciones de emacs lisp para proporcionar acceso completo a sus contactos, calendario y muchos otros servicios alojados en Google. Sin embargo, esto probablemente sea mucho más difícil que solo unas pocas líneas en sus .emacs.
Para Google Calendar, tengo una configuración de sincronización unidireccional exitosa. Emacs busca mis calendarios al inicio y los transfiere al diario de emacs. Esto se muestra en el modo org en la agenda, pero puede configurarlo de la forma que desee.
Para enviar de vuelta a Google Calendar, todavía configuré algo, ya que no lo necesito tanto. Sin embargo, creo que sería bastante fácil tener una función que agregue una entrada en el diario y llame a googlecl para agregar una entrada en su calendario de google.
Para buscar los calendarios, tengo lo siguiente en mis .emacs (no es que este no sea mi código, proviene de la lista de correo del modo org, pero no recuerdo dónde lo encontré exactamente):
(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"))
Reemplace "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
con las URL de los calendarios que desea buscar (lo encuentra en la parte inferior de la página de configuración de cada calendario en Google Calendar). Puede agregar tantos como desee.
Ahora, puedes llamar (getcals)
cuando quieras buscar los calendarios. Puede poner esto en sus .emacs para hacerlo al inicio, pero podría detener su inicio.
Para que el modo org muestre las entradas del diario en la agenda, simplemente agregue (setq org-agenda-include-diary t)
sus .emacs. Consulte el manual del modo org para más detalles.
Para la integración con los contactos de Google, hay un script de Julien Danjou que puede ver en acción aquí (el repositorio de github está aquí ):
La extensión google-contactos para Emacs le permite mostrar sus Contactos de Google directamente dentro de Emacs.
Tenga en cuenta que es probable que solo funcione con al menos Emacs 24, ya que está utilizando oauth2, que es parte de GNU ELPA.
emacs-calfw puede sincronizarse con calendarios en .ics
formato iCal ( ) como Google Calendar.