<?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>Hexe19 &#187; elisp</title>
	<atom:link href="http://hexe19.net/tag/elisp/feed/" rel="self" type="application/rss+xml" />
	<link>http://hexe19.net</link>
	<description>*scratch*</description>
	<lastBuildDate>Sat, 16 May 2009 03:54:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>emacs : elscreen + iswitchb + mcomplete =&gt; Error in pre-command-hook</title>
		<link>http://hexe19.net/2008/05/11/46/emacs-elscreen-iswitchb-mcomplete-error-in-pre-command-hook/</link>
		<comments>http://hexe19.net/2008/05/11/46/emacs-elscreen-iswitchb-mcomplete-error-in-pre-command-hook/#comments</comments>
		<pubDate>Sat, 10 May 2008 16:09:54 +0000</pubDate>
		<dc:creator>you</dc:creator>
				<category><![CDATA[Emacs]]></category>
		<category><![CDATA[elisp]]></category>

		<guid isPermaLink="false">http://hexe19.net/?p=46</guid>
		<description><![CDATA[emacs(Meadow 3.00-dev) の elscreen と iswitchb と mcomplete が便利でよかったんだけど、いつの頃からか、
C-z b(elscreen-find-and-goto-by-buffer)  をしたときに、ミニバッファが↓の様になって、うまくいかない事件が発生。
[No match] [No match] [No match] [No match] [No match] ...
調べてみると、*Message* バッファに次のエラーが。（数値の部分はその時々で変わる）
Error in pre-command-hook: (args-out-of-range 41 63)
ウチちの環境でこのエラーを再現する方法：

emacs を起動。 (elscreen, iswitchb, mcomplete が使える状態)
C-z b *Message* と入力しようとする
[No match] [No match] &#8230; と出て、全くバッファ名にマッチしなくなる
*Message* バッファに Error in pre-command-hook: (args-out-of-range 41 63) が出てる
*Message* [No match] [No match] [No match] [...]]]></description>
			<content:encoded><![CDATA[<p>emacs(Meadow 3.00-dev) の elscreen と iswitchb と mcomplete が便利でよかったんだけど、いつの頃からか、<br />
<strong>C-z b</strong>(elscreen-find-and-goto-by-buffer)  をしたときに、ミニバッファが↓の様になって、うまくいかない事件が発生。<br />
<code>[No match] [No match] [No match] [No match] [No match] ...</code></p>
<p>調べてみると、*Message* バッファに次のエラーが。（数値の部分はその時々で変わる）<br />
<code>Error in pre-command-hook: (args-out-of-range 41 63)</code></p>
<p>ウチちの環境でこのエラーを再現する方法：</p>
<ol>
<li>emacs を起動。 (elscreen, iswitchb, mcomplete が使える状態)</li>
<li><strong><strong>C-z b</strong> *Message*</strong> と入力しようとする</li>
<li><strong>[No match] [No match] &#8230; </strong>と出て、全くバッファ名にマッチしなくなる</li>
<li>*Message* バッファに <strong>Error in pre-command-hook: (args-out-of-range 41 63)</strong> が出てる</li>
<li><strong>*Message* [No match] [No match] [No match] [No match]</strong> とかいう名前のバッファが新規作成される</li>
</ol>
<p>ちなみに、 C-x b などでバッファを選ぶと問題ない。 C-z b の時だけ。</p>
<p><strong>原因究明：</strong><br />
pre-command-hook とか言われても、どの hook がダメなのかさっぱりだったので、いろいろ追っかけて、elscreen と mcomplete の連携がうまくいってないことが判明。<br />
ずっと、iswitchb が原因と思って iswitchb.el をデバッグしてたのに・・・。</p>
<p>mcomplete.el の 1093 行目付近の以下の箇所を修正。<br />
<strong>修正前：</strong></p>
<pre class="code">
(mapcar #'(lambda (f) (put f 'mcomplete-mode '(:mode off)))
        '(iswitchb-buffer iswitchb-buffer-other-window
          iswitchb-display-buffer iswitchb-buffer-other-frame

          ido-find-file ido-find-alternate-file ido-write-file
          ido-insert-file ido-switch-buffer ido-insert-buffer
          ido-kill-buffer ido-find-file-other-window
          ido-find-file-other-window ido-switch-buffer-other-window
          ido-display-buffer ido-find-file-other-frame
          ido-switch-buffer-other-frame))
</pre>
<p><strong>修正後：</strong></p>
<pre class="code">
(mapcar #'(lambda (f) (put f 'mcomplete-mode '(:mode off)))
        '(iswitchb-buffer iswitchb-buffer-other-window
          iswitchb-display-buffer iswitchb-buffer-other-frame

          ido-find-file ido-find-alternate-file ido-write-file
          ido-insert-file ido-switch-buffer ido-insert-buffer
          ido-kill-buffer ido-find-file-other-window
          ido-find-file-other-window ido-switch-buffer-other-window
          ido-display-buffer ido-find-file-other-frame
          ido-switch-buffer-other-frame

          elscreen-find-and-goto-by-buffer
          ))
</pre>
<p>どうやら、mcomplete は、 iswitchb とかと競合しないように気を遣っているようだけど、elscreen は眼中になかったらしい。</p>
]]></content:encoded>
			<wfw:commentRss>http://hexe19.net/2008/05/11/46/emacs-elscreen-iswitchb-mcomplete-error-in-pre-command-hook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
