2013-08-22 98 views
10

如何使用Emacs編輯Google雲端硬盤文本文檔並將我的更改反映回Google文檔?使用Emacs編輯Google文檔?

我發現一個Google command line program,以及gclient,它是Emacsspeak的一部分,但他們似乎需要Linux或Windows,而我在使用Aquamacs的OSX上。或者,也許我只是不明白如何安裝它們。

這是可行的嗎?

+1

我沒有嘗試,但你提到的第一個環節 - 代碼是用Python編寫的,所以是一個很好的機會,它會在OSX上工作。如果不是的話,那麼你可能會根據自己的想法找出無效的東西。除非你嘗試,否則你不會知道它需要多少努力才能使它起作用。雖然,坦率地說,我會在Org中隨意編輯任何需要的內容,然後將其導出爲Open Office格式並上傳到Google ...除非有很多文件需要處理。 – 2013-08-23 07:38:54

回答

5

googlecl可以從macports安裝。然後,您可以使用emacs server使用本地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不工作,以及它應該。

+0

好的,我安裝了googlecl。如何使用emacs服務器編輯Google文檔? @ vy32 – incandescentman

+0

通過將文件讀取到本地文件,使用emacsserver進行編輯,然後將其推回。 – vy32

+1

使用「google docs edit」命令會稍微簡單一些。只需將'EDITOR'環境變量設置爲您的emacsclient並使用'google docs編輯'。它會自動下載到臨時文件並在您終止emacs客戶端緩衝區時上傳。被警告,這樣做會刪除谷歌文檔中的任何格式。 – manylegged

3

沒有必要提取,編輯(emacs),並推回文件。

首先在您的Mac上安裝「Google Drive」。 然後您可以直接編輯文件。在〜/ Google \ Drive下查看。

+2

當我嘗試在Emacs中編輯我的Google Drive文件時,這些文件是空的,看起來像![this] (http://i.imgur.com/SJTwEEg.png)http://i.imgur.com/SJTwEEg.png – incandescentman

+0

當我嘗試在Emacs(foo.txt)中創建一個文本文件時,Google Drive網頁界面似乎無法閱讀它。 – incandescentman

0

使用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 " ")))))))