<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:base="http://ergoemacs.org/emacs/">

 <title>Xah Emacs Blog</title>
 <subtitle>Emacs, Emacs, Emacs</subtitle>
 
 <link rel="alternate" href="blog.html" />
 <updated>2013-05-17T16:35:36-07:00</updated>
 <author>
   <name>Xah Lee</name>
   <uri>http://xahlee.org/</uri>
 </author>
 <id>http://ergoemacs.org/emacs/blog.html</id>
 <icon>http://xahlee.org/ics/sum.png</icon>
 <rights>© 2011 〜 2013, Xah Lee</rights>

<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/XahsEmacsBlog" /><feedburner:info uri="xahsemacsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/XahsEmacsBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FXahsEmacsBlog" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry>
<title>Emacs Lisp: Convert Line Ending</title>
<id>tag:xahlee.org,2013-05-17:233536</id>
<updated>2013-05-17T16:35:36-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="elisp_convert_line_ending.html">Emacs Lisp: Convert Line Ending</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/15PHOYIbN7g" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_convert_line_ending.html" />
</entry>

<entry>
<title>Emacs: Open File Path Under Cursor Fast</title>
<id>tag:xahlee.org,2013-05-17:211246</id>
<updated>2013-05-17T14:12:46-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="emacs_open_file_path_fast.html">Emacs: Open File Path Under Cursor Fast</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Wj5yEqWb1u8" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_open_file_path_fast.html" />
</entry>

<entry>
<title>Truly Ergonomic Computer Keyboard Review</title>
<id>tag:xahlee.org,2013-05-15:071323</id>
<updated>2013-05-15T00:13:23-07:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/tkjm1xSF4g0?rel=0" />
<figcaption>video review of the Truly Ergonomic keyboard.
More info at
<a href="http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html">Truly Ergonomic Computer Keyboard Review</a>
</figcaption>
</figure>
<p>Note: for those of you who know me, i got the keyboards free, but my opinion isn't bought, judge for yourself.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/h42TZB_ZKok" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/h42TZB_ZKok/Truly_Ergonomic_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Hotkeys to Open File Fast</title>
<id>tag:xahlee.org,2013-05-15:054244</id>
<updated>2013-05-14T22:42:44-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. Now using ido for automatic completion. <a href="emacs_hotkey_open_file_fast.html">Emacs Lisp: Hotkeys to Open File Fast</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WmKANJEHpgg" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_hotkey_open_file_fast.html" />
</entry>

<entry>
<title>Emacs: use ido for auto completion in your own commands</title>
<id>tag:xahlee.org,2013-05-15:050723</id>
<updated>2013-05-14T22:07:23-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article><p>emacs lisp: you can use <code class="elisp-ƒ">ido-completing-read</code> for your own cmds. 
It's bundled with emacs 24, at least. Example use:</p>
<pre class="elisp">(ido-completing-read <span class="string">"your prompt str:"</span> ‹youList› )</pre>
<p>Full example: <a href="elisp_change_brackets.html">Emacs: Change Brackets () {} [] in Text</a></p>
<div class="blgcmt"><a href="http://xahlee.blogspot.com/2013/05/emacs-lisp-use-ido-completion-for-your.html">✍</a></div>
</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/-LOUZddSMqA" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_change_brackets.html" />
</entry>

<entry>
<title>How I Write Blogs Using Emacs</title>
<id>tag:xahlee.org,2013-05-14:183810</id>
<updated>2013-05-14T11:38:10-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>A video recording on how i write blogs.</p>

<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/1L0ru5bXGjw?rel=0" />
<figcaption>emacs: how i write blogs.</figcaption>
</figure>

<p>The commands used are:</p>

<ul>
<li><code class="elisp-ƒ">xah-open-file-fast</code> 〔☛ <a href="emacs_hotkey_open_file_fast.html">Emacs Lisp: Hotkeys to Open File Fast</a>〕</li>
<li><code class="elisp-ƒ">insert-date-tag</code> 〔☛ <a href="elisp_insert-date-time.html">Emacs Lisp: Insert Date Time Stamp</a>〕</li>
<li><code class="elisp-ƒ">xhm-wrap-html-tag</code> (from <a href="xah-html-mode.html">Emacs: Xah HTML Mode</a>)</li>
<li><code class="elisp-ƒ">xhm-pre-source-code</code> syntax coloring of source code in HTML.</li>
<li><code class="elisp-ƒ">xah-browse-url-of-buffer</code> 〔☛ <a href="elisp_browse_url.html">Emacs Lisp: browse-url Function to View URL in a Web Browser</a>〕</li>
<li><code class="elisp-ƒ">xah-make-atom-entry</code> 〔☛ <a href="elisp_update_atom.html">Emacs Lisp: Updating Atom Webfeed</a>〕</li>
<li><code class="elisp-ƒ">dired-jump</code></li>
<li><code class="elisp-ƒ">xah-shell-commands</code>.  See: 〈Emacs, Shell, Abbrev, and ELISP Power to Bear!〉 <a class="sorc" href="http://www.youtube.com/watch?v=oKS_iIoQ0A4" data-accessed="2013-05-14">http://www.youtube.com/watch?v=oKS_iIoQ0A4</a>
</li>
</ul>

<p>The video presentation is pretty bad. I have much to learn, tech and presentation. I was using Google Plus's hangout feature with Hangout On Air to record directly to YouTube. Not sure what's a good solution on Linux yet.</p>

<p>also, i need to write code so that whatever command i called is displayed in a pane. So viewers can see it without me going over.</p>

<div class="blgcmt"><a href="http://xahlee.blogspot.com/2013/05/emacs-how-i-write-blogs.html">✍</a></div>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/2dlkZ_W76o8" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/2dlkZ_W76o8/emacs-how-i-write-blogs.html" />
<feedburner:origLink>http://xahlee.blogspot.com/2013/05/emacs-how-i-write-blogs.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Newline Representations ^M ^J ^L</title>
<id>tag:xahlee.org,2013-05-14:163127</id>
<updated>2013-05-14T09:31:27-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated, with new elisp code to change file line ending in batch. <a href="emacs_line_ending_char.html">Emacs: Newline Representations ^M ^J ^L</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/H4NVSlWERQs" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_line_ending_char.html" />
</entry>

<entry>
<title>Computer Keyboards, Layouts, Hotkeys, Macros, RSI ⌨</title>
<id>tag:xahlee.org,2013-05-14:060119</id>
<updated>2013-05-13T23:01:19-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Keyboard pr0n, nth update. <a href="http://xahlee.info/kbd/keyboarding.html">Computer Keyboards, Layouts, Hotkeys, Macros, RSI ⌨</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/wMoaByWbIkE" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/wMoaByWbIkE/keyboarding.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboarding.html</feedburner:origLink></entry>

<entry>
<title>new update of emacs tutorial</title>
<id>tag:xahlee.org,2013-05-13:081225</id>
<updated>2013-05-13T01:12:25-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Dear all, a new version of my tutorial is out. I'm making this a special version, for $40. If you support it, i'd be greatful, and i'll add your name to the <a href="thanks.html">Xah's Emacs Tutorial: Acknowledgment</a> as sponsor.</p>

<div class="ppp8745"><form action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_s-xclick" /><input type="hidden" name="hosted_button_id" value="Y4V2F8TA949M2" /><input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" name="submit" alt="PayPal" /><img src="https://www.paypal.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" /></form></div>

<p><a href="buy_xah_emacs_tutorial.html">Buy Xah Emacs Tutorial</a></p>

<p>Another way to voice your support is funding a emacs major mode that you might want. Please visit <a class="sorc" href="http://pledgie.com/campaigns/19973" data-accessed="2013-05-02">http://pledgie.com/campaigns/19973</a>. Please let me know if you have questions..</p>

<p>Thank you for support.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sseSEK-iIN4" height="1" width="1" /></div></content>
<link rel="alternate" href="buy_xah_emacs_tutorial.html" />
</entry>

<entry>
<title>Emacs Lisp: Throw ＆ Catch, Exit a Loop</title>
<id>tag:xahlee.org,2013-05-13:073004</id>
<updated>2013-05-13T00:30:04-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_break_loop.html">Emacs Lisp: Throw ＆ Catch, Exit a Loop</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/72j6tUdPEk0" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_break_loop.html" />
</entry>

<entry>
<title>Truly Ergonomic Computer Keyboard Review</title>
<id>tag:xahlee.org,2013-05-12:164027</id>
<updated>2013-05-12T09:40:27-07:00</updated>
<summary>review</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Been using the Truly Ergonomic keyboard for 5 months now. Added my experience here at bottom: <a href="http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html">Truly Ergonomic Computer Keyboard Review</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/h42TZB_ZKok" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/h42TZB_ZKok/Truly_Ergonomic_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Hash Table</title>
<id>tag:xahlee.org,2013-05-12:060704</id>
<updated>2013-05-11T23:07:04-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_hash_table.html">Emacs Lisp: Hash Table</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/HaFKs60tWmE" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_hash_table.html" />
</entry>

<entry>
<title>Emacs Lisp: Find/Determine OS and Emacs Version</title>
<id>tag:xahlee.org,2013-05-12:050731</id>
<updated>2013-05-11T22:07:31-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. Split into 2 pages.</p>
<ul>
<li><a href="elisp_determine_OS_version.html">Emacs Lisp: Find/Determine OS and Emacs Version</a></li>
<li><a href="elisp_check_defined.html">Emacs Lisp: Check If a {function, variable, feature} is Defined/Loaded</a></li>
</ul>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/316sCPUXz18" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_determine_OS_version.html" />
</entry>

<entry>
<title>Emacs Lisp: Convert Unicode String to ASCII (Zap Gremlins)</title>
<id>tag:xahlee.org,2013-05-12:022757</id>
<updated>2013-05-11T19:27:57-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_zap_gremlins.html">Emacs Lisp: Convert Unicode String to ASCII (Zap Gremlins)</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ctBxDokZFSE" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_zap_gremlins.html" />
</entry>

<entry>
<title>Emacs: Change {Round, Square, Curly} Brackets in Text</title>
<id>tag:xahlee.org,2013-05-11:144012</id>
<updated>2013-05-11T07:40:12-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<h3>Emacs: Change {Round, Square, Curly} Brackets in Text</h3>

<p>when you have data in different languages, sometimes you need to convert round brackets to square brackets, or curly brackets.</p>

<p>When you need to do that, it's often tedious. You have to do replacement twice, once for the left bracket, then right bracket. Here's a command that helps:</p>

<p>please see <a href="elisp_change_brackets.html">Emacs: Change Brackets () {} [] in Text</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/t9yQmG3jRY0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/t9yQmG3jRY0/emacs-change-round-square-curly.html" />
<feedburner:origLink>http://xahlee.blogspot.com/2013/05/emacs-change-round-square-curly.html</feedburner:origLink></entry>

<entry>
<title>Keyboard Porn to Infinity ⌨ ∞</title>
<id>tag:xahlee.org,2013-05-11:092655</id>
<updated>2013-05-11T02:26:55-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>there's a fantastic heart-shaped keyboard. If you haven't seen it already, see at <a href="http://xahlee.info/kbd/fancy_keyboards.html">Keyboard Porn to Infinity ⌨ ∞</a>. The guy plans to manufacture it. To keep updated for news, watch his website at <a class="sorc" href="http://launch.keyboard.io/" data-accessed="2013-05-11">http://launch.keyboard.io/</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vRWhP_xQvmg" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/vRWhP_xQvmg/fancy_keyboards.html" />
<feedburner:origLink>http://xahlee.info/kbd/fancy_keyboards.html</feedburner:origLink></entry>

<entry>
<title>Emacs: How Do You Insert Current Date?</title>
<id>tag:xahlee.org,2013-05-10:201029</id>
<updated>2013-05-10T13:10:29-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<h3>Emacs: How Do You Insert Current Date?</h3>

<p>here's how i do it.</p>

<p>please see <a href="elisp_insert-date-time.html">Emacs Lisp: Insert Date Time Stamp</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/N55ouRWfRVM" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/N55ouRWfRVM/emacs-how-do-you-insert-current-date.html" />
<feedburner:origLink>http://xahlee.blogspot.com/2013/05/emacs-how-do-you-insert-current-date.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Xah HTML Mode: improved make citation command</title>
<id>tag:xahlee.org,2013-05-10:093840</id>
<updated>2013-05-10T02:38:40-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>much improved “xhm-make-citation”. Now, the order of lines for {title, url, author, date} doesn't matter. Get it in <a href="xah-html-mode.html">Emacs: Xah HTML Mode</a></p>

<p>to learn how to write it, see <a href="elisp_make-citation.html">Emacs Lisp: Writing a make-citation Command</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/nKCc9oZoDBk" height="1" width="1" /></div></content>
<link rel="alternate" href="xah-html-mode.html" />
</entry>

<entry>
<title>keyboard geeking. One thousand function keys, redux</title>
<id>tag:xahlee.org,2013-05-10:085242</id>
<updated>2013-05-10T01:52:42-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>keyboard geeking. 〔<cite>one thousand function keys, redux</cite> <time>2013-05-10</time> @ <a class="sorc" href="http://xahlee.blogspot.com/2013/05/keyboard-one-thousand-function-keys.html" data-accessed="2013-05-10">xahlee.blogspot.com…</a>〕</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/6nLsq_PREoE" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/6nLsq_PREoE/keyboard-one-thousand-function-keys.html" />
<feedburner:origLink>http://xahlee.blogspot.com/2013/05/keyboard-one-thousand-function-keys.html</feedburner:origLink></entry>

<entry>
<title>Logic Write Style: the Incongruousness of the Word “Actually”</title>
<id>tag:xahlee.org,2013-05-10:055002</id>
<updated>2013-05-09T22:50:02-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>inspired from emacs lisp doc: <a href="http://wordyenglish.com/lit/the_word_actually.html">Logic Write Style: the Incongruousness of the Word “Actually”</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/HM1eP-6Lt7c" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/HM1eP-6Lt7c/the_word_actually.html" />
<feedburner:origLink>http://wordyenglish.com/lit/the_word_actually.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Text Processing: Generate a Web Links Report</title>
<id>tag:xahlee.org,2013-05-09:065944</id>
<updated>2013-05-08T23:59:44-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_link_report.html">Emacs Lisp: Text Processing: Generate a Web Links Report</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/qSCFXjRbMMY" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_link_report.html" />
</entry>

<entry>
<title>Emacs, Shell, Abbrev, and ELISP Power to Bear!</title>
<id>tag:xahlee.org,2013-05-08:165037</id>
<updated>2013-05-08T09:50:37-07:00</updated>
<summary>video tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>created a video to go alone with today's tip.</p>

<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/oKS_iIoQ0A4?rel=0" />
<figcaption>
code and detail at:
<a href="../misc/emacs_abbrev_shell_elisp.html">Emacs, Shell, Abbrev, and ELISP Power to Bear!</a>
</figcaption>
</figure>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/c4CW20qkW4w" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_abbrev_shell_elisp.html" />
</entry>

<entry>
<title>Emacs, Shell, Abbrev, and ELISP Power to Bear!</title>
<id>tag:xahlee.org,2013-05-08:141433</id>
<updated>2013-05-08T07:14:33-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/emacs_abbrev_shell_elisp.html">Emacs, Shell, Abbrev, and ELISP Power to Bear!</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/c4CW20qkW4w" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_abbrev_shell_elisp.html" />
</entry>

<entry>
<title>The Idiocy of Happy Hacking Keyboard</title>
<id>tag:xahlee.org,2013-05-08:134826</id>
<updated>2013-05-08T06:48:26-07:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>the Happy Hacking Keyboard, model “professional 2”, don't even have arrow keys. <a href="http://xahlee.info/kbd/idiocy_of_happy_hacking_keyboard.html">The Idiocy of Happy Hacking Keyboard</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/1Wwrroy1ezM" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/1Wwrroy1ezM/idiocy_of_happy_hacking_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/idiocy_of_happy_hacking_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Ask Emacs Tuesday</title>
<id>tag:xahlee.org,2013-05-08:112333</id>
<updated>2013-05-08T04:23:33-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>I had a great Ask Emacs Tuesday yesterday. Thanks for asking. Past Q＆A links at <a href="../misc/ask_emacs_tuesday.html">Ask Emacs Tuesday</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/D34A0AoEXbo" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/ask_emacs_2012-08-21.html" />
</entry>

<entry>
<title>Which Emacs to Download for Windows and Mac?</title>
<id>tag:xahlee.org,2013-05-08:105034</id>
<updated>2013-05-08T03:50:34-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>emacs 24.3 app for Microsoft Windows is out. See <a href="which_emacs.html">Which Emacs to Download for Windows and Mac?</a>. (thx to xfq)</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/zcpHnyxZx7M" height="1" width="1" /></div></content>
<link rel="alternate" href="which_emacs.html" />
</entry>

<entry>
<title>Ask Emacs Tuesday</title>
<id>tag:xahlee.org,2013-05-07:134100</id>
<updated>2013-05-07T06:41:00-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/ask_emacs_2012-08-21.html">Ask Emacs Tuesday</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/D34A0AoEXbo" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/ask_emacs_2012-08-21.html" />
</entry>

<entry>
<title>Unix Shell Util uniq Unicode Bug</title>
<id>tag:xahlee.org,2013-05-07:120455</id>
<updated>2013-05-07T05:04:55-07:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>i was calling unix uniq from emacs. Got a unexpected result. I thought it's unicode data passing screwup. Turns out, the bug is in uniq itself.
<a href="http://xahlee.info/comp/unix_uniq_unicode_bug.html">Unix Shell Util uniq Unicode Bug</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/HQCT9U-R8H0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/HQCT9U-R8H0/unix_uniq_unicode_bug.html" />
<feedburner:origLink>http://xahlee.info/comp/unix_uniq_unicode_bug.html</feedburner:origLink></entry>

<entry>
<title>How to Write grep in Emacs Lisp</title>
<id>tag:xahlee.org,2013-05-07:074127</id>
<updated>2013-05-07T00:41:27-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_grep_script.html">How to Write grep in Emacs Lisp</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/bLqv8p7PZwg" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_grep_script.html" />
</entry>

<entry>
<title>Functional Programing Meta Language (ML) in Emacs Lisp!</title>
<id>tag:xahlee.org,2013-05-07:070611</id>
<updated>2013-05-07T00:06:11-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<h3>Functional Programing Meta Language (ML) in Emacs Lisp!</h3>

<p>discovered that emacs has a bundled library for functional programing pattern matching! The package file is 〔pcase.el〕. It's part of GNU Emacs 24.3.1.</p>

<p>it's written by Stefan Monnier, a professor of functional programing research, and one of the two current leader of emacs dev.</p>

<p>you can get to the file by calling <code class="elisp-ƒ">describe-function</code> then <code class="elisp-ƒ">pcase-let</code>, then click on the file name.</p>

<p>Note: ML stands for Meta Language. It was a family of languages. Current popular decendents include OCaml and Microsoft's FSharp.
〔☛ <a href="http://xahlee.info/ocaml/ocaml.html">Xah's OCaml Tutorial</a>〕
 Among functional programing languages, OCaml is one of those that's heavily used in the industry (⁖ Mldonkey, Unison
〔☛ <a href="http://xahlee.info/UnixResource_dir/unison_file_sync.html">Unison Tutorial</a>〕), especially in math formal proof systems ⁖ Coq. And it's famously used in JaneStreet.
〔☛ <a href="http://xahlee.info/comp/Yaron_Minsky_Janestreet_talk.html">OCaml Use in Industry: Janestreet Talk by Yaron Minsky &#x1f4fa;</a>〕
</p>

<p>Proof systems written in OCaml includes: Coq, HOL Light. 〔☛ <a href="http://xahlee.info/cmaci/notation/theorem_proving_systems.html">State of Theorem Proving Systems 2008</a>〕</p>

<p>Also, the designer of ML is <a href="http://en.wikipedia.org/wiki/Robin_Milner">Robin Milner</a> (1934 〜 2010), he died in recent years.</p>

<div class="rltd">
<ul>
<li><a href="http://xahlee.info/cmaci/notation/index.html">Math Notations, Computer Languages, and the “Form” in Formalism</a></li>
</ul>
</div>

<div class="blgcmt"><a href="http://xahlee.blogspot.com/2013/05/functional-programing-meta-language-ml.html">✍</a></div>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/qcBdDPYGqYU" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/qcBdDPYGqYU/functional-programing-meta-language-ml.html" />
<feedburner:origLink>http://xahlee.blogspot.com/2013/05/functional-programing-meta-language-ml.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Xah HTML Mode</title>
<id>tag:xahlee.org,2013-05-06:011835</id>
<updated>2013-05-05T18:18:35-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>draft version of xah-html-mode home page. Some documentation on what it do. <a href="xah-html-mode.html">Emacs: Xah HTML Mode</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/nKCc9oZoDBk" height="1" width="1" /></div></content>
<link rel="alternate" href="xah-html-mode.html" />
</entry>

<entry>
<title>Emacs: Xah ELISP Mode</title>
<id>tag:xahlee.org,2013-05-05:014020</id>
<updated>2013-05-04T18:40:20-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>new. <a href="xah-elisp-mode.html">Emacs: Xah ELISP Mode</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/UA_xgynJ1Zk" height="1" width="1" /></div></content>
<link rel="alternate" href="xah-elisp-mode.html" />
</entry>

