twittering-mode更新でOAuth認証
twittering-modeでTwitterで説明したとおり、Mac上のCocoa Emacsではtwittering-modeを用いてtweetしています。
久しくupdateしていなかったため、思い立ったがなんとやら、git先端からupdateして、認証方式もOAuthに切り替えてみようとしたら、ちょっとはまりました。
GnuPGがなかった
まず、
(install-elisp "http://github.com/hayamiz/twittering-mode/raw/master/twittering-mode.el")
をevalしてtwittering-modeを更新し、.emacsに下記を追加します。
(setq twittering-use-master-password t) (setq twittering-auth-method 'oauth)
そして、M-x twitで起動すると、
"You need GnuPG and (EasyPG or alpaca.el) for master password!"
と言われてしまいました。
Emacs23ベースのCocoa Emacsを使っているのだから、EasyPGは対応しているはず…ということはGnuPGがあやしい。
M-: (executable-find "gpg")の結果はnilが返されました。
GnuPGをMac portsでインストールします。
ターミナルで
$ sudo port install gnupg
を実行したあと、M-: (executable-find "gpg")の結果は"/opt/local/bin/gpg"が返されました。
起動したあと
M-x twitすると、PINコードを入手するためのURLが表示されます。
minibufferでbrowse-urlでURLを開くかと訊かれましたので、yと答え、ブラウザで「アプリを認証」をクリックして表示されたPINコードをminibufferにて入力しました。
その後、master passwordを2回入力すると無事起動できました。
Emacsを抜けて、再度、M-x twitする際には、~/.twittering-mode.gpgとmaster passwordで認証をクリアします。
現在の.emacs
;;
;; Twitter
;;
;; (install-elisp "http://github.com/hayamiz/twittering-mode/raw/master/twittering-mode.el")
; from http://masutaka.net/chalow/2009-06-07-5.html
;;
(require 'twittering-mode)
(setq twittering-use-master-password t)
(setq twittering-auth-method 'oauth)
(setq twittering-username "atauky")
(setq twittering-timer-interval 75)
(setq twittering-convert-fix-size 48)
(setq twittering-update-status-function 'twittering-update-status-from-pop-up-buffer)
(setq twittering-icon-mode t)
(setq twittering-scroll-mode nil)
(setq twittering-edit-skeleton 'inherit-any)
;; いくつかのTLをまとめて名前をつけることができる
(setq twittering-timeline-spec-alias
`(("related-to" .
,(lambda (username)
(if username
(format ":search/to:%s OR from:%s OR @%s/"
username username username)
":home")))
))
;; 起動時に以下のリストを読みこむ
(setq twittering-initial-timeline-spec-string
'("$related-to(atauky)"
"atauky/who-i-met"
"atauky/conversationlist"
"atauky/jef-united"
":direct_messages"
":home"))
(add-hook 'twittering-mode-hook
(lambda ()
(set-face-bold-p 'twittering-username-face t)
(set-face-foreground 'twittering-username-face "DeepSkyBlue3")
(set-face-foreground 'twittering-uri-face "gray60")
(setq twittering-status-format "%i %p%s / %S:n%FOLD{%T}n%r %R [%@]")
(setq twittering-retweet-format " RT @%s: %t")
;; "F"でお気に入り
;; "R"でリツイートできるようにする
(define-key twittering-mode-map (kbd "F") 'twittering-favorite)
(define-key twittering-mode-map (kbd "R") 'twittering-native-retweet)
;; "<"">"で先頭、最後尾にいけるように
(define-key twittering-mode-map (kbd "<") (lambda () (interactive) (goto-char (point-min))))
(define-key twittering-mode-map (kbd ">") (lambda () (interactive) (goto-char (point-max))))))
;; URL短縮サービスをj.mpに
;; YOUR_USER_IDとYOUR_API_KEYを自分のものに置き換えてください
;; from http://u.hoso.net/2010/03/twittering-mode-url-jmp-bitly.html
(add-to-list 'twittering-tinyurl-services-map
'(jmp . "http://api.j.mp/shorten?version=2.0.1&login=YOUR_USER_ID&apiKey=YOUR_API_KEY&format=text&longUrl="))
(setq twittering-tinyurl-service 'jmp)
日本語ハッシュタグが使えるようになっていたり、いわゆる「全員に返信」にtwittering-edit-skeletonで対応できるようになっているようなので、設定してみようと思います。