<?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>Dysfunctional Programming &#187; emacs</title>
	<atom:link href="http://www.joshmatthews.net/blog/category/emacs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshmatthews.net/blog</link>
	<description>/* You are not expected to understand this */</description>
	<lastBuildDate>Tue, 24 Jan 2012 20:50:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Faster mercurial patch queue merging with emacs</title>
		<link>http://www.joshmatthews.net/blog/2010/03/faster-mercurial-patch-queue-merging-with-emacs/</link>
		<comments>http://www.joshmatthews.net/blog/2010/03/faster-mercurial-patch-queue-merging-with-emacs/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 01:41:03 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/?p=52</guid>
		<description><![CDATA[As a follow-up to my previous post about merging mq reject in emacs, I thought I&#8217;d share some improvements to the process that I&#8217;ve made since then. &#40;defun switch-hg-reject &#40;&#41; &#160; &#40;interactive&#41; &#160; &#40;let &#40;&#40;other-file &#160; &#160; &#160;&#40;if &#40;string= &#40;substring &#40;buffer-file-name&#41; -4 nil&#41; &#34;.rej&#34;&#41; &#160; &#160; &#160; &#160; &#160;&#40;substring &#40;buffer-file-name&#41; 0 -4&#41; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow-up to <a href="http://www.joshmatthews.net/blog/2010/01/dealing-with-mercurial-patch-queue-rejects-in-emacs/">my previous post</a> about merging mq reject in emacs, I thought I&#8217;d share some improvements to the process that I&#8217;ve made since then.</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="br0">&#40;</span><span class="kw1">defun</span> switch-hg-reject <span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span>interactive<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span><span class="kw1">let</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>other-file<br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span><span class="kw1">if</span> <span class="br0">&#40;</span>string= <span class="br0">&#40;</span>substring <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="nu0">-4</span> <span class="kw1">nil</span><span class="br0">&#41;</span> <span class="st0">&quot;.rej&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>substring <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="nu0">0</span> <span class="nu0">-4</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>concat <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="st0">&quot;.rej&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#40;</span><span class="kw1">if</span> <span class="br0">&#40;</span>file-exists-p other-file<span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#40;</span>save-selected-window<br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>switch-to-buffer-other-window <span class="br0">&#40;</span>find-file-noselect other-file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>message <span class="st0">&quot;No alternate reject file found&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p><span class="br0">&#40;</span><span class="kw1">defun</span> kill-hg-reject <span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span>interactive<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span><span class="kw1">let</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>reject-file <span class="br0">&#40;</span>concat <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="st0">&quot;.rej&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#40;</span>kill-buffer<br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>find-buffer-visiting reject-file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p><span class="br0">&#40;</span>global-set-key <span class="br0">&#40;</span>kbd <span class="st0">&quot;C-c r&quot;</span><span class="br0">&#41;</span> &#8216;switch-hg-reject<span class="br0">&#41;</span><br />
<span class="br0">&#40;</span>global-set-key <span class="br0">&#40;</span>kbd <span class="st0">&quot;C-x r&quot;</span><span class="br0">&#41;</span> &#8216;kill-hg-reject<span class="br0">&#41;</span></div>
<p>It turns out that swapping back and forth between the reject and the original in a single window felt was quite inefficient.  With these changes, the reject opens up in another window (think emacs terminology here) on <code>C-c r</code>, and I can kill it later with <code>C-x r</code>.  This also works better with other modules like uniquify &#8211; the code from the previous post would fail when trying to access rejects associated with buffers name &#8220;Makefile.in|ipc&#8221;.  No longer must you suffer the indignity of process!  Merging can, and should, be fun!  BEHOLD MY WORKS AND DESPAIR.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/03/faster-mercurial-patch-queue-merging-with-emacs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Dealing with mercurial patch queue rejects in emacs</title>
		<link>http://www.joshmatthews.net/blog/2010/01/dealing-with-mercurial-patch-queue-rejects-in-emacs/</link>
		<comments>http://www.joshmatthews.net/blog/2010/01/dealing-with-mercurial-patch-queue-rejects-in-emacs/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 00:13:10 +0000</pubDate>
		<dc:creator>Josh Matthews</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://www.joshmatthews.net/blog/2010/01/dealing-with-mercurial-patch-queue-rejects-in-emacs/</guid>
		<description><![CDATA[Since Mozilla has embraced mercurial, and especially patch queues, with open arms, I get to deal with rebasing patches frequently. There are two ways this can happen &#8211; either you set up an external merge tool like meld to handle each conflict, or the rejected changes are dumped in a filename.ext.rej in the same directory [...]]]></description>
			<content:encoded><![CDATA[<p>Since Mozilla has embraced mercurial, and especially <a href="https://developer.mozilla.org/en/Mercurial_Queues">patch queues</a>, with open arms, I get to deal with rebasing patches frequently.  There are two ways this can happen &#8211; either you set up an external merge tool like meld to handle each conflict, or the rejected changes are dumped in a filename.ext.rej in the same directory as the file being patched.  Since I do all of my work in emacs, I&#8217;ve finally got around to writing an elisp function to allow me to switch to a reject file from the original quickly and painlessly:</p>
<div class="dean_ch" style="white-space: nowrap;"><span class="br0">&#40;</span><span class="kw1">defun</span> switch-hg-reject <span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span>interactive<span class="br0">&#41;</span><br />
&nbsp; <span class="br0">&#40;</span><span class="kw1">let</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>other-file<br />
&nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span><span class="kw1">if</span> <span class="br0">&#40;</span>string= <span class="br0">&#40;</span>substring <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="nu0">-4</span> <span class="kw1">nil</span><span class="br0">&#41;</span> <span class="st0">&quot;.rej&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>substring <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="nu0">0</span> <span class="nu0">-4</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#40;</span>concat <span class="br0">&#40;</span>buffer-file-<span class="kw1">name</span><span class="br0">&#41;</span> <span class="st0">&quot;.rej&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span class="br0">&#40;</span><span class="kw1">if</span> <span class="br0">&#40;</span>file-exists-p other-file<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>switch-to-buffer <span class="br0">&#40;</span>find-file-noselect other-file<span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>message <span class="br0">&#40;</span>format <span class="st0">&quot;No alternate reject file found&quot;</span> other-file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p><span class="br0">&#40;</span>global-set-key <span class="br0">&#40;</span>kbd <span class="st0">&quot;C-c r&quot;</span><span class="br0">&#41;</span> &#8216;switch-hg-reject<span class="br0">&#41;</span></div>
<p>A simple <code>C-c r</code> is all it takes to switch from nsFrameLoader.cpp to nsFrameLoader.cpp.rej in the current buffer, and another <code>C-c r</code> will take me back to the original.  Now that&#8217;s convenience!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joshmatthews.net/blog/2010/01/dealing-with-mercurial-patch-queue-rejects-in-emacs/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