<entry>
<title>Emacs Lisp Mode Syntax Coloring Problem</title>
<id>tag:xahlee.org,2013-05-05:012614</id>
<updated>2013-05-04T18:26:14-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="modernization_elisp_syntax_color.html">Emacs Lisp Mode Syntax Coloring Problem</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/X4jETZK3284" height="1" width="1" /></div></content>
<link rel="alternate" href="modernization_elisp_syntax_color.html" />
</entry>

<entry>
<title>Programing Style: Variable Naming: English Words Considered Harmful</title>
<id>tag:xahlee.org,2013-05-05:004004</id>
<updated>2013-05-04T17:40:04-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. discovered big chunck of code in emacs lisp using math symbols as function/variable names. <a href="http://xahlee.info/comp/programing_variable_naming.html">Programing Style: Variable Naming: English Words Considered Harmful</a></p>

<p>see also: <a href="http://xahlee.info/comp/unicode_support_ruby_python_elisp.html">Unicode in Ruby, Perl, Python, JavaScript, Java, Emacs Lisp, Mathematica</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/wnju2VWdzUs" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/wnju2VWdzUs/programing_variable_naming.html" />
<feedburner:origLink>http://xahlee.info/comp/programing_variable_naming.html</feedburner:origLink></entry>

<entry>
<title>documentary: food of a underground genius</title>
<id>tag:xahlee.org,2013-05-04:130708</id>
<updated>2013-05-04T06:07:08-07:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>your host, truely, tries his hand in entertainment.</p>

<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/GHr-5ktpQys?rel=0" />
<figcaption>documentary: food of a underground genius</figcaption>
</figure>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/8oIchJEBI1w" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/8oIchJEBI1w/blog.html" />
<feedburner:origLink>http://ergoemacs.org/emacs/blog.html</feedburner:origLink></entry>

