2010.03.21

[Emacs]「Mac の Emacs でツールチップ辞書を実現する」に必要な「dict」コマンドをビルド

id:tomoyaさんの「Mac の Emacs でツールチップ辞書を実現しよう。」の中で必要なid:tekezoさんのdictコマンドが、Mac OS X 10.6.2/Xcode3.2.1環境でmakeしたものがうまく動かないので、Xcodeでビルドしてみました。

「dict.zip」をダウンロード

なお、Mac の Emacs でツールチップ辞書 パート2。の方のns-popup-dictionary関数を動かすには、jaspace.elをインストールしておく必要があるようです。

ここまでやって、銭谷さん版のCarbonEmacsではCommand+Control+Dで、普通にOSのツールチップ辞書が出るということに気づく件。

Tooltipdictionaryoncarbonemacs

|

2008.10.30

[N810][Emacs]Emacs on NOKIA N810でフルスクリーン表示

NOKIA N810でEmacsってなかなかいい感じですが、やへーさんにビルドしていただいたEmacsはHildonizeされていなくて、ズームボタンでフルスクリーン表示できないのが残念な点でした。
同じくやへーさん発見のwmctrlというコマンドでフルスクリーン化できるということを知って、衝撃を受けました。

xbindkeys, guile and lots of love ;)
Emacs23をフルスクリーン表示で使う;)

どうやってwmctrlを起動するか、という問題に対する回答として、やへーさんからはxbindkeysを使うという案の提示があったわけですが、よく考えたらEmacs自身でやればいいじゃんと。

(defun toggle-full-screen ()
 (shell-command "~/bin/wmctrl -r :ACTIVE: -b toggle,fullscreen"))
(global-set-key (quote [f6])(quote toggle-full-screen))

やへーさんのところからwmctrlをもらってきて、かつwmctrlが依存しているlibxmu6をapt-getでインストールし、上記を.emacs.elに貼ればズームボタンでフルスクリーンモードのトグルができます。

800x480のEmacsは快適〜

xbindkeysは素晴らしいキーボードランチャなので、これはこれで使いますけどね。

関連エントリ

[N810][Emacs]NOKIA N810向けEmacs23.0.60 with Xftパッケージ等

ここのコメントにも書きましたが、Emacs on N810については、Talk Like SInging: N810/Emacsさんにも情報があります。

|

2008.06.03

[N810][Emacs]NOKIA N810向けEmacs23.0.60 with Xftパッケージ等

やへーさんがXftを有効にしたEmacs23.0.60をビルドしてくださったので、パッケージを作ってみました。

Emacs23onn81001

Emacs23onn81002

一応Launcherに登録されますが、タスクバーのところのアイコンがデフォルトのものになってしまいます。一度は設定できたんですけどね。

愛用のC/Migemoをビルドしてパッケージしました。migemoの動作に必要なapel10.7もパッケージにしました。

みんな大好きNavi2chもパッケージにしました。

ダウンロード

ダウンロード emacs23_cvs080525-1_armel.deb (37124.4K)

「apel-10.7-1.deb」をダウンロード

「cmigemo-1.3-1_armel.deb」をダウンロード

「navi2ch-cvs-20070510.deb」をダウンロード

インストール

まずはキーボードのカスタマイズをしないことには始まらないでしょう。

[N810]NOKIA N810用カスタマイズ済のキーマップをインストールするパッケージ

パッケージは普通にApplication managerからインストールできると思います。 ただし、Red pill modeにしておく必要があります。

107MBほど食います。容量が足りないでしょう。 「/usr/local/」以下にインストールされますので、内蔵のFlashをext2もしくはext3等にフォーマットして、シンボリックリンクで「local」以下を逃がすといいと思います。

e2fsprogsをインストールした後、やへーさんのご指導に基づき以下のような感じで内蔵2GBのFlashをext3にフォーマット。

# mkfs.ext3 -b 1024 -j -J size=32 /dev/mmcblk0p1

設定

