CrowiのEmacsクライアント


Crowiいいですよね〜。愛用しております。
Webのエディタも使いやすいと思うのですが、がりがり長文かくときは、やっぱり普段使いのもので書きたいということで、Emacsクライアントを作ってみました。

インストール

Github: https://github.com/hirocarma/emacs-crowi

$git clone https://github.com/hirocarma/emacs-crowi
  • crowi.elをEmacsのロードパスの通ったところにおいて下さい。
  • curlが必要。
  • 以下の基本的な設定をinit.elに追加してください。
(require 'crowi)
(setq crowi-access-token "xxxxxxxxxxxxxxx") ; User setting -> API settings
(setq crowi-user "crowi username") ;default (getenv "USER")
(setq crowi-uri "http://hogehoge.com:3000") ;default http://localhost:3000

サポートするAPI

  • usres.list
  • pages.list pages.get pages.update pages.create
  • comments.get comments.add
  • attachments.list attachments.add attachments.remove

使いかた

コマンド 説明
crowi-users-list 新しく作成したバッファにユーザリスト(ユーザ名、電子メール)を出力
crowi-pages-list 新しく作成したバッファにCrowiのページのリストを出力
crowi-pages-get 指定したページを新しく作成したバッファに出力
crowi-pages-update-from-buffer バッファの内容でページを更新
crowi-pages-update-from-file ファイルの内容でページを更新
crowi-pages-from-buffer バッファの内容でページを作成
crowi-pages-from-file ファイルからページを作成
crowi-comments-get 新しく作成したバッファにコメント一覧を出力
crowi-comments-add-from-buffer バッファの内容でコメントを追加
crowi-attachments-download 指定したページの添付ファイルをダウンロード
crowi-attachments-add 指定したページに添付ファイルを追加

補完候補

  • Crowiのパスやファイルを指定する場合は、補完候補を表示します。(completing-read)
    必須ではありませんが、helmないしidoの利用をお勧めします。

  • ページを更新したり、コメントを追加したりするときは、ページを指定する必要がありますが、
    その場合、ページのリストをサーバーから取得して、補完候補として表示します。

  • 新たにページを作成するときは、Crowiのパスを指定する必要があります。
    それぞれ親パスとページ名をそれぞれ別に聞いてきます。
    (少なくとも私の場合)既存のパスのどこかに新規に追加したいことが多いので。

  • 作成先の候補を表示するときは、既存のパスを候補に表示するのに加えて、
    "/user/username/memo/YY/MM/DD"も候補として表示します。

    これはCrowiの 'New'ボタンを押したときの挙動の真似です。

*ファイルからページを作成する場合は、ファイル名(basename)を候補として出します。

取得したページや添付ファイルの保存

  • crowi-markdown-save変数をtに設定すると、
    Markdownファイルを crowi-markdown-save-pathに保存します。

  • 保存する際には、Crowiのパス名を維持します。

例:
Crowi path: /user/taro/memo/hogehoge
crowi-markdown-save-path: ~/wiki

download path -> ~/wiki//user/taro/memo/hogehoge.md
  • 添付ファイルはページ名を先頭につけて保存します。
例:
/user/taro/memo/hogehogeの添付ファイルimage.png
crowi-markdown-save-path: ~/wiki

download path -> ~/wiki//user/taro/memo/hogehoge_image.png

カスタマイズ可能な変数

変数 type default
crowi-uri http://localhost:3000 crowiサーバーのuri
crowi-access-token string なし crowiアクセストークン
crowi-user string getenv "USER" crowiユーザー名
crowi-curl string curl curlコマンド
crowi-curl-options string なし Curlコマンドの追加オプション。各オプションはスペース区切り
crowi-markdown-save boolean nil マークダウンをファイルに保存するかどうか
crowi-markdown-save-path string 〜/ wiki Markdownを保存するパス
crowi-attachment-save-path string 〜/ wiki 添付ファイルを保存するパス

キー割り当て例

  • Markdown modeでキーを割り当てる場合
(add-hook 'markdown-mode-hook
          (lambda () (local-set-key "\C-cu" 'crowi-pages-update-from-file)))

ライセンス

MIT