<entry>
<title>swap mouse buttons you</title>
<id>tag:xahlee.org,2013-05-04:075848</id>
<updated>2013-05-04T00:58:48-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>you should swap middle/right mouse buttons. For why and how, in {Linux, Microsoft Windows}, see: <a href="http://xahlee.info/mswin/swap_mouse_buttons.html">Swap Mouse Buttons: Right-Click ＆ Middle-Click</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/70a-jwmVmjU" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/70a-jwmVmjU/swap_mouse_buttons.html" />
<feedburner:origLink>http://xahlee.info/mswin/swap_mouse_buttons.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Xah CSS Mode: change hex color to hsl under cursor</title>
<id>tag:xahlee.org,2013-05-04:071525</id>
<updated>2013-05-04T00:15:25-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>more improved. <a href="xah-css-mode.html">Emacs: Xah CSS Mode</a> You can now convert RGB hex color under cursor to HSL format (⁖ <code>#aabbcc</code> ⇒ <code>hsl(210,25%,73%)</code>). Call <code class="elisp-ƒ">xcm-hex-color-to-hsl</code>.</p>

<p>why should you convert? because, #rrggbb is one of the hack from history. HSL model isn't perfect, but is much more intuitive. You can change the hue, saturation, and lightness. For some explanation of HSL model and color samples, see: <a href="http://xahlee.info/js/css_hsl_color.html">CSS3 HSL (Hue, Saturation, Lightness) Color Samples</a>.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/qv5-Bwo1jls" height="1" width="1" /></div></content>
<link rel="alternate" href="xah-css-mode.html" />
</entry>

<entry>
<title>Emacs: new major modes for HTML, CSS, PHP, ELISP, and Lean Emacs LISP Manual</title>
<id>tag:xahlee.org,2013-05-02:132045</id>
<updated>2013-05-02T06:20:45-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/xR7jVUpmRNs?rel=0" />
<figcaption>Emacs: project proposal.</figcaption>
</figure>
<p>Vote which one you want me to work on. Tell your friends please. <a class="sorc" href="http://pledgie.com/campaigns/19973" data-accessed="2013-05-02">http://pledgie.com/campaigns/19973</a></p></article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/b7fpH1ABdas" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/b7fpH1ABdas/19973" />
<feedburner:origLink>http://pledgie.com/campaigns/19973</feedburner:origLink></entry>

<entry>
<title>Emacswiki New Site Design</title>
<id>tag:xahlee.org,2013-04-25:070633</id>
<updated>2013-04-25T00:06:33-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<h3>Emacswiki New Site Design</h3>

<p>Looks like emacswiki had a new site design.
⁖ <a class="sorc" href="http://www.emacswiki.org/emacs/DiredPlus" data-accessed="2013-04-24">http://www.emacswiki.org/emacs/DiredPlus</a></p>

<p>the new seems to be a downgrade for me.</p>

<p>now it's black on gray. Parts are gray on gray. Less readable than before.
〔☛ <a href="http://xahlee.info/js/web_design_gray_on_white.html">Web Design: Say No to Grey Text on White Background</a>〕</p>

<p>The older logo is much better. It was a real logo, with elements of art. The new, is just plain letters. 〔☛ <a href="http://xahlee.info/UnixResource_dir/logo_design.html">Purpose of Logo and Principle of Logo Design</a>〕</p>

<p>worst of all, the new site requires JavaScript. Without, you lose some rather significant CSS. This is quite odd.</p>

<figure>
<img src="i/emacs_community_logo.svg" alt="emacs community logo" />
<figcaption>emacs community logo, designed by <a class="sorc" href="http://www.emacswiki.org/emacs-se/DanielLundin" data-accessed="2013-04-24">Daniel Lundin</a>
</figcaption>
</figure>

<p>PS you can go back to the old.</p>

<ul>
<li><a class="sorc" href="http://www.emacswiki.org/emacs/2013-04-24?bootstrap=0" data-accessed="2013-04-25">http://www.emacswiki.org/emacs/2013-04-24?bootstrap=0</a>  old</li>
<li><a class="sorc" href="http://www.emacswiki.org/emacs/2013-04-24?bootstrap=1" data-accessed="2013-04-25">http://www.emacswiki.org/emacs/2013-04-24?bootstrap=1</a>  new</li>
</ul>

<p>but then, that means you must have cookies on.</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>Emacs: Finding Functions and Documentation Lookup</title>
<id>tag:xahlee.org,2013-04-24:061158</id>
<updated>2013-04-23T23:11:58-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>You can use <code class="elisp-ƒ">apropos-variable</code> and <code class="elisp-ƒ">apropos-value</code> to search. Updated: <a href="elisp_function_eval_and_doc_lookup.html">Emacs: Finding Functions and Documentation Lookup</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/8bxPnl-by9k" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_function_eval_and_doc_lookup.html" />
</entry>

<entry>
<title>ask emacs Tuesday</title>
<id>tag:xahlee.org,2013-04-23:182731</id>
<updated>2013-04-23T11:27:31-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>am running ask emacs Tuesday, on g+ and twitter. Me at your service.</p>

<p>also, updated. <a href="elisp_universal_argument.html">Emacs Lisp: Writing Command to Accept universal-argument</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/pR3Qyg_6HqU" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_universal_argument.html" />
</entry>

<entry>
<title>Emacs: Power of Icicles</title>
<id>tag:xahlee.org,2013-04-22:171924</id>
<updated>2013-04-22T10:19:24-07:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/emacs_power_of_icicles.html">Emacs: Power of Icicles</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ibKwtb6jlYY" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_power_of_icicles.html" />
</entry>

<entry>
<title>RMS learns about tabs</title>
<id>tag:xahlee.org,2013-04-22:140100</id>
<updated>2013-04-22T07:01:00-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<blockquote><a class="sorc" href="https://twitter.com/tpope" data-accessed="2013-04-22">Tim Pope</a>, <time>2013-04-14</time>
<p>In which Richard Stallman learns what “tabs” are and contemplates adding them to Emacs <a class="sorc" href="http://lists.gnu.org/archive/html/emacs-devel/2008-03/msg02254.html" data-accessed="2013-04-22">http://lists.gnu.org/archive/html/emacs-devel/2008-03/msg02254.html</a></p></blockquote>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/eW4RbU0zStg" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/eW4RbU0zStg/msg02254.html" />
<feedburner:origLink>http://lists.gnu.org/archive/html/emacs-devel/2008-03/msg02254.html</feedburner:origLink></entry>

<entry>
<title>master station: one thousand function keys</title>
<id>tag:xahlee.org,2013-04-21:173535</id>
<updated>2013-04-21T10:35:35-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="http://xahlee.info/kbd/i3/keyboard_station_one_thousand_function_keys_2012-08-10.jpg" alt="keyboard station one thousand function keys 2012-08-10" width="800" height="600" />
<figcaption>master station: one thousand function keys</figcaption>
</figure>

<p>detail: <a href="http://xahlee.info/kbd/keyboard_one_thousand_function_keys.html">Keyboard Master: One Thousand Function Keys</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/rkK9fRNjLDc" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/rkK9fRNjLDc/keyboard_one_thousand_function_keys.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_one_thousand_function_keys.html</feedburner:origLink></entry>

<entry>
<title>XML Nested Syntax vs Lisp Nested Syntax</title>
<id>tag:xahlee.org,2013-04-21:161522</id>
<updated>2013-04-21T09:15:22-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/comp/xml_nested_syntax_vs_lisp.html">XML Nested Syntax vs Lisp Nested Syntax</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/71GmyXu_4Vs" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/71GmyXu_4Vs/xml_nested_syntax_vs_lisp.html" />
<feedburner:origLink>http://xahlee.info/comp/xml_nested_syntax_vs_lisp.html</feedburner:origLink></entry>

<entry>
<title>Emacs Keybinding Syntax Examples</title>
<id>tag:xahlee.org,2013-04-21:021955</id>
<updated>2013-04-20T19:19:55-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. All the ways you can set keys. Emacs is all about keys. Set any command to any key you want. Set one key today! <a href="keyboard_shortcuts_examples.html">Emacs Keybinding Syntax Examples</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/C-XxUMUFCrU" height="1" width="1" /></div></content>
<link rel="alternate" href="keyboard_shortcuts_examples.html" />
</entry>

<entry>
<title>Emacs Keybinding Syntax Examples</title>
<id>tag:xahlee.org,2013-04-21:021936</id>
<updated>2013-04-20T19:19:36-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. All the ways you can set keys. Emacs is all about keys. Set any command to any key you want. Set one key today! <a href="keyboard_shortcuts_examples.html">Emacs Keybinding Syntax Examples</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/C-XxUMUFCrU" height="1" width="1" /></div></content>
<link rel="alternate" href="keyboard_shortcuts_examples.html" />
</entry>

<entry>
<title>adding tabbar, ruler, to emacs</title>
<id>tag:xahlee.org,2013-04-20:172145</id>
<updated>2013-04-20T10:21:45-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="i/emacs_tabbar_screenshot_2013-04-20.png" alt="emacs tabbar screenshot 2013-04-20" width="856" height="285" />
<figcaption>Emacs tabbar screenshot</figcaption>
</figure>

<p>updated. <a href="emacs_make_modern.html">How to Set Emacs's User Interface to Modern Conventions</a></p>
<p>thanks to <a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/l-u53rgfJtg" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_make_modern.html" />
</entry>

<entry>
<title>excursion. 2 hands pen-spinning, by yours truely.</title>
<id>tag:xahlee.org,2013-04-20:152518</id>
<updated>2013-04-20T08:25:18-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>excursion. 2 hands pen-spinning, by yours truely.</p>

<figure>
<iframe title="YouTube video player" class="youtube-player" width="640" height="385" src="http://www.youtube.com/embed/KMQLsqrODrE?rel=0" />
<figcaption>2 hands pen spinning.</figcaption>
</figure>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/6UBWS9MF_5Y" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/6UBWS9MF_5Y/watch" />
<feedburner:origLink>http://www.youtube.com/watch?v=KMQLsqrODrE</feedburner:origLink></entry>

<entry>
<title>solution: Emacs Bug: global-linum-mode Freeze Emacs on Big Image Files</title>
<id>tag:xahlee.org,2013-04-20:150701</id>
<updated>2013-04-20T08:07:01-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>yesterday i wrote about a bug. Now there's solution. See: <a href="../misc/linum-freeze_emacs.html">Emacs Bug: global-linum-mode Freeze Emacs on Big Image Files</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/L3VTimepDeA" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/linum-freeze_emacs.html" />
</entry>

<entry>
<title>Emacs Keybinding, Keyboard, RSI</title>
<id>tag:xahlee.org,2013-04-20:142111</id>
<updated>2013-04-20T07:21:11-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>new index page. All about <a href="emacs_keys_index.html">Emacs Keybinding, Keyboard, RSI</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Khriqp4ncTM" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_keys_index.html" />
</entry>

<entry>
<title>heart keyboard</title>
<id>tag:xahlee.org,2013-04-19:232114</id>
<updated>2013-04-19T16:21:14-07:00</updated>
<summary>news; fun</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<figure>
<img src="http://xahlee.info/kbd/i3/mark5_heart_keyboard_jesse_2013-04-19.jpg" alt="mark5 heart keyboard jesse 2013-04-19" width="1024" height="768" />
<figcaption>mark5 heart keyboard jesse <time>2013-04-19</time>.
<a class="sorc" href="http://www.flickr.com/photos/obra/8471300825/in/photostream/" data-accessed="2013-04-19">img source</a>
<a class="sorc" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" data-accessed="2013-04-19">img license</a>
</figcaption>
</figure>

<p><a href="http://xahlee.info/kbd/fancy_keyboards.html">more fancy keyboards</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vRWhP_xQvmg" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/vRWhP_xQvmg/fancy_keyboards.html" />
<feedburner:origLink>http://xahlee.info/kbd/fancy_keyboards.html</feedburner:origLink></entry>

<entry>
<title>Emacs Keybinding Syntax Examples</title>
<id>tag:xahlee.org,2013-04-19:232040</id>
<updated>2013-04-19T16:20:40-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="keyboard_shortcuts_examples.html">Emacs Keybinding Syntax Examples</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/C-XxUMUFCrU" height="1" width="1" /></div></content>
<link rel="alternate" href="keyboard_shortcuts_examples.html" />
</entry>

<entry>
<title>Emacs: How to Evaluate Emacs Lisp Code</title>
<id>tag:xahlee.org,2013-04-19:220527</id>
<updated>2013-04-19T15:05:27-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_eval_lisp_code.html">Emacs: How to Evaluate Emacs Lisp Code</a>. thanks to <a class="sorc" href="http://irreal.org/blog/" data-accessed="2013-04-19">jcs</a>.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Z7Uyz3JGCAA" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_eval_lisp_code.html" />
</entry>

<entry>
<title>Emacs Bug: linum-mode Freeze Emacs</title>
<id>tag:xahlee.org,2013-04-19:214645</id>
<updated>2013-04-19T14:46:45-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<h3>Emacs Bug: global-linum-mode Freeze Emacs on Big Image Files</h3>

<p><time>2013-04-19</time>, as of GNU Emacs 24.3.1, <code class="elisp-ƒ">global-linum-mode</code> will freeze emacs for about 10 minutes when opening a jpg file of 10 megabytes size.</p>

<p>GNU Emacs 24.3.1 (i686-pc-linux-gnu, GTK+ Version 2.24.10) of 2013-03-11 on xah-p6813w</p>

<p>steps to reproduce:</p>

<ol>
<li><code>(global-linum-mode 1)</code></li>
<li>open a jpg file of 5 megabytes file size.</li>
<li>emacs freezes.</li>
</ol>

<p>1 hour wasted on this.</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>xah-css-mode</title>
<id>tag:xahlee.org,2013-04-19:160713</id>
<updated>2013-04-19T09:07:13-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<h3>xah-css-mode</h3>

<p>wrote a CSS mode yesterday. 2 hours work, alpha stage, but works fine.</p>

<p>How's it diff from default CSS mode in emacs? This one is based on basic syntax coloring of CSS words only. This means, for example, if you typed <code>p {widh:65%}</code> where the “width” has a typo, you'll know because it won't be colored.</p>

<p>Right now it also supports coloring hex colors in hex format of this form <code>#fff8dc</code>. I plan to add coloring of forms such as <code>hsl(0,68%,42%)</code>. I plan to add keyword completion, independent of other add-ons.</p>

<p>download here:
<a class="sorc" href="https://code.google.com/p/ergoemacs/source/browse/packages/xah-css-mode.el" data-accessed="2013-04-19">https://code.google.com/p/ergoemacs/source/browse/packages/xah-css-mode.el</a></p>

<p>If you find a word that's not colored, please report it on the wiki there, or send me the line containing that CSS keyword, i'll add it.</p>

<div class="rltd"><ul>
<li><a href="emacs_html.html">Emacs HTML Tips</a></li>
<li><a href="emacs_CSS_colors.html">Emacs: Working with CSS Color Values</a></li>
<li><a href="http://xahlee.info/js/css_index.html">Xah's CSS Tutorial</a></li>
</ul></div>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/qv5-Bwo1jls" height="1" width="1" /></div></content>
<link rel="alternate" href="xah-css-mode.html" />
</entry>

<entry>
<title>Emacs: How to Define Super ＆ Hyper Keys</title>
<id>tag:xahlee.org,2013-04-17:215757</id>
<updated>2013-04-17T14:57:57-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_hyper_super_keys.html">Emacs: How to Define Super ＆ Hyper Keys</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/7eU7UF0MOgU" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_hyper_super_keys.html" />
</entry>

<entry>
<title>ErgoEmacs Keybinding Movement Feature</title>
<id>tag:xahlee.org,2013-04-12:163826</id>
<updated>2013-04-12T09:38:26-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<article>
<h3>ErgoEmacs Keybinding Movement Feature</h3>

<p>Matt has done a lot to ErgoEmacs keybinding. I haven't kept up with the features, but i'll blog as i learn. Here's one.</p>

<p>When you use any of the cursor movement keys, you can keep pressing movement key without holding down the <kbd>Alt</kbd>. For example, on QWERTY layout, press 【<kbd>Alt</kbd>+<kbd>j</kbd> <kbd>j</kbd>】, it'll move cursor to the left twice. You can turn this off by putting this in your init:</p>

<pre class="elisp">
<span class="comment-delimiter">;; </span><span class="comment">turn off ErgoEmacs repeat move without holding Alt feature
</span>(setq ergoemacs-repeat-movement-commands 'nil)

<span class="comment-delimiter">;; </span><span class="comment">set ErgoEmacs repeat movement. Example, on QWERTY, once you press any of 【Alt+i】 or 【Alt+j】 or 【Alt+k】 or 【Alt+l】, then any i j k l key will move cursor, no need to hold Alt anymore. Type any other key automatically exit.
</span>(setq ergoemacs-repeat-movement-commands 'all)

<span class="comment-delimiter">;; </span><span class="comment">set ErgoEmacs repeat move without holding Alt, but one key afterward. Example, on QWERTY, 【Alt+j j】 will move left twice
</span>(setq ergoemacs-repeat-movement-commands 'single)
</pre>

<p>You can read more about features, settings, on his repo at <a class="sorc" href="https://github.com/mlf176f2/ErgoEmacs/tree/master/ergoemacs/ergoemacs-keybindings" data-accessed="2013-04-12">https://github.com/mlf176f2/ErgoEmacs/tree/master/ergoemacs/ergoemacs-keybindings</a></p>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/4G66hpIX0rc" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/4G66hpIX0rc/ergoemacs-keybindings" />
<feedburner:origLink>https:/github.com/mlf176f2/ErgoEmacs/tree/master/ergoemacs/ergoemacs-keybindings</feedburner:origLink></entry>

<entry>
<title>FSF Spread FUD on Microsoft</title>
<id>tag:xahlee.org,2013-04-11:071749</id>
<updated>2013-04-11T00:17:49-07:00</updated>
<summary>opinion</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>may be offensive. <a href="http://xahlee.info/comp/fsf_spread_fud_on_Microsoft.html">FSF Spread FUD on Microsoft</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/L2QHm7f6BK0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/L2QHm7f6BK0/fsf_spread_fud_on_Microsoft.html" />
<feedburner:origLink>http://xahlee.info/comp/fsf_spread_fud_on_Microsoft.html</feedburner:origLink></entry>

<entry>
<title>emacs lisp is primitive</title>
<id>tag:xahlee.org,2013-04-11:014945</id>
<updated>2013-04-10T18:49:45-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>emacs lisp is so primitive. You have <code class="elisp-ƒ">sort</code>, but it can't sort vector, only list.</p>

<p>also, you can't have literals for hash.</p>

<p>and really lots primitive issues. Any of
<a href="http://xahlee.info/perl-python/perl_basics.html">Perl</a>,
<a href="http://xahlee.info/python/python3_basics.html">Python</a>,
<a href="http://xahlee.info/ruby/ruby_basics.html">Ruby</a>,
<a href="http://xahlee.info/js/javascript_basics.html">JavaScript</a>,
<a href="http://xahlee.info/php/php_basics.html">PHP</a>, beats emacs lisp easily.</p>

<p>the only hope for this to improve is waiting for Guile Scheme Lisp to takeover Elisp.
The talk has been on for perhaps a decade now. Last hopeful news i heard is about 2 years ago.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>zippy the pinhead</title>
<id>tag:xahlee.org,2013-04-10:080203</id>
<updated>2013-04-10T01:02:03-07:00</updated>
<summary>fun</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<article>
<h3>zippy the pinhead</h3>
<p>this one is old-school fun.</p>

<p>download this file
<a class="sorc" href="http://www.vim.org/scripts/script.php?script_id=2411" data-accessed="2013-04-09">http://www.vim.org/scripts/script.php?script_id=2411</a></p>

<p>rename the file and put this in your init:</p>

<pre class="elisp">
(setq yow-file <span class="string">"~/.emacs.d/zippy_pinhead_quotes.txt"</span> )</pre>

<p>now, open that file, trim out the header and tail. So, the first line should be “Zippy the pinhead data base.” and last line should be the line about “synapses”.</p>

<p>Now, in emacs, call <code class="elisp-ƒ">yow</code>, and a zippism will show. To insert, call <code class="elisp-ƒ">universal-argument</code> 【<kbd>Ctrl</kbd>+<kbd>u</kbd>】 first.</p>

<p>(via <a class="sorc" href="https://plus.google.com/u/0/b/113859563190964307534/113728724850698214583/posts" data-accessed="2013-04-09">George Jones</a>)</p>

<p>some digging… the zippy quote were deleted out of copyright concerns, in emacs 22. <a class="sorc" href="http://lists.gnu.org/archive/html/emacs-devel/2006-06/msg00290.html" data-accessed="2013-04-10">http://lists.gnu.org/archive/html/emacs-devel/2006-06/msg00290.html</a>﻿</p>

<p>if you don't know, it's a old (1970s) comics. <a href="http://en.wikipedia.org/wiki/Zippy_the_Pinhead">Zippy the Pinhead</a>. See also: <a href="http://xaharts.org/va/crumb.html">Art of Robert Crumb</a>.</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>Emacs: How to Make Ctrl+x Easier to Type on Dvorak Keyboard</title>
<id>tag:xahlee.org,2013-04-10:070046</id>
<updated>2013-04-10T00:00:46-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>more update. <a href="emacs_dvorak_C-x.html">Emacs: How to Make Ctrl+x Easier to Type on Dvorak Keyboard</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Mpe4v0-5Xj0" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_dvorak_C-x.html" />
</entry>

<entry>
<title>Keyboard Hardware Design Flaws</title>
<id>tag:xahlee.org,2013-04-10:063223</id>
<updated>2013-04-09T23:32:23-07:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="http://xahlee.info/kbd/keyboard_problems.html">Keyboard Hardware Design Flaws</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/T9clA81UiRM" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/T9clA81UiRM/keyboard_problems.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_problems.html</feedburner:origLink></entry>

<entry>
<title>emacs tips for fullscreen or multi-window</title>
<id>tag:xahlee.org,2013-04-09:095759</id>
<updated>2013-04-09T02:57:59-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>for those of you who prefer running emacs in max/fullscreen: <a href="emacs_winner_mode.html">Emacs: Managing Split-Window Config</a></p>

<p>for those of you who prefer multiple non-fullscreen windows. <a href="../misc/emacs_one_max_window_vs_multi_smaller_window.html">Emacs: Full-Screen vs Multiple Window</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/_BUwjKPWUmI" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_one_max_window_vs_multi_smaller_window.html" />
</entry>

<entry>
<title>Emacs 24.3 Elisp Macro Speedup</title>
<id>tag:xahlee.org,2013-04-08:080222</id>
<updated>2013-04-08T01:02:22-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<h3>Emacs 24.3 Elisp Macro Speedup</h3>
<p>emacs 24.3 made elisp code much faster. Quote:</p>

<blockquote>
<p>** Emacs tries to macroexpand interpreted (non-compiled) files during load.</p>

<p>This can significantly speed up execution of non-byte-compiled code, but can also bump into previously unnoticed cyclic dependencies. These are generally harmless: they will simply cause the macro calls to be left for later expansion (as before), but will result in a warning (“Eager macro-expansion skipped due to cycle”) describing the cycle. You may wish to restructure your code so this does not happen.</p>
</blockquote>

<p>Dmitry Gutov wrote a nice article that shows the speed increase: 〔<cite>Emacs 24.3's Killer Feature: Eager Macro-Expansion</cite> <time>2013-04-07</time> By Dmitry Gutov. @ <a class="sorc" href="http://dgutov.github.io/blog/2013/04/07/emacs-24-dot-3-s-killer-feature-eager-macro-expansion/" data-accessed="2013-04-07">dgutov.github.io…</a>〕</p>

<p>It's a bit deep. If you code elisp, you should read it. If you don't code elisp, here's the gist:</p>

<ul>
<li>Before emacs 23.3, byte-compiled file is about 6 or 10 times faster for loading and also execution</li>
<li>After emacs 23.3, byte-compiled seems just twice as fast.</li>
</ul>

<p>via <a class="sorc" href="https://plus.google.com/101505495157778834572/posts" data-accessed="2013-04-07">Andrew Hyatt</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/k0fzDDYrdFE" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/k0fzDDYrdFE/" />
<feedburner:origLink>http://dgutov.github.io/blog/2013/04/07/emacs-24-dot-3-s-killer-feature-eager-macro-expansion/</feedburner:origLink></entry>

<entry>
<title>Emacs 24 Copy Directory Change</title>
<id>tag:xahlee.org,2013-04-08:051419</id>
<updated>2013-04-07T22:14:19-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/emacs_24_copy-directory_change.html">Emacs 24 Copy Directory Change</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/QHT943vgAoQ" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_24_copy-directory_change.html" />
</entry>

<entry>
<title>banish key chords</title>
<id>tag:xahlee.org,2013-04-07:220050</id>
<updated>2013-04-07T15:00:50-07:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>rewrote a previous article. Now on its own. This is useful for keyboard freaks only. <a href="http://xahlee.info/kbd/banish_key_chords.html">Banish Key Chords</a>.  See also: <a href="http://xahlee.info/kbd/repeatable_vs_non-repeatable_keys_commands.html">Keyboard Shortcut Design: Repeatable vs Non-Repeatable Commands and Keys</a>.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vMRD1IKQ-Es" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/vMRD1IKQ-Es/banish_key_chords.html" />
<feedburner:origLink>http://xahlee.info/kbd/banish_key_chords.html</feedburner:origLink></entry>

<entry>
<title>no need to type space after comma</title>
<id>tag:xahlee.org,2013-04-07:090928</id>
<updated>2013-04-07T02:09:28-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>added this to my emacs. You type a comma, and a space is automatically added.</p>

<pre class="elisp">
(global-set-key (kbd <span class="string">","</span>) (<span class="keyword">lambda</span>() (interactive) (insert <span class="string">", "</span>)))</pre>

<p>it'll take a while to get used to.</p>

<p>idea pilfered from 〔<cite>Minimizing Keystrokes Required by Punctuation</cite> <time>2013-04-06</time> By Eric Crosson. @ <a class="sorc" href="http://ericscrosson.wordpress.com/2013/04/05/minimizing-keystrokes-required-by-punctuation/" data-accessed="2013-04-06">ericscrosson.wordpress.com…</a>〕</p>

<p>warning: he's saying nice things about me.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/c6iZkRRU2VQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/c6iZkRRU2VQ/" />
<feedburner:origLink>http://ericscrosson.wordpress.com/2013/04/05/minimizing-keystrokes-required-by-punctuation/</feedburner:origLink></entry>

<entry>
<title>Keybinding Efficiency: the Uselessness of Home/End, Page Up/Down</title>
<id>tag:xahlee.org,2013-04-07:005008</id>
<updated>2013-04-06T17:50:08-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>in the name of uber efficiency: <a href="emacs_key_combo.html">Keybinding Efficiency: the Uselessness of Home/End, Page Up/Down</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/1UtqYPhiq3Y" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_key_combo.html" />
</entry>

<entry>
<title>Tips on Long Term Emacs Productivity</title>
<id>tag:xahlee.org,2013-04-06:232112</id>
<updated>2013-04-06T16:21:12-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>worth repeating. <a href="effective_emacs.html">Tips on Long Term Emacs Productivity</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/pn2sQBD8r9U" height="1" width="1" /></div></content>
<link rel="alternate" href="effective_emacs.html" />
</entry>

<entry>
<title>ErgoEmacs setup tutorial</title>
<id>tag:xahlee.org,2013-04-06:081919</id>
<updated>2013-04-06T01:19:19-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>here's ErgoEmacs setup tutorial, by Sindikat: 〔<cite>ErgoEmacs tutorial</cite> <time>2012-13-03</time> By Sindikat. @ <a class="sorc" href="http://abstractnonsense.net/2013/ergoemacs-tutorial/" data-accessed="2013-04-06">abstractnonsense.net…</a>〕</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/hfVW2waCeN8" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/hfVW2waCeN8/" />
<feedburner:origLink>http://abstractnonsense.net/2013/ergoemacs-tutorial/</feedburner:origLink></entry>

<entry>
<title>ErgoEmacs new version</title>
<id>tag:xahlee.org,2013-04-05:233327</id>
<updated>2013-04-05T16:33:27-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<article>
<p>new version of <a href="ergonomic_emacs_keybinding.html">ErgoEmacs Keybinding</a> is out again. I'm happy to report that the current maintainer <a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a> has adopted a idea i suggested. Now, “all” of chorded keys has a non-chorded replacement! You can press them by pressing <kbd>▤ Menu</kbd> key first. Here's the current keys:</p>

<pre class="elisp">
<span class="comment-delimiter">;; </span><span class="comment">QWERTY used to indicate key position
</span>
(<span class="string">"&lt;menu&gt; g"</span> keyboard-quit <span class="string">"Quit"</span>)
(<span class="string">"&lt;menu&gt; j"</span> ergoemacs-ctl-c <span class="string">"Ctl-c"</span>)
(<span class="string">"&lt;menu&gt; u"</span> ergoemacs-ctl-c-unchorded <span class="string">"Ctl-c*span"</span>)
(<span class="string">"&lt;menu&gt; f"</span> ergoemacs-ctl-x <span class="string">"Ctl-x"</span>)

(<span class="string">"&lt;menu&gt; h"</span> ergoemacs-ctl-h <span class="string">"Ctl-h"</span>)
(<span class="string">"&lt;menu&gt; y"</span> ergoemacs-ctl-h-unchorded <span class="string">"Ctl-h*"</span>)
(<span class="string">"&lt;menu&gt; m"</span> ergoemacs-ctl-c-ctl-c <span class="string">"C-c C-c"</span>)
(<span class="string">"&lt;menu&gt; SPC"</span> set-mark-command <span class="string">"Set Mark"</span>)
</pre>

<p>The keys are position based, and QWERTY layout is used to indicate their position. That means, doesn't matter whether you are using <a href="http://xahlee.info/kbd/dvorak_and_all_keyboard_layouts.html">Dvorak, Colemak, Workman, Bépo, …</a>, you can just look at the labels on your keyboard for the right key. The keys may not be final. But Matt is the maintainer now, so, you'd have to ask him, for suggestions or code push. Also, i haven't been keeping up my documentation of it. I hope to fix it down the road. Another new layout support is Persian standard layout, contributed by Shahin Azad. (it also supports Workman layout. and quite a few others now.  You can see all layout supported in the menu 〖ErgoEmacs〗)</p>

<p>Matt also created a emacswiki page at <a class="sorc" href="http://www.emacswiki.org/emacs/ErgoemacsKeybindings" data-accessed="2013-04-05">http://www.emacswiki.org/emacs/ErgoemacsKeybindings</a>, <strike>so you can post there, ask for help, or help make it better</strike>. (Matt says that don't use the emacswiki for question, because it's automatically generated from info file.)</p>

<p>for why about the non-chorded keys, you might get a good idea from my notes here: <a href="emacs_keybinding_redesign_2.html">The Roadmap to Completely Replace Emacs's Key System, Part 2</a></p>

<p>i think this is really great, because for years i've been thinking how to resolve the cua-mode and emacs C-x issue. Now, i think this is the answer. The implementation is simple, and we don't need the complex hack of cua-mode anymore, and the traditional C-x are still there if one wanted, and the whole system is one step more efficient and ergonomic, even beats vi-like modes. (the main issue of vi's modal ways is that you need to constantly switch modes.)</p>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/XSvP-7Rfxys" height="1" width="1" /></div></content>
<link rel="alternate" href="ergonomic_emacs_keybinding.html" />
</entry>

<entry>
<title>show page break ^L as line</title>
<id>tag:xahlee.org,2013-04-04:145827</id>
<updated>2013-04-04T07:58:27-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<article>
<p>there's a great <code class="elisp-ƒ">page-break-lines-mode</code> by
<a class="sorc" href="https://github.com/purcell" data-accessed="2013-04-04">Steve Purcell</a>.
It displays FORM FEED char (^L) by a horizontal line.
The package is on MELPA. Call <code class="elisp-ƒ">list-packages</code> to install.
〔☛ <a href="emacs_package_system.html">A Guide on Emacs 24 Package System</a>〕</p>

<p>After you install, you need to specify which major modes it should activate. Like this:</p>

<pre class="elisp">
(setq page-break-lines-modes (quote (emacs-lisp-mode xah-elisp-mode compilation-mode fundamental-mode text-mode org-mode ruby-mode python-mode xah-html-mode html-mode nxml-mode)) )
</pre>

<p>this package is great because there are few others but interfere with <code class="elisp-ƒ">whitespace-mode</code> settings for some reason. 〔☛ <a href="whitespace-mode.html">How to Use and Setup Emacs's whitespace-mode</a>〕</p>

<div class="rltd">
<ul>
<li><a href="emacs_line_ending_char.html">Emacs: Newline Representations ^M ^J ^L</a></li>
<li><a href="keystroke_rep.html">Emacs's Key Notations Explained (/r, ^M, C-m, RET, &lt;return&gt;, M-, meta)</a></li>
<li><a href="modernization_formfeed.html">Emacs Form Feed (^L) Display Suggestion and Tips</a></li>
</ul>
</div>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>Emacs: Insert Parenthesis/Brackets by Pair</title>
<id>tag:xahlee.org,2013-04-04:135343</id>
<updated>2013-04-04T06:53:43-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_insert_brackets_by_pair.html">Emacs: Insert Parenthesis/Brackets by Pair</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WYel2euWoe4" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_insert_brackets_by_pair.html" />
</entry>

<entry>
<title>Lisp Logo Latte Art</title>
<id>tag:xahlee.org,2013-04-04:121459</id>
<updated>2013-04-04T05:14:59-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="lisp_logo_latte_art.html">Lisp Logo Latte Art</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/dRNDi-5zWFs" height="1" width="1" /></div></content>
<link rel="alternate" href="lisp_logo_latte_art.html" />
</entry>

<entry>
<title>Emacs: Use Alias to Increase Productivity</title>
<id>tag:xahlee.org,2013-04-02:204837</id>
<updated>2013-04-02T13:48:37-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_alias.html">Emacs: Use Alias to Increase Productivity</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/yfImfUBK7JA" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_alias.html" />
</entry>

<entry>
<title>IBM Model M keyboard, Unicomp</title>
<id>tag:xahlee.org,2013-04-02:030135</id>
<updated>2013-04-01T20:01:35-07:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>the classic mechanical keyboard. <a href="http://xahlee.info/kbd/keyboard_IBM_model_m_Unicomp.html">IBM Model M keyboard, Unicomp</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/wbXDsAzGZ0E" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/wbXDsAzGZ0E/keyboard_IBM_model_m_Unicomp.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_IBM_model_m_Unicomp.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Buffer Management</title>
<id>tag:xahlee.org,2013-04-01:010912</id>
<updated>2013-03-31T18:09:12-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>new. edited and on its own page. <a href="emacs_buffer_management.html">Emacs: Buffer Management</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Lcbbyi5J-uQ" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_buffer_management.html" />
</entry>

<entry>
<title>Emacs Lisp: Hotkeys to Open File Fast</title>
<id>tag:xahlee.org,2013-03-31:210417</id>
<updated>2013-03-31T14:04:17-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_hotkey_open_file_fast.html">Emacs Lisp: Hotkeys to Open File Fast</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WmKANJEHpgg" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_hotkey_open_file_fast.html" />
</entry>

<entry>
<title>Emacs: Open File Fast: recentf-mode</title>
<id>tag:xahlee.org,2013-03-31:064400</id>
<updated>2013-03-30T23:44:00-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>old tip. Now on its own page. <a href="emacs_recentf.html">Emacs: Open File Fast: recentf-mode</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/YU6vPd0wCtg" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_recentf.html" />
</entry>

<entry>
<title>emacs conference, live, right now</title>
<id>tag:xahlee.org,2013-03-30:182207</id>
<updated>2013-03-30T11:22:07-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>emacs conference. live. right now, Steve Yegge speaking thru video hangout. <a class="sorc" href="http://live.forwardtechnology.co.uk/" data-accessed="2013-03-30">http://live.forwardtechnology.co.uk/</a></p>

<p>here's the official website, with speaker schedule. <a class="sorc" href="http://emacsconf.org/" data-accessed="2013-03-30">http://emacsconf.org/</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/0WxY0moCM9o" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/0WxY0moCM9o/" />
<feedburner:origLink>http://live.forwardtechnology.co.uk/</feedburner:origLink></entry>

<entry>
<title>new version of emacs tutorial</title>
<id>tag:xahlee.org,2013-03-30:062828</id>
<updated>2013-03-29T23:28:28-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>a new version of my emacs tutorial is out.
<a href="buy_xah_emacs_tutorial.html">Buy Xah Emacs Tutorial</a>.
Thank you. For those who bought it before, i'm sending the new version out.
</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sseSEK-iIN4" height="1" width="1" /></div></content>
<link rel="alternate" href="buy_xah_emacs_tutorial.html" />
</entry>

<entry>
<title>todo list</title>
<id>tag:xahlee.org,2013-03-29:173517</id>
<updated>2013-03-29T10:35:17-07:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="i/todo_list_crossout_nothing.jpg" alt="todo list crossout nothing" width="500" height="376" />
<figcaption>source: <a href="http://en.wikipedia.org/wiki/SpongeBob_SquarePants">SpongeBob SquarePants</a> cartoon.</figcaption>
</figure>

<p>you can use <a href="emacs_outline.html">org-mode for todo</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/VRF4CMjLm3Q" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_outline.html" />
</entry>

<entry>
<title>Emacs: Copy/Cut Current Line If No Selection</title>
<id>tag:xahlee.org,2013-03-28:230307</id>
<updated>2013-03-28T16:03:07-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_copy_cut_current_line.html">Emacs: Copy/Cut Current Line If No Selection</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/H2PNznz7v8A" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_copy_cut_current_line.html" />
</entry>

<entry>
<title>Emacs Lisp: make-backup</title>
<id>tag:xahlee.org,2013-03-28:173120</id>
<updated>2013-03-28T10:31:20-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>tip from last year, now on its own page. <a href="elisp_make-backup.html">Emacs Lisp: make-backup</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/baEMiCxPFCM" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_make-backup.html" />
</entry>

<entry>
<title>Using Voice to Code Faster Than Keyboard &#x1f4fa;</title>
<id>tag:xahlee.org,2013-03-27:162820</id>
<updated>2013-03-27T09:28:20-07:00</updated>
<summary>video presentation</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="using_voice_to_code.html">Using Voice to Code Faster Than Keyboard &#x1f4fa;</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sHRi0D712RA" height="1" width="1" /></div></content>
<link rel="alternate" href="using_voice_to_code.html" />
</entry>

<entry>
<title>sacha chua interviews org-mode creator Carsten Dominik</title>
<id>tag:xahlee.org,2013-03-26:183741</id>
<updated>2013-03-26T11:37:41-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>sacha chua, the famous female emacs hacker, (video) interviews the org-mode creator Carsten Dominik. 1 hour long. Fun to watch.
<a class="sorc" href="http://sachachua.com/blog/2013/03/emacs-chat-carsten-dominik/" data-accessed="2013-03-26">http://sachachua.com/blog/2013/03/emacs-chat-carsten-dominik/</a></p>

<p>(via <a class="sorc" href="http://irreal.org/blog/?p=1823" data-accessed="2013-03-26">jcs</a>)</p>

<div class="rltd">
<ul>
<li><a href="emacs_outline.html">Emacs: org-mode Basics, Writing Outline</a></li>
</ul>
</div>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/G5rmMpHLT3g" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/G5rmMpHLT3g/" />
<feedburner:origLink>http://sachachua.com/blog/2013/03/emacs-chat-carsten-dominik/</feedburner:origLink></entry>

<entry>
<title>Short Summery of My Typing ＆ RSI Experience: 1992 〜 2013</title>
<id>tag:xahlee.org,2013-03-26:174556</id>
<updated>2013-03-26T10:45:56-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="xah_keyboarding_RSI_experience.html">Short Summery of My Typing ＆ RSI Experience: 1992 〜 2013</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/dD9umF6dkQo" height="1" width="1" /></div></content>
<link rel="alternate" href="xah_keyboarding_RSI_experience.html" />
</entry>

<entry>
<title>Emacs Lisp: Refactoring, Move Code to Files</title>
<id>tag:xahlee.org,2013-03-25:164908</id>
<updated>2013-03-25T09:49:08-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="elisp_move_code_to_files.html">Emacs Lisp: Refactoring, Move Code to Files</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Z-LTLRuGN0c" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_move_code_to_files.html" />
</entry>

<entry>
<title>Microsoft's new keyboard</title>
<id>tag:xahlee.org,2013-03-24:200940</id>
<updated>2013-03-24T13:09:40-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/kbd/Microsoft_Sculpt_Comfort_keyboard.html">Microsoft Sculpt Comfort Keyboard</a>. <kbd>Space</kbd> bar is now split into a <kbd>⌫ Backspace</kbd> key.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/B0r_Ah7DsDQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/B0r_Ah7DsDQ/Microsoft_Sculpt_Comfort_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/Microsoft_Sculpt_Comfort_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Emacs Project Poll 2013-03-23</title>
<id>tag:xahlee.org,2013-03-24:041400</id>
<updated>2013-03-23T21:14:00-07:00</updated>
<summary>poll</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/emacs_project_poll_2013-03-23.html">Emacs Project Poll 2013-03-23</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/hv99SiAihzM" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_project_poll_2013-03-23.html" />
</entry>

<entry>
<title>inline doc links to elisp manual</title>
<id>tag:xahlee.org,2013-03-23:161753</id>
<updated>2013-03-23T09:17:53-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<article>
<div class="date-α"><time>2013-03-23</time></div>

<p>Emacs 24 added a new feature. Some function's inline doc now has a link to elisp manual. For example, call <var class="εf">describe-variable</var> on “font-lock-defaults”. Excerpt:</p>

<pre class="output">
font-lock-defaults is a variable defined in `font-core.el'.

…

(See also Info node `(elisp)Font Lock Basics'.)

…</pre>

<p>see also <a href="emacs24_features.html">New Features in Emacs 24</a> and <a href="inline_doc.html">Emacs Lisp: Inline Docstring Markup</a>.</p>

<p>actually, not sure this is new in emacs 24. I sure hope every function's inline doc links to elisp manual.</p>

<p>anyhow, you could easily find the elisp doc yourself. See <a href="elisp_function_eval_and_doc_lookup.html">Emacs: Finding Functions and Documentation Lookup</a>. For elisp coders, you might define a advice so that <var class="εf">describe-function</var> will always have a link at bottom to elisp manual.</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Vxss4GM83Lc" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs24_features.html" />
</entry>

<entry>
<title>Tech Humor: Apache vs Node.js vs NGINX &#x1f4fa;</title>
<id>tag:xahlee.org,2013-03-23:041303</id>
<updated>2013-03-22T21:13:03-07:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/w/apache_nodejs_nginx.html">Tech Humor: Apache vs Node.js vs NGINX &#x1f4fa;</a> The relevance of lisp is the climax.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ZVKtz5wdu6M" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/ZVKtz5wdu6M/apache_nodejs_nginx.html" />
<feedburner:origLink>http://xahlee.info/w/apache_nodejs_nginx.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Writing a image-linkify Function</title>
<id>tag:xahlee.org,2013-03-22:195515</id>
<updated>2013-03-22T12:55:15-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>old page, one of my earliest tutorial in 2007, updated. <a href="elisp_image_tag.html">Emacs Lisp: Writing a image-linkify Function</a>. The updating process usually involves removing verbiage and self-appraisal, and removing learning thought-flow.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/8SRlAFmjtL8" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_image_tag.html" />
</entry>

<entry>
<title>Sublime Text 2 vs Vim</title>
<id>tag:xahlee.org,2013-03-21:232234</id>
<updated>2013-03-21T16:22:34-07:00</updated>
<summary>link</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>got a kick out of reading this. 〔<cite>Just Use Sublime Text “Sublime Text 2 vs Vim”</cite> <time>2013-03-16</time> By Andrew Ray. @ <a class="sorc" href="http://delvarworld.github.com/blog/2013/03/16/just-use-sublime-text/" data-accessed="2013-03-21">delvarworld.github.com…</a>〕</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/rkT67DYOZwA" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/rkT67DYOZwA/" />
<feedburner:origLink>http://delvarworld.github.com/blog/2013/03/16/just-use-sublime-text/</feedburner:origLink></entry>

<entry>
<title>Emacs Rocks on Paredit</title>
<id>tag:xahlee.org,2013-03-21:222517</id>
<updated>2013-03-21T15:25:17-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="../misc/emacs_rocks_paredit.html">Emacs Rocks on Paredit</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/xDA1qh4zfRw" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_rocks_paredit.html" />
</entry>

<entry>
<title>ErgoEmacs home page update and new build</title>
<id>tag:xahlee.org,2013-03-21:183223</id>
<updated>2013-03-21T11:32:23-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>slighly updated the home page of ErgoEmacs at <a href="../index.html">ErgoEmacs</a>.
Window programing guru <a class="sorc" href="http://www.davidcapello.com.ar/" data-accessed="2012-09-21">David Capello</a> recently created a new build of ErgoEmacs app for Microsoft Windows. The download link is at the home page, or here <a class="sorc" href="https://code.google.com/p/ergoemacs/downloads/list" data-accessed="2013-03-21">https://code.google.com/p/ergoemacs/downloads/list</a>.
</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/k1Qgy_v5_6o" height="1" width="1" /></div></content>
<link rel="alternate" href="../index.html" />
</entry>

<entry>
<title>Xah Emacs Tutorial, minor new look</title>
<id>tag:xahlee.org,2013-03-21:075319</id>
<updated>2013-03-21T00:53:19-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>got a facelift. <a href="emacs.html">Xah Emacs Tutorial</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/_ewYgC2byXQ" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs.html" />
</entry>

<entry>
<title>Commodore 64 keyboard</title>
<id>tag:xahlee.org,2013-03-21:075211</id>
<updated>2013-03-21T00:52:11-07:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>added a photo of Commodore 64 keyboard. <a href="http://xahlee.info/kbd/keyboard_ctrl_vs_capslock_position.html">Keyboard: Control vs Capslock Position</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/UocW2x-ALP0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/UocW2x-ALP0/keyboard_ctrl_vs_capslock_position.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_ctrl_vs_capslock_position.html</feedburner:origLink></entry>

<entry>
<title>emacs: open file in external app</title>
<id>tag:xahlee.org,2013-03-21:000530</id>
<updated>2013-03-20T17:05:30-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="emacs_dired_open_file_in_ext_apps.html">Emacs Dired: Open File in External App</a>.  Code updated recently. If you've copied this code before, be sure to update.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/PK40OdDaMx8" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_dired_open_file_in_ext_apps.html" />
</entry>

<entry>
<title>Unicode rhapsody: symbols to represent “emacs lisp”</title>
<id>tag:xahlee.org,2013-03-18:135702</id>
<updated>2013-03-18T06:57:02-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<div class="date-α"><time>2013-03-18</time></div>

<h3>Unicode Rhapsody: Symbols to Represent “emacs lisp”</h3>

<p>for Unicode freaks. Found symbols to represent emacs lisp <mark class="unicode">ε</mark> <mark class="unicode">ℓ</mark>. In normal text, it looks like this “εℓ”. Depending on what browser and OS you are using, it may look beautiful or ugly. Alternatively, use scripted “e” <mark class="unicode">ℯ</mark>. ⁖ ℯℓ.</p>

<p>the best way to setup to type them is emacs abbrev system.
(☛ <a href="emacs_abbrev_mode.html">Using Emacs's Abbrev Mode for Abbreviation</a>)
So, when you type “el”, it automatically becomes “εℓ”.
(you can see my current abbrevs at <a class="sorc" href="https://github.com/xahlee/xah_emacs_init" data-accessed="2013-03-18">https://github.com/xahlee/xah_emacs_init</a>. (it changes about every week.))
</p>

<p>likewise, “ε” can represent “emacs” in a pinch, if you want your writing to become cryptic and symbolic logic like, like i do. &#x1f60e;</p>

<p>though, i can't help but feel something is missing. the scripted “el” is kinda boring. Maybe we need to add a gnu head or something?  Though, there's no gnu but ox and water buffalo and ram and goat.  (☛ <a href="http://xahlee.info/comp/unicode_animals.html">Unicode Animal ＆ Insect Icons &#x1f42d; &#x1f42e; &#x1f40d; &#x1f435; &#x1f41e;</a>) </p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/jDw5-onN39o" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_abbrev_mode.html" />
</entry>

<entry>
<title>How to Write a Emacs Major Mode for Syntax Coloring</title>
<id>tag:xahlee.org,2013-03-18:132040</id>
<updated>2013-03-18T06:20:40-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_syntax_coloring.html">How to Write a Emacs Major Mode for Syntax Coloring</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sSQj_l_LhE0" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_syntax_coloring.html" />
</entry>

<entry>
<title>Emacs Lisp “defvar” Doesn't Override</title>
<id>tag:xahlee.org,2013-03-18:123313</id>
<updated>2013-03-18T05:33:13-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="elisp_defvar_problem.html">Emacs Lisp “defvar” Doesn't Override</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/9O-mTWdxb2I" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_defvar_problem.html" />
</entry>

<entry>
<title>roller bar pointing device</title>
<id>tag:xahlee.org,2013-03-17:140454</id>
<updated>2013-03-17T07:04:54-07:00</updated>
<summary>review</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>new fancy pointing device. <a href="http://xahlee.info/kbd/contour_roller_mouse.html">Contour Roller Mouse</a>.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/B1weGHAHG00" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/B1weGHAHG00/contour_roller_mouse.html" />
<feedburner:origLink>http://xahlee.info/kbd/contour_roller_mouse.html</feedburner:origLink></entry>

<entry>
<title>elisp home page redesign</title>
<id>tag:xahlee.org,2013-03-17:133555</id>
<updated>2013-03-17T06:35:55-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article><p>elisp home page got a facelift. <a href="elisp.html">Xah Emacs Lisp Tutorial</a></p>

<p>the design is flow based. Am not fond of fixed-layout.
(☛ <a href="http://xahlee.info/js/fixed-layout_flowed-layout.html">Web Design: Fixed-Layout vs Flowed-Layout</a>)
If you are learning CSS, checkout <a href="http://xahlee.info/js/css_index.html">CSS Tutorial</a>.</p>
</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Pkn7YMzr5rA" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp.html" />
</entry>

<entry>
<title>Annoying Invisible ZERO WIDTH NO-BREAK SPACE Character from Google Plus, Twitter</title>
<id>tag:xahlee.org,2013-03-16:203206</id>
<updated>2013-03-16T13:32:06-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="http://xahlee.info/comp/invisible_BOM_char_from_Google_site.html">Annoying Invisible ZERO WIDTH NO-BREAK SPACE Character from Google Plus, Twitter</a> and how to use elisp to solve the problem.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/W0BGC1bWy34" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/W0BGC1bWy34/invisible_BOM_char_from_Google_site.html" />
<feedburner:origLink>http://xahlee.info/comp/invisible_BOM_char_from_Google_site.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: update-title</title>
<id>tag:xahlee.org,2013-03-16:120529</id>
<updated>2013-03-16T05:05:29-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="elisp_update-html-title.html">Emacs Lisp: update-title</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ug5KzeCVz_Q" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_update-html-title.html" />
</entry>

<entry>
<title>Emacs Lisp: delete-current-file</title>
<id>tag:xahlee.org,2013-03-15:130830</id>
<updated>2013-03-15T06:08:30-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="elisp_delete-current-file.html">Emacs Lisp: delete-current-file</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ejjzyrVancM" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_delete-current-file.html" />
</entry>

<entry>
<title>TypeMatrix Keyboard Review</title>
<id>tag:xahlee.org,2013-03-15:111219</id>
<updated>2013-03-15T04:12:19-07:00</updated>
<summary>keyboard</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/kbd/TypeMatrix_keyboard_review.html">TypeMatrix Keyboard Review</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/NlKu_Z61XEY" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/NlKu_Z61XEY/TypeMatrix_keyboard_review.html" />
<feedburner:origLink>http://xahlee.info/kbd/TypeMatrix_keyboard_review.html</feedburner:origLink></entry>

<entry>
<title>Docstring Convention: Python vs Emacs Lisp</title>
<id>tag:xahlee.org,2013-03-15:075443</id>
<updated>2013-03-15T00:54:43-07:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/comp/python_vs_elisp_docstring_convention.html">Docstring Convention: Python vs Emacs Lisp</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Qxci8MVfoSE" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/Qxci8MVfoSE/python_vs_elisp_docstring_convention.html" />
<feedburner:origLink>http://xahlee.info/comp/python_vs_elisp_docstring_convention.html</feedburner:origLink></entry>

<entry>
<title>new version of ErgoEmacs keybinding</title>
<id>tag:xahlee.org,2013-03-14:133015</id>
<updated>2013-03-14T06:30:15-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>new version of
<a href="ergonomic_emacs_keybinding.html">ErgoEmacs Keybinding</a>
is out, by one advanced emacs lisp hacker
Matthew L Fidler. He fixed lots hard problems and adding features.
You can get a idea what's been fixed/added here:
<a class="sorc" href="https://code.google.com/p/ergoemacs/source/list" data-accessed="2013-03-14">https://code.google.com/p/ergoemacs/source/list</a>.
You can also see his other emacs lisp projects here:
<a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a>
</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/XSvP-7Rfxys" height="1" width="1" /></div></content>
<link rel="alternate" href="ergonomic_emacs_keybinding.html" />
</entry>

<entry>
<title>Should You Type Space After Comma? and Tiny Space Bar on Japanese Keyboards</title>
<id>tag:xahlee.org,2013-03-14:111755</id>
<updated>2013-03-14T04:17:55-07:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/kbd/tiny_space_bar_japanese_keyboard.html">Should You Type Space After Comma? and Tiny Space Bar on Japanese Keyboards</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/88QTnj9bmwY" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/88QTnj9bmwY/tiny_space_bar_japanese_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/tiny_space_bar_japanese_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Python 2to3 Wrapper</title>
<id>tag:xahlee.org,2013-03-13:035631</id>
<updated>2013-03-12T20:56:31-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>on its own page. <a href="elisp_python_2to3.html">Emacs Lisp: Python 2to3 Wrapper</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WdkmVdX_UZE" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_python_2to3.html" />
</entry>

<entry>
<title>emacs 24.3 execute-extended-command in elisp</title>
<id>tag:xahlee.org,2013-03-12:143210</id>
<updated>2013-03-12T07:32:10-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<div class="date-α"><time>2013-03-12</time></div>

<p>in emacs 24.3, now <var class="εf">execute-extended-command</var> is now written in elisp, not C code. You can see the lisp code by calling <var class="εf">describe-function</var>.  The emacs 24.3 release notes didn't mention this. This change is made by Aaron S Hawley. Thanks Aaron.</p>

<ul>
<li><cite>Extending M-x in Emacs</cite> <time>2010-04-27</time> By Aaron S Hawley. @ <a class="sorc" href="http://aaronhawley.livejournal.com/26901.html" data-accessed="2013-03-12">aaronhawley.livejournal.com…</a></li>
<li><cite>Coding Emacs's M-x in Lisp</cite> <time>2009-09-08</time> By Aaron S Hawley. @ <a class="sorc" href="http://aaronhawley.livejournal.com/27573.html" data-accessed="2013-03-12">aaronhawley.livejournal.com…</a></li>
</ul>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/oLB_MYuvWHA" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/oLB_MYuvWHA/26901.html" />
<feedburner:origLink>http://aaronhawley.livejournal.com/26901.html</feedburner:origLink></entry>

<entry>
<title>new features in emacs 24.3</title>
<id>tag:xahlee.org,2013-03-11:204524</id>
<updated>2013-03-11T13:45:24-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<div class="date-α"><time>2013-03-11</time></div>

<p>One great new feature of emacs 24.3:</p>

<p>when you isearch a phrase (⁖ “some thing”) and if the 2 words happens to hard-wrapped into 2 lines, it'll still find it. In other words, emacs added a feature in isearch such that space can stand for a sequence of whitespaces.</p>

<p>This problem has been bugging me before, and i deeply blame it to the damages unix has done to computing. (☛ <a href="http://xahlee.info/UnixResource_dir/writ/hard-wrap.html">Programing: the Harm of Hard-wrapping Lines</a>) But at least now emacs works-around it.</p>

<p>you can read more about this feature by calling <var class="εf">view-emacs-news</var> then search for “isearch”.</p>

<p>Mickey of “Mastering Emacs” wrote a easy-to-understand doc of what's new in emacs 24.3. Check it out. 〔<cite>WHAT'S NEW IN EMACS 24.3</cite> <time>2013-03-11</time> By Mickey Petersen. @ <a class="sorc" href="http://www.masteringemacs.org/articles/2013/03/11/whats-new-emacs-24-3/" data-accessed="2013-03-11">www.masteringemacs.org…</a>〕</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/mMiG8yDAydQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/mMiG8yDAydQ/" />
<feedburner:origLink>http://www.masteringemacs.org/articles/2013/03/11/whats-new-emacs-24-3/</feedburner:origLink></entry>

<entry>
<title>Truly ErgoEmacs keyboard photo</title>
<id>tag:xahlee.org,2013-03-11:183124</id>
<updated>2013-03-11T11:31:24-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>a friend just got the Truly Ergonomic keyboard. Photo at <a class="sorc" href="http://www.flickr.com/photos/to1ne/8549811926/" data-accessed="2013-03-11">http://www.flickr.com/photos/to1ne/8549811926/</a></p>

<p>if you gonna buy it, let me know too! Also, tell them Xah send you. Thanks.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/z6izZO4KO7s" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/z6izZO4KO7s/" />
<feedburner:origLink>http://www.flickr.com/photos/to1ne/8549811926/</feedburner:origLink></entry>

<entry>
<title>emacs 24.3 released</title>
<id>tag:xahlee.org,2013-03-11:082621</id>
<updated>2013-03-11T01:26:21-07:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<div class="date-α"><time>2013-03-11</time></div>

<p>emacs 24.3 is out. Download at:</p>

<ul>
<li><a class="sorc" href="http://ftp.gnu.org/gnu/emacs/emacs-24.3.tar.xz" data-accessed="2013-03-11">http://ftp.gnu.org/gnu/emacs/emacs-24.3.tar.xz</a></li>
<li><a class="sorc" href="http://ftp.gnu.org/gnu/emacs/emacs-24.3.tar.gz" data-accessed="2013-03-11">http://ftp.gnu.org/gnu/emacs/emacs-24.3.tar.gz</a></li>
</ul>

<p>release notes: <a class="sorc" href="http://www.gnu.org/software/emacs/NEWS.24.3" data-accessed="2013-03-11">http://www.gnu.org/software/emacs/NEWS.24.3</a></p>

<p>if you don't know how to compile on linux, see
<a href="building_emacs_on_linux.html">Building Emacs on Linux — a Guide</a></p>
</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/K6q-mTIieJg" height="1" width="1" /></div></content>
<link rel="alternate" href="building_emacs_on_linux.html" />
</entry>

<entry>
<title>unicode symbols JavaScript app</title>
<id>tag:xahlee.org,2013-03-10:143454</id>
<updated>2013-03-10T07:34:54-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>wrote a JavaScript app. Go to any Unicode gallery here: <a href="http://xahlee.info/comp/unicode_index.html">Unicode Symbology ☸ ⚕ ☯ ∑ ∞ © § ♀ ♂ ♥ ☺</a>.  Mouse hover or click on a character to see its Unicode name.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/5w3rRmBOwqs" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/5w3rRmBOwqs/unicode_index.html" />
<feedburner:origLink>http://xahlee.info/comp/unicode_index.html</feedburner:origLink></entry>

<entry>
<title>Emacs: Rename Files Interactively by Pattern (regex; wdired)</title>
<id>tag:xahlee.org,2013-03-10:140900</id>
<updated>2013-03-10T07:09:00-07:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>very useful, if you haven't used yet. <a href="rename_file_pattern.html">Emacs: Rename Files Interactively by Pattern (regex; wdired)</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/dFh7mbr1OSQ" height="1" width="1" /></div></content>
<link rel="alternate" href="rename_file_pattern.html" />
</entry>

<entry>
<title>keyboard layouts fight: qwpry entered the fray</title>
<id>tag:xahlee.org,2013-03-09:113046</id>
<updated>2013-03-09T03:30:46-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<div class="date-α"><time>2013-03-09</time></div>

<p>on the keyboard layout front, there's a new layout, the qwpr. See <a href="http://xahlee.info/kbd/qwpr_keyboard_layout.html">qwpr Keyboard Layout</a></p>

<p>also, the Workman layout has vastly improved home page, plus now a forum. <a class="sorc" href="http://www.workmanlayout.com/" data-accessed="2013-03-09">http://www.workmanlayout.com/</a></p>

<p>if you are not familiar with all these, see: <a href="http://xahlee.info/kbd/dvorak_and_all_keyboard_layouts.html">Keyboard Layouts Fight! Dvorak, Maltron, Colemak, NEO, Bépo, Turkish-F, …</a> (updated with images)</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/ukpZEOJ9lHo" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/ukpZEOJ9lHo/qwpr_keyboard_layout.html" />
<feedburner:origLink>http://xahlee.info/kbd/qwpr_keyboard_layout.html</feedburner:origLink></entry>

<entry>
<title>emacs global-set-key macro bug.</title>
<id>tag:xahlee.org,2013-03-09:091633</id>
<updated>2013-03-09T01:16:33-08:00</updated>
<summary>emacs bug</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<p>emacs global-set-key macro bug.</p>

<p>The following doesn't work.</p>

<pre class="elisp">
(global-set-key (kbd <span class="string">"&lt;menu&gt; u SPC"</span>) <span class="string">" "</span>) <span class="comment-delimiter">; </span><span class="comment">insert non-breaking space</span></pre>

<p>but this works:</p>

<pre class="elisp">
(global-set-key (kbd <span class="string">"&lt;menu&gt; u SPC"</span>) (<span class="keyword">lambda</span> () (interactive) (insert <span class="string">" "</span>))) <span class="comment-delimiter">; </span><span class="comment">insert non-breaking space</span></pre>

<p>GNU Emacs 24.2.1 (i686-pc-linux-gnu, GTK+ Version 2.24.10) of 2013-02-04 on xah-p6813w
ErgoEmacs distribution 2.0.0</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>vc-annotate</title>
<id>tag:xahlee.org,2013-03-07:154653</id>
<updated>2013-03-07T07:46:53-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>learned a great command <var class="εf">vc-annotate</var> from Jon's blog. See:〔<cite>vc-annotate</cite> <time>2013-03-07</time> By jcs. @ <a class="sorc" href="http://irreal.org/blog/?p=1769" data-accessed="2013-03-07">irreal.org…</a>〕</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/6s56fiaE1y8" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/6s56fiaE1y8/" />
<feedburner:origLink>http://irreal.org/blog/?p=1769</feedburner:origLink></entry>

<entry>
<title>Emacs: Personal Keybinding, Habit, Muscle Memory, Incompatible Key Sets</title>
<id>tag:xahlee.org,2013-03-06:064548</id>
<updated>2013-03-05T22:45:48-08:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>Emacs: Personal Keybinding, Habit, Muscle Memory, Incompatible Key Sets</h3>

<p>when you use your personal key for about 2 months, it becomes muscle memory. Just as people who work among {Windows, Mac, Linux}, or switch between {emacs/bash, browser, photoshop}.</p>

<p>you'd unconsciously learn to adopt the different systems. Though, sometimes some error key press still happen. e.g. on the Mac, emacs copy 【<kbd>Alt</kbd>+<kbd>w</kbd>】 is prone to close a window — very painful. So, when i used to use default emacs keys, i developed a habit to copy by 【<kbd>⎋ Esc</kbd> <kbd>w</kbd>】.</p>

<p>ideally, all systems should use the same key system, but that's ideal. haha.</p>

<p>sometimes i read people who reviewed ErgoEmacs keybinding and liked it, but is reserved about using it, because it's another set to learn, creating clash with bash. But the fact is, one already is exposed to so many different systems, one just adopt. (btw, current version of ErgoEmacs can generate keysets for bash or AutoHotkey.)</p>

<p>even web browser, doesn't agree on keys, within the same OS. e.g the keys to switch tabs is different on different browser, and few others. Same browser on diff OS also disagree on keys. ⁖ in Chrome, go back is <kbd>⌫ Backspace</kbd> on Windows, but 【<kbd>Alt</kbd>+<kbd>←</kbd>】 in Linux.</p>

<p>then, even KDE and Gnome don't agree on many keys. What can you do?</p>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>Google plus and twitter</title>
<id>tag:xahlee.org,2013-03-06:063403</id>
<updated>2013-03-05T22:34:03-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>i post frequently on Google Plus at <a class="sorc" href="https://plus.google.com/113859563190964307534/" data-accessed="2013-03-05">ErgoEmacs</a>. I like g+. It's very convenient for small tips and chat. So, you might give it a try.
Also, i use twitter. Emacs related are posted to <a class="sorc" href="https://twitter.com/ErgoEmacs" data-accessed="2013-03-05">ErgoEmacs</a>. So, if you want to quick contact or ask questions, follow. Thanks.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Vr6qppKwvdk" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/Vr6qppKwvdk/" />
<feedburner:origLink>https:/plus.google.com/113859563190964307534/</feedburner:origLink></entry>

<entry>
<title>emacs trick: delete-indentation</title>
<id>tag:xahlee.org,2013-03-04:224447</id>
<updated>2013-03-04T14:44:47-08:00</updated>
<summary>tip</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>emacs. learned this new trick. <var class="εf">delete-indentation</var>. default key is 【<kbd>Alt</kbd>+<kbd>^</kbd>】. Seems it'll be very useful.  (thx to <a class="sorc" href="https://plus.google.com/114120249105253063821/posts" data-accessed="2013-03-04">Alexander Gallego</a>)</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/CJyRZWWGcrU" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/CJyRZWWGcrU/posts" />
<feedburner:origLink>https:/plus.google.com/114120249105253063821/posts</feedburner:origLink></entry>

<entry>
<title>symbology</title>
<id>tag:xahlee.org,2013-03-03:115319</id>
<updated>2013-03-03T03:53:19-08:00</updated>
<summary>Unicode news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><b class="b1">u ♥ (λ ∨ ∑)? &#x1f440; &#x1d530;&#x1d536;&#x1d52a;&#x1d51f;&#x1d52c;&#x1d529;&#x1d52c;&#x1d524;&#x1d536;</b> @ <a href="http://xahlee.info/comp/blog.html">Xah's Programing Blog</a>.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/76HuKL08pTI" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/76HuKL08pTI/blog.html" />
<feedburner:origLink>http://xahlee.info/comp/blog.html</feedburner:origLink></entry>

<entry>
<title>all i ever wanted to know about keyboard, i didn't learn in kindergarten</title>
<id>tag:xahlee.org,2013-03-03:110713</id>
<updated>2013-03-03T03:07:13-08:00</updated>
<summary>gallery</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>all i ever wanted to know about keyboard, i didn't learn in kindergarten.  Three hundred fourty images of keyboards.  <a href="http://xahlee.info/kbd/keyboard_image_index.html">Keyboard Image Index</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/FBDbp5uxuEY" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/FBDbp5uxuEY/keyboard_image_index.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_image_index.html</feedburner:origLink></entry>

<entry>
<title>Apple Computer Keyboards Review</title>
<id>tag:xahlee.org,2013-03-02:024157</id>
<updated>2013-03-01T18:41:57-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="http://xahlee.info/kbd/tn/i/kb/Apple_iMac_Keyboard_A1242.jpg" alt="Apple iMac Keyboard A1242" width="297" height="135" />
<figcaption>
updated.
<a href="http://xahlee.info/kbd/keyboards_Apple.html">Apple Computer Keyboards Review</a>
</figcaption>
</figure>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/AkTgAJLN9N8" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/AkTgAJLN9N8/keyboards_Apple.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboards_Apple.html</feedburner:origLink></entry>

<entry>
<title>emacs packages update: xmsi-mode, ergoemacs-mode</title>
<id>tag:xahlee.org,2013-03-02:014946</id>
<updated>2013-03-01T17:49:46-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<p>lots more update: <a href="xmsi-math-symbols-input.html">Emacs Unicode Math Symbols Input Mode (xmsi-mode)</a>. You can get it either by sending me $3 paypal (to xah@xahlee.org) or on ErgoEmacs repository.</p>

<p>also, there's more updates and fixes and features on the <a href="ergonomic_emacs_keybinding.html">ErgoEmacs Keybinding</a> minor mode, by <a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a>. Get it on MELPA.</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/p82LmKdwuj4" height="1" width="1" /></div></content>
<link rel="alternate" href="xmsi-math-symbols-input.html" />
</entry>

<entry>
<title>Kinesis has a new generation of their split keyboard, Freestyle 2.</title>
<id>tag:xahlee.org,2013-03-01:091029</id>
<updated>2013-03-01T01:10:29-08:00</updated>
<summary>news; info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Kinesis has a new generation of their split keyboard, Freestyle 2. <a href="http://xahlee.info/kbd/split_keyboards.html">2-Piece Split Keyboards</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/q4eWbPJf4RA" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/q4eWbPJf4RA/split_keyboards.html" />
<feedburner:origLink>http://xahlee.info/kbd/split_keyboards.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp Multi-Pair Find＆Replace Applications</title>
<id>tag:xahlee.org,2013-03-01:083808</id>
<updated>2013-03-01T00:38:08-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_find_replace_applications.html">Emacs Lisp Multi-Pair Find＆Replace Applications</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/dSZTJa1Fwzk" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_find_replace_applications.html" />
</entry>

<entry>
<title>News. Mechanical Keyboard from Logitech!</title>
<id>tag:xahlee.org,2013-02-28:230428</id>
<updated>2013-02-28T15:04:28-08:00</updated>
<summary>info; news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>News. Mechanical Keyboard from Logitech!</h3>

<p>hot keyboard news! Logitech now also makes mechanical keyboard. Very Cool!
<a class="amz" href="http://www.amazon.com/dp/B009C98NPY/?tag=xahh-20" title="Logitech Mechanical Keyboard Tactile High Speed; ⌨">amazon</a></p>

<figure>
<img src="http://xahlee.info/kbd/tn/igm/logitech_g710plus_keyboard.jpg" alt="logitech g710plus keyboard" width="307" height="130" />
<figcaption>
<a href="http://xahlee.info/kbd/gaming_keyboards.html">Logitech Gaming Keyboards review</a>
</figcaption>
</figure>

<p>There are 3 major form factor in keyboards: • ergonomic. • split. • normal (straight).
If you don't care for ergonomic or split ones, then, i think this is the best among straight, for programers, because:</p>

<ul>
<li>Mechanical key switch. It uses Cherry MX Brown switch, best for typing. (majority of mechanical gaming keyboards go for Red or Black. Red is not bad, but i definitely didn't like Black) (☛ <a href="http://xahlee.info/kbd/keyboard_effect_of_mechanical_key_switches.html">Keyboarding: Effect of Mechanical Key Switches on You</a>)</li>
<li>A roller for sound level control. This is much better than using buttons to control sound.</li>
<li>physical multimedia keys. One finger hits next song. Beats those virtual ones with <kbd>Fn</kbd>. Those with <kbd>Fn</kbd> is close to useless, 2 fingers plus groping!</li>
<li>Full functional keys, in traditional 3 groups of 4. Easy to hit without visual contact. (☛ <a href="http://xahlee.info/kbd/keyboard_function_keys.html">Increase Productivity Using F1 … F12 Keys</a>)</li>
<li>6 extra programmable function keys. There's your copy, cut, paste, undo, redo.</li>
<li>Full modifier key set, including a right <kbd>❖ Win</kbd> key and <kbd>▤ Menu</kbd> key. This means, you can have your <kbd>Meta</kbd> and <kbd>Super</kbd> and <kbd>Hyper</kbd> in <a href="http://xahlee.info/linux/linux_index.html">Linux</a> or Emacs. You can have a layer for inserting math symbols or <a href="http://xahlee.info/kbd/creating_apl_keyboard_layout.html">APL Keyboard</a>.</li>
<li>full number pad. This means, you can press 1 to switch to emacs, 2 to browser, 3 to terminal, 4 to switch workspace, …, and single keys for prev/next tabs/windows/apps. Basically 15 programmable keys in your control. (☛ <a href="http://xahlee.info/kbd/set_single_key_to_switch_app.html">Keyboard Tip: One Key to Switch to {Firefox, Emacs, Terminal} for {Linux, Mac, Windows}</a>)</li>
<li>Backlighting. Not something programer might care, but sys admins in dark corners….</li>
<li>Not super expensive! just $99.99.</li>
</ul>

<p>You can compare this with lots other mechanical keyboard in straight form. First, they all start about at least $70, and lots of them are over $100, many at $120 without much features. Many of them don't have any multimedia keys, nor sound wheel. Some don't have function keys.</p>

<p>the other one that i think is as good is <a href="http://xahlee.info/kbd/Corsair_keyboards.html">Corsair K60, K90</a>.</p>

<p>see also: <a href="emacs_best_keyboard.html">Best Keyboard for Emacs</a></p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/tQJjjjCuyV0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/tQJjjjCuyV0/logitech_mechanical_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/logitech_mechanical_keyboard.html</feedburner:origLink></entry>

<entry>
<title>emacs dired trick: dired-do-kill-lines</title>
<id>tag:xahlee.org,2013-02-28:051338</id>
<updated>2013-02-27T21:13:38-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>emacs dired tip: hiding some files</h3>

<p>learned a new command. In dired, call <var class="εf">dired-do-kill-lines</var> 【<kbd>k</kbd>】 to hide marked files. Amazing. Using dired for over a decade and didn't know this command. This is useful when you call <var class="εf">find-dired</var> to show all subdirs when you want to do <var class="εf">dired-do-query-replace-regexp</var>, but some files you don't want to work on.</p>

<p>new to emacs? onto</p>

<ul>
<li><a href="file_management.html">File Management with Emacs (dired tutorial)</a></li>
<li><a href="rename_file_pattern.html">Emacs: Rename Files Interactively by Pattern (regex; wdired)</a></li>
<li><a href="emacs_dired_tips.html">Emacs Advanced dired Tips (File Management)</a></li>
<li><a href="find_replace_inter.html">Emacs: Interactively Find＆Replace String Patterns on Multiple Files</a></li>
</ul>
</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/VNGTAQ6jAdE" height="1" width="1" /></div></content>
<link rel="alternate" href="file_management.html" />
</entry>

<entry>
<title>List of Keyboards with Mechanical Switch</title>
<id>tag:xahlee.org,2013-02-28:044002</id>
<updated>2013-02-27T20:40:02-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="http://xahlee.info/kbd/keyboards_with_mechanical_switch.html">List of Keyboards with Mechanical Switch</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/EXiQK6iy8v0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/EXiQK6iy8v0/keyboards_with_mechanical_switch.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboards_with_mechanical_switch.html</feedburner:origLink></entry>

<entry>
<title>keyboards keyboards and news</title>
<id>tag:xahlee.org,2013-02-27:140421</id>
<updated>2013-02-27T06:04:21-08:00</updated>
<summary>keyboard and news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>Ducky keyboard and KeyBoardCheer keyboard!</h3>

<p>discovered that the Ducky keyboard from Taiwan makes real quality keyboards. Check out their website. <s>I don't think you can easily buy it in USA though. But you might be able to buy from the company's site via oversea shipping</s>. (KBC is also quality.)</p>

<figure>
<img src="http://xahlee.info/kbd/imk/ducky_channel_girls_01.jpg" alt="ducky channel girls 01" width="472" height="312" />
<figcaption>
<a href="http://xahlee.info/kbd/2011-06_keyboard_news.html">KBC Poker Keyboard, Ducky Keyboard</a>
</figcaption>
</figure>

<p>this gonna be a keyboard week. Lots updates, all about keyboards.</p>

<p>i'll also have lots to say about my new-found-love the <a href="http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html">Truly Ergonomic Computer Keyboard</a> (TECP). I'll be telling you my experience in adopting the new physical layout.</p>

<p>there are lots new keyboards out there too, including from hushhush and hushhush, won't tell till i write it out.</p>

<p>also, exclusive news, that i'll be writing the firmware for TECP, and tell you how you can help, or sources, etc. For now, just run and buy TECP first. ☺</p>

<p>if you just subscribed to my emacs blog, there's lots existing articles. Do browse around for many tips. After blogging about emacs for 5 years, most generic tips are covered. A good tip is to browse one article a day.</p>

<p>there are still lots of elisp areas i haven't covered and need to learn myself. ℯℊ font system, text overlay, window/frame/buffer manipulation, deep understanding of keymap system, process manipulation, networking, minor mode, lisp macros, comprehensive coverage of emacs's completion system, …, i'll gradually do so in the future. So far, the one elisp area i think i pretty much covered is writing interactive or batch text processing commands/scripts. This is probably the most useful.</p>

<p>also, i am starting to do ask emacs Tuesday again. I found that usually i won't be able to answer questions satisfactorily, because the questions are diverse, and usually not about using emacs or elisp, but rather about best modes for xyz or how to make xyz mode do abc. In anycase, i think it's still good to have ask/answer sessions. So, on every Tuesday, you can ask me on any social network, and i'll try my best to answer.</p>

<p>also, again, if you haven't gotten my tutorial, do buy it, as it'll help me really churn out the deeper elisp parts, and create more useful packages (they are all in ErgoEmacs project repo). Only $5 bucks.</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/XphWZI8bt7I" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/XphWZI8bt7I/2011-06_keyboard_news.html" />
<feedburner:origLink>http://xahlee.info/kbd/2011-06_keyboard_news.html</feedburner:origLink></entry>

<entry>
<title>Keyboarding: the Effect of Mechanical Key Switches on You</title>
<id>tag:xahlee.org,2013-02-27:025717</id>
<updated>2013-02-26T18:57:17-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<h3>Keyboarding: the Effect of Mechanical Key Switches on You.</h3>

<p>Keyboard key switch mechanism is surprisingly important. Here's a simple story.</p>

<p>before (2005 〜 2012), i was using <a href="http://xahlee.info/kbd/ms_keyboard/ms_natural_keyboard_4000.html">Microsoft Natural 4000</a>
and
<a href="http://xahlee.info/kbd/ms_keyboard/ms_natural_keyboard.html">Microsoft Natural</a>. In {g+, Google Reader, Twitter, Facebook}, you can press {<kbd>j</kbd>, <kbd>k</kbd>} keys to go down/up by post. (on <a href="http://xahlee.info/comp/dvorak_keyboard_layout.html">Dvorak layout</a>, that's QWERTY'S {<kbd>c</kbd>, <kbd>v</kbd>}). It's nice, but i recall for some reason i just don't like using it.</p>

<p>now, i'm on <a href="http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html">Truly Ergonomic Keyboard</a>, it has mechanical keys, and i find that i started to use {<kbd>j</kbd>, <kbd>k</kbd>} keys for post navigation.</p>

<p>the ease of pressing the keys made a difference.</p>

<p>I have used mechanical switch keyboards before. Earlist is 1991, IBM Model M keyboard that came with
<a href="http://en.wikipedia.org/wiki/IBM_Personal_System/2">IBM PS/2</a>. Used it for half a year.
My second one is
“Matias Tactile”
<a class="amz" href="http://www.amazon.com/dp/B009ZRR8R2/?tag=xahh-20" title="Matias FK302Q Quiet Pro Keyboard">amazon</a>,  around 2002.
Really nice.
I realized the quality in keys just by touch and look, without being familiar with the phrase “mechanical keyboard”. But, i have been crazy keyboard nerd since about 2008.</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/jIJh6p-pN3c" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/jIJh6p-pN3c/keyboard_effect_of_mechanical_key_switches.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_effect_of_mechanical_key_switches.html</feedburner:origLink></entry>

<entry>
<title>Programing Challenge: Replace String Pairs</title>
<id>tag:xahlee.org,2013-02-26:093352</id>
<updated>2013-02-26T01:33:52-08:00</updated>
<summary>fun</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/comp/replace_string_pairs.html">Programing Challenge: Replace String Pairs</a></p>
<p>should be fun. This problem started in elisp for me few years ago. Over the years, tried several elisp approaches… but overall i was stung twice. Few weeks ago, found a bug in my code. Rewrote it with a new algorithm thinking it's much better, but bang, another bug. That is, incorrect behavior.</p>

<p>Now i think i have a good solution, but still has certain limitations. So, am posting this as a fun coding problem, pulling on the talent pool.</p>

<p>am posting this as a general programing problem, not specific to emacs lisp. I do have a elisp solution, but can be easily translated to any other lang.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/Zb38jzFr1yQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/Zb38jzFr1yQ/replace_string_pairs.html" />
<feedburner:origLink>http://xahlee.info/comp/replace_string_pairs.html</feedburner:origLink></entry>

<entry>
<title>Programing Language Design: Why Lisp Macro Sucks</title>
<id>tag:xahlee.org,2013-02-26:020712</id>
<updated>2013-02-25T18:07:12-08:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="http://xahlee.info/comp/why_lisp_macro_sucks.html">Programing Language Design: Why Lisp Macro Sucks</a> (YMMV very much!)</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IUJ0jIRAYTg" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/IUJ0jIRAYTg/why_lisp_macro_sucks.html" />
<feedburner:origLink>http://xahlee.info/comp/why_lisp_macro_sucks.html</feedburner:origLink></entry>

<entry>
<title>Levetron Mech gaming keyboard</title>
<id>tag:xahlee.org,2013-02-25:203113</id>
<updated>2013-02-25T12:31:13-08:00</updated>
<summary>keyboard review</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>
<p>another keyboard post.</p>

<p>I don't think this is for emacs users, but a fun funky keyboard, with mechanical keys (Cherry MX Black). <a href="http://xahlee.info/kbd/gaming_keyboards_2.html">Levetron Mech gaming keyboard</a></p>

<p>it uses Cherry MX Black, which is linear but require more force to press. I've tried Cherry MX Black, didn't like it at all.</p>

<p>there's a interesting bit about gaming keyboards. For gaming, many don't like any “click” in key press, because imagine pressing the fire button. You need to press it fast repeatedly, so clicky may not be good.</p>

<p>so, ALMOST ALL gaming keyboards, mechanical switch or not, are designed with linear feel.</p>

<p>in particular, all of
<a href="http://xahlee.info/kbd/gaming_keyboards.html">Logitech's gaming keyboards</a>
(which do not use mechanical switch)</p>

<p>i've tried Logitech keyboard, don't like the key feel at all.</p>

<p>another interesting bit about gaming keyboard is that they are actually the vanguard of keyboard tech. 6 to 20 extra function keys, robust and easy-to-use software for on-the-fly key recording, onboard memory (no need to diddle with <a href="http://xahlee.info/mswin/autohotkey.html">AutoHotkey</a> or whatnot <a href="http://xahlee.info/linux/linux_keyboard_tools.html">xmodmap, wmctrl, xdotool</a>), backlighting, built-in display, all from gaming keyboards.</p>

<p>also, many gaming keyboards do have mechanical keys. I think most uses the Cherry MX Black, but some uses Blue (which is most clicky), or Brown (which is kinda standard for typing).
(☛ <a href="http://xahlee.info/kbd/keyboard_switch_mechanisms.html">Guide to Computer Keyboard Key Switch Mechanisms</a>)</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/_dN8IGcvVSs" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/_dN8IGcvVSs/gaming_keyboards_2.html" />
<feedburner:origLink>http://xahlee.info/kbd/gaming_keyboards_2.html</feedburner:origLink></entry>

<entry>
<title>how unhappy i am with the Happy Hacking Keyboard</title>
<id>tag:xahlee.org,2013-02-24:223508</id>
<updated>2013-02-24T14:35:08-08:00</updated>
<summary>keyboard review</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>update on the Happy Hacking keyboard. I love it not. But you might. Just drew the layout diagram of Happy Hacking Keyboard in SVG.  <a href="http://xahlee.info/kbd/idiocy_of_happy_hacking_keyboard.html">The Idiocy of the Happy Hacking Keyboard</a></p>
<p>PS if you gonna buy it, buy it from my amazon link!</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/1Wwrroy1ezM" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/1Wwrroy1ezM/idiocy_of_happy_hacking_keyboard.html" />
<feedburner:origLink>http://xahlee.info/kbd/idiocy_of_happy_hacking_keyboard.html</feedburner:origLink></entry>

<entry>
<title>Ben Wing, XEemacs, RSI</title>
<id>tag:xahlee.org,2013-02-24:212126</id>
<updated>2013-02-24T13:21:26-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>One of the major developer of xemacs was Ben Wing. He also suffered from severe RSI.</p>

<p>I was not able to find any info about him before, but a friend helped today.</p>

<p>See his linkedin profile at <a href="emacs_hand_pain_celebrity.html">Celebrity Programers with RSI (Repetitive Strain Injury)</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vb9JL2oUAmg" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_hand_pain_celebrity.html" />
</entry>

<entry>
<title>lisp logo latte art</title>
<id>tag:xahlee.org,2013-02-22:225415</id>
<updated>2013-02-22T14:54:15-08:00</updated>
<summary>art; fun</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="i/lisp_logo_latte_art.jpg" alt="lisp logo latte art" width="600" height="800" />
<figcaption>lisp logo latte art.
by Yuko Honda of <a class="sorc" href="http://geeklatte.com/" data-accessed="2013-02-22">http://geeklatte.com/</a>.
<small>(<a class="sorc" href="http://www.flickr.com/photos/yukop/8168647059/in/set-72157628494205581/" data-accessed="2013-02-22">img src</a>, <a class="sorc" href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" data-accessed="2013-02-22">(CC BY-SA 2.0)</a>)</small>
</figcaption>
</figure>

<p>see also <a href="http://xaharts.org/funny/python_latte_art.html">Python Logo Latte Art</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/r5bsA5qTp_U" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/r5bsA5qTp_U/" />
<feedburner:origLink>http://geeklatte.com/</feedburner:origLink></entry>

<entry>
<title>Ruby Creator Matz on How Emacs Changed My Life, annotated</title>
<id>tag:xahlee.org,2013-02-21:194023</id>
<updated>2013-02-21T11:40:23-08:00</updated>
<summary>history</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>just annotated Matz's talk, with links, photos, comments, history. <a href="Matz_Ruby_how_emacs_changed_my_life.html">Ruby Creator Matz on How Emacs Changed My Life</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/izVRMUCC79s" height="1" width="1" /></div></content>
<link rel="alternate" href="Matz_Ruby_how_emacs_changed_my_life.html" />
</entry>

<entry>
<title>xkcd change</title>
<id>tag:xahlee.org,2013-02-21:170856</id>
<updated>2013-02-21T09:08:56-08:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<figure>
<img src="i/xkcd_comics_workflow_emacs.png" alt="xkcd comics workflow emacs" width="278" height="386" />
<figcaption>“every change breaks someone's workflow”
<a class="sorc" href="http://xkcd.com/1172/" data-accessed="2013-02-18">http://xkcd.com/1172/</a>
</figcaption>
</figure>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/J5B6yMG0UPw" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/J5B6yMG0UPw/" />
<feedburner:origLink>http://xkcd.com/1172/</feedburner:origLink></entry>

<entry>
<title>Ruby Creator Matz on How Emacs Changed My Life</title>
<id>tag:xahlee.org,2013-02-20:230953</id>
<updated>2013-02-20T15:09:53-08:00</updated>
<summary>programing culture</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="Matz_Ruby_how_emacs_changed_my_life.html">Ruby Creator Matz on How Emacs Changed My Life</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/izVRMUCC79s" height="1" width="1" /></div></content>
<link rel="alternate" href="Matz_Ruby_how_emacs_changed_my_life.html" />
</entry>

<entry>
<title>converting python 2 to python 3</title>
<id>tag:xahlee.org,2013-02-20:130121</id>
<updated>2013-02-20T05:01:21-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="elisp_python_2to3.html">Emacs Lisp: Python 2to3 Wrapper</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WdkmVdX_UZE" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_python_2to3.html" />
</entry>

<entry>
<title>EmacsGolf Challenge 2</title>
<id>tag:xahlee.org,2013-02-19:193304</id>
<updated>2013-02-19T11:33:04-08:00</updated>
<summary>emacs exercise</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>Emacs Power Challenge!</h3>

<p>another Emacs Power Challenge from jcs.  These “emacs golf” problems, seemingly trivial and irrelevant in real world, but is often the most fun way to horn your skills and learn new tricks, which will then burn into your muscle memory and increase your emacs power.  Check it out.</p>

<p>〔<cite>EmacsGolf Challenge 2</cite> <time>2013-02-19</time> By Jon Snader. @ <a class="sorc" href="http://irreal.org/blog/?p=1712" data-accessed="2013-02-19">irreal.org…</a>〕</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/au7tH7-2WIU" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/au7tH7-2WIU/" />
<feedburner:origLink>http://irreal.org/blog/?p=1712</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp Wrapper for Perl/Python/Ruby Scripts</title>
<id>tag:xahlee.org,2013-02-19:142125</id>
<updated>2013-02-19T06:21:25-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="elisp_perl_wrapper.html">Emacs Lisp Wrapper for Perl/Python/Ruby Scripts</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vd2YQe_YyS4" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_perl_wrapper.html" />
</entry>

<entry>
<title>emacs lisp get command line arguments</title>
<id>tag:xahlee.org,2013-02-18:183011</id>
<updated>2013-02-18T10:30:11-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>you can use emacs lisp as a command line script just like
<a href="http://xahlee.info/ruby/ruby_basics.html">Ruby</a>,
<a href="http://xahlee.info/python/python3_basics.html">Python</a>,
<a href="http://xahlee.info/perl-python/perl_basics.html">Perl</a>. Here's how to: <a href="elisp_command_line_argv.html">Emacs Lisp: Getting Command Line Arguments</a>.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/EUxVYFOuZuE" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_command_line_argv.html" />
</entry>

<entry>
<title>&#x1d517;&#x1d525;&#x1d52c;&#x1d532; &#x1d516;&#x1d525;&#x1d51e;&#x1d529;&#x1d531; &#x1d518;&#x1d530;&#x1d522; &#x1d508;&#x1d52a;&#x1d51e;&#x1d520;&#x1d530; &#x1d50f;&#x1d526;&#x1d530;&#x1d52d;</title>
<id>tag:xahlee.org,2013-02-17:174131</id>
<updated>2013-02-17T09:41:31-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>&#x1d509;&#x1d52c;&#x1d52f; &#x1d51e; &#x1d529;&#x1d526;&#x1d531;&#x1d531;&#x1d529;&#x1d522; &#x1d523;&#x1d532;&#x1d52b; &#x1d531;&#x1d52c;&#x1d521;&#x1d51e;&#x1d536;, &#x1d526; &#x1d534;&#x1d52f;&#x1d52c;&#x1d531;&#x1d522; “&#x1d52f;&#x1d522;&#x1d52d;&#x1d529;&#x1d51e;&#x1d520;&#x1d522;-&#x1d529;&#x1d51e;&#x1d531;&#x1d526;&#x1d52b;-&#x1d51e;&#x1d529;&#x1d52d;&#x1d525;&#x1d51e;&#x1d51f;&#x1d522;&#x1d531;-&#x1d531;&#x1d52c;-&#x1d524;&#x1d52c;&#x1d531;&#x1d525;&#x1d526;&#x1d520;”. &#x1d517;&#x1d525;&#x1d526;&#x1d530; &#x1d534;&#x1d526;&#x1d529;&#x1d529; &#x1d52f;&#x1d522;&#x1d52d;&#x1d529;&#x1d51e;&#x1d520;&#x1d522; &#x1d51e;&#x1d529;&#x1d529; &#x1d508;&#x1d52b;&#x1d524;&#x1d529;&#x1d526;&#x1d530;&#x1d525; &#x1d51e;&#x1d529;&#x1d52d;&#x1d525;&#x1d51e;&#x1d51f;&#x1d522;&#x1d531; &#x1d51f;&#x1d536; &#x1d50a;&#x1d52c;&#x1d531;&#x1d525;&#x1d526;&#x1d520; &#x1d533;&#x1d522;&#x1d52f;&#x1d530;&#x1d526;&#x1d52c;&#x1d52b; (&#x1d51e;&#x1d528;&#x1d51e; &#x1d505;&#x1d529;&#x1d51e;&#x1d520;&#x1d528;&#x1d529;&#x1d522;&#x1d531;&#x1d531;&#x1d522;&#x1d52f;, &#x1d509;&#x1d52f;&#x1d51e;&#x1d528;&#x1d531;&#x1d532;&#x1d52f;) &#x1d531;&#x1d525;&#x1d51e;&#x1d531;'&#x1d530; &#x1d51e;&#x1d533;&#x1d51e;&#x1d526;&#x1d529;&#x1d51e;&#x1d51f;&#x1d529;&#x1d522; &#x1d526;&#x1d52b; &#x1d518;&#x1d52b;&#x1d526;&#x1d520;&#x1d52c;&#x1d521;&#x1d522; &#x1d51e;&#x1d530; &#x1d520;&#x1d525;&#x1d51e;&#x1d52f;&#x1d51e;&#x1d520;&#x1d531;&#x1d522;&#x1d52f;&#x1d530;. ℌ&#x1d522;&#x1d52f;&#x1d522;'&#x1d530; &#x1d531;&#x1d525;&#x1d522; &#x1d520;&#x1d52c;&#x1d521;&#x1d522;. <a href="../misc/thou_shalt_use_emacs_lisp.html">&#x1d517;&#x1d525;&#x1d52c;&#x1d532; &#x1d516;&#x1d525;&#x1d51e;&#x1d529;&#x1d531; &#x1d518;&#x1d530;&#x1d522; &#x1d508;&#x1d52a;&#x1d51e;&#x1d520;&#x1d530; &#x1d50f;&#x1d526;&#x1d530;&#x1d52d;</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/a0ExU7_76XE" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/thou_shalt_use_emacs_lisp.html" />
</entry>

<entry>
<title>emacs in linux: sync x11 copy/paste </title>
<id>tag:xahlee.org,2013-02-16:232133</id>
<updated>2013-02-16T15:21:33-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<p>for Linux users.</p>

<pre class="elisp">
<span class="comment-delimiter">;; </span><span class="comment">after copy Ctrl+c in X11 apps, you can paste by `</span><span class="constant"><span class="comment">yank</span></span><span class="comment">' in emacs
</span>(setq x-select-enable-clipboard t)

<span class="comment-delimiter">;; </span><span class="comment">after mouse selection in X11, you can paste by `</span><span class="constant"><span class="comment">yank</span></span><span class="comment">' in emacs
</span>(setq x-select-enable-primary t)
</pre>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>aspell's Dismal Vocabulary Size</title>
<id>tag:xahlee.org,2013-02-16:131116</id>
<updated>2013-02-16T05:11:16-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>tangential to emacs. <a href="http://xahlee.info/comp/aspell_vocabulary.html">aspell's Dismal Vocabulary Size</a></p>

<p>bottom line: add words to your aspell.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IsyVMBs8VYo" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/IsyVMBs8VYo/aspell_vocabulary.html" />
<feedburner:origLink>http://xahlee.info/comp/aspell_vocabulary.html</feedburner:origLink></entry>

<entry>
<title>linux: sync x11 primary selection and clipboard</title>
<id>tag:xahlee.org,2013-02-15:155025</id>
<updated>2013-02-15T07:50:25-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>might be useful to emacsers. In linux, sync X11 primary selection with clipboard, so you can copy/paste by both mouth and hand in unison. <a href="http://xahlee.info/linux/linux_gui_command_line_names.html">Linux: Commands Related to GUI Apps</a></p>

<p>also note, in emacs 24, a change is made to how emacs handle x11 copy/paste mechanism, so its more compatible with the rest linux apps. see: <a href="emacs24_features.html">New Features in Emacs 24</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/5QwPu_lATgA" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/5QwPu_lATgA/linux_gui_command_line_names.html" />
<feedburner:origLink>http://xahlee.info/linux/linux_gui_command_line_names.html</feedburner:origLink></entry>

<entry>
<title>Is it true that keyboards before PC have Control key right besides the A key?</title>
<id>tag:xahlee.org,2013-02-15:072921</id>
<updated>2013-02-14T23:29:21-08:00</updated>
<summary>info; history; keyboard</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Is it true that keyboards before PC have Control key right besides the A key?. Answer: <a href="http://xahlee.info/kbd/keyboard_ctrl_vs_capslock_position.html">Keyboard: Control vs Capslock Position</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/UocW2x-ALP0" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/UocW2x-ALP0/keyboard_ctrl_vs_capslock_position.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboard_ctrl_vs_capslock_position.html</feedburner:origLink></entry>

<entry>
<title>Emacs Lisp: Delete Trailing Whitespace on Save and Compact Empty Lines</title>
<id>tag:xahlee.org,2013-02-14:141405</id>
<updated>2013-02-14T06:14:05-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p><a href="elisp_compact_empty_lines.html">Emacs Lisp: Delete Trailing Whitespace on Save and Compact Empty Lines</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/82hdameg2GI" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_compact_empty_lines.html" />
</entry>

<entry>
<title>shell in emacs printed password in clear</title>
<id>tag:xahlee.org,2013-02-13:162517</id>
<updated>2013-02-13T08:25:17-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<p>when doing <code>git push</code> to github in shell inside emacs, it prints the password you typed.</p>

<pre class="output">Username for 'https://github.com': xahlee
Password for 'https://xahlee@github.com': 123456</pre>

<p>not sure who to blame here.</p>

<p>normally, typed password isn't shown in the clear. But am not sure how emacs detect that. Anyone knows?</p>

</article>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>best keyboard for emacs</title>
<id>tag:xahlee.org,2013-02-13:122231</id>
<updated>2013-02-13T04:22:31-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>every now and then, people will ask what's the best keyboard for emacs. I thought i'll start a article dedicated to that. <a href="emacs_best_keyboard.html">Best Keyboard for Emacs</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/AltKVSUb0mU" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_best_keyboard.html" />
</entry>

<entry>
<title>Why Emacs's Keyboard Shortcuts are Painful</title>
<id>tag:xahlee.org,2013-02-12:104903</id>
<updated>2013-02-12T02:49:03-08:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_kb_shortcuts_pain.html">Why Emacs's Keyboard Shortcuts are Painful</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/KU1H91Dgd90" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_kb_shortcuts_pain.html" />
</entry>

<entry>
<title>geeks vs non-geek on repetitive tasks</title>
<id>tag:xahlee.org,2013-02-11:181856</id>
<updated>2013-02-11T10:18:56-08:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<figure>
<img src="i/geek_vs_non_geek_repetitive_tasks.svg" alt="geek vs non geek repetitive tasks" width="739" height="485" />
<figcaption>geek vs non-geek repetitive tasks</figcaption>
</figure>

<p>reminds me something about emacs.</p>

<div class="rltd">
<ul>
<li><a href="emacs_macro_example.html">Using Keyboard Macro to Record/Playback Keystrokes</a></li>
<li><a href="emacs_macro_example2.html">Keyboard Macro Example: Adding HTML Attribute</a></li>
<li><a href="emacs_macro_insert_all_unicode_stars.html">Keyboard Macro Example: Insert All Unicode Bullets</a></li>
</ul>
</div>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/6n3mAC2alyo" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_macro_example.html" />
</entry>

<entry>
<title>run emacs lisp script from command line</title>
<id>tag:xahlee.org,2013-02-11:070509</id>
<updated>2013-02-10T23:05:09-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<section>

<p>you can run emacs lisp as executable script from command line, just like other languages.</p>

<p><a href="elisp_idioms_batch.html">Emacs Lisp Idioms for Text Processing in Batch Style</a></p>

<p><a href="elisp_universal_argument.html">Emacs Lisp: Writing Command to Accept universal-argument</a></p>

</section>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/illUVBOSyuk" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_idioms_batch.html" />
</entry>

<entry>
<title>emacs golf at Irreal</title>
<id>tag:xahlee.org,2013-02-09:145026</id>
<updated>2013-02-09T06:50:26-08:00</updated>
<summary>emacs exercise</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h3>emacs golf at Irreal</h3>

<p>jcs over at Irreal is thinking of starting a blog or website dedicated to “emacs golf”. I submitted a problem and Jon wrote about it.</p>

<p>See: 〔<cite>A First Emacs Challenge</cite> <time>2013-02-09</time> By Jon Snader. @ <a class="sorc" href="http://irreal.org/blog/?p=1689" data-accessed="2013-02-09">irreal.org…</a>〕</p>

<p>What approach would you take?</p>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/OtBqRhg85tU" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/OtBqRhg85tU/" />
<feedburner:origLink>http://irreal.org/blog/?p=1689</feedburner:origLink></entry>

<entry>
<title>emacs lisp extract-url</title>
<id>tag:xahlee.org,2013-02-08:042107</id>
<updated>2013-02-07T20:21:07-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<section>

<h3>learning emacs lisp: output to separate buffer</h3>

<p>yesterday, we had a elisp problem about extending the code for “extract-url” function. Did you understand the code? Here's simpler version with explanation.  <a href="elisp_extract_url_command.html">Emacs Lisp: Writing a Command to Extract URL</a></p>

</section>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/8e3um9MHwho" height="1" width="1" /></div></content>
<link rel="alternate" href="elisp_extract_url_command.html" />
</entry>

<entry>
<title>Emacs Lisp Exercise: Extract URL</title>
<id>tag:xahlee.org,2013-02-07:102757</id>
<updated>2013-02-07T02:27:57-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>updated this function recently. It extract all URL in current text block or text selection in a HTML file.</p>

<p>please see <a href="../misc/elisp_exercise_extract_url.html">Elisp Exercise: Extract URL</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WadJRPMILBs" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/elisp_exercise_extract_url.html" />
</entry>

<entry>
<title>emacs: tricks in ido-mode</title>
<id>tag:xahlee.org,2013-02-06:124324</id>
<updated>2013-02-06T04:43:24-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<article>

<h4>emacs: ido-mode open file tricks</h4>

<p>learned a new trick in <var class="εf">ido-mode</var>. When calling <var class="εf">ido-find-file</var>, you can use <kbd>↑</kbd> and <kbd>↓</kbd> to go to prev/next subdir. Here's a summery.</p>

<ul>
<li>{<kbd>↑</kbd>, <kbd>↓</kbd>} prev/next subdir</li>
<li>{<kbd>←</kbd>, <kbd>→</kbd>} prev/next file.</li>
<li>{<kbd>//</kbd>} root dir.</li>
<li>【<kbd>Ctrl</kbd>+<kbd>d</kbd>】 open dir in dired</li>
<li>【<kbd>Ctrl</kbd>+<kbd>f</kbd>】 switch to default <var class="εf">find-file</var> interface.</li>
<li>【<kbd>Tab ↹</kbd>】 explicit completion, display all files in a split pane.</li>
</ul>

<p>not sure what's ido-mode? See:</p>

<ul>
<li><a href="emacs_iswitch_vs_ido.html">Emacs: iswitch vs ido mode</a></li>
<li><a href="emacs_name_completion.html">Emacs: Name Completion Related Features and Packages</a></li>
<li><a href="effective_emacs.html">Tips on Long Term Emacs Productivity</a></li>
</ul>

</article>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/lOFHb-4yQ0w" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_iswitch_vs_ido.html" />
</entry>

<entry>
<title>Emacs on Linux vs Windows</title>
<id>tag:xahlee.org,2013-02-06:040135</id>
<updated>2013-02-05T20:01:35-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>if you work between Microsoft Windows and Linux, this might be interesting to you. <a href="http://xahlee.info/comp/speed_comparison_Linux_Cygwin_NTFS.html">Linux: Speed Comparison: Linux Perl vs Cygwin Perl vs Strawberry Perl vs ext4 vs NTFS. (The Price You Pay for Layers and Emulations)</a></p>

<p>emacs on Microsoft Windows is much inferior when compared to Linux version. Here's quick list.</p>

<ul>
<li>FTP doesn't work.</li>
<li>Emacs won't display images.</li>
<li>File name with Unicode characters (ℯℊ Chinese) display as gibberish in dired.</li>
<li>grep, rgrep, and many others won't work.</li>
<li>If you have installed Cygwin, it's very painful to get path and environment variable correct.</li>
<li>even if you have Cygwin set up well, grep or cygwin python/perl etc others don't work well work with Unicode strings (or, extremely complex to setup).</li>
<li>calling unix rsync won't work in shell inside emacs.</li>
<li>many unix commands won't work in shell inside emacs, that otherwise works perfectly in Linux.</li>
<li>It is perhaps 5 times slower for anything going thru Cygwin.</li>
</ul>

<p>We try to fixed many of these in ErgoEmacs, but still, many just can't be fixed.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sqqkGpZj5XM" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/sqqkGpZj5XM/speed_comparison_Linux_Cygwin_NTFS.html" />
<feedburner:origLink>http://xahlee.info/comp/speed_comparison_Linux_Cygwin_NTFS.html</feedburner:origLink></entry>

<entry>
<title>emacs: search value of variables</title>
<id>tag:xahlee.org,2013-02-05:054231</id>
<updated>2013-02-04T21:42:31-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>elisp tip. You can call <var class="εf">apropos-value</var> to search a string in emacs variables.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>Emacs: Commands and Keys to Navigate Brackets</title>
<id>tag:xahlee.org,2013-02-04:111535</id>
<updated>2013-02-04T03:15:35-08:00</updated>
<summary>elisp code</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>more update. <a href="emacs_navigating_keys_for_brackets.html">Emacs: Commands and Keys to Navigate Brackets</a> If you have used the functions there in your init, you might want to update too.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/fkztks4rgj4" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_navigating_keys_for_brackets.html" />
</entry>

<entry>
<title>best mouse? trackball?</title>
<id>tag:xahlee.org,2013-02-04:025550</id>
<updated>2013-02-03T18:55:50-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Emacs users typically spit on mouse. Still, you need a mouse or similar device, because it is the best device for browsing web, or manipulating 3D objects. What interesting ones do you use?</p>

<figure>
<img src="http://xahlee.info/kbd/im/tb/Kensington_Expert_Mouse_and_Slimblade-s.jpg" alt="Kensington Expert Mouse and Slimblade" width="683" height="512" />
<img src="http://xahlee.info/kbd/im/tb/Kensington_Expert_Mouse_and_Slimblade_side-view.jpg" alt="Kensington Expert Mouse and Slimblade side-view" width="640" height="192" />
<figcaption>Kensington Expert Mouse vs Slimblade Trackball.
<a class="big-i" href="http://xahlee.info/kbd/im/tb/Kensington_Expert_Mouse_and_Slimblade.jpg" target="_blank">1024×768</a>
<a class="sorc" href="http://www.hitokiri.com/blog/archives/2009/03/the_kensington.php" data-accessed="2013-02-02">photo by ronin</a>
<a class="amz" href="http://www.amazon.com/dp/B001MTE32Y/?tag=xahh-20" title="Kensington Slimblade Trackball USB 2.0; comp">amazon</a>
</figcaption>
</figure>

<p>Updated. <a href="http://xahlee.info/kbd/trackball.html">Best Trackball Mouse</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/xN2On7S23FQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/xN2On7S23FQ/trackball.html" />
<feedburner:origLink>http://xahlee.info/kbd/trackball.html</feedburner:origLink></entry>

<entry>
<title>Difference Between Apple and PC keyboards</title>
<id>tag:xahlee.org,2013-02-04:025308</id>
<updated>2013-02-03T18:53:08-08:00</updated>
<summary>info</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>learned that the <kbd>⌘ Cmd</kbd> key and <kbd>❖ Win</kbd> are really identical in keyboard hardware. They send out the same scancode. Similarly, <kbd>⌥ Opt</kbd> and <kbd>Alt</kbd> are identical. Updated: <a href="http://xahlee.info/kbd/apple_pc_kb_diff.html">Difference Between Apple and PC keyboards</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/lkJq0lqQcbA" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/lkJq0lqQcbA/apple_pc_kb_diff.html" />
<feedburner:origLink>http://xahlee.info/kbd/apple_pc_kb_diff.html</feedburner:origLink></entry>

<entry>
<title>emacs tutorial</title>
<id>tag:xahlee.org,2013-02-03:151027</id>
<updated>2013-02-03T07:10:27-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>Just send off new version of emacs tutorial. Thank you for support.</p>

<p>If you like it, please tell friends.</p>

<p>If you bought my tutorial but isn't on the mailing list, please email me (xah@xahlee.org). Or, if you want to be taken off the list, just reply with “unsubscribe”. It'll be send out at most once a month.</p>
<p>If you haven't bought, buy it here: <a href="buy_xah_emacs_tutorial.html">Buy Xah Emacs Tutorial</a>. Ask me if you have questions.</p>
<xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sseSEK-iIN4" height="1" width="1" /></div></content>
<link rel="alternate" href="buy_xah_emacs_tutorial.html" />
</entry>

<entry>
<title>How to Avoid the Emacs Pinky Problem</title>
<id>tag:xahlee.org,2013-02-02:112950</id>
<updated>2013-02-02T03:29:50-08:00</updated>
<summary>tips</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated. <a href="emacs_pinky.html">How to Avoid the Emacs Pinky Problem</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/qhFd9bSNNYk" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_pinky.html" />
</entry>

<entry>
<title>set kill-line to kill-whole-line</title>
<id>tag:xahlee.org,2013-02-01:071849</id>
<updated>2013-01-31T23:18:49-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>oldie but goodie. <a href="emacs_delete_whole_line.html">Emacs: Single Key to Delete Whole Line</a> I don't think i ever do <var class="εf">kill-line</var> since 2010.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/_LxcNZpuO_8" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_delete_whole_line.html" />
</entry>

<entry>
<title>new version of Xah's emacs tutorial</title>
<id>tag:xahlee.org,2013-01-31:230405</id>
<updated>2013-01-31T15:04:05-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>a new version of emacs tutorial is available. Get it for just $5.  <a href="buy_xah_emacs_tutorial.html">Buy Xah Emacs Tutorial</a>.</p>

<p>new version will be sent out to previous buyers tonight.</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sseSEK-iIN4" height="1" width="1" /></div></content>
<link rel="alternate" href="buy_xah_emacs_tutorial.html" />
</entry>

<entry>
<title>The Roadmap to Completely Replace Emacs's Key System, Part 2</title>
<id>tag:xahlee.org,2013-01-31:203355</id>
<updated>2013-01-31T12:33:55-08:00</updated>
<summary>emacs</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>yesterday's article on its own page. <a href="emacs_keybinding_redesign_2.html">The Roadmap to Completely Replace Emacs's Key System, Part 2</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/vx5om12cEYQ" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_keybinding_redesign_2.html" />
</entry>

<entry>
<title>Emacs: Insert Parenthesis/Brackets by Pair</title>
<id>tag:xahlee.org,2013-01-31:123235</id>
<updated>2013-01-31T04:32:35-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>updated code.  <a href="emacs_insert_brackets_by_pair.html">Emacs: Insert Parenthesis/Brackets by Pair</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/WYel2euWoe4" height="1" width="1" /></div></content>
<link rel="alternate" href="emacs_insert_brackets_by_pair.html" />
</entry>

<entry>
<title>a system to replace emacs one thousand keys</title>
<id>tag:xahlee.org,2013-01-30:093042</id>
<updated>2013-01-30T01:30:42-08:00</updated>
<summary>emacs, keyboarding</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<h3>a system to replace emacs one thousand keys</h3>

<p>i'll have a lot to say about remapping keys in emacs soon.</p>

<p>now, i have a entire system to replace emacs 1000 default keybindings, and efficient, and very satisfactory to me.</p>

<p>this system, makes emacs compatible with all other software on linux, mac, windows. e.g. open ,close, cut, copy, etc about 9 keys are the same. (this part is already true of ergoemacs keybinding)</p>

<p>yet, for all other thousand keys, it's far more efficient. It's even beyond ergoemacs. I'm current not sure it'll be part of future ergoemacs, because it's rather radical. It's only for those who diddle keys a lot, e.g. you Dvorak users, heavy AutoHotkey users, or heavy diddler of Linux Window Manager or other key tools.</p>

<p>basically, this system relies on key sequences. So, all commands, is just pressing no more than 3 keys, no key combination as part of it, not even <kbd>⇧ Shift</kbd> key (so, there'd be no key involving {%, !}, for example.). Just 3 single one-finger keys. Key choices are based on command call frequency and key ease position. The starting, activation key (what emacs call prefix key), is critical. It must be a most easy key. Example of such keys are: <kbd>Caps Lock</kbd>, <kbd>Alt</kbd>, <kbd>▤ Menu</kbd>, or even <kbd>Space</kbd> bar (that'd be best if possible). The <kbd>▤ Menu</kbd> as activation key can be easily done in emacs across OSes, but for other you'll need a tool outside of emacs.</p>

<p>anyhow, i'll probably write up more detail later, but i actually already typed out most of it. haha. Right now, the issue is the exact choice of keys for emacs's thousands of commands. This i haven't got down yet, but, for myself, i've been on this road for about half a year now, and have sketched out a map of about 200 commands, especially pushed further by having the Truly Ergonomic keyboard hardware few weeks ago. It's supreme!</p>

<p>from 1999 to 2005, i use GNU Emacs in terminal only, all default keys. But today, the default key i use in emacs is about maybe 6, and 4 of them being the arrow keys, one <kbd>⌫ Backspace</kbd>. LOL. The other one is <kbd>F1</kbd>.</p>

<p>i think i might talk to <a class="sorc" href="http://www.davidcapello.com.ar/" data-accessed="2012-09-21">David Capello</a> and <a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a> about making this into part of ergoemacs, but will ask them what they think first, have them use it and convinced it's real good, because it's rather radical. (if we integrate it into ergoemacs, am pretty sure it'll be optional, and off by default)</p>

<p>In summery:</p>

<ul>
<li>Every command is done by a sequence of 2 to 3 single keys. (except commands that need to be repeated, such as arrow, forward-word, isearch.)</li> <li>the starting key, activation key (what emacs call “prefix key”) is critical. It must be a key that's most easy to press. Examples are: the thumb keys on <a href="http://xahlee.info/kbd/keyboard_Kinesis.html">Kinesis</a> or <a href="http://xahlee.info/kbd/Maltron_keyboard.html">Maltron</a>, or the giant <kbd>Alt</kbd> on <a href="http://xahlee.info/kbd/ms_keyboard/ms_natural_keyboard_4000.html">Microsoft Natural</a>, or the left <kbd>Space</kbd> bar on <a href="http://xahlee.info/kbd/Truly_Ergonomic_keyboard.html">Truly Ergonomic Keyboard</a>. On a <a href="http://xahlee.info/kbd/keyboard_porn.html">normal PC keyboard</a> , the <kbd>Caps Lock</kbd>, or <kbd>❖ Win</kbd>, <kbd>▤ Menu</kbd>. Ideally, we should have 2 activation keys, one situated for left hand, one for right hand. There'll also be a fall back key, currently in my setting that's <kbd>F6</kbd>.</li>
<li>The key choices must be based on key positions on keyboard, not the letter. So, the  positions don't change with key layout (same in ErgoEmacs keybinding).</li>
<li>The second key (which is the key after the activation key), should be a key hit by 2nd and 3rd finger, on home row and the row above it. In QWERTY notation, that's r e d f for left hand, and u i j k for right hand. For key sequence that's more than 2, the second key should be one of these.</li>
<li>The 8 or so universally standard keys, will still be there, as in ErgoEmacs. ℯℊ open, close, save, copy, cut, undo. (this means that any person can use emacs without knowing anything about the new system of keys. While those who dig further, can benefit in this system)</li>
</ul>

<p>here's a sample of implementation, my current setup, to illustrate the idea. The choice of keys is actually in flux, and i have yet to exam the default thousand keys and think what key each of them should be. For my own emacs use daily, i've been using this for about half a year now, and tweaking keys daily.</p>

<pre class="elisp">
<span class="comment-delimiter">;; </span><span class="comment">-*- coding: utf-8 -*-
</span>
<span class="comment-delimiter">;; </span><span class="comment">generic
</span>
(define-key key-translation-map (kbd <span class="string">"&lt;apps&gt;"</span>) (kbd <span class="string">"&lt;menu&gt;"</span>))
(define-key key-translation-map (kbd <span class="string">"&lt;f6&gt;"</span>) (kbd <span class="string">"&lt;menu&gt;"</span>)) <span class="comment-delimiter">; </span><span class="comment">F6 is fall back
</span>
(define-prefix-command 'xah-keymap)
(global-set-key (kbd <span class="string">"&lt;menu&gt;"</span>) xah-keymap)

<span class="comment-delimiter">;; </span><span class="comment">Truly Ergonomic keyboard + Dvorak layout
</span><span class="comment-delimiter">;; </span><span class="comment">\` 1234 5 6 7890 []
</span><span class="comment-delimiter">;; </span><span class="comment">\z ',.p y f gcrl /=
</span><span class="comment-delimiter">;;    </span><span class="comment">aoeu i d htns
</span><span class="comment-delimiter">;;    </span><span class="comment">;qjk x b mwv-
</span>
<span class="comment-delimiter">;; </span><span class="comment">prefix keys (on Dvorak) should be
</span><span class="comment-delimiter">;; </span><span class="comment">.p gc
</span><span class="comment-delimiter">;; </span><span class="comment">eu ht
</span>
<span class="comment-delimiter">;; </span><span class="comment">u is for unicode insert
</span><span class="comment-delimiter">;; </span><span class="comment">e is mode-specific
</span><span class="comment-delimiter">;; </span><span class="comment">h is help-map
</span><span class="comment-delimiter">;; </span><span class="comment">t is generic dump space
</span><span class="comment-delimiter">;; </span><span class="comment">x is for ctl-x-map
</span>
<span class="comment-delimiter">;; </span><span class="comment">add find-file
</span><span class="comment-delimiter">;; </span><span class="comment">keyboard-quit
</span>
<span class="comment-delimiter">;; </span><span class="comment">stars indicate frequency of use
</span><span class="comment-delimiter">;; </span><span class="comment">★★★ every minute
</span><span class="comment-delimiter">;; </span><span class="comment">★★ every hour
</span><span class="comment-delimiter">;; </span><span class="comment">★ few times a day
</span>
(global-set-key (kbd <span class="string">"&lt;menu&gt; &lt;return&gt;"</span>) 'smex)
(global-set-key (kbd <span class="string">"&lt;menu&gt; &lt;delete&gt;"</span>) 'delete-current-file)
(global-set-key (kbd <span class="string">"&lt;menu&gt; &lt;f2&gt;"</span>) 'ergoemacs-cut-all)
(global-set-key (kbd <span class="string">"&lt;menu&gt; &lt;f3&gt;"</span>) 'ergoemacs-copy-all)

(global-set-key (kbd <span class="string">"&lt;menu&gt; '"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; ,"</span>) 'shell-command-on-region)
(global-set-key (kbd <span class="string">"&lt;menu&gt; -"</span>) 'xc-comment-smart) <span class="comment-delimiter">; </span><span class="comment">★★★ , comment-dwim
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; ."</span>) 'shell-command)   <span class="comment-delimiter">; </span><span class="comment">★★★
</span>
(global-set-key (kbd <span class="string">"&lt;menu&gt; /"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; 0"</span>) 'delete-window)
(global-set-key (kbd <span class="string">"&lt;menu&gt; 1"</span>) 'copy-to-register-1)
(global-set-key (kbd <span class="string">"&lt;menu&gt; 2"</span>) 'paste-from-register-1)
(global-set-key (kbd <span class="string">"&lt;menu&gt; 3"</span>) 'delete-other-windows) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 4"</span>) 'split-window-vertically) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 5"</span>) 'nil) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 6"</span>) 'run-current-file) <span class="comment-delimiter">;; </span><span class="comment">immediate, but dangerous eval-buffer
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 7"</span>) 'xah-open-file-at-cursor) <span class="comment-delimiter">; </span><span class="comment">★★★ find-file-at-point
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 8"</span>) 'dired-jump)              <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; 9"</span>) 'ispell-word) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; ;"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; ="</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; SPC"</span>) 'set-mark-command) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; ["</span>) 'remove-square-brackets)
(global-set-key (kbd <span class="string">"&lt;menu&gt; \\"</span>) 'escape-quotes)
(global-set-key (kbd <span class="string">"&lt;menu&gt; ]"</span>) 'indent-region)
(global-set-key (kbd <span class="string">"&lt;menu&gt; `"</span>) 'make-backup)
(global-set-key (kbd <span class="string">"&lt;menu&gt; a"</span>) 'mark-whole-buffer) <span class="comment-delimiter">; </span><span class="comment">★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; b"</span>) 'flyspell-buffer) <span class="comment-delimiter">; </span><span class="comment">★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; c"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; d"</span>) 'ergoemacs-open-in-desktop)
(global-set-key (kbd <span class="string">"&lt;menu&gt; e"</span>) 'nil)  <span class="comment-delimiter">; </span><span class="comment">mode specific
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; f"</span>) 'copy-file-path)

(global-set-key (kbd <span class="string">"&lt;menu&gt; g 0"</span>) <span class="string">")"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 1"</span>) <span class="string">"!"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 2"</span>) <span class="string">"@"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 3"</span>) <span class="string">"#"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 4"</span>) <span class="string">"$"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 5"</span>) <span class="string">"%"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 6"</span>) <span class="string">"^"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 7"</span>) <span class="string">"&amp;"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 8"</span>) <span class="string">"*"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g 9"</span>) <span class="string">"("</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g a"</span>) <span class="string">"A"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g b"</span>) <span class="string">"B"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g c"</span>) <span class="string">"C"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g d"</span>) <span class="string">"D"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g e"</span>) <span class="string">"E"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g f"</span>) <span class="string">"F"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g g"</span>) <span class="string">"G"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g h"</span>) <span class="string">"H"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g i"</span>) <span class="string">"I"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g j"</span>) <span class="string">"J"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g k"</span>) <span class="string">"K"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g l"</span>) <span class="string">"L"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g m"</span>) <span class="string">"M"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g n"</span>) <span class="string">"N"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g o"</span>) <span class="string">"O"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g p"</span>) <span class="string">"P"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g q"</span>) <span class="string">"Q"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g r"</span>) <span class="string">"R"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g s"</span>) <span class="string">"S"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g t"</span>) <span class="string">"T"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g u"</span>) <span class="string">"U"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g v"</span>) <span class="string">"V"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g w"</span>) <span class="string">"W"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g x"</span>) <span class="string">"X"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g y"</span>) <span class="string">"Y"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; g z"</span>) <span class="string">"Z"</span>)

(global-set-key (kbd <span class="string">"&lt;menu&gt; h"</span>) help-map) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; i d"</span>) 'insert-date)
(global-set-key (kbd <span class="string">"&lt;menu&gt; i r h"</span>) 'insert-random-hex)
(global-set-key (kbd <span class="string">"&lt;menu&gt; i r n"</span>) 'insert-random-number)
(global-set-key (kbd <span class="string">"&lt;menu&gt; i r s"</span>) 'insert-random-string)
(global-set-key (kbd <span class="string">"&lt;menu&gt; i r u"</span>) 'insert-random-uuid)
(global-set-key (kbd <span class="string">"&lt;menu&gt; i t"</span>) 'insert-date-time)
(global-set-key (kbd <span class="string">"&lt;menu&gt; j"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; k"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; l"</span>) 'recenter-top-bottom)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m c"</span>) 'calc)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m e"</span>) 'emacs-lisp-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m h"</span>) 'xah-html-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m l"</span>) 'linum-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m s"</span>) 'shell)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m t"</span>) 'text-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m v"</span>) 'visual-line-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; m w"</span>) 'whitespace-mode)
(global-set-key (kbd <span class="string">"&lt;menu&gt; n"</span>) 'ergoemacs-new-empty-buffer) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; o SPC"</span>) 'xah-open-file-fast)
(global-set-key (kbd <span class="string">"&lt;menu&gt; o b"</span>) 'ibuffer)
(global-set-key (kbd <span class="string">"&lt;menu&gt; o f"</span>) 'ido-find-file)
(global-set-key (kbd <span class="string">"&lt;menu&gt; o l"</span>) 'bookmark-bmenu-list)
(global-set-key (kbd <span class="string">"&lt;menu&gt; o r"</span>) 'recentf-open-files) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; o s"</span>) 'ido-switch-buffer)  <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; p"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; q"</span>) 'quoted-insert) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; r '"</span>) 'replace-straight-quotes)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r ,"</span>) 'remove-punctuation-trailing-redundant-space)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r ."</span>) 'convert-english-chinese-punctuation)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r d"</span>) 'delete-matching-lines) <span class="comment-delimiter">; </span><span class="comment">★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; r e"</span>) 'query-replace) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; r f"</span>) 'xah-find-text)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r l"</span>) 'list-matching-lines) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; r p"</span>) 'convert-ideographic/ascii-space)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r r"</span>) 'xah-find-replace-text)
(global-set-key (kbd <span class="string">"&lt;menu&gt; r u"</span>) 'query-replace-regexp)
(global-set-key (kbd <span class="string">"&lt;menu&gt; s"</span>) 'save-buffer) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; t c"</span>) 'xah-cite)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t f"</span>) 'xah-open-file-from-clipboard)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t l"</span>) 'xah-clean-whitespace)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t n"</span>) 'make-frame-command)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t o"</span>) 'ergoemacs-open-last-closed)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t r"</span>) 'repeat-complex-command)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t s"</span>) 'title-case-string-region-or-line)
(global-set-key (kbd <span class="string">"&lt;menu&gt; t w"</span>) 'delete-trailing-whitespace)

(global-set-key (kbd <span class="string">"&lt;menu&gt; u -"</span>) <span class="string">"—"</span>) <span class="comment-delimiter">; </span><span class="comment">EM DASH
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u ."</span>) <span class="string">"…"</span>) <span class="comment-delimiter">; </span><span class="comment">HORIZONTAL ELLIPSIS
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u 4"</span>) <span class="string">"◆"</span>) <span class="comment-delimiter">; </span><span class="comment">black diamond
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u 7"</span>) <span class="string">"＆"</span>) <span class="comment-delimiter">; </span><span class="comment">full width ampersand
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u 8"</span>) <span class="string">"•"</span>) <span class="comment-delimiter">; </span><span class="comment">bullet
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u &lt;S-right&gt;"</span>) <span class="string">"⇒"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u &lt;right&gt;"</span>) <span class="string">"→"</span>)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u B"</span>) 'insert-pair-white-lenticular-bracket〖〗)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u M"</span>) 'insert-pair-white-corner-bracket『』)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u W"</span>) 'insert-pair-double-angle-bracket《》)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u \\"</span>) <span class="string">"、"</span>) <span class="comment-delimiter">; </span><span class="comment">IDEOGRAPHIC COMMA
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u b"</span>) 'insert-pair-black-lenticular-bracket【】)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u c"</span>) <span class="string">"="</span>) <span class="comment-delimiter">; </span><span class="comment">equal
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u f"</span>) 'insert-pair-single-straight-quote)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u g"</span>) 'insert-pair-double-straight-quote)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u h"</span>) 'insert-pair-brace)              <span class="comment-delimiter">;</span><span class="comment">{}
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u i"</span>) 'insert-pair-single-curly-quote‘’)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u m"</span>) 'insert-pair-corner-bracket「」)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u n"</span>) 'insert-pair-bracket)            <span class="comment-delimiter">;</span><span class="comment">[]
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u p"</span>) 'insert-pair-double-angle-quote«»)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u r"</span>) <span class="string">"+"</span>) <span class="comment-delimiter">; </span><span class="comment">plus
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u t"</span>) 'insert-pair-paren)              <span class="comment-delimiter">;</span><span class="comment">()
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; u u"</span>) 'insert-pair-double-curly-quote“”)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u w"</span>) 'insert-pair-angle-bracket〈〉)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u x"</span>) 'insert-pair-tortoise-shell-bracket〔〕)
(global-set-key (kbd <span class="string">"&lt;menu&gt; u y"</span>) 'insert-pair-single-angle-quote‹›)

(global-set-key (kbd <span class="string">"&lt;menu&gt; v"</span>) 'nil)
(global-set-key (kbd <span class="string">"&lt;menu&gt; w"</span>) 'ergoemacs-close-current-buffer) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; x"</span>) ctl-x-map) <span class="comment-delimiter">; </span><span class="comment">★★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; y"</span>) 'universal-argument) <span class="comment-delimiter">; </span><span class="comment">★★
</span>(global-set-key (kbd <span class="string">"&lt;menu&gt; z"</span>) 'nil)

(define-key help-map (kbd <span class="string">"c"</span>) 'describe-char)
(define-key help-map (kbd <span class="string">"5"</span>) 'man)
(define-key help-map (kbd <span class="string">"7"</span>) 'lookup-google)
(define-key help-map (kbd <span class="string">"8"</span>) 'lookup-wikipedia)
(define-key help-map (kbd <span class="string">"9"</span>) 'lookup-word-definition)
(define-key help-map (kbd <span class="string">"`"</span>) 'elisp-index-search)
(define-key help-map (kbd <span class="string">"m"</span>) 'ergoemacs-describe-major-mode)
(define-key help-map (kbd <span class="string">"o"</span>) 'nil)  <span class="comment-delimiter">; </span><span class="comment">ergoemacs-where-is-old-binding
</span>(define-key help-map (kbd <span class="string">"h"</span>) 'nil) <span class="comment-delimiter">; </span><span class="comment">view-hello-file
</span>

<span class="comment-delimiter">;; </span><span class="comment">example of mode-specific setting
</span>
(<span class="keyword">defun</span> <span class="function-name">xah-html-mode-keys</span> ()
  <span class="doc">"Modify keymaps used by `</span><span class="constant"><span class="doc">html-mode</span></span><span class="doc">'."</span>
  <span class="comment-delimiter">;; </span><span class="comment">.p gc
</span>  <span class="comment-delimiter">;; </span><span class="comment">eu ht
</span>
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e ."</span>) 'xah-browse-url-of-buffer)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e 0"</span>) 'xhm-remove-html-tags)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e 5"</span>) 'mark-unicode)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e 7"</span>) 'htmlize-or-dehtmlize-pre-block)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e 8"</span>) 'get-pre-block-make-new-file)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e &lt;delete&gt;"</span>) 'sgml-delete-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e &lt;left&gt;"</span>) 'sgml-skip-tag-backward)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e &lt;right&gt;"</span>) 'sgml-skip-tag-forward)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e a"</span>) 'xwe-annotate)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e b"</span>) 'make-blogger-entry)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e c"</span>) 'xhm-make-citation)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e d"</span>) 'insert-date-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e e"</span>) 'xhm-wrap-html-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e f"</span>) 'xah-copy-url-current-file)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e k"</span>) 'xhm-htmlize-keyboard-shortcut-notation)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l 6"</span>) 'xhm-source-url-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l c"</span>) 'xwe-chinese-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l d"</span>) 'perldoc-ref-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l e"</span>) 'emacs-ref-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l f"</span>) 'full-size-img-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l i"</span>) 'image-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l j"</span>) 'image-file-to-html-figure-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l l"</span>) 'xhm-lines-to-html-list)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l p"</span>) 'php-ref-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l t"</span>) 'xwe-word-etymology-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l u"</span>) 'xhm-wrap-url)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l w"</span>) 'xhm-wikipedia-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e l z"</span>) 'amazon-linkify)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e m a"</span>) 'xah-make-atom-entry)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e m l"</span>) 'xah-add-to-related-links)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e p"</span>) 'xhm-wrap-p-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r ,"</span>) 'replace-html-chars-to-unicode)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r ."</span>) 'replace-html-chars-to-entities)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r 3"</span>) 'xhm-update-title)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r 4"</span>) 'xahsite-update-article-timestamp)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r c"</span>) 'code-bracket-to-html-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r e"</span>) 'curly-quotes-to-emacs-function-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r k"</span>) 'emacs-to-windows-kbd-notation)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r m"</span>) 'xhm-make-html-table)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e r t"</span>) 'title-bracket-to-html-tag)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e t c"</span>) 'insert-random-color-hsl)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e t r"</span>) 'xhm-rename-html-inline-image)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e t u"</span>) 'xhm-extract-url)
  (local-set-key (kbd <span class="string">"&lt;menu&gt; e u"</span>) 'xah-all-linkify)

  )
