Редактировать Документы Google с помощью Emacs?

Как редактировать текстовые документы на Google Диске с помощью Emacs и возвращать мои изменения обратно в Google Doc?

Я нашел программу командной строки Google, а также что-то вроде gclient, которое является частью Emacsspeak, но они, похоже, требуют Linux или Windows, а я на OSX с помощью Aquamacs. Или, может быть, я просто не понимаю, как их установить.

Это выполнимо?

Ответ 1

googlecl может быть установлен из macports. Затем вы можете открывать файлы с локальными emacs с помощью сервера emacs.

После установки вы можете выполнить следующие команды:

$ google docs list          # gets a list of the files
$ google docs get <FILE> /tmp/edit$$.txt   # gets the <FILE> to /tmp/edit$$.tmp
$ emacsclient /tmp/edit$$.tmp
$ google docs upload /tmp/edit$$.tmp <FILE>

Однако я обнаружил, что google docs get не работает так, как должен.

Ответ 2

Нет необходимости в Fetch, Edit (emacs) и нажать на файл назад.

Сначала установите "Google Диск" на свой Mac. Затем вы можете редактировать файл напрямую. Посмотрите под ~/Google\Drive.

Ответ 3

Другая опция, использующая gdrive (требуется рул для завершения)

(defvar gdocs-folder-id "<gdrive folder for exported docs>"
 "location for storing org to gdocs exported files, use 'gdrive list  -t <foldername>' to find the id")

(defun gdoc-export-buffer ()
  "Export current buffer as google doc to folder irentified by gdocs-folder-id"
  (interactive)
  (shell-command
  (format "gdrive upload --convert --mimetype text/plain --parent %s --file %s"
      gdocs-folder-id buffer-file-name)))

(defun gdoc-import-buffer (doc)
   "Import a file in gdocs-folder-id into current buffer"
   (interactive 
   (list
      (completing-read "Choose one: "
                 (split-string
                  (shell-command-to-string
                   (format "gdrive list -q \"'%s' in parents\"" gdocs-folder-id)) "\n"))))
  (insert (replace-regexp-in-string (string ?\C-m) (string ?\C-j) (shell-command-to-string
  (format "gdrive download -s --format txt --id %s" (car (split-string doc " ")))))))