Existe uma maneira de usar o Emacs para sincronizar com o Google Agenda e os Contatos do Google, mantendo idealmente uma cópia local para que eu possa acessá-los offline?
Existe uma maneira de usar o Emacs para sincronizar com o Google Agenda e os Contatos do Google, mantendo idealmente uma cópia local para que eu possa acessá-los offline?
Respostas:
Infelizmente, não consigo dar uma resposta completa. Tudo o que tenho são conselhos sobre alguns caminhos possíveis a percorrer.
A rota mais fácil seria se o emacs-g-client mencionado por Gilles na versão SU desta pergunta funcionasse. Se isso não funcionar, eu examinaria o seguinte:
No mínimo, você poderá obter algumas funcionalidades do calendário acessando seu calendário do Google usando o ical. A função icalendar-import-file
pode importar um arquivo ical para um arquivo de diário do emacs (documentação de icalendar-import-file ). Assim, no seu arquivo .emacs, você pode ter um pouco do emacs lisp para obter o arquivo icônico do calendário do Google e importá-lo para o seu diário. Se você acabar usando o modo organizacional, existem várias maneiras de integrar o modo organizacional ao modo diário.
Penso que o objetivo final seria fazer uso da API do gdata. Não acho que exista uma maneira fácil de obter acesso aos contatos do Google fora desta API. Existe um utilitário de linha de comando que suporta uma ampla gama de funcionalidades usando esta API chamada Google CL , que teoricamente poderia ser usada dentro de algumas funções do emacs lisp para fornecer acesso total aos seus contatos, calendário e muitos outros serviços hospedados pelo Google. No entanto, isso provavelmente seria muito mais difícil do que apenas algumas linhas lançadas no seu .emacs.
Para o Google Agenda, tenho uma configuração de sincronização unidirecional com êxito. O Emacs busca meus calendários na inicialização e o transfere no diário do emacs. Isso é exibido pelo modo organizacional na agenda, mas você pode configurá-lo da maneira que desejar.
Para enviar de volta ao Google Agenda, ainda configurei qualquer coisa, pois não preciso muito disso. No entanto, acho que seria muito fácil ter uma função que adicione uma entrada no diário e chame googlecl para adicionar uma entrada no seu calendário do Google.
Para buscar os calendários, tenho o seguinte no meu .emacs (não que esse não seja o meu código, ele vem da lista de discussão no modo organizacional, mas não me lembro onde o encontrei exatamente):
(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"))
Substitua "http://www.google.com/calendar/ical/DFSDFSDFSDFASD/basic.ics"
pelos URLs dos calendários que você deseja buscar (você o encontra na parte inferior da página de configuração de cada calendário no Google Agenda). Você pode adicionar quantas desejar.
Agora, você pode apenas chamar (getcals)
quando você quer buscar os calendários. Você pode colocar isso no seu .emacs para fazer isso na inicialização, mas isso pode paralisar a inicialização.
Para que o modo organizacional exiba as entradas do diário na agenda, basta adicionar (setq org-agenda-include-diary t)
seu .emacs. Consulte o manual do modo organizacional para obter detalhes.
Para integração com os contatos do Google, há o script de Julien Danjou, que você pode ver em ação aqui (o repositório do github está aqui ):
A extensão google-Contacts for Emacs permite exibir seus contatos do Google diretamente no Emacs.
Observe que é provável que funcione apenas com pelo menos o Emacs 24, pois está usando oauth2, que faz parte do GNU ELPA.
O emacs-calfw pode sincronizar com calendários no .ics
formato iCal ( ), como o Google Calendar.