(add-hook 'html-mode-hook 'xah-html-mode-keys)
(add-hook 'xah-html-mode-hook 'xah-html-mode-keys)
</pre>

<p>I've written detailed account in the past on i think all aspects of this design. If you like to read more, see <a href="http://xahlee.info/kbd/keyboarding.html">Computer Keyboards, Layouts, Hotkeys, Macros, RSI ⌨</a></p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/wMoaByWbIkE" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/wMoaByWbIkE/keyboarding.html" />
<feedburner:origLink>http://xahlee.info/kbd/keyboarding.html</feedburner:origLink></entry>

<entry>
<title>ErgoEmacs version 2.0 release candidate is out</title>
<id>tag:xahlee.org,2013-01-29:091904</id>
<updated>2013-01-29T01:19:04-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>ErgoEmacs version 2.0 release candidate is out. (for Microsoft Windows) <a class="sorc" href="http://code.google.com/p/ergoemacs/downloads/list" data-accessed="2013-01-29">http://code.google.com/p/ergoemacs/downloads/list</a></p>

<p>test it out!</p>
<p>if you have a earlier version of ErgoEmacs installed, you should un-install that first, from Window's Control Panel “Programs and Features”.</p>

<p>much thanks to the Window programing guru <a class="sorc" href="http://www.davidcapello.com.ar/" data-accessed="2012-09-21">David Capello</a> (David wrote many apps for Microsoft Windows, the most popular is probably the pixel editor aseprite <a class="sorc" href="http://www.aseprite.org/" data-accessed="2013-01-29">http://www.aseprite.org/</a> check it out.)</p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/kt8lLMxrU-c" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/kt8lLMxrU-c/list" />
<feedburner:origLink>http://code.google.com/p/ergoemacs/downloads/list</feedburner:origLink></entry>

<entry>
<title>Symbol, Semantics, Design: Unicode for “e.g.” (exempli gratia)</title>
<id>tag:xahlee.org,2013-01-29:013205</id>
<updated>2013-01-28T17:32:05-08:00</updated>
<summary>essay</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>this might be of interest to lispers and sorts who love emacs. <a href="http://xahlee.info/comp/unicode_symbol_for_eg.html">Symbol, Semantics, Design: Unicode for “e.g.” (exempli gratia)</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/cQN68OHqIxY" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/cQN68OHqIxY/unicode_symbol_for_eg.html" />
<feedburner:origLink>http://xahlee.info/comp/unicode_symbol_for_eg.html</feedburner:origLink></entry>

<entry>
<title>emacs: shift indentation in python</title>
<id>tag:xahlee.org,2013-01-28:204416</id>
<updated>2013-01-28T12:44:16-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">

<p>in the default python mode shipped with emacs 24.2, you can do this to shift the indentation.</p>

<ul>
<li><var class="εf">python-shift-right</var> 【<kbd>Ctrl</kbd>+<kbd>c</kbd> <kbd>&gt;</kbd>】</li>
<li><var class="εf">python-shift-left</var>  【<kbd>Ctrl</kbd>+<kbd>c</kbd> <kbd>&lt;</kbd>】</li>
</ul>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>ErgoEmacs review, and new build coming soon</title>
<id>tag:xahlee.org,2013-01-28:012017</id>
<updated>2013-01-27T17:20:17-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>a review on ErgoEmacs. 〔<cite>ErgoEmacs: Emacs, dragged kicking ＆ screaming into the 1990s!</cite> <time>2013-01-27</time> By Liam Proven. @ <a class="sorc" href="http://liam-on-linux.livejournal.com/32740.html" data-accessed="2013-01-27">liam-on-linux.livejournal.com…</a>〕</p>
<p>more reviews here <a href="ergonomic_emacs_keybinding_good.html">Testimonial for ErgoEmacs Keybinding</a></p>

<p><a class="sorc" href="http://www.davidcapello.com.ar/" data-accessed="2012-09-21">David Capello</a> is going to help build a new binary. Expect in a few days.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/fYQnGFw38RQ" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/fYQnGFw38RQ/32740.html" />
<feedburner:origLink>http://liam-on-linux.livejournal.com/32740.html</feedburner:origLink></entry>

<entry>
<title>toggle comment of current line</title>
<id>tag:xahlee.org,2013-01-27:150043</id>
<updated>2013-01-27T07:00:43-08:00</updated>
<summary>elisp</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>here's a working prototype of comment command.  It toggles comment of current line.  <a class="sorc" href="http://code.google.com/p/ergoemacs/source/browse/packages/xah-comment.el" data-accessed="2013-01-25">http://code.google.com/p/ergoemacs/source/browse/packages/xah-comment.el</a>. Patch or fork welcome.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/VcZIKfToLyY" height="1" width="1" /></div></content>
<link rel="alternate" href="http://feedproxy.google.com/~r/XahsEmacsBlog/~3/VcZIKfToLyY/xah-comment.el" />
<feedburner:origLink>http://code.google.com/p/ergoemacs/source/browse/packages/xah-comment.el</feedburner:origLink></entry>

<entry>
<title>vi man</title>
<id>tag:xahlee.org,2013-01-26:115843</id>
<updated>2013-01-26T03:58:43-08:00</updated>
<summary>humor</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>oldie</p>

<figure>
<img src="i/vi_man.png" alt="vi man" width="400" height="288" />
<figcaption>vi man</figcaption>
</figure>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

<entry>
<title>solution to emacs exercise: Generate Columns A to Z</title>
<id>tag:xahlee.org,2013-01-25:054932</id>
<updated>2013-01-24T21:49:32-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>solution to the last problem. <a href="../misc/emacs_exercise_gen_a-z.html">Emacs Exercise: Generate Columns A to Z</a></p>
 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/sI3bbEsKdE4" height="1" width="1" /></div></content>
<link rel="alternate" href="../misc/emacs_exercise_gen_a-z.html" />
</entry>

<entry>
<title>ErgoEmacs keybinding stable</title>
<id>tag:xahlee.org,2013-01-24:094455</id>
<updated>2013-01-24T01:44:55-08:00</updated>
<summary>news</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<p>the brand-new <a href="ergonomic_emacs_keybinding.html">ErgoEmacs keybinding</a> code is now stable. All thanks to <a class="sorc" href="https://github.com/mlf176f2" data-accessed="2012-12-13">Matthew L Fidler</a>'s work.</p>

<p>the ErgoEmacs home page's key layout diagram is slightly outdated. But with the new version, you can generate your own layout diagram, by calling <var class="εf">ergoemacs-extras</var> (it may take about 30 seconds, because it's generating lots different files.). The files are generated at 〔~/.emacs.d/〕.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/XSvP-7Rfxys" height="1" width="1" /></div></content>
<link rel="alternate" href="ergonomic_emacs_keybinding.html" />
</entry>