「/usr/local/share/emacs/site-lisp/site-start.el」に最低限の設定をしていますが、余計なものも交じっているかもしれません。

画面が狭いのでメニュー等は全部表示しないようにしていますが、その辺りが気に入らなければ、「/usr/local/share/emacs/site-lisp/site-start.el」を参照の上.emacs.elで設定し直してください。

site-start.elの内容

(setq exec-path (append '("/usr/local/bin/") exec-path))

(set-language-environment 'Japanese)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq locale-coding-system 'utf-8)

(tool-bar-mode -1)
(menu-bar-mode -1)
(scroll-bar-mode -1)

(display-time)

(transient-mark-mode t)
(iswitchb-mode t)
(setq kill-whole-line t)
(show-paren-mode t)

(setq-default tab-width 4)

(setq dired-use-ls-dired nil)
(setq list-directory-brief-switches "-C")

(setq inhibit-startup-message t)
(setq startup-echo-area-message "")
(setq initial-scratch-message "")

そのほか、以下のような設定をとりあえずしています。

今の.emacs.el

;; 本体上部のボタンに機能割り付け
(global-set-key (quote [f8]) (quote toggle-input-method))
(global-set-key (quote [f7]) (quote execute-extended-command))
(global-set-key (quote [f6]) (quote electric-buffer-list))

(setq load-path (append load-path '("/home/user/elisp")))
(setq exec-path (append '("/home/user/bin/") exec-path))

;; emacsclient用
(server-start)

(line-number-mode t)
(column-number-mode t)

;; 拙作のtwit.el variantの設定
(load "twit")
(twit-mode t)
(setq twit-username "MY_ACCOUNT")
(setq twit-password "PASSWORD")
(setq twit-favorite-friends
      '("hitoriblog" "otsune" "masui" "miyagawa" "emacs"))

;; navi2ch用の設定
(autoload 'navi2ch "navi2ch" "Navigator for 2ch for Emacs" t)
;; busybox版はオプションが違うので
(setq navi2ch-net-gunzip-args '("-d" "-c"))
;; スレを開く際に画面分割しないので便利
(setq navi2ch-bm-stay-board-window nil)

;; 黒バックに
(set-foreground-color "white")
(set-background-color "black")
(set-cursor-color "gold")
(setq frame-background-mode 'dark)

;; 初期カレントディレクトリをHOMEに
(setq home-dir (getenv "HOME"))
(setq default-directory home-dir)

;; SKK用
;;(load "skk-setup")
;;(setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L")

;; sense-region用の設定
(autoload 'sense-region-on "sense-region"
  "System to toggle region and rectangle." t nil)

;; ruby-mode用設定
(require 'ruby-electric)
;; pabbrev-mode
(require 'pabbrev)
(setq pabbrev-idle-timer-verbose nil)

(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t)

(setq auto-mode-alist
      (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
                    interpreter-mode-alist))
(autoload 'run-ruby "inf-ruby"
  "Run an inferior Ruby process")

(autoload 'inf-ruby-keys "inf-ruby"
  "Set local key defs for inf-ruby in ruby-mode")

(add-hook 'ruby-mode-hook
      '(lambda ()
         (inf-ruby-keys)
        (ruby-electric-mode t)
         (pabbrev-mode t)
      ))

(sense-region-on)

;#####################
;# for clip.rb
;#####################

;; クリップボード連携のための設定
;; 関連エントリ
(global-set-key "\C-cc" 'clip-copy)
(global-set-key "\C-cv" 'clip-paste)

(defun clip-copy ()
  ;; Copy region on current buffer to clipboard on maemo.
  (interactive)
  (let ((coding-system-for-write 'utf-8))
    (message "... copy to clipboard")
    (call-process-region (region-beginning) (region-end) "clip.rb" nil nil nil "-s")
    (message "")))

(defun clip-paste ()
  ;; Paste maemo clipboard to current buffer.
  (interactive)
  (message "... paste from clipboard")
  (let ((s (point))(e))
    (let ((coding-system-for-read 'utf-8))
      (call-process "clip.rb" nil t nil "-g"))
    (setq e (point))
      (if (equal e s)
          (ding)
        )
    (message "")))

;; browse-urlでmicrobにURLを送るよう設定
;; 関連エントリ
(autoload 'browse-url-osso-browser "browse-url-osso-browser" "" t)
(setq browse-url-browser-function 'browse-url-osso-browser)

;; C/Migemo用設定
(load "migemo.el")
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs" "-i" "\g"))
(setq migemo-dictionary "/usr/local/share/migemo/euc-jp/migemo-dict")
;;(setq migemo-dictionary "/usr/local/share/migemo/cp932/migemo-dict")
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)

Hildonizeされておらず本体上部のボタンが余っているので、機能を割り当てています。 上記の設定では「-」ボタンを押すとtoggle-input-methodが実行されて、日本語入力ができるようになります。

FDcloneの設定

FDcloneからemacsclient経由でEmacsにファイルを開かせる設定をしときます。 /home/user/.fd2rcに以下の行を加えます。

EDITOR='emacsclient -n'

先にEmacsが起動していないとダメです。

関連エントリ

[N810]NOKIA N810用FDclone2.09g、lv4.51、nkf2.0.8bパッケージ

[N810]NOKIA N810でFDclone/lvを便利に使うためのヘルパースクリプト

|

2007.12.07

[Emacs]Carbon EmacsからDictionary.app(辞書)で単語を調べる

Carbon EmacsからDictionary.app(辞書)で単語を調べるEmacsLispを書いてみました。 .emacs.elに貼るなどして使ってみてください。

LeopardのDictionary.appで試しました。Leopard以前のDictionary.appでは動かないと思います(使う人もいないと思いますが)。TigerのDictionary.appでも動くそうです(情報:dageziさん)。

関数、my-search-at-dictionary-appをdefine-keyないしglobal-set-keyしてください。

regionを渡す場合は、transient-mark-modeをtにしてないとダメです。

AppleScriptでUI Scriptingしているので、「システム環境設定>ユニバーサルアクセス>補助装置にアクセスできるようにする」のチェックボックスをONにしないと動きませんし、do-applescript関数を使っていますのでCarbon Emacs依存だと思います。

(defun my-search-at-dictionary-app ()
  ""
  (interactive)
  (let* ((keyword (read-from-minibuffer
           " keyword: "
           (my-get-keyword)))
     (encoded-keyword (encode-coding-string keyword 'japanese-shift-jis)))
(unless (string= encoded-keyword "")
    (do-applescript (concat "
activate application \"Dictionary\"
tell application \"System Events\"
    tell application process \"Dictionary\"
        set value of text field 1 of group 1 of tool bar 1 of window 1 to \""
            encoded-keyword "\"
        click button 1 of text field 1 of group 1 of tool bar 1 of window 1
    end tell
end tell
")))))

(defun my-get-keyword ()
  ""
  (or (and
       transient-mark-mode
       mark-active
       (buffer-substring-no-properties
        (region-beginning) (region-end)))
      (thing-at-point 'word)))

(transient-mark-mode t)

もちろん、「dict://」という独自スキーマがあることは知ってます。

open location "dict://test"でいけます。

いつか辞書切り替えをするかもな、ということでこうしてみました。

|

2007.11.10

[Emacs][Zaurus]Emacs用Twitterクライアントtwit.el variant

Emacs用のTwitterクライアントとして早くから存在した、Theron Tlaxさんの書かれたtwit.elにpost時残り文字数表示をするHackを加えたL.さんの改造版を元に、自分好みに改造してみました。

かなり変えてしまったので、この版をtwit.el variantと名乗ることにします。

twit.elをベースにしたのは、Twitterのsourceに「twit.el」と表示されるからです。
何を使っているのか他人に分からないんじゃ、面白くないですよね。

改造の方針は、操作系や見た目をNavi2chに近づけるというものです。
どんな感じかはscreen castをどうぞ。

初めてのまともな(?)Emacs Lispなので、ひどいものですいませんが(いや、いつだって自分にはマトモなものなど書けませんが)、Navi2chライクなTwitterクライアント、という目標はある程度達成され、類似のものも無いので公開してみます。
技術的に見るものは全く無いので、間違っても自分が書いた部分は参考にしないでください。

twit.el variantを書くに当たっては、はやみずさんのtwittering-mode、Navi2ch ProjectのNavi2chを大いに参考にしています。
また、小松さんのurlencode.elも参考にしました。


……すいません。参考にしたというか関数をコピペしました。

動作テスト環境

動作環境をかっちりと明示できればいいのですが、詳しくないものでよく分かっていません。
オリジナルのtwit.elの動作環境が22.0.99.1〜22.1.1付近なので、それぐらいかと。

銭谷さんのメンテナンスされているCarbon Emacsと、dipusさんのメンテナンスされているLinux Zaurus向けPrivate PackagesにあるEmacs、Meadow Netinstall Setup Programでインストールできる、Meadow3での動作を確認しています。

GNU Emacs 22.1.1 (powerpc-apple-darwin8.9.0, Carbon Version 1.6.0)
GNU Emacs 22.0.93.1 (arm-sharp-linux-gnu)
GNU Emacs 22.1.1 (i386-mingw-nt5.1.2600)

Vine Linux 4.1に入っている22.0.50.1でも動きました。

GNU Emacs 22.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.8.17, emcws)

ただし細工が必要。
XmlParserが古いので、新しいxml.elをもらってきます。これを入れ換えるか順序が先のload-pathに置いて先に読ませます。
また、なぜかGNUS由来のmailcap.elにあるmailcap-parse-mailcapsが未定義なので、明示的に読ませます。FLIMとの衝突?
これで流儀的に正しいかは分かりかねますが動きました。

しかし、POST時にPOST自体は成功するものの、引数の数が違うとエラーが出ますね。
よく分からん。

(load "/usr/share/emacs/22.0.50/lisp/gnus/mailcap.elc")
(load "twit")
(twit-mode t)
(setq twit-username "USERNAME")
(setq twit-password "PASSWORD")
(setq twit-favorite-friends
'("otsune" "masui" "miyagawa" "emacs"))

ダウンロード

twit.el(本体)

twit_utf8.txt(ドキュメント)

Linux Zaurus用のパッケージも置いておきます。「/opt/QtPalmtop/share/emacs/site-lisp/twit.el」に入ります。dipusさんのPrivate PackagesにあるEmacsの構成に準拠したものです。

「twit.el-variant_0.0.11-0.1.2-1_arm.ipk.bin」をダウンロード

不具合

山ほどあるかと思いますが、「(require 'cl)」とポストしようと思ったらそこが消えてしまいました。謎。

Zaurus上のEmacsとNetFrontを連携させるには

Zaurus上のEmacsでURLを踏んだときにNetFrontでブラウズする場合は、以前こちらのページにあったbrowse-url-netfront.elを使います。

「browse-url-netfront.el」(転載)をダウンロード

load-pathの通ったところにコピーし、.emacs.elに以下のように書いておきます。

(autoload 'browse-url-netfront "browse-url-netfront" "" t)
(setq browse-url-browser-function 'browse-url-netfront)

|

2007.10.05

[Emacs]CarbonEmacsからSafariをコントロールする

昨日のエントリ「[Zaurus]Linux Zaurus上のEmacsで選択した単語を「英辞郎 on the Web」で引く」に関連して、CarbonEmacsから手を離すこと無く、裏にあるSafariをコントロールして英辞郎 on the Webをブラウズするための糞Elispを書いてみました。
Elisp -> AppleScript -> JavaScriptの三段重ねですね。

昨日のElispはSafariで一枚もWindowを開いていないときにエラーが出てたので、黙って修正してたりします。


(defun my-safari-do-javascript(command)
(do-applescript
(concat "
tell application \"Safari\"
if count of document is greater than 0 then
do JavaScript \"" command "\" in document 1
end if
end tell")))

(defun my-safari-scroll(direction)
(let ((amount 200))
(if (eq direction 1)
(setq amount (- amount)))
(my-safari-do-javascript
(concat "javascript:window.scrollBy(0,"
(int-to-string amount)
");"))))

;;Safariで上方向スクロール
(defun my-safari-scroll-up()
(interactive)
(my-safari-scroll 1))
;;Shift+上
(global-set-key '[S-up] 'my-safari-scroll-up)

;;Safariで下方向スクロール
(defun my-safari-scroll-down()
(interactive)
(my-safari-scroll 0))
;;Shift+下
(global-set-key '[S-down] 'my-safari-scroll-down)

;;Safariでヒストリを進む
(defun my-safari-history-forward()
(interactive)
(my-safari-do-javascript "history.forward();"))
;;Command+右
(global-set-key '[M-right] 'my-safari-history-forward)

;;Safariでヒストリを戻る
(defun my-safari-history-back()
(interactive)
(my-safari-do-javascript "history.back();"))
;;Command+左
(global-set-key '[M-left] 'my-safari-history-back)

;;Safariでリロード
(defun my-safari-reload()
(interactive)
(my-safari-do-javascript "location.reload(true);"))
;;Ctrl+C r
(global-set-key "\C-cr" 'my-safari-reload)

|

2007.07.18

[Emacs]jsSellServerを使ってFirefoxとEmacsでJavaScript開発

Firefoxのアドオンをあさっていたら、jsShellServerという興味深いものを見つけた。

jsShellServer (JavaScript Shell Server)は、Firefox用のアドオン。
Firefoxで表示中のページに対して、XULで実装されたJavaScript ShellからJavaScriptを適用できる。
手動版GreaseMonkeyみたいな感じ。
Firefoxの中で閉じた形で使うこともできるが、これの素晴らしいところはEmacsからFirefoxに対してリモートでJavaScriptを実行させられるところ。
Emacsで「alert('test');」などと書いて、行末でC-c C-eとすると、Firefoxでダイアログが表示されるといった具合。

Mac OS X下、Carbon EmacsとFirefoxで動作を確認。

導入

導入は基本的には「Installation」に書いてある通り。

jsShellServer」からアドオン「shellserver.xpi」をFirefoxにインストール 。

js-mode.el」をダウンロード。ページ一番下の「Download in other formats」の下にある「Plain Text」からダウンロードできる。

js-mode.elをload-pathの通ったところにコピー。

.emacs.elに以下を追記。

;;;;;;;;;;;;
;;Sweet Sweet javascript mode
(add-hook 'javascript-mode-hook
'(lambda ()
(js-mode)
(turn-on-lazy-lock)
(c-set-style "ellemtel")))

;(add-hook 'javascript-mode-hook 'js-mode)
(autoload 'js-mode "js-mode" nil t)

FirefoxとEmacsを再起動。

使い方

Firefoxのメニュー「ツール>Javascript Shell Server」を実行。

「Start ShellServer」ボタンを押す。

このままだとJavaScriptの実行対象(Scope)はJavaScript Shellなので、「enumerateWindows()」ボタンを押して、Window(Tab)の一覧を得る。リンクが現れるので、実行対象にしたいものをクリック。

「Scope is now〜」と実行対象が切り替わった旨メッセージが表示される。

Emacs起動、「M-x js-connect」を実行。デフォルトのポート、4007で確定。「M-x js-mode」を実行。

Emacsで適当にJavaScriptのソースを書いて行末にカーソルを持っていき、C-c C-e、これで実行。そのほかの操作はC-h mを見るか、「js-mode.el」の冒頭を参照のこと。

FirefoxのJavaScript Shellの最下段のフォームにもJavaScriptを入力可能。行末でEnterを素早く2回押すと実行可能。Ctrl+上下で実行したJavaScriptのヒストリをたどることも可能。

関連URL

MozLabに含まれているMozReplというのもこれヤバいな。Firefoxにtelnet接続できるそうで。
しかも、Emacsからも接続できるよう、Elispが提供されている。
なおかつ、コマンドラインからMozRepを経由してFirefoxにJavaScriptを実行させるfresnoというコマンドを作った方もいらっしゃる。
これはやばすぎる。今回書いたJavascript Shell Serverもいいと思ったけど、MozReplが決定版ということになりそう。
http://dev.hyperstruct.net/trac/mozlab

Firefoxの拡張MozLabの中に含まれるMozReplがヤバすぎる件について - 最速インターフェース研究会
http://la.ma.la/blog/diary_200609280045.htm

JavaScript Shells - mozilla developer center
http://developer.mozilla.org/en/docs/JavaScript_Shells

Javascript ShellServer for Emacs - The Unwashed Meme
http://the.unwashedmeme.com/blog/2005/06/02/javascript-shellserver-for-emacs/

jsShellServer - Trac
https://trac.acceleration.net/JsShellServer

Extensions Developer's Extension
http://ted.mielczarek.org/code/mozilla/extensiondev/

JavaScript Shell - www.squarefree.com
http://www.squarefree.com/shell/

JsShellServer - Trac - malblue.tumblr.com
http://malblue.tumblr.com/post/4679983

|

2007.03.22

[Emacs] Emacsでココログ(Emacsでブログ) mapae環境を作る (Mac OS X / Windows XP)

長年特に疑問を持たずにココログのWebインターフェイスを使って更新してきましたが、どうもココログのWebインターフェイスを使ってエントリするのはもっさい感じで、実際重くて嫌な感じです。

Yet Anotherな手段を開拓した人が居るに違いありません。

そのような確信の元に「emacs ココログ」でググって出てきたEmacs用のMovable Type:: Emacs フロントエンドである「mapae」を使ってみました。

要するにEmacsからココログの読み書きをしようというわけです。

正直な話、2ちゃんねるブラウザよろしく、出来あいのブログサービスというものをWebブラウザ以外のアプリケーションを使って更新できるということを知りませんでした。
XML-RPCというプロトコルがあり、ココログもまたそれに対応しているのですね。

案外簡単にできたので、二次情報としてレポートしておこうと思います。

使ってみた感じ、とても快適で気に入りました。
Emacsからシームレスにココログへエントリできるので、とっても楽。

また一つEmacs上のマストなアプリケーションが増えました。

あまりにも快適なので、Windows XPマシン、Mac OS Xマシン両方にインストールしてしまいました。

Windows XPでのインストール作業

Windows XPへのインストールは簡単です。

Meadow3をインストールします。
今はNetinstallが整備されているのでインストーラ一発で簡単です。
僕は「d:\Meadow」にインストールしました。

ActivePerlをインストールします。僕は「c:\Perl」にインストールしました。インストーラで簡単にインストールできます。

mapaeのサイトに行ってmapaeをダウンロードしてきます。現在の最新版は「Ver.0.11 20051017」です。

解凍して出てくるmapae.plとmapae.phは、僕は「d:\Meadow\bin\」に置きました。
mapae.elは、適当なload-pathが通ったディレクトリに置きます。僕は「d:\Meadow\site-lisp\」に置きました。

.emacs.elに以下を追加します。パスは上記の僕の環境にならったものになっています。

(require 'mapae)

(setq mapae-perl-command "c:/Perl/bin/perl")
(setq mapae-command "d:/Meadow/bin/mapae.pl")
(global-set-key "\C-cwn" 'mapae-new-post)
(global-set-key "\C-cwr" 'mapae-get-recent-post)
(global-set-key "\C-cwg" 'mapae-get-post)
(global-set-key "\C-cwl" 'mapae-get-recent-titles)

mapae.phを書き換えます。詳細はオフィシャルサイトを参照してください。
最低限書き換える必要があるのは以下の4行だけです。簡単です。
ココログのベーシックなのでこのような設定になってます。

$RPCSERVER = 'http://app.cocolog-nifty.com/t/api';
$BLOGID = 99999;
$USERNAME = 'ログイン時に入力しているユーザーネーム';
$PASSWORD = 'ログイン時に入力しているパスワード';

BLOGIDは、ココログの管理画面のcgiの引数に付いている「https://app.cocolog-nifty.com/t/app/weblog/manage?blog_id=99999」の9999の部分の数字です。

cmd.exeを起動して、

perl d:\meadow\bin\mapae.pl getRecentPost

を実行して最新のエントリが表示されたらOKです。

インストールは以上です。

Mac OS X (Panther / Tiger)でのインストール作業

Mac OS Xへのインストールはちょい面倒です。

Xcodeをインストールしておくのが大前提です。

XcodeはApple Developer Connectionからダウンロードできますが、無料の会員登録が必要です。
古くてよければMac OS XのインストールCDに入ってますが。

Expatをインストールします。
tarballをもらってきて、適当なディレクトリで解凍、make installします。

$ tar xvzf expat-2.0.0.tar.gz
$ cd expat-2.0.0
$ ./configure; make
$ sudo make install

CPANでLWP、MIME::Parser、XMLRPC::Liteをインストールします。
途中でいろいろ聞かれますが、全部Enterで済みました。

$ sudo perl -MCPAN -e shell
$ cpan> install LWP
$ cpan> install MIME::Parser
$ cpan> install XMLRPC::Lite
$ bye

CarbonEmacsをインストールします。
銭谷さんによりパッケージが整備されているので/Applicationsにコピーするだけです。銭谷さんってNASAの人なんですね。スゴイ。

Pantherの場合は、Saikiさんのサイトからパッケージがダウンロードできます。

mapae.pl、mapae.phは、パスを通した~/binに置きました。
mapae.elは、以下のように.emacs.elに追記し、load-pathを通した~/elispに置きました。

(setq load-path (append '("~/elisp") load-path))

Pantherの場合はPerlのパスは「/usr/local/bin/perl」なので、mapae.plのシェバング行を書き変えます。
Tigerの場合は「/usr/bin/perl」なのでそのままでOKでした。

mapae.phの書き換え内容、.emacs.elへの追記内容はパスこそ違えどWindows XPの解説と同じです。

ターミナルで以下を実行して最新のエントリが表示されたらOKです。

mapae.pl getRecentPost

インストールは以上です。

mapaeの使い方

C-cwlで最新のエントリ15本のサブジェクトを取得します。
M-x mapae-modeみたいなものは必要無く、いきなりC-cwlします。

取得したサブジェクトのうち、編集したいエントリ名の行にカーソルを合わせてfでエントリの編集ができます。
dired-modeみたいな感じですね。

C-cwsで編集結果の保存です。ただし、公開内容は更新されません。

つまり、C-cwsで保存すると、mapaeで編集した内容と、公開内容の間に不一致が生じます。
Webインターフェイスから見てもmapaeで編集した内容になっていますが、公開内容は古いままという状態になるわけです。
ココログのWebインターフェイスを使っていては起こりえない状態なのでとまどうかもしれません。

C-u C-cwsで編集結果を保存しつつ、公開内容も更新します。

新規エントリの登録はC-cwnです。
項目を埋めてC-cwsで編集結果の保存(下書き相当)、C-u C-cwsで編集結果を保存しつつ、公開内容も更新です。

これ以外の機能についてはマニュアルを参考にしてください。

あとがき

これをZaurusで使いたいがためにPerl5.8.7のZaurus用のパッケージを作ったのですが、ZaurusではCPANするのが大変です。
もしZaurusで動かせたら教えてください。

2007.5.9追記

聖アンドレアスの失敗さんでも、エントリ「mapaeというのがあるらしい」でmapaeについての言及が。ココログフリーはapiのurlが違うとのこと。

|