<?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>「Emacs」タグの記事一覧 - 工夫と趣向と分別と。</title>
	<atom:link href="https://d.akinori.org/tag/emacs/feed/" rel="self" type="application/rss+xml" />
	<link>https://d.akinori.org/tag/emacs/</link>
	<description>おもしろく生きたいね</description>
	<lastBuildDate>Wed, 04 Dec 2013 10:12:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</title>
		<link>https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/</link>
					<comments>https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 23 Jul 2012 12:07:23 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2968</guid>

					<description><![CDATA[<p>git mergetoolに使えるツールとして、デフォルトで"emerge"というのが用意されており、Emacs使いはこれを使えばEmergeでマージが行えるわけだが、難点もある。ひとつは、新たなEmacsインスタンスを… <span class="read-more"><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2007/10/23/20071023p02/" rel="bookmark" title="vc-svk.elが遅い">vc-svk.elが遅い</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p><code>git mergetool</code>に使えるツールとして、デフォルトで<code>"emerge"</code>というのが用意されており、Emacs使いはこれを使えばEmergeでマージが行えるわけだが、難点もある。ひとつは、新たなEmacsインスタンスを起動してしまうということだ。起動に無駄な時間が掛かるし、マージにあたって既存のセッションで開いているファイルをその場で参照できないのは不便だろう。もっとも、これは<code>emacsclient</code>を使うようにして、Emergeの呼び出し方を少し直せば済む。もうひとつは、EmergeではなくよりモダンなEdiffを使いたいということだが、これは思ったほど簡単ではないのでわざわざこうして記事を書くことになった。</p>
<p>というのも、Emergeには<code>emerge-files-with-ancestor-command</code>という便利なものがあり、「マージが終わったらマージ結果を保存して即終了」ということが一発で出来てしまうのだが、Ediffの方にはそういうものがない。こいつはマージを終了してもろくに片付けもせず、全部ほったらかしという行儀の悪さだ。<br />
そういうわけで、まずはEdiffの<code>ediff-merge-{files,buffers}</code>が終わったら起動前のウィンドウ設定を復元するようにしてみる。これは比較的簡単。<em>[2013-01-23改訂:フックにappendフラグを指定]</em></p><pre class="urvanov-syntax-highlighter-plain-tag">(eval-after-load "ediff"
  '(progn
     ; save and restore window configuration
     (defvar my-ediff-saved-window-configuration nil "Saved window configuration for ediff")
     (defun my-ediff-save-window-configuration ()
       (setq my-ediff-saved-window-configuration (current-window-configuration)))
     (add-hook 'ediff-before-setup-hook 'my-ediff-save-window-configuration)
     (defun my-ediff-restore-window-configuration ()
       (set-window-configuration my-ediff-saved-window-configuration))
     (add-hook 'ediff-suspend-hook 'my-ediff-restore-window-configuration t)
     (add-hook 'ediff-quit-hook 'my-ediff-restore-window-configuration t)))</pre><p>次に、Ediffが新たに開いたファイルのバッファをマージ終了時に自動的に閉じる、および、マージ終了時に自動的にセーブしつつEmacsフレームを閉じる「バッチ版<code>ediff-merge-files-with-ancestor</code>」を加える。<em>[2013-01-23改訂:ediff-filesに影響を与えるなどおかしかったので大幅修正; 続きは<a href="https://github.com/knu/emacsc">GitHub</a>で]</em></p><pre class="urvanov-syntax-highlighter-plain-tag">(eval-after-load "ediff"
  '(progn
     ; batch mode (for use from git mergetool etc.)
     (ediff-defvar-local my-ediff-batch-mode-p nil "True if in batch mode")
     (ediff-defvar-local my-ediff-close-on-quit nil "True if the buffer should be closed on quit.")

     (defun my-ediff-batch-mode (&amp;optional mode)
       (ediff-with-current-buffer ediff-buffer-A
                                  (case mode
                                    (set
                                     (setq my-ediff-batch-mode-p t))
                                    (unset
                                     (prog1 my-ediff-batch-mode-p
                                       (setq my-ediff-batch-mode-p nil)))
                                    (t
                                     my-ediff-batch-mode-p))))

     (defadvice ediff-find-file (around
                                 mark-newly-opened-buffers
                                 (file-var buffer-name &amp;optional last-dir hooks-var)
                                 activate)
       (let* ((file (symbol-value file-var))
              (existing-p (and find-file-existing-other-name
                               (find-buffer-visiting file))))
         ad-do-it
         (or existing-p
             (ediff-with-current-buffer (symbol-value buffer-name)
                                        (setq my-ediff-close-on-quit t)))))

     (defun my-ediff-save-merge ()
       (if (my-ediff-batch-mode)
           (let ((file ediff-merge-store-file))
             (if file
                 (ediff-with-current-buffer ediff-buffer-C
                   (set-visited-file-name file t)
                   (save-buffer))))
         (ediff-maybe-save-and-delete-merge)))

     (remove-hook 'ediff-quit-merge-hook 'ediff-maybe-save-and-delete-merge)
     (add-hook 'ediff-quit-merge-hook 'my-ediff-save-merge)

     (defadvice ediff-cleanup-mess (around
                                    support-batch-mode
                                    ()
                                    activate)
       (let ((batch-p (my-ediff-batch-mode 'unset))
             (buffers (list ediff-buffer-A ediff-buffer-B ediff-ancestor-buffer))
             (buffer-C ediff-buffer-C))
         ad-do-it
         (dolist (buffer buffers)
           (ediff-with-current-buffer buffer
             (and my-ediff-close-on-quit (kill-buffer))))
         (when batch-p
           (ediff-kill-buffer-carefully buffer-C)
           (delete-frame))))

     (defun ediff-merge-files-with-ancestor-in-batch-mode
       (file-A file-B file-ancestor &amp;optional startup-hooks merge-buffer-file)
       (ediff-merge-files-with-ancestor
        file-A file-B file-ancestor
        (cons (function (lambda () (my-ediff-batch-mode 'set))) startup-hooks)
        merge-buffer-file))))

(autoload 'ediff-merge-files-with-ancestor-in-batch-mode "ediff")</pre><p>これで、<code>~/.gitconfig</code>にこんな風に書けば<code>git mergetool</code>で瞬時にEdiffが起動し、マージが済んだら<kbd>q</kbd>, <kbd>y</kbd>で即コマンドラインに帰ってくる。既存Emacsセッションにゴミバッファも残らない。</p><pre class="urvanov-syntax-highlighter-plain-tag">[merge]
	tool = ediff
[mergetool "ediff"]
	cmd = emacsclient -a \"\" -t -e \"(ediff-merge-files-with-ancestor-in-batch-mode \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\")\"</pre><p>あとは、たとえばラッパースクリプトを用意して、「<code>&lt;&lt;&lt;&lt;&lt;&lt;&lt;</code>」などの行が残っていたらマージ失敗とするとか、好きに改良すると良い。</p>
<h3>参考記事</h3>
<ul>
<li><a href="http://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool">emacs &#8211; Using ediff as git mergetool &#8211; Stack Overflow</a></li>
</ul>
<p>The post <a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2007/10/23/20071023p02/" rel="bookmark" title="vc-svk.elが遅い">vc-svk.elが遅い</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Emacsの範囲選択UIを大幅拡張してくれるcua-mode</title>
		<link>https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/</link>
					<comments>https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Wed, 13 Jun 2012 18:47:38 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2934</guid>

					<description><![CDATA[<p>Emacsのcua-modeを使っていない、あるいはそもそも知らない人が結構いるようなので紹介しておく。cua-modeは、Emacsの範囲選択にまつわるUIを改善し、Windows、Mac、GTK+/Qtなどにおけるテ… <span class="read-more"><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>Emacsの<code>cua-mode</code>を使っていない、あるいはそもそも知らない人が結構いるようなので紹介しておく。<code>cua-mode</code>は、Emacsの範囲選択にまつわるUIを改善し、Windows、Mac、GTK+/Qtなどにおけるテキスト編集操作との互換性も高めてくれるグローバルマイナーモードで、以下のような機能を提供する。</p>
<ul>
<li><code>Shift</code>+矢印による範囲選択</li>
<li>範囲選択状態で<code>BS</code>/<code>DEL</code>を押すと選択範囲をまるごと消去</li>
<li>範囲選択状態でキー入力やペーストを行うと選択範囲まるごと上書きされる</li>
<li>視覚化された矩形範囲選択モード（<code>C-w</code>, <code>M-w</code>, <code>C-y</code>など通常の範囲選択と同様の操作性）</li>
<li>矩形範囲選択モードでの複数行同時操作（文字入力、文字削除、連番挿入等）</li>
<li>Windows互換の<code>Ctrl</code>+<code>Z</code>,<code>X</code>,<code>C</code>,<code>V</code>（※）</li>
</ul>
<p>Emacs 22.1.1から標準添付されているので、試したければ何も設定せずに<code>M-x cua-mode</code>で使える。上記のうち最後の機能は率直に言って邪魔なのだが、これはWindowsから来た人をターゲットに据えた本モードの目玉機能のようで、デフォルトでオンになっている。ために、Emacsに慣れた人ほど、少し触ったところで戸惑いを感じて敬遠しがちなのが残念なところ。<br />
この<code>cua-mode</code>を起動時から有効化するには、<code>M-x customize-group RET cua RET</code>としてcustomize画面に入り、&#8221;Cua Mode&#8221;を&#8221;on&#8221;にする。私のように上記※が不要だと思う人は&#8221;Cua Enable Cua Keys&#8221;を&#8221;Disabled&#8221;にして、&#8221;Set for current session&#8221;を押す。これで<code>cua-mode</code>が（一時的に）有効な状態になるので、他のバッファで挙動を確認してみよう。満足したら、customizeバッファに戻って&#8221;Save for future sessions&#8221;を押せば恒久保存される。<br />
さて、<code>Shift</code>+矢印による範囲選択を試してみただろうか。GUI上のEmacsで動くのは当然として、xterm互換ターミナル上のEmacsでも動くのには軽い感動を覚えたかもしれない。ただし、Emacsのバグで、<code>S-left</code>, <code>S-right</code>, <code>S-down</code>は動くのになぜか<code>S-up</code>だけは期待通り動作せず、<code>select</code>キーとして認識されてしまう。これは以下のようなコードで期待通り動くようになる。(ついでに<code>end</code>キーがおかしいのも直している)</p><pre class="urvanov-syntax-highlighter-plain-tag">(defadvice terminal-init-xterm (after fix-some-keys activate)
  (define-key input-decode-map "\e[1;2A" [S-up])
  (define-key input-decode-map "\e[4~" [end]))</pre><p>ところで、矩形選択モードのトグルキーはデフォルトでは<code>C-RET</code>だが、私は<code>cua-toggle-global-mark</code>の方に割り当てられている<code>C-S-SPC</code>に変更している。これは、先のカスタマイズ画面で&#8221;Cua Rectangle Mark Key&#8221;を<code>C-S-SPC</code>に設定（入力欄で<code>C-q</code>を押してから設定したいキーコンボを押すのが楽）して保存すれば済むはずだが、cuaの初期化フローがおかしいため、以下のコードも必要のようだ。</p><pre class="urvanov-syntax-highlighter-plain-tag">(define-key cua-global-keymap cua-rectangle-mark-key 'cua-set-rectangle-mark)</pre><p><code>cua-toggle-global-mark</code>の方は、カスタマイズ変数がないので以下のようにコードを書いて<code>C-&gt;</code>に設定している。</p><pre class="urvanov-syntax-highlighter-plain-tag">(define-key cua-global-keymap (kbd "C-&gt;") 'cua-toggle-global-mark)</pre><p></p>
<p>なお、<code>C-RET</code>, <code>C-S-SPC</code>, <code>C-&gt;</code>などの特殊キーコンボをターミナル上で使うためにはターミナルエミュレータの設定が必要なので、<a title="ターミナルのEmacsでも特殊キーコンボ" href="http://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/">こちらの記事</a>を参考にされたい。<br />
というわけでおしまい、でもいいのだけれど、矩形選択モードで単語単位の移動ができないのはちょっと不便だと思う私はこんな設定を施している。</p><pre class="urvanov-syntax-highlighter-plain-tag">(eval-after-load "cua-rect"
  '(progn
     (defun cua-resize-rectangle-move-bol ()
       "Resize rectangle to the BOL."
       (interactive)
       (while (not (bolp)) (backward-char)))
     (defun cua-resize-rectangle-move-eol ()
       "Resize rectangle to the EOL."
       (interactive)
       (while (not (eolp)) (forward-char)))
     (defun cua-resize-rectangle-right-word (n)
       "Resize rectangle to the right word."
       (interactive "p")
       (if (&lt; n 0)
         (let ((pos (save-excursion (backward-word (- n)) (point))))
           (while (&lt; pos (point)) (backward-char)))
         (let ((pos (save-excursion (forward-word n) (point))))
           (while (&lt; (point) pos) (forward-char)))))
      (defun cua-resize-rectangle-left-word (n)
        "Resize rectangle to the left word."
        (interactive "p")
        (cua-resize-rectangle-right-word (- n)))
      (defadvice cua--init-rectangles
        (after custom-key-bindings () activate)
        (define-key cua--rectangle-keymap [remap move-end-of-line]         'cua-resize-rectangle-move-eol)
        (define-key cua--rectangle-keymap [remap move-beginning-of-line]   'cua-resize-rectangle-move-bol)
        (define-key cua--rectangle-keymap [remap forward-word]             'cua-resize-rectangle-right-word)
        (define-key cua--rectangle-keymap [remap backward-word]            'cua-resize-rectangle-left-word)
        (cua--rect-M/H-key ?B 'cua-blank-rectangle)
        (cua--rect-M/H-key ?b 'cua-resize-rectangle-left-word)
        (cua--rect-M/H-key ?F 'cua-fill-char-rectangle)
        (cua--rect-M/H-key ?f 'cua-resize-rectangle-right-word))))</pre><p>癖のあるモジュールだけど、がんばって飼い慣らして使いましょう。</p>
<p>The post <a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Emacs: kill-region-or-backward-kill-word</title>
		<link>https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/</link>
					<comments>https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Wed, 25 Apr 2012 05:53:15 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2880</guid>

					<description><![CDATA[<p>以前、kill-region-or-backward-kill-wordというのを紹介したが、たとえばcua-modeではkill-regionに割り当てられたキーに上位互換のコマンド（cua-cut-region等）を… <span class="read-more"><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/">Emacs: kill-region-or-backward-kill-word</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>以前、<code><a href="http://d.akinori.org/2007/07/03/20070703p01/">kill-region-or-backward-kill-word</a></code>というのを紹介したが、たとえば<code>cua-mode</code>では<code>kill-region</code>に割り当てられたキーに上位互換のコマンド（<code>cua-cut-region</code>等）を割り当て直す、といったことをしているので、割り当ては変更せずに<code>kill-region</code>の挙動を変えてしまう方が都合がいい。<br />
というわけで、adviceを使って書き換えるとこうなる。</p><pre class="urvanov-syntax-highlighter-plain-tag">(defadvice kill-region
  (around kill-region-or-backward-kill-word (beg end) activate)
  (if (and (called-interactively-p 'any) (not mark-active))
      (backward-kill-word (prefix-numeric-value current-prefix-arg))
    ad-do-it))</pre><p>おまけで、選択モードでないときに<kbd>M-w</kbd>が現在行をコピーするようにするのがこれ。（プレフィックスにも対応）</p><pre class="urvanov-syntax-highlighter-plain-tag">(defadvice kill-ring-save
  (around kill-ring-save-or-copy-line-as-kill (beg end) activate)
  (interactive (list (point) (mark)))
  (if (and (called-interactively-p 'any) (not mark-active))
      (copy-region-as-kill (point-at-bol 1) (point-at-eol 2))
    ad-do-it))</pre><p>Emacsでイラつくことのひとつが行単位のコピー（viなら<kbd>Y</kbd>）の面倒さだが、こういう工夫で乗り越えよう。</p>
<p>The post <a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/">Emacs: kill-region-or-backward-kill-word</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2007/07/03/20070703p01/" rel="bookmark" title="Making Ctrl+W a tad smarter">Making Ctrl+W a tad smarter</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ターミナルのEmacsでも特殊キーコンボ</title>
		<link>https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/</link>
					<comments>https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Sun, 01 Jan 2012 16:11:56 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2844</guid>

					<description><![CDATA[<p>XやWindowsやCocoa上のEmacsでは、Control+ReturnだろうがControl+,だろうがCtrl+Shift+Spaceだろうが、好きな機能を割り当てることができる。これらのGUI環境ではアプリケ… <span class="read-more"><a href="https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/">ターミナルのEmacsでも特殊キーコンボ</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>XやWindowsやCocoa上のEmacsでは、<code>Control+Return</code>だろうが<code>Control+,</code>だろうが<code>Ctrl+Shift+Space</code>だろうが、好きな機能を割り当てることができる。これらのGUI環境ではアプリケーションが検出できる修飾キーの組合せに制約がほとんどないためだ。</p>
<p>ところが、ターミナル（エミュレータ）上では原則として一つのキー入力は一つのASCIIコードとしてアプリケーションに渡されるため、上記のように対応するASCIIコードのないキーの組合せはEmacsなどでそれとして認識することができない。<code>Meta+X</code>を<code>Escape X</code>の二ストロークに置換する仕掛けがせいぜいだ。</p>
<p>…と思いきや、実はEmacsにはいわゆるスティッキー修飾キーに相当する<code>event-apply-*-modifier</code>というギミック的関数が用意されており、たとえば<code>C-x @ c</code>（<code>event-apply-control-modifier</code>）と押してから<code>RET</code>を押すと、<code>C-RET</code>を押したのと同じことになる。つまり、たとえばiTermであればPreferences→Keys→Global Shortcut Keysで+を押し、</p>
<table align="center">
<tbody>
<tr>
<th align="right">Shortcut Keyboard:</th>
<td>^<img src="https://s.w.org/images/core/emoji/15.1.0/72x72/21a9.png" alt="↩" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td>
</tr>
<tr>
<th align="right">Action:</th>
<td>Send Hex Code</td>
</tr>
<tr>
<th align="right"></th>
<td>18 40 63 0d</td>
</tr>
</tbody>
</table>
<p>のように設定すれば、Emacsで<code>C-RET</code>が効くようになる。もちろん、「18 40 63 0d」とは<code>C-x @ c RET</code>をASCIIコードに置き換えたものだ。<code>C-,</code>なども同様に設定すればいい。</p>
<p>ところが、<code>C-S-SPC</code>のような組合せはすんなりとはいかない。<code>C</code>と<code>S-SPC</code>に分解してみても、依然として<code>S-SPC</code>にはASCIIコードがないのだ。<code>C</code>と<code>S</code>と<code>SPC</code>に分解しようと思っても、<code>event-apply-*-modifier</code>は直後の一ストロークに作用するので、<code>C-x @ c C-x @ s SPC</code>の<code>C-x @ c</code>の効用は直後の<code>C-x</code>に食われ、そこで連鎖が終了してしまう。ならばと<code>S</code>と<code>C-SPC</code>に分解してみても、<code>C-SPC</code>はASCIIコードでは<code>00</code>すなわち<code>C-@</code>であるため、<code>C-S-@</code>という組合せになって<code>C-S-SPC</code>とは認識されない。（ところで<code>input-decode-map</code>や<code>key-translation-map</code>を使う別解もあるが、ここでは詳しくは触れない）</p>
<p>解決策としては、「スティッキーControl+Shiftキー」を自作すれば良い。つまり、こんな関数を作り:</p><pre class="urvanov-syntax-highlighter-plain-tag">(defun event-apply-control-shift-modifier (ignore-prompt)
  "\\Add the Control+Shift modifier to the following event.
For example, type \\[event-apply-control-shift-modifier] SPC to enter Control-Shift-SPC."
  (vector (event-apply-modifier
           (event-apply-modifier (read-event) 'shift 25 "S-")
           'control 26 "C-")))
(define-key function-key-map (kbd "C-x @ C") 'event-apply-control-shift-modifier)</pre><p>次のような設定を加える。</p>
<table align="center">
<tbody>
<tr>
<th align="right">Shortcut Keyboard:</th>
<td>^⇧Space</td>
</tr>
<tr>
<th align="right">Action:</th>
<td>Send Hex Code</td>
</tr>
<tr>
<th align="right"></th>
<td>18 40 43 20</td>
</tr>
</tbody>
</table>
<p>同様に、たくさん使いたい<code>query-replace-regexp</code>（正規表現による文字列置換）はEmacsの標準では<code>C-M-%</code>などという<strong>ターミナル住民にとっては鬼畜</strong>なキーに割り当てられているわけだが、これも次のような関数を作り:</p><pre class="urvanov-syntax-highlighter-plain-tag">(defun event-apply-meta-control-modifier (ignore-prompt)
  "\\Add the Meta-Control modifier to the following event.
For example, type \\[event-apply-meta-control-modifier] % to enter Meta-Control-%."
  (vector (event-apply-modifier
           (event-apply-modifier (read-event) 'control 26 "C-")
           'meta 27 "M-")))
(define-key function-key-map (kbd "C-x @ M") 'event-apply-meta-control-modifier)</pre><p>下のようなキー設定を加えれば良い。</p>
<table align="center">
<tbody>
<tr>
<th align="right">Shortcut Keyboard:</th>
<td>^⌥⇧%</td>
</tr>
<tr>
<th align="right">Action:</th>
<td>Send Hex Code</td>
</tr>
<tr>
<th align="right"></th>
<td>18 40 4d 25</td>
</tr>
</tbody>
</table>
<p>世の中、カビくさい道具であってもやりようはあるもんです。どんなところでも、妥協せずに使えるものを何でも使って自らを足らしむる。それがハック。</p>
<p>追記：zshもマルチストロークのキーバインディングに対応しているので、たとえば上記のように設定した<code>C-RET</code>に機能を割り当てるには</p><pre class="urvanov-syntax-highlighter-plain-tag">bindkey '^X@c^M' accept-line</pre><p></p>
<p lang="zsh">でOK。（上記は<code>C-RET</code>を<code>RET</code>と同じにする設定）</p>
<p>The post <a href="https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/">ターミナルのEmacsでも特殊キーコンボ</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2012/01/02/%e3%82%bf%e3%83%bc%e3%83%9f%e3%83%8a%e3%83%ab%e3%81%aeemacs%e3%81%a7%e3%82%82%e7%89%b9%e6%ae%8a%e3%82%ad%e3%83%bc%e3%82%b3%e3%83%b3%e3%83%9c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>EmacsのC-u C-uを8回繰り返しにする</title>
		<link>https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/</link>
					<comments>https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Fri, 05 Mar 2010 08:38:38 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://d.akinori.org/?p=2524</guid>

					<description><![CDATA[<p>Emacsでカーソル移動、削除、マクロ実行などを繰り返したいときに手軽なのがC-u。C-uの後に数字を入力すればその回数になるが、単にC-uだと4回、C-u C-uと2度押すと16回、3度押すと64回、という具合に、n度… <span class="read-more"><a href="https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/">EmacsのC-u C-uを8回繰り返しにする</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>Emacsでカーソル移動、削除、マクロ実行などを繰り返したいときに手軽なのが<code>C-u</code>。<code>C-u</code>の後に数字を入力すればその回数になるが、単に<code>C-u</code>だと4回、<code>C-u C-u</code>と2度押すと16回、3度押すと64回、という具合に、n度押すと4<sup>n</sup>回繰り返される。数字キーに手を伸ばさなくていいのですばやく操作できる。<br />
しかし。<strong>4の次が16って飛びすぎじゃね？</strong>4回というのは「目の届く」「小さい範囲の」繰り返し回数として適度だが、16回となるといきなり「だいたいこのあたりぜんぶ」「もっとたくさん」といった鷹揚なニュアンスである。昔から「いち、にい、たくさん」と言うではないか。ナベアツもイチ、ニ、サン！で初めてアホになる。<br />
というわけで、4, <em>8, </em>16, 64, 256, &#8230;のように8を挟むようにしてみた。</p><pre class="urvanov-syntax-highlighter-plain-tag">(defadvice universal-argument-more
  (before stop-by-eight-before-sixteen (arg) activate)
  "Stop by eight before sixteen."
  (and (consp arg)
       (let ((num (car arg)))
         (if (> 16 num) (ad-set-arg 0 `(,(/ num 2)))))))</pre><p>使ってみると、これがけっこうしっくり来るんだな。<code>C-u C-u</code>だと多すぎだから<code>C-u</code>+コマンドを2回、というシーンはけっこうあるので、4から16と急加速する前に8を。スペースを8個削るとか、8行分コピーするとか、なかなか手頃なサイズです。<br />
このなかなか表面化しないフラストレーションを言葉にしてくれた同僚のK君に感謝。<br />
2013-12-04追記: <code>(consp arg)</code>条件を加えないと<code>C-u 1 0 C-u 1</code>で1を10個入力できなくなるので修正。</p>
<p>The post <a href="https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/">EmacsのC-u C-uを8回繰り返しにする</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2010/03/05/emacs%e3%81%aec-u-c-u%e3%82%928%e5%9b%9e%e7%b9%b0%e3%82%8a%e8%bf%94%e3%81%97%e3%81%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>vc-svk.elが遅い</title>
		<link>https://d.akinori.org/2007/10/23/20071023p02/</link>
					<comments>https://d.akinori.org/2007/10/23/20071023p02/#comments</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 22 Oct 2007 15:01:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2007/10/23/20071023p02/</guid>

					<description><![CDATA[<p>　vc-svk.elはEmacs VC用のSVKドライバだが、こいつをロードするとどんなファイルを開くときでも待たされる。今まで必要に応じてSVK専用のEmacsセッションを上げたりしていたが、業を煮やして中を見ることに… <span class="read-more"><a href="https://d.akinori.org/2007/10/23/20071023p02/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2007/10/23/20071023p02/">vc-svk.elが遅い</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　<a href="http://code.bestpractical.com/svk/trunk/utils/vc-svk.el">vc-svk.el</a>はEmacs VC用のSVKドライバだが、こいつをロードするとどんなファイルを開くときでも待たされる。今まで必要に応じてSVK専用のEmacsセッションを上げたりしていたが、業を煮やして中を見ることにした。(リビジョンは<a href="http://svn.bestpractical.com/cgi-bin/index.cgi/svk/revision?rev=2299">2299</a>)</p>
<p>　どうも、あるファイルがSVKの管理下にあるかをチェックする部分がおかしい。ファイルのパスをチェックアウトディレクトリ一覧と照合するのだが、その一覧のキャッシュが利いておらず、毎回<code>svk checkout --list</code>を実行している。</p>
<p>　こいつは<code>~/.svk/config</code>のタイムスタンプを頼りにしているのだが、どうやら、SVKはいつごろからか<code>svk checkout --list</code>を実行しただけで同ファイルが更新されるようになったらしい。SVKの方を直したい気もするが、とりあえずコマンド実行後のタイムスタンプを覚えるようにした。</p>
<p>　ところがやっぱりキャッシュが利かない。なんでだろうと思ったら、キャッシュを使う条件が「現在のタイムスタンプ」＜「覚えているタイムスタンプ」になっている。ウオォォォム！</p>
<p>　ということで修正はこう。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">Index: vc-svk.el
===================================================================
--- vc-svk.el	(revision 2557)
+++ vc-svk.el	(working copy)
@@ -768,17 +768,20 @@
   (let ((config &quot;~/.svk/config&quot;)
         mtime)
     (when (file-readable-p config)
-      (setq mtime (nth 5 (file-attributes &quot;~/.svk/config&quot;)))
+      (setq mtime (nth 5 (file-attributes config)))
       (unless (and vc-svk-co-paths           ; has not it been loaded?
-                   (vc-svk-time-less-p mtime ; is it unmodified since?
-                                       (car vc-svk-co-paths)))
+                   (not                      ; is it unmodified since?
+                    (vc-svk-time-less-p (car vc-svk-co-paths) mtime)))
         ;; (re)load
-        (setq vc-svk-co-paths (list mtime))
         (with-temp-buffer
           (vc-svk-command t 0 nil &quot;checkout&quot; &quot;--list&quot;)
+          ;; `svk checkout --list' modifies ~/.svk/config somehow, so
+          ;; you have to stat it again.
+          (setq mtime (nth 5 (file-attributes config)))
+          (setq vc-svk-co-paths (list mtime))
           (goto-char (point-min))
           (when (search-forward &quot;==========\n&quot; nil t)
-            (while (re-search-forward &quot;^ +\\(.+\\) *\t\\(.+\\)$&quot; nil t)
+            (while (re-search-forward &quot;^ +\\(.+?\\) *\t\\(.+\\)$&quot; nil t)
               (add-to-list 'vc-svk-co-paths
                            (list (match-string-no-properties 2)
                                  (match-string-no-properties 1))))))</pre><p></p>
<p>　いまどきVCなんて誰も使ってないのかな。ファイルひとつだけ修正するときはPCL系より手軽でいいんだけど。</p>
<p>The post <a href="https://d.akinori.org/2007/10/23/20071023p02/">vc-svk.elが遅い</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2007/10/23/20071023p02/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Making Ctrl+W a tad smarter</title>
		<link>https://d.akinori.org/2007/07/03/20070703p01/</link>
					<comments>https://d.akinori.org/2007/07/03/20070703p01/#comments</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 02 Jul 2007 15:00:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[zsh]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2007/07/03/20070703p01/</guid>

					<description><![CDATA[<p>まつもとさんの日記にあった、Effective EmacsのItem3について。もしtransient-mark-modeを有効にしているなら、C-wはこうすればいいんじゃないかな。 [crayon-683b947666… <span class="read-more"><a href="https://d.akinori.org/2007/07/03/20070703p01/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2007/07/03/20070703p01/">Making Ctrl+W a tad smarter</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.rubyist.net/~matz/20070622.html#p05">まつもとさんの日記</a>にあった、<a href="http://steve.yegge.googlepages.com/effective-emacs#item3">Effective EmacsのItem3</a>について。もし<code>transient-mark-mode</code>を有効にしているなら、<code>C-w</code>はこうすればいいんじゃないかな。</p><pre class="urvanov-syntax-highlighter-plain-tag">(defun kill-region-or-backward-kill-word (&amp;optional arg)
  "Kill a region or a word backward."
  (interactive)
  (if mark-active
      (kill-region (mark) (point))
    (backward-kill-word (or arg 1))))
(global-set-key "\C-w" 'kill-region-or-backward-kill-word)</pre><p>zshで同じことをするならこう。</p><pre class="urvanov-syntax-highlighter-plain-tag">tcsh-backward-delete-word () {
	local WORDCHARS="${WORDCHARS:s#/#}"
	zle backward-delete-word
    }
    zle -N tcsh-backward-delete-word
    kill-region-or-tcsh-backward-delete-word () {
        if [ $MARK -eq 0 ]; then
            tcsh-backward-delete-word
        else
            zle kill-region
            MARK=0
        fi
    }
    zle -N kill-region-or-tcsh-backward-delete-word
    bindkey '^W' kill-region-or-tcsh-backward-delete-word</pre><p>zshには<code>transient-mark-mode</code>はないので、マーク位置がバッファの先頭だったらマークされていないと見なす。<br />
けっこう便利。<br />
※その後変数<code>REGION_ACTIVE</code>が導入されたので、今は以下でOK。（2013-10-21追記）</p><pre class="urvanov-syntax-highlighter-plain-tag">kill-region-or-tcsh-backward-delete-word () {
        if ((REGION_ACTIVE)); then
            zle kill-region
        else
            tcsh-backward-delete-word
        fi
    }</pre><p></p>
<p>The post <a href="https://d.akinori.org/2007/07/03/20070703p01/">Making Ctrl+W a tad smarter</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
<li><a href="https://d.akinori.org/2012/06/14/emacs%e3%81%ae%e7%af%84%e5%9b%b2%e9%81%b8%e6%8a%9eui%e3%82%92%e5%a4%a7%e5%b9%85%e6%8b%a1%e5%bc%b5%e3%81%97%e3%81%a6%e3%81%8f%e3%82%8c%e3%82%8bcua-mode/" rel="bookmark" title="Emacsの範囲選択UIを大幅拡張してくれるcua-mode">Emacsの範囲選択UIを大幅拡張してくれるcua-mode</a></li>
<li><a href="https://d.akinori.org/2004/12/25/20041225p02/" rel="bookmark" title="xyzzy / mcalc">xyzzy / mcalc</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2007/07/03/20070703p01/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>xyzzy / mcalc</title>
		<link>https://d.akinori.org/2004/12/25/20041225p02/</link>
					<comments>https://d.akinori.org/2004/12/25/20041225p02/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Fri, 24 Dec 2004 15:01:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<category><![CDATA[xyzzy]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2004/12/25/20041225p02/</guid>

					<description><![CDATA[<p>　先日のxyzzyの設定がさらに進み、完全に手になじんできた。Emacsとの互換性で言うと、以下も必要だった。特にヒストリの挙動はこうしないと使いづらいと思う。 [crayon-683b947666d6c88786903… <span class="read-more"><a href="https://d.akinori.org/2004/12/25/20041225p02/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2004/12/25/20041225p02/">xyzzy / mcalc</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　先日の<a href="/2004/11/30/20041130p02/">xyzzyの設定</a>がさらに進み、完全に手になじんできた。Emacsとの互換性で言うと、以下も必要だった。特にヒストリの挙動はこうしないと使いづらいと思う。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">; window stuff
(define-key ctl-x-map #\3 'split-window-vertically)
(define-key ctl-x-map '(#\5 #\f) 'find-file-other-window)
(define-key ctl-x-map '(#\5 #\2) 'new-pseudo-frame)
(define-key ctl-x-map '(#\5 #\0) 'delete-pseudo-frame)
(define-key ctl-x-map '(#\5 #\o) 'next-pseudo-frame)
(define-key ctl-x-map '(#\5 #\n) 'next-pseudo-frame)
(define-key ctl-x-map '(#\5 #\p) 'previous-pseudo-frame)

(defun kill-buffer-and-window ()
  (interactive)
  (and (kill-buffer (selected-buffer)) (delete-window)))
(define-key ctl-x-map '(#\4 #\0) 'kill-buffer-and-window)

; ミニバッファのヒストリの挙動
(define-key minibuffer-local-completion-map #\Up
	    'minibuffer-previous-line-or-history)
(define-key minibuffer-local-completion-map #\Down
	    'minibuffer-next-line-or-history)
(define-key minibuffer-local-completion-map #\C-p
	    'minibuffer-previous-line-or-history)
(define-key minibuffer-local-completion-map #\C-n
	    'minibuffer-next-line-or-history)
(define-key minibuffer-local-completion-map #\C-Up
	    'minibuffer-previous-line-or-search-history)
(define-key minibuffer-local-completion-map #\C-Down
	    'minibuffer-next-line-or-search-history)</pre><p></p>
<p>　そしてRPN電卓！Emacsにはmcalcというのがあるが、xyzzyにも移植されていたので、持ってきて設定を追加してみた。演算子を簡単に追加できるのがいいね。以下でクリップボードやキルリングとの間で数値を相互にコピペできる。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">; RPN calculator
(load-library &quot;mcalc&quot;)

(defun mcalc-copy (arglist)
  (let ((arg (nth 0 arglist)))
    (ed::kill-new (mcalc-format-string arg))
    (message &quot;Copied&quot;)
    (list arg)))
(mcalc-add-function &quot;w&quot; 'mcalc-copy 1)

(defun mcalc-paste (arglist)
  (let ((arg (parse-integer (nth 0 (ed::current-kill 0)))))
    (list arg)))
(mcalc-add-function &quot;y&quot; 'mcalc-paste 0)

(defun mcalc-copy-to-clipboard (arglist)
  (let ((arg (nth 0 arglist)))
    (copy-to-clipboard (mcalc-format-string arg))
    (message &quot;Copied to clipboard&quot;)
    (list arg)))
(mcalc-add-function &quot;c&quot; 'mcalc-copy-to-clipboard 1)

(defun mcalc-paste-from-clipboard (arglist)
  (let ((arg (parse-integer (get-clipboard-data))))
    (list arg)))
(mcalc-add-function &quot;v&quot; 'mcalc-paste-from-clipboard 0)</pre><p></p>
<p>　同じことをEmacsのmcalcでやるにはこうする。Xのクリップボードの操作は面倒なのでやっていない。(<code>kill-new</code>にあたるものがないようだ)</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">(require 'mcalc)

(defun mcalc-copy (arglist)
  (let ((arg (nth 0 arglist)))
    (kill-new (mcalc-format-string arg))
    (message &quot;Copied&quot;)
    (list arg)))
(mcalc-add-function &quot;w&quot; 'mcalc-copy 1)

(defun mcalc-paste (arglist)
  (let ((arg (string-to-number (current-kill 0))))
    (list arg)))
(mcalc-add-function &quot;y&quot; 'mcalc-paste 0)</pre><p></p>
<p>　んー、いい感じ。</p>
<p>The post <a href="https://d.akinori.org/2004/12/25/20041225p02/">xyzzy / mcalc</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2004/11/30/20041130p02/" rel="bookmark" title="xyzzyイイ">xyzzyイイ</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2004/12/25/20041225p02/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GNU Emacs 21.3.50でlookupとVC</title>
		<link>https://d.akinori.org/2004/06/03/20040603p01/</link>
					<comments>https://d.akinori.org/2004/06/03/20040603p01/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Wed, 02 Jun 2004 15:00:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2004/06/03/20040603p01/</guid>

					<description><![CDATA[<p>　lookupで外字の表示がおかしい問題は、lookupを1.99.0から1.4にしたら解消した。XEmacsではずっと前から1.4を使っていたが、GNU Emacsのインストールスクリプトは古いままで1.99.0が入っ… <span class="read-more"><a href="https://d.akinori.org/2004/06/03/20040603p01/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2004/06/03/20040603p01/">GNU Emacs 21.3.50でlookupとVC</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2007/10/23/20071023p02/" rel="bookmark" title="vc-svk.elが遅い">vc-svk.elが遅い</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　lookupで外字の表示がおかしい問題は、lookupを1.99.0から1.4にしたら解消した。XEmacsではずっと前から1.4を使っていたが、GNU Emacsのインストールスクリプトは古いままで1.99.0が入っていた。</p>
<p>　さて、ほぼGNU Emacsでいけるようになったが、もう一つ問題があった。<code>(setq version-control 'never)</code>および<code>(setq vc-make-backup-files nil)</code>しているのに数字付きのバックアップファイルが作られる。調べてみたら、新しいVCのせいだった。新設の変数として<code>vc-stay-local</code>および各バックエンド用の<code>vc-{backend}-stay-local</code>というものがあり、これがデフォルトのnon-nilだと、レポジトリにアクセスせずにローカルでdiffしたりできるよう、リビジョン番号付きのバックアップが作られるようだ。</p>
<p>　<code>(setq vc-stay-local nil)</code>とすればバックアップは抑制できるが、レポジトリアクセスが減るのは便利な気もするのでそのままにしておいた。</p>
<p>The post <a href="https://d.akinori.org/2004/06/03/20040603p01/">GNU Emacs 21.3.50でlookupとVC</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/12/20040512p04/" rel="bookmark" title="tDiary &#8211; tdiary-mode-hook">tDiary &#8211; tdiary-mode-hook</a></li>
<li><a href="https://d.akinori.org/2012/07/23/git-mergetool%e3%81%a7emacs%e3%81%aeediff-merge-files-with-ancestor%e3%82%92%e5%91%bc%e3%81%b3%e5%87%ba%e3%81%99/" rel="bookmark" title="git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す">git mergetoolでEmacsのediff-merge-files-with-ancestorを呼び出す</a></li>
<li><a href="https://d.akinori.org/2007/10/23/20071023p02/" rel="bookmark" title="vc-svk.elが遅い">vc-svk.elが遅い</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2004/06/03/20040603p01/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GNU Emacs 21.3.50でのコピペとフォント問題</title>
		<link>https://d.akinori.org/2004/06/01/20040601p01/</link>
					<comments>https://d.akinori.org/2004/06/01/20040601p01/#respond</comments>
		
		<dc:creator><![CDATA[Akinori]]></dc:creator>
		<pubDate>Mon, 31 May 2004 15:00:00 +0000</pubDate>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Emacs]]></category>
		<guid isPermaLink="false">http://dlog.akinori.org/2004/06/01/20040601p01/</guid>

					<description><![CDATA[<p>　GNU Emacs 21.3.50でのコピペ問題とフォント問題が解決した。 　まず、他のXクライアントからコピーするとISO-2022-JPの断片が混じったりNUL文字が入ったりする件はEmacs側のバグだったようで、… <span class="read-more"><a href="https://d.akinori.org/2004/06/01/20040601p01/">続きを読む &#187;</a></span></p>
<p>The post <a href="https://d.akinori.org/2004/06/01/20040601p01/">GNU Emacs 21.3.50でのコピペとフォント問題</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->

» 関連記事 «<ul>
<li><a href="https://d.akinori.org/2004/05/25/20040525p03/" rel="bookmark" title="Emacs multi-tty support">Emacs multi-tty support</a></li>
<li><a href="https://d.akinori.org/2004/05/26/20040526p01/" rel="bookmark" title="GNU Emacs 21.3.50 w/ multi-tty support">GNU Emacs 21.3.50 w/ multi-tty support</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></description>
										<content:encoded><![CDATA[<p>　GNU Emacs 21.3.50でのコピペ問題とフォント問題が解決した。</p>
<p>　まず、他のXクライアントからコピーするとISO-2022-JPの断片が混じったりNUL文字が入ったりする件はEmacs側のバグだったようで、最新のEmacs multi-ttyスナップショットに上げたら解消した。</p>
<p>　Emacsから他のXクライアントへコピーすると化ける問題とUnicodeの文字が豆腐になる問題は同根で、ただの設定不足だった。なぜかDarwinでしか実行するようになっていなかった下記を有効にしたら直った。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">(if (fboundp 'utf-translate-cjk-mode)
    (utf-translate-cjk-mode 1))</pre><p></p>
<p>　あとはlookupの外字が「■」になってしまう問題が残っている。bitmap-muleはフォントもろとも入れてあるのだが…。</p>
<p>The post <a href="https://d.akinori.org/2004/06/01/20040601p01/">GNU Emacs 21.3.50でのコピペとフォント問題</a> appeared first on <a href="https://d.akinori.org">工夫と趣向と分別と。</a>.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-template-yarpp-template-akinori'>
<!-- YARPP List -->
<p>» 関連記事 «</p><ul>
<li><a href="https://d.akinori.org/2004/05/25/20040525p03/" rel="bookmark" title="Emacs multi-tty support">Emacs multi-tty support</a></li>
<li><a href="https://d.akinori.org/2004/05/26/20040526p01/" rel="bookmark" title="GNU Emacs 21.3.50 w/ multi-tty support">GNU Emacs 21.3.50 w/ multi-tty support</a></li>
<li><a href="https://d.akinori.org/2012/04/25/emacs-kill-region-or-backward-kill-word/" rel="bookmark" title="Emacs: kill-region-or-backward-kill-word">Emacs: kill-region-or-backward-kill-word</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://d.akinori.org/2004/06/01/20040601p01/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