<entry>
<title>emacs, AutoHotkey, and keys, keys, keys</title>
<id>tag:xahlee.org,2013-01-23:221253</id>
<updated>2013-01-23T14:12:53-08:00</updated>
<summary>tutorial</summary>
 <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">
<h3>emacs, AutoHotkey, and keys, keys, keys</h3>

<p>If you are on Microsoft Windows, then AutoHotkey is indispensible.
It lets you set keys outside of emacs, but, actually indispensible for emacs too, because, for example, you can set <kbd>Caps Lock</kbd> to <kbd>Ctrl</kbd>, which you cannot do with emacs. Another example: in vi, the <kbd>Esc</kbd> key is a pain. You should set it to a easy key, such as <kbd>Caps Lock</kbd> or {<kbd>Alt</kbd>, <kbd>❖ Win</kbd>, <kbd>▤ Menu</kbd>}.</p>

<p>Updated: <a href="http://xahlee.info/mswin/autohotkey_examples.html">Windows Programing: AutoHotkey Example Scripts</a></p>

<p>for Mac and Linux, see:</p>

<ul>
<li><a href="http://xahlee.info/kbd/Mac_OS_X_keymapping_keybinding_tools.html">Mac OS X Keyboard Layout, Keymapping, Keybinding, Tools</a></li>
<li><a href="http://xahlee.info/linux/linux_keyboard_tools.html">Linux: Keyboard Layout, Keymapping, Keybinding, Tools ⌨</a></li>
<li><a href="http://xahlee.info/mswin/Windows_keybinding.html">Keyboard Layout ＆ Key Macro tools for Windows</a></li>
</ul>

