<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>blog::2310 &#187; Emacs</title>
	<atom:link href="http://blog.2310.net/archives/category/emacs/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.2310.net</link>
	<description>2310</description>
	<lastBuildDate>Sat, 14 Aug 2010 15:17:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>emacs-w3m上で短縮URLを取得する &#8211; その2</title>
		<link>http://blog.2310.net/archives/604</link>
		<comments>http://blog.2310.net/archives/604#comments</comments>
		<pubDate>Sun, 06 Sep 2009 10:03:59 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://blog.2310.net/?p=604</guid>
		<description><![CDATA[前回(emacs-w3m上で短縮URLを取得する &#8211; その1)で紹介したemacs-w3m内で短縮URLを取得する関数ですがちょっと整理して、TinyURL、bit.ly、ig.gdなど複数のサービスに対応するようにしてみました。


前回のサービス毎の関数を一つにまとめています。

;; サービスを使用して短縮URLをkill-ringに入れる関数
;; 引数 url     ... URL
;; 引数 service ... 使用するサービス -&#62; 'TinyURL or 'is.gd or 'bit.ly
(defun shorten-url-to-kill-ring (url &#38;optional service)
  (let (service-uri
        key
        get-regexp
        method)
   [...]]]></description>
			<content:encoded><![CDATA[<p>前回(<a href="http://blog.2310.net/archives/582">emacs-w3m上で短縮URLを取得する &#8211; その1</a>)で紹介したemacs-w3m内で短縮URLを取得する関数ですがちょっと整理して、<a href="http://www.tinyurl.com/">TinyURL</a>、<a href="http://bit.ly/">bit.ly</a>、<a href="http://is.gd/">ig.gd</a>など複数のサービスに対応するようにしてみました。</p>

<p><span id="more-604"></span>
前回のサービス毎の関数を一つにまとめています。</p>

<pre><code>;; サービスを使用して短縮URLをkill-ringに入れる関数
;; 引数 url     ... URL
;; 引数 service ... 使用するサービス -&gt; 'TinyURL or 'is.gd or 'bit.ly
(defun shorten-url-to-kill-ring (url &amp;optional service)
  (let (service-uri
        key
        get-regexp
        method)
    ;; default service to shorten
    (unless service (setq service 'TinyURL))
    ;; switch parameter by each url-shorten service
    (cond ((eq service 'TinyURL)
           ;; via http://tinyurl.com/  use API
           (setq service-uri "http://tinyurl.com/api-create.php")
           (setq key "url")
           (setq method "POST")
           (setq get-regexp "\\(http://tinyurl.com/.+\\)"))
          ((eq service 'is.gd)
           ;; via http://is.gd/  use API
           (setq service-uri "http://is.gd/api.php")
           (setq key "longurl")
           (setq method "GET")
           (setq get-regexp "\\(http://is.gd/.+\\)"))
          ((eq service 'bit.ly)
           ;; via http://bit.ly/  NOT USE API, get from web page
           (setq service-uri "http://bit.ly")
           (setq method "POST")
           (setq key "url")
           (setq get-regexp "id *= *\"shortened-url\" +value *= *\"\\(http://bit.ly/.+\\)\" +/&gt;")))
    ;; use url package ...
    (setq url-request-method method)
    (if (equal method "POST")
        (setq url-request-data (concat key "=" (url-hexify-string url)))
      (setq url-request-data nil)
      (setq service-uri (concat service-uri "?" key "=" (url-hexify-string url))))
    ;; Now, try to fetch short URL
    (url-retrieve service-uri
                  '(lambda (status cbargs)
                     (point-min)
                     (if (re-search-forward (car (cdr cbargs)) nil t)
                         (progn
                           (setq result-url (match-string-no-properties 1))
                           (kill-new result-url nil)
                           (message "Copy '%s' to ring, shorten %s" result-url (car cbargs))))
                     (kill-buffer (current-buffer)))
                  (list (list url get-regexp)))))




;; 上をw3m上から使用するための関数 (この例ではis.gdを使用する)
(defun my-w3m-shorten-url ()
  (interactive)
  (shorten-url-to-kill-ring
     (or (w3m-url-valid (w3m-anchor))
         (w3m-url-valid w3m-current-url))
     'is.gd))
</code></pre>

<p>キーバインドとかは必要だったら適当にしてください。</p>

<pre><code>(eval-after-load "w3m"
  '(progn
     ;; w3m-mode-map key binds
     (define-key w3m-mode-map "\C-cs" 'my-w3m-shorten-url)))
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/604/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>emacs-w3m上で短縮URLを取得する &#8211; その1</title>
		<link>http://blog.2310.net/archives/582</link>
		<comments>http://blog.2310.net/archives/582#comments</comments>
		<pubDate>Sat, 05 Sep 2009 03:52:39 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://blog.2310.net/?p=582</guid>
		<description><![CDATA[Twitterを使用するようになってからTinyURLとかbit.ly使用する機会が増えたのでemacs上のw3mから簡単に短縮URLを取得できるように関数を作成しました。Twitter自体自動的にURLを短縮する機能を持っているようですけど。

この投稿については内容が更新されています。「emacs-w3m上で短縮URLを取得する &#8211; その2」の方を利用してください。


以下の関数を.emacsとかに書き込みます。

;; URLを短縮してkill-ringの中に入れる関数(TinyURLを使用バージョン ... API使用)
(defun shorten-url-tinyurl(url)
  (let ((shorten-uri "http://tinyurl.com/api-create.php")
        (url-request-method "POST")
        (url-request-extra-headers
             '(("Content-Type" . "application/x-www-form-urlencoded")))
        (url-request-data (concat "url=" (url-hexify-string url))))
 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.twitter.com">Twitter</a>を使用するようになってから<a href="http://tinyurl.com">TinyURL</a>とか<a href="http://bit.ly/">bit.ly</a>使用する機会が増えたのでemacs上のw3mから簡単に短縮URLを取得できるように関数を作成しました。Twitter自体自動的にURLを短縮する機能を持っているようですけど。</p>

<p>この投稿については内容が更新されています。「<a href="http://blog.2310.net/archives/604">emacs-w3m上で短縮URLを取得する &#8211; その2</a>」の方を利用してください。</p>

<p><span id="more-582"></span>
以下の関数を.emacsとかに書き込みます。</p>

<pre><code>;; URLを短縮してkill-ringの中に入れる関数(TinyURLを使用バージョン ... API使用)
(defun shorten-url-tinyurl(url)
  (let ((shorten-uri "http://tinyurl.com/api-create.php")
        (url-request-method "POST")
        (url-request-extra-headers
             '(("Content-Type" . "application/x-www-form-urlencoded")))
        (url-request-data (concat "url=" (url-hexify-string url))))
    (url-retrieve shorten-uri
                  '(lambda (status cbargs)
                     (point-min)
                     (if (re-search-forward  "\\(http://tinyurl.com/.+\\)" nil t)
                         (progn
                           (setq result-url (match-string-no-properties 1))
                           (kill-new result-url nil)
                           (message "Copy '%s' to ring, shorten %s" result-url cbargs)))
                     (kill-buffer (current-buffer)))
                  (list url))))

;; URLを短縮してkill-ringの中に入れる関数(bit.lyを使用バージョン ... API不使用)
(defun shorten-url-bitly (url)
  (let ((shorten-uri "http://bit.ly")
        (shorten-uri-get-regexp "id *= *\"shortened-url\" +value *= *\"\\(http://bit.ly/.+\\)\" +/&gt;")
        (url-request-method "POST")
        (url-request-extra-headers
             '(("Content-Type" . "application/x-www-form-urlencoded")))
        (url-request-data (concat "url=" (url-hexify-string url))))
    (url-retrieve shorten-uri
                  '(lambda (status cbargs)
                     (point-min)
                     (if (re-search-forward (car (cdr cbargs)) nil t)
                         (progn
                           (setq result-url (match-string-no-properties 1))
                           (kill-new result-url nil)
                           (message "Copy '%s' to ring, shorten %s" result-url (car cbargs))))
                     (kill-buffer (current-buffer)))
                  (list (list url shorten-uri-get-regexp)))))



;; 上をw3m上から使用するための関数
(defun my-w3m-shorten-url ()
  (interactive)
  (shorten-url-tinyurl ;; もしくは shorten-url-bitly
   (or (w3m-url-valid (w3m-anchor))
       (w3m-url-valid w3m-current-url))))
</code></pre>

<p>キーバインドとかは必要だったら適当にしてください。</p>

<pre><code>(eval-after-load "w3m"
  '(progn
     ;; w3m-mode-map key binds
     (define-key w3m-mode-map "\C-cs" 'my-w3m-shorten-url)))
</code></pre>

<p>ちなみに<a href="http://tinyurl.com">TinyURL</a>と<a href="http://bit.ly/">bit.ly</a>バージョンを用意しています。好きな方を選択してください。ただしbit.lyバージョンはAPIではなく通常のWebページから取得しているためWebページの改装等で使用できなくなる可能性があります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/582/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EmacsでもMarkdown</title>
		<link>http://blog.2310.net/archives/218</link>
		<comments>http://blog.2310.net/archives/218#comments</comments>
		<pubDate>Tue, 30 Dec 2008 14:11:25 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Markdown]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=218</guid>
		<description><![CDATA[と言っても大したことではありません。指定した範囲(リージョン)をMarkdownで変換し、別バッファに書き出すだけです。一部分だけをHTML化するのに便利なんで使用してます。



コードの中で

(call-process-region from
                     to
                     "markdown"
            [...]]]></description>
			<content:encoded><![CDATA[<p>と言っても大したことではありません。指定した範囲(リージョン)をMarkdownで変換し、別バッファに書き出すだけです。一部分だけをHTML化するのに便利なんで使用してます。</p>

<p><span id="more-218"></span></p>

<p>コードの中で</p>

<pre><code>(call-process-region from
                     to
                     "markdown"
                     nil
                     buffer-output
                     nil)
</code></pre>

<p>の&#8221;markdown&#8221;とある部分については&#8221;C:&#92;Program Files&#92;markdown&#92;markdown.pl&#8221;とか
実行できる形式に直してやってください。以下スクリプト。</p>

<pre><code>(defun markdown (from to)
  (interactive "r")
  (if (&gt; from to)
      (rotatef from to))
  (let ((buffer-output (get-buffer-create "*markdown*")))
        (with-current-buffer buffer-output
          (erase-buffer))
        (call-process-region from
                             to
                             "markdown"
                             nil
                             buffer-output
                             nil)
        (switch-to-buffer-other-window buffer-output)))
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/218/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacsからsdicとsaryを使用して英辞郎を高速検索</title>
		<link>http://blog.2310.net/archives/200</link>
		<comments>http://blog.2310.net/archives/200#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:55:43 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[Program]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=200</guid>
		<description><![CDATA[Emacs(Meadow)には辞書引きマクロがいくつかあり、私が愛用しているのは軽
くてシンプルなsdicです。
これを使用すると例えばw3m で英文のページを見ながら、キー一つで単語
を和訳することができて非常に便利です。

ところが最近、「英辞郎」を本家サイトから購入し
MeadowMemoの記事やsdic本家のページを
参考にsdicから使用できるようにしたのですが検索がえらく遅くなってしまいました。

何とかならないかと調べてみると、saryというアプリケーションがあってこれを利用したとこ
ろ検索スピードがかなり改善されました。その導入方法のまとめをメモ。ついでにWindows用のバイナリも置きました。

なお英辞郎ファイルをsdicファイルに変換する方法についてはmakeコマンドを
使用する例が紹介しているサイトが多いですが私はsdicに含まれるeijirou.perlから
直接変換しました。Linux上で日本語コードはEUC-JPです。

$nkf  -SXe eijiro97.txt &#124; perl eijirou.perl &#62; eijiro97.sdic

-- 和英の場合 --
$nkf  -SXe waeiji97.txt &#124; perl eijirou.perl --waei &#62; waeiji97.sdic




sdicでsaryコマンドを使用するためのメモ

基本的にLinux/Unixから使用すること想定していますが、
Windows用もがんばれば何とかなるかもしれません。

いつもの文言です。以下の記述については一切責任を持ちませんので御自分の責任でご利用ください。

saryコマンドをインストールする

私の場合Gentoo Linuxを使用していましたので、

#emerge sary


だけで終わってしまいました(というよりは、このためにMY COMジャーナルに紹介されているsufaryではなく
saryを導入しています。sufaryはemerge保守されていないようです。)

apt-getでもあるようですので使用できる人はそれとか。ダメな人はソースからconfigure&#38;make&#38;installです。

なお、saryのREADMEやconfigure.inにはコンパイルのためにglibの2.0.0以上
が必要なことが書いてあります。ここらへん
はgimp(2.0以上)やgnomeを使用し
ていれば心配はないのかもしれません。

Windows用はよく分かりませんが、例えばmingw32環境を整え
てGimp館の記事などを参考にGTKのサイトから
glibのソースをダウンロードして作成すればsary作成の方も何とかなるかもしれません(gimp(2.0以上)を
インストールしてglibの必要なファイルを直接手に入れることもできる？)。

Windows用のコマンドを試しにコンパイルしてみました。このページの一番下です。

sdicファイルからaryファイルを生成する

saryのコマンドを使用します。私はLinux上で日本語コードをEUC-JPとしていますので実行はこんな感じでした。

$mksary -c EUC-JP eijiro97.sdic
$mksary -c EUC-JP waeiji97.sdic


長い時間の後、同じディレクトリ内にeijiro97.sdic.aryやwaeiji97.sdic.aryができます。
辞書を引くためにはできあがったaryファイルと元のファイルの両方がディレクトリに
入っていなければなりません。

あとaryファイルはとても巨大です。元のsdicの2〜3倍に膨れ上がりますのでディスクの容量など注意が必要です。

Emacsに設定する

saryをemacsから使用するように調整します。
sdicの基本的なインストール方法はMeadow Memoなどを
参考にしてください。Gentoo Linuxであれば&#8221;emerge sdic&#8221;を実行します。

しかし、このままだとsdicからsaryを使用できません。COZMIXNGさんでrubyを使用する方法が紹介されていますが、
私はsaryをsdicから直接使用する方法をとりました。fsetで関数を強制置換してしまいます。以下、.emacs用のコードです。

;; ----- sdicを呼び出すための設定(F9で実行)
(global-set-key [f9] 'sdic-describe-word)
(autoload 'sdic-describe-word "sdic" "search word" t nil)
;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
  '(progn
     ;; saryのコマンドをセットする
  [...]]]></description>
			<content:encoded><![CDATA[<p>Emacs(Meadow)には辞書引きマクロがいくつかあり、私が愛用しているのは軽
くてシンプルな<a href="http://www.namazu.org/~tsuchiya/sdic/">sdic</a>です。
これを使用すると例えば<a href="http://emacs-w3m.namazu.org/index-ja.html">w3m</a> で英文のページを見ながら、キー一つで単語
を和訳することができて非常に便利です。</p>

<p>ところが最近、「英辞郎」を<a href="http://www.eijiro.jp/">本家サイト</a>から購入し
<a href="http://www.bookshelf.jp/soft/meadow_53.html#SEC769">MeadowMemoの記事</a>や<a href="http://www.namazu.org/~tsuchiya/sdic/">sdic本家のページ</a>を
参考にsdicから使用できるようにしたのですが検索がえらく遅くなってしまいました。</p>

<p>何とかならないかと調べてみると、<a href="http://sary.sourceforge.net/">sary</a>というアプリケーションがあってこれを利用したとこ
ろ検索スピードがかなり改善されました。その導入方法のまとめをメモ。ついでにWindows用のバイナリも置きました。</p>

<p>なお英辞郎ファイルをsdicファイルに変換する方法についてはmakeコマンドを
使用する例が紹介しているサイトが多いですが私はsdicに含まれるeijirou.perlから
直接変換しました。Linux上で日本語コードはEUC-JPです。</p>

<pre><code>$nkf  -SXe eijiro97.txt | perl eijirou.perl &gt; eijiro97.sdic

-- 和英の場合 --
$nkf  -SXe waeiji97.txt | perl eijirou.perl --waei &gt; waeiji97.sdic
</code></pre>

<p><span id="more-200"></span></p>

<h3>sdicでsaryコマンドを使用するためのメモ</h3>

<p>基本的にLinux/Unixから使用すること想定していますが、
Windows用もがんばれば何とかなるかもしれません。</p>

<p>いつもの文言です。以下の記述については一切責任を持ちませんので御自分の責任でご利用ください。</p>

<h4>saryコマンドをインストールする</h4>

<p>私の場合<a href="http://www.gentoo.gr.jp/">Gentoo Linux</a>を使用していましたので、</p>

<pre><code>#emerge sary
</code></pre>

<p>だけで終わってしまいました(というよりは、このために<a href="http://journal.mycom.co.jp/column/osx/020/">MY COMジャーナルに紹介されているsufary</a>ではなく
saryを導入しています。sufaryはemerge保守されていないようです。)</p>

<p>apt-getでもあるようですので使用できる人はそれとか。ダメな人はソースからconfigure&amp;make&amp;installです。</p>

<p>なお、saryのREADMEやconfigure.inにはコンパイルのためにglibの2.0.0以上
が必要なことが書いてあります。ここらへん
は<a href="http://gimp2.info/">gimp(2.0以上)</a>や<a href="http://ja.wikipedia.org/wiki/GNOME">gnome</a>を使用し
ていれば心配はないのかもしれません。</p>

<p>Windows用はよく分かりませんが、例えば<a href="http://www.mingw.org/">mingw32</a>環境を整え
て<a href="http://www004.upp.so-net.ne.jp/iccii/sub/CompileWin.html">Gimp館の記事</a>などを参考に<a href="http://www.gtk.org/">GTKのサイト</a>から
glibのソースをダウンロードして作成すればsary作成の方も何とかなるかもしれません(<a href="http://gimp2.info/">gimp(2.0以上)</a>を
インストールしてglibの必要なファイルを直接手に入れることもできる？)。</p>

<p>Windows用のコマンドを試しにコンパイルしてみました。このページの一番下です。</p>

<h4>sdicファイルからaryファイルを生成する</h4>

<p>saryのコマンドを使用します。私はLinux上で日本語コードをEUC-JPとしていますので実行はこんな感じでした。</p>

<pre><code>$mksary -c EUC-JP eijiro97.sdic
$mksary -c EUC-JP waeiji97.sdic
</code></pre>

<p>長い時間の後、同じディレクトリ内にeijiro97.sdic.aryやwaeiji97.sdic.aryができます。
辞書を引くためにはできあがったaryファイルと元のファイルの両方がディレクトリに
入っていなければなりません。</p>

<p>あとaryファイルはとても巨大です。元のsdicの2〜3倍に膨れ上がりますのでディスクの容量など注意が必要です。</p>

<h4>Emacsに設定する</h4>

<p>saryをemacsから使用するように調整します。
sdicの基本的なインストール方法は<a href="http://www.bookshelf.jp/soft/meadow_53.html#SEC769">Meadow Memo</a>などを
参考にしてください。<a href="http://www.gentoo.gr.jp/">Gentoo Linux</a>であれば&#8221;emerge sdic&#8221;を実行します。</p>

<p>しかし、このままだとsdicからsaryを使用できません。<a href="http://www.cozmixng.org/">COZMIXNG</a>さんで<a href="http://www.cozmixng.org/~rwiki/?cmd=view;name=isary.rb">rubyを使用する方法</a>が紹介されていますが、
私はsaryをsdicから直接使用する方法をとりました。fsetで関数を強制置換してしまいます。以下、.emacs用のコードです。</p>

<pre><code>;; ----- sdicを呼び出すための設定(F9で実行)
(global-set-key [f9] 'sdic-describe-word)
(autoload 'sdic-describe-word "sdic" "search word" t nil)
;; ----- sdicが呼ばれたときの設定
(eval-after-load "sdic"
  '(progn
     ;; saryのコマンドをセットする
     (setq sdicf-array-command "/usr/bin/sary")
     ;; sdicファイルのある位置を設定し、arrayコマンドを使用するよう設定(現在のところ英和のみ)
     (setq sdic-eiwa-dictionary-list
           '((sdicf-client "/path/to/eijiro97.sdic" (strategy array))))
     ;; saryを直接使用できるように sdicf.el 内に定義されているarrayコマンド用関数を強制的に置換
     (fset 'sdicf-array-init 'sdicf-common-init)
     (fset 'sdicf-array-quit 'sdicf-common-quit)
     (fset 'sdicf-array-search
           (lambda (sdic pattern &amp;optional case regexp)
             (sdicf-array-init sdic)
             (if regexp
                 (signal 'sdicf-invalid-method '(regexp))
               (save-excursion
                 (set-buffer (sdicf-get-buffer sdic))
                 (delete-region (point-min) (point-max))
                 (apply 'sdicf-call-process
                        sdicf-array-command
                        (sdicf-get-coding-system sdic)
                        nil t nil
                        (if case
                            (list "-i" pattern (sdicf-get-filename sdic))
                          (list pattern (sdicf-get-filename sdic))))
                 (goto-char (point-min))
                 (let (entries)
                   (while (not (eobp)) (sdicf-search-internal))
                   (nreverse entries))))))
     ;; おまけ--辞書バッファ内で移動した時、常にバッファの一行目になるようにする
     (defadvice sdic-forward-item (after sdic-forward-item-always-top activate)
       (recenter 0))
     (defadvice sdic-backward-item (after sdic-backward-item-always-top activate)
       (recenter 0))))
</code></pre>

<h4>Windows版のおまけ</h4>

<p>…とりあえずWindows版でも何とかなるかな、とやってみました。できあがったバイナリをzipで固めて仮置きしておきます。ソースコード等は全て公表されているものを使用しています。</p>

<ul>
<li><a href="http://blog.2310.net/my-store/download/array-win-20061009.zip" title="array-win-20061009.zipのダウンロード">array-win-20061009.zip</a></li>
</ul>

<p><a href="http://www.mingw.org/">mingw32</a>でコンパイル。作成したコマンドはmkary.exeとsary.exeですがmkary.exeはsaryの
ではなく<a href="http://nais.to/~yto/tools/sufary/">sufary</a>のものをコンパイルしました。saryのmksary.exeは
コンパイルはできたものの実行するとメモリエラーとなりうまくいかなかったです。
というわけでaryファイルを生成する場合にはdos窓で</p>

<pre><code>mksary.exe  eijiro97.sdic
</code></pre>

<p>とすれば良いと思います。euc-jpのもので環境もWin2k 256MBでしか試してい
ません。Meadowな人はもし良ければダウンロードして試してみてください。と
りあえず上の環境で英辞郎ファイル(バージョン97)を使用して、sdicファイル
からaryファイルの生成、sary.exeコマンドの直接実行による検索はうまくい
きました。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/200/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Emacs]howmで直近のファイルを編集</title>
		<link>http://blog.2310.net/archives/139</link>
		<comments>http://blog.2310.net/archives/139#comments</comments>
		<pubDate>Tue, 19 Aug 2008 12:50:06 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=139</guid>
		<description><![CDATA[Emacsでのメモ書き用にhowmを使用しています。ちょっと思いついたこと
をサッとメモすることができ、今では手放すことができないソフトです。

ところがhowmで直近に編集したメモを編集するためには、一回最近編集し
たファイルを一覧表示させた上で一番トップのファイルを選択する必要があり
ます。そこで一発で直近のファイルを編集可能とする関数を作成しました。



概要

howmで直近に編集したファイルを開きます。直接使用するのは関数&#8217;howm-open-most-recent-file&#8217;です。
他の三つの関数は、あるディレクトリから最終更新時刻が最も新しいファイルを見つけるための関数です。

howmで使用するディレクトリをいちいち全部検査しているのでそれなりに時間がかかります。
年月別にディレクトリを分けているような人は対象ディレクトリを狭めるなど工夫の余地があると思います。
改造のネタにでもしてください。

使い方

以下を.emacs等に追加してください。

;; キーバインドを追加する
(global-set-key "\C-c,r" 'howm-open-most-recent-file)

;; ======================================================================
;; howm-open-most-recent-file
;; 一番新しいメモファイルを呼び出す関数
;; (require 'howm-mode)の記述の後に書くか、hookとかで引っかけてください。

(defun howm-open-most-recent-file ()
  (interactive)
  (let ((recent-file (my-get-most-recent-file howm-directory)))
    (if recent-file
        (progn
          (find-file recent-file)
          (message "howm's most recent [...]]]></description>
			<content:encoded><![CDATA[<p>Emacsでのメモ書き用に<a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi" title="howm wiki">howm</a>を使用しています。ちょっと思いついたこと
をサッとメモすることができ、今では手放すことができないソフトです。</p>

<p>ところが<a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi" title="howm wiki">howm</a>で直近に編集したメモを編集するためには、一回最近編集し
たファイルを一覧表示させた上で一番トップのファイルを選択する必要があり
ます。そこで一発で直近のファイルを編集可能とする関数を作成しました。</p>

<p><span id="more-139"></span></p>

<h4>概要</h4>

<p><a href="http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi" title="howm wiki">howm</a>で直近に編集したファイルを開きます。直接使用するのは関数&#8217;howm-open-most-recent-file&#8217;です。
他の三つの関数は、あるディレクトリから最終更新時刻が最も新しいファイルを見つけるための関数です。</p>

<p>howmで使用するディレクトリをいちいち全部検査しているのでそれなりに時間がかかります。
年月別にディレクトリを分けているような人は対象ディレクトリを狭めるなど工夫の余地があると思います。
改造のネタにでもしてください。</p>

<h4>使い方</h4>

<p>以下を.emacs等に追加してください。</p>

<pre><code>;; キーバインドを追加する
(global-set-key "\C-c,r" 'howm-open-most-recent-file)

;; ======================================================================
;; howm-open-most-recent-file
;; 一番新しいメモファイルを呼び出す関数
;; (require 'howm-mode)の記述の後に書くか、hookとかで引っかけてください。

(defun howm-open-most-recent-file ()
  (interactive)
  (let ((recent-file (my-get-most-recent-file howm-directory)))
    (if recent-file
        (progn
          (find-file recent-file)
          (message "howm's most recent file"))
      (message "can't find file"))))

;; ======================================================================
;; my-get-most-recent-file
;; あるディレクトリから更新時刻が最も新しいファイルを見つける(無い場合はnil)

(defun my-get-most-recent-file (dir)
  (if (not (file-directory-p dir))
      (error "can't find dir %s !" dir)
    (let ((files (mapcar '(lambda (file)
                            (cond ((and
                                    (file-regular-p file))
                                   file)
                                  ((and (file-directory-p file)
                                        (not (string-match "/\\.$" file))
                                        (not (string-match "/\\.\\.$" file)))
                                   (my-get-most-recent-file file))
                                  (t nil)))
                         (directory-files dir t))))
      (my-get-most-recent-file-from-list files))))

(defun my-get-most-recent-file-from-list (files)
  (let ((most-recent-file nil)
        (reserved-times '(0 0))
        (compare-results nil))
    (while files
      (setq file (car files))
      (if file
          (if most-recent-file
              (progn
                (setq compare-results (my-get-most-recent-file-compare reserved-times file))
                (if compare-results
                    (progn
                      (setq reserved-times compare-results)
                      (setq most-recent-file file))))
            (progn
              (setq most-recent-file file)
              (setq reserved-times (my-get-most-recent-file-compare reserved-times file)))))
      (setq files (cdr files)))
    most-recent-file))

(defun my-get-most-recent-file-compare (reserved-times file)
  (let ((file-times (car (cddddr (cdr (file-attributes file))))))
    (cond ((&gt; (car file-times) (car reserved-times))
           file-times)
          ((equal (car reserved-times) (car file-times))
           (cond ((&gt; (car (cdr file-times)) (car (cdr reserved-times)))
                  file-times)
                 (t nil)))
          (t nil))))
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/139/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EmacsLispのファイル名を自分自身で取得</title>
		<link>http://blog.2310.net/archives/94</link>
		<comments>http://blog.2310.net/archives/94#comments</comments>
		<pubDate>Sat, 16 Aug 2008 09:01:00 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=94</guid>
		<description><![CDATA[C言語のコンパイラだと &#95;&#95;FILE&#95;&#95; とかでコンパイルされたファイル自身の
名前を取得することができますが、Emacs Lispで同様のことをするためにはど
うすれば良いのでしょうか。ハマりました。

マニュアルとかで探したものの該当する関数ないしは変数がいつまでたっても見
つかりませんでした。仕方が無いので丁度コンパイル用に準備していたMeadowのソースコードを直接探しました。

ビルトイン(built-in)されている関数はC言語ソースコードでDEFUNマクロが用
いられ、変数の場合はDEFVAR〜というマクロが用いられているようだ、という
ことが分かりました。

ソースコード全体をDEFUNとかDEFVARとかをキーワードにgrepした結果、lread.cファイル内で用いら
れている&#8217;load-file-name&#8217;がそれに該当するらしいです。上のマニュアルには
記載されていなそうです。

-- /home/hoge/hoge.elに記載
  (setq this-file-name load-file-name)
  --&#62; this-file-nameには'/home/hoge/hoge.el'が代入される


このようにして自分自身のファイル名を返します。
&#8216; file-name-directory&#8217;とかでLispを実行しているディレクトリを取得することができそうです。
]]></description>
			<content:encoded><![CDATA[<p>C言語のコンパイラだと &#95;&#95;FILE&#95;&#95; とかでコンパイルされたファイル自身の
名前を取得することができますが、Emacs Lispで同様のことをするためにはど
うすれば良いのでしょうか。ハマりました。<span id="more-94"></span></p>

<p><a href="http://www.gnu.org/software/emacs/elisp-manual/" title="GNU Emacs Lisp Reference Manual">マニュアル</a>とかで探したものの該当する関数ないしは変数がいつまでたっても見
つかりませんでした。仕方が無いので丁度コンパイル用に準備していた<a href="http://www.meadowy.org/meadow/wiki/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89" title="Meadow ダウンロードページ">Meadowのソースコード</a>を直接探しました。</p>

<p>ビルトイン(built-in)されている関数はC言語ソースコードでDEFUNマクロが用
いられ、変数の場合はDEFVAR〜というマクロが用いられているようだ、という
ことが分かりました。</p>

<p>ソースコード全体をDEFUNとかDEFVARとかをキーワードにgrepした結果、<a href="http://svn.meadowy.org/Meadow/trunk/src/lread.c" title="lread.cの内容(Meadowのソースコードより)">lread.c</a>ファイル内で用いら
れている&#8217;load-file-name&#8217;がそれに該当するらしいです。上のマニュアルには
記載されていなそうです。</p>

<pre><code>-- /home/hoge/hoge.elに記載
  (setq this-file-name load-file-name)
  --&gt; this-file-nameには'/home/hoge/hoge.el'が代入される
</code></pre>

<p>このようにして自分自身のファイル名を返します。
&#8216; file-name-directory&#8217;とかでLispを実行しているディレクトリを取得することができそうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/94/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>twit.elの設定</title>
		<link>http://blog.2310.net/archives/89</link>
		<comments>http://blog.2310.net/archives/89#comments</comments>
		<pubDate>Sat, 16 Aug 2008 08:56:46 +0000</pubDate>
		<dc:creator>2310</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://k2310.s332.xrea.com/blog.2310.net/?p=89</guid>
		<description><![CDATA[Twitterをはじめてみました。それに伴い「ひとりブログ」さんのtwit.el variantを導入しました。感謝です。キーマップの簡単な設定メモです。



こんなかんじです。

(load "twit")
(twit-mode t)
(eval-after-load "twit"
  '(progn
     (setq twit-mode-map (easy-mmode-define-keymap
                          '(("C-cC-tw" . twit-post)
              [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/">Twitter</a>をはじめてみました。それに伴い<a href="http://moyashi.air-nifty.com/hitori/" title="ひとりぶろぐ">「ひとりブログ」</a>さんの<a href="http://moyashi.air-nifty.com/hitori/2007/11/emacsemacstwitt_c1a3.html" title="twit.el variant">twit.el variant</a>を導入しました。感謝です。キーマップの簡単な設定メモです。</p>

<p><span id="more-89"></span></p>

<p>こんなかんじです。</p>

<pre><code>(load "twit")
(twit-mode t)
(eval-after-load "twit"
  '(progn
     (setq twit-mode-map (easy-mmode-define-keymap
                          '(("C-cC-tw" . twit-post)
                            ("C-cC-tf" . twit-list-friends)
                            ("C-cC-tF" . twit-list-followers)
                            ("C-cC-ts" . twit-show-recent-tweets))))))
</code></pre>

<p>間違えて押してしまいそうで不安だったのでtwit-post-regionとtwit-post-bufferをできないようにしたキーマップを再設定しています。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.2310.net/archives/89/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