<p>I have about 18 years of experience with tweaking keys on Mac, starting by using ResEdit to create a Dvorak layout in ≈1992. (Apple didn't bundle Dvorak layout untill ≈1997.)
(☛ <a href="http://xahlee.info/comp/dvorak_keyboard_layout.html">Dvorak Keyboard Layout and My Experiences</a>)
Throughout 1990s, i also used QuicKeys extensively. At the time, it's the best key macro tool beyond any. As far as i remember, it's even better than anything that exists today. QuicKeys also lets you record mouse clicks, dialogues, etc, in a easy-to-use GUI, and the software is robust. I stopped using QuicKeys around 2002 when Mac switched to OS X and the new OS X version of QuicKeys sucked. (i bought QuicKeys for $60 or so and for each new version upgrades. The OS X version pissed me off, because its features at the time is a fraction of what it used to be, and the price doubled, and is full of bugs.)</p>

<p>for Microsoft Windows, i switched from Mac to PC in 2009.  (☛ <a href="http://xahlee.info/mswin/switch_to_windows.html">Why I'm Switching from Mac to Windows</a>) Since, i have explored key macro tools for Microsoft Windows extensively. It's quite a trip. There's AutoHotkey, which is the most versatile, but the lang really sucks, worse than perl.
(☛ <a href="http://xahlee.info/perl-python/perl_basics.html">Perl Basics</a>)
</p>

<ul>
<li><a href="http://xahlee.info/mswin/autohotkey_problems.html">Windows Programing: AutoHotkey Syntax Problems</a></li>
<li><a href="http://xahlee.info/mswin/autohotkey_path_problem.html">Windows Programing: AutoHotkey Path Problem; Windows Shortcut Path</a></li>
</ul>

<p>I also wrote a ahk mode. <a href="http://xahlee.info/mswin/emacs_autohotkey_mode.html">Emacs AutoHotkey Mode (xahk-mode)</a> (you can get it by paypal xah@xahlee.org $3 or in ErgoEmacs repository.)</p>

<p>then, there's Microsoft IntelliType, which is really a nice tool that comes with Microsoft keyboards.</p>

<p>AutoHotkey is a time drain. You have to spend huge amount of time to learn a bit of it. It's full of idiosyncratic quirks and bugs, a hack upon hack.</p>

<p>Microsoft IntelliType is real nice, smooth, so easy to use. But, you can't do things it doesn't provide. Hacking on its key definition file or registry is not worth it, at all.
(☛ <a href="http://xahlee.info/kbd/ms_keyboard/intellitype_hacks.html">Microsoft IntelliType Hacks</a>) My countless hours spent on it is rather wasted.</p>

<p>then, there's also builtin mechanisms with Microsoft Windows. starting with the easiest, the default shortcuts:</p>

<ul>
<li><a href="http://xahlee.info/mswin/windows_key_shortcuts.html">Windows Logo Key Keyboard Shortcuts</a></li>
<li><a href="http://xahlee.info/mswin/windows_keyboard_shortcuts.html">Microsoft Windows Keyboard Shortcuts</a></li>
</ul>

<p>and the default way to invoke menu commands by key sequence. e.g. 【<kbd>Alt</kbd> <kbd>f</kbd> <kbd>n</kbd>】 opens new file, and 【<kbd>Alt</kbd>+<kbd>Space</kbd> <kbd>c</kbd>】 close window. This key sequence tied with menu is actually the most powerful, versatile, ergonomic, system. Unfortunately, it's kinda going away. Very few people appreciate it.</p>

<p>then, there's the hotkey system built into file shortcuts
(☛ <a href="http://xahlee.info/mswin/disable_hp_support_info_key.html">Disable Ctrl+Alt+S Shortcut for HP Support Information, PC Doctor</a>)
This is also quite nice and reliable, but it's very hard to manage once you have a few custom hotkeys.</p>

<p>
then, there's the Registry, for serious hacking of key swaps or disable keys.
(☛ <a href="http://xahlee.info/mswin/MS_windows_registry.html">Microsoft Windows Registry Tutorial</a>)
Very painful to do, prone to fuck up your system, and impossible to manage, and not portable across machines.</p>

<p>
then, on Microsoft Windows, it also has its own conventions and quirks in keys. e.g. in general, when is 【<kbd>Alt</kbd>+<kbd>‹key›</kbd>】 used, when is  【<kbd>Ctrl</kbd>+<kbd>‹key›</kbd>】 used, when is it good to use other modifiers (<kbd>⇧ Shift</kbd>, <kbd>❖ Win</kbd>) or combination of them (with respect to robustness, support, general applicability, quirks). (☛ <a href="http://xahlee.info/mswin/windows_keyboard_shortcuts_faq.html">Windows: Setting a Key to Launch App, Disable Caps Lock, Windows Key, and Other Keyboard FAQ</a>)</p>

<p>oh, and the <a href="http://xahlee.info/mswin/windows_console.html">Windows Console Key Shortcuts</a> is a pain in the ass.</p>

<p>Only Linux key tools i haven't had much experience, only started to explore this year.</p>

 <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/XahsEmacsBlog/~4/IGqve9VZrQo" height="1" width="1" /></div></content>
<link rel="alternate" href="blog.html" />
</entry>

</feed>
