<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikemacs.org/index.php?action=history&amp;feed=atom&amp;title=Emacs_Lisp_in_15_minutes</id>
	<title>Emacs Lisp in 15 minutes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wikemacs.org/index.php?action=history&amp;feed=atom&amp;title=Emacs_Lisp_in_15_minutes"/>
	<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;action=history"/>
	<updated>2026-04-20T05:00:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=47920&amp;oldid=prev</id>
		<title>Elvince: B. Guery, org maintainer</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=47920&amp;oldid=prev"/>
		<updated>2017-05-18T20:48:26Z</updated>

		<summary type="html">&lt;p&gt;B. Guery, org maintainer&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:48, 18 May 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot; &gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This gives an introduction to Emacs Lisp in 15 minutes (v0.2d)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This gives an introduction to Emacs Lisp in 15 minutes (v0.2d)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Author: Bastien / @bzg2 / http://bzg.fr&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Author: Bastien / @bzg2 / http://bzg.fr &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(the [[Org]] maintainer for many years)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First make sure you read this text by Peter Norvig:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First make sure you read this text by Peter Norvig:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elvince</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46835&amp;oldid=prev</id>
		<title>166.200.168.217: Commented the intended lines of hello-to-bonjour ()</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46835&amp;oldid=prev"/>
		<updated>2014-10-28T04:49:38Z</updated>

		<summary type="html">&lt;p&gt;Commented the intended lines of hello-to-bonjour ()&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:49, 28 October 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l392&quot; &gt;Line 392:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 392:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (erase-buffer)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (erase-buffer)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Say hello to names in `list-of-names'&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;;; &lt;/ins&gt;Say hello to names in `list-of-names'&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (mapcar 'hello list-of-names)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (mapcar 'hello list-of-names)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (goto-char (point-min))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (goto-char (point-min))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     Replace &amp;quot;Hello&amp;quot; by &amp;quot;Bonjour&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;;; &lt;/ins&gt;Replace &amp;quot;Hello&amp;quot; by &amp;quot;Bonjour&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (while (search-forward &amp;quot;Hello&amp;quot; nil t)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     (while (search-forward &amp;quot;Hello&amp;quot; nil t)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       (replace-match &amp;quot;Bonjour&amp;quot;))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       (replace-match &amp;quot;Bonjour&amp;quot;))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>166.200.168.217</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46628&amp;oldid=prev</id>
		<title>Holocronweaver: correct spelling error</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46628&amp;oldid=prev"/>
		<updated>2014-04-17T02:27:40Z</updated>

		<summary type="html">&lt;p&gt;correct spelling error&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:27, 17 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot; &gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Going through this tutorial won't damage your computer unless&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Going through this tutorial won't damage your computer unless&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;you get so angry that you throw it on the floor.  In that case,&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;you get so angry that you throw it on the floor.  In that case,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I hereby decline any &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;responsability&lt;/del&gt;.  Have fun!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I hereby decline any &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;responsibility&lt;/ins&gt;.  Have fun!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Holocronweaver</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46625&amp;oldid=prev</id>
		<title>Elvince: cats</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46625&amp;oldid=prev"/>
		<updated>2014-04-16T10:54:25Z</updated>

		<summary type="html">&lt;p&gt;cats&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:54, 16 April 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l465&quot; &gt;Line 465:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 465:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* LinXitoW&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* LinXitoW&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Aaron Meurer&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Aaron Meurer&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Customization]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Intermediate]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Emacs Lisp]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Lisp]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Programming]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Tutorial]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Elvince</name></author>
	</entry>
	<entry>
		<id>https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46624&amp;oldid=prev</id>
		<title>Elvince: elisp in 15 min</title>
		<link rel="alternate" type="text/html" href="https://wikemacs.org/index.php?title=Emacs_Lisp_in_15_minutes&amp;diff=46624&amp;oldid=prev"/>
		<updated>2014-04-16T10:53:42Z</updated>

		<summary type="html">&lt;p&gt;elisp in 15 min&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
This gives an introduction to Emacs Lisp in 15 minutes (v0.2d)&lt;br /&gt;
&lt;br /&gt;
Author: Bastien / @bzg2 / http://bzg.fr&lt;br /&gt;
&lt;br /&gt;
First make sure you read this text by Peter Norvig:&lt;br /&gt;
http://norvig.com/21-days.html&lt;br /&gt;
&lt;br /&gt;
Going through this tutorial won't damage your computer unless&lt;br /&gt;
you get so angry that you throw it on the floor.  In that case,&lt;br /&gt;
I hereby decline any responsability.  Have fun!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Write and execute lisp ===&lt;br /&gt;
&lt;br /&gt;
Fire up Emacs.&lt;br /&gt;
&lt;br /&gt;
Hit the '''q''' key to dismiss the welcome message.&lt;br /&gt;
&lt;br /&gt;
Now look at the gray line at the bottom of the window:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;*scratch*&amp;quot; is the name of the editing space you are now in.&lt;br /&gt;
This editing space is called a &amp;quot;buffer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The scratch buffer is the default buffer when opening Emacs.&lt;br /&gt;
You are never editing files: you are editing buffers that you&lt;br /&gt;
can save to a file.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lisp interaction&amp;quot; refers to a set of commands available here.&lt;br /&gt;
&lt;br /&gt;
Emacs has a built-in set of commands available in every buffer,&lt;br /&gt;
and several subsets of commands available when you activate a&lt;br /&gt;
specific mode.  Here we use the `lisp-interaction-mode', which&lt;br /&gt;
comes with commands to evaluate and navigate within Elisp code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Semi-colons start comments anywhere on a line.&lt;br /&gt;
&lt;br /&gt;
Elisp programs are made of symbolic expressions (&amp;quot;sexps&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(+ 2 2)  ;; this is a comment&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This symbolic expression reads as &amp;quot;Add 2 to 2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Sexps are enclosed into parentheses, possibly nested:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(+ 2 (+ 1 1))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A symbolic expression contains atoms or other symbolic&lt;br /&gt;
expressions.  In the above examples, 1 and 2 are atoms,&lt;br /&gt;
(+ 2 (+ 1 1)) and (+ 1 1) are symbolic expressions.&lt;br /&gt;
&lt;br /&gt;
From `lisp-interaction-mode' you can evaluate sexps.&lt;br /&gt;
Put the cursor right after the closing parenthesis then&lt;br /&gt;
hold down the control and hit the j keys (&amp;quot;C-j&amp;quot; for short).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(+ 3 (+ 1 2))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-j }} =&amp;gt; 6&lt;br /&gt;
&lt;br /&gt;
{{Keys | C-j }} inserts the result of the evaluation in the buffer.&lt;br /&gt;
&lt;br /&gt;
{{Keys | C-xC-e }} displays the same result in Emacs bottom line,&lt;br /&gt;
called the &amp;quot;minibuffer&amp;quot;.  We will generally use `C-xC-e',&lt;br /&gt;
as we don't want to clutter the buffer with useless text.&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
&lt;br /&gt;
'''setq''' stores a value into a variable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(setq my-name &amp;quot;Bastien&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; &amp;quot;Bastien&amp;quot; (displayed in the mini-buffer)&lt;br /&gt;
&lt;br /&gt;
=== Insert text ===&lt;br /&gt;
&lt;br /&gt;
'''insert''' will insert &amp;quot;Hello!&amp;quot; where the cursor is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(insert &amp;quot;Hello!&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; &amp;quot;Hello!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We used '''insert''' with only one argument &amp;quot;Hello!&amp;quot;, but&lt;br /&gt;
we can pass more arguments -- here we use two:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(insert &amp;quot;Hello&amp;quot; &amp;quot; world!&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You can use variables instead of strings:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(insert &amp;quot;Hello, I am &amp;quot; my-name)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; &amp;quot;Hello, I am Bastien&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
You can combine sexps into functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun hello () (insert &amp;quot;Hello, I am &amp;quot; my-name))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; hello&lt;br /&gt;
&lt;br /&gt;
You can evaluate functions:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(hello)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; Hello, I am Bastien&lt;br /&gt;
&lt;br /&gt;
The empty parentheses in the function's definition means that&lt;br /&gt;
it does not accept arguments.  But always using `my-name' is&lt;br /&gt;
boring, let's tell the function to accept one argument (here&lt;br /&gt;
the argument is called &amp;quot;name&amp;quot;): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun hello (name) (insert &amp;quot;Hello &amp;quot; name))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; hello&lt;br /&gt;
&lt;br /&gt;
Now let's call the function with the string &amp;quot;you&amp;quot; as the value&lt;br /&gt;
for its unique argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(hello &amp;quot;you&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }} =&amp;gt; &amp;quot;Hello you&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Yeah!&lt;br /&gt;
&lt;br /&gt;
Take a breath.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Switch buffers ===&lt;br /&gt;
&lt;br /&gt;
Now switch to a new buffer named &amp;quot;*test*&amp;quot; in another window:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Keys | C-xC-e }}&lt;br /&gt;
=&amp;gt; [screen has two windows and cursor is in the *test* buffer]&lt;br /&gt;
&lt;br /&gt;
Mouse over the top window and left-click to go back.  Or you can&lt;br /&gt;
use `C-xo' (i.e. hold down control-x and hit o) to go to the other&lt;br /&gt;
window interactively.&lt;br /&gt;
&lt;br /&gt;
=== Expression blocks ===&lt;br /&gt;
&lt;br /&gt;
You can combine several sexps with '''progn''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(progn&lt;br /&gt;
  (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
  (hello &amp;quot;you&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Keys | C-xC-e }}&lt;br /&gt;
=&amp;gt; [The screen has two windows and cursor is in the *test* buffer]&lt;br /&gt;
&lt;br /&gt;
Now if you don't mind, I'll stop asking you to hit `C-xC-e': do it&lt;br /&gt;
for every sexp that follows.&lt;br /&gt;
&lt;br /&gt;
Always go back to the *scratch* buffer with the mouse or `C-xo'.&lt;br /&gt;
&lt;br /&gt;
It's often useful to erase the buffer:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(progn&lt;br /&gt;
  (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
  (erase-buffer)&lt;br /&gt;
  (hello &amp;quot;there&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Or to go back to the other window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(progn&lt;br /&gt;
  (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
  (erase-buffer)&lt;br /&gt;
  (hello &amp;quot;you&amp;quot;)&lt;br /&gt;
  (other-window 1))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Local variables ===&lt;br /&gt;
&lt;br /&gt;
You can bind a value to a local variable with '''let''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(let ((local-name &amp;quot;you&amp;quot;))&lt;br /&gt;
  (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
  (erase-buffer)&lt;br /&gt;
  (hello local-name)&lt;br /&gt;
  (other-window 1))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No need to use '''progn''' in that case, since '''let''' also combines&lt;br /&gt;
several sexps.&lt;br /&gt;
&lt;br /&gt;
=== Strings handling ===&lt;br /&gt;
&lt;br /&gt;
Let's format a string:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(format &amp;quot;Hello %s!\n&amp;quot; &amp;quot;visitor&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
%s is a place-holder for a string, replaced by &amp;quot;visitor&amp;quot;.&lt;br /&gt;
\n is the newline character.&lt;br /&gt;
&lt;br /&gt;
Let's refine our function by using format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun hello (name)&lt;br /&gt;
  (insert (format &amp;quot;Hello %s!\n&amp;quot; name)))&lt;br /&gt;
&lt;br /&gt;
(hello &amp;quot;you&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's create another function which uses '''let''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun greeting (name)&lt;br /&gt;
  (let ((your-name &amp;quot;Bastien&amp;quot;))&lt;br /&gt;
    (insert (format &amp;quot;Hello %s!\n\nI am %s.&amp;quot;&lt;br /&gt;
                    name       ; the argument of the function&lt;br /&gt;
                    your-name  ; the let-bound variable &amp;quot;Bastien&amp;quot;&lt;br /&gt;
                    ))))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And evaluate it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(greeting &amp;quot;you&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interactive functions ===&lt;br /&gt;
&lt;br /&gt;
Some function are interactive:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(read-from-minibuffer &amp;quot;Enter your name: &amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Evaluating this function returns what you entered at the prompt.&lt;br /&gt;
&lt;br /&gt;
Let's make our '''greeting''' function prompt for your name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun greeting (from-name)&lt;br /&gt;
  (let ((your-name (read-from-minibuffer &amp;quot;Enter your name: &amp;quot;)))&lt;br /&gt;
    (insert (format &amp;quot;Hello!\n\nI am %s and you are %s.&amp;quot;&lt;br /&gt;
                    from-name ; the argument of the function&lt;br /&gt;
                    your-name ; the let-bound var, entered at prompt&lt;br /&gt;
                    ))))&lt;br /&gt;
&lt;br /&gt;
(greeting &amp;quot;Bastien&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's complete it by displaying the results in the other window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun greeting (from-name)&lt;br /&gt;
  (let ((your-name (read-from-minibuffer &amp;quot;Enter your name: &amp;quot;)))&lt;br /&gt;
    (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
    (erase-buffer)&lt;br /&gt;
    (insert (format &amp;quot;Hello %s!\n\nI am %s.&amp;quot; your-name from-name))&lt;br /&gt;
    (other-window 1)))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now test it:&lt;br /&gt;
(greeting &amp;quot;Bastien&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Take a breath.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lists ===&lt;br /&gt;
&lt;br /&gt;
Let's store a list of names:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(setq list-of-names '(&amp;quot;Sarah&amp;quot; &amp;quot;Chloe&amp;quot; &amp;quot;Mathilde&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get the first element of this list with '''car''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(car list-of-names)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Get a list of all but the first element with '''cdr''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(cdr list-of-names)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add an element to the beginning of a list with '''push''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(push &amp;quot;Stephanie&amp;quot; list-of-names)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: '''car''' and '''cdr''' don't modify the list, but '''push''' does.&lt;br /&gt;
This is an important difference: some functions don't have any&lt;br /&gt;
side-effects (like '''car''') while others have (like '''push''').&lt;br /&gt;
&lt;br /&gt;
Let's call '''hello''' for each element in `list-of-names':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(mapcar 'hello list-of-names)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refine '''greeting''' to say hello to everyone in `list-of-names':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun greeting ()&lt;br /&gt;
    (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
    (erase-buffer)&lt;br /&gt;
    (mapcar 'hello list-of-names)&lt;br /&gt;
    (other-window 1))&lt;br /&gt;
&lt;br /&gt;
(greeting)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the '''hello''' function we defined above?  It takes one&lt;br /&gt;
argument, a name.  '''mapcar''' calls '''hello''', successively using each&lt;br /&gt;
element of `list-of-names' as the argument for '''hello'''.&lt;br /&gt;
&lt;br /&gt;
Now let's arrange a bit what we have in the displayed buffer:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun replace-hello-by-bonjour ()&lt;br /&gt;
    (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
    (goto-char (point-min))&lt;br /&gt;
    (while (search-forward &amp;quot;Hello&amp;quot;)&lt;br /&gt;
      (replace-match &amp;quot;Bonjour&amp;quot;))&lt;br /&gt;
    (other-window 1))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Moving around ===&lt;br /&gt;
&lt;br /&gt;
(goto-char (point-min)) goes to the beginning of the buffer.&lt;br /&gt;
(search-forward &amp;quot;Hello&amp;quot;) searches for the string &amp;quot;Hello&amp;quot;.&lt;br /&gt;
(while x y) evaluates the y sexp(s) while x returns something.&lt;br /&gt;
If x returns '''nil''' (nothing), we exit the while loop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(replace-hello-by-bonjour)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see all occurrences of &amp;quot;Hello&amp;quot; in the *test* buffer&lt;br /&gt;
replaced by &amp;quot;Bonjour&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You should also get an error: &amp;quot;Search failed: Hello&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To avoid this error, you need to tell `search-forward' whether it&lt;br /&gt;
should stop searching at some point in the buffer, and whether it&lt;br /&gt;
should silently fail when nothing is found:&lt;br /&gt;
&lt;br /&gt;
(search-forward &amp;quot;Hello&amp;quot; nil t) does the trick:&lt;br /&gt;
&lt;br /&gt;
The '''nil''' argument says: the search is not bound to a position.&lt;br /&gt;
The '''t''' argument says: silently fail when nothing is found.&lt;br /&gt;
&lt;br /&gt;
We use this sexp in the function below, which doesn't throw an error:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun hello-to-bonjour ()&lt;br /&gt;
    (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
    (erase-buffer)&lt;br /&gt;
    Say hello to names in `list-of-names'&lt;br /&gt;
    (mapcar 'hello list-of-names)&lt;br /&gt;
    (goto-char (point-min))&lt;br /&gt;
    Replace &amp;quot;Hello&amp;quot; by &amp;quot;Bonjour&amp;quot;&lt;br /&gt;
    (while (search-forward &amp;quot;Hello&amp;quot; nil t)&lt;br /&gt;
      (replace-match &amp;quot;Bonjour&amp;quot;))&lt;br /&gt;
    (other-window 1))&lt;br /&gt;
&lt;br /&gt;
(hello-to-bonjour)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change fonts ===&lt;br /&gt;
&lt;br /&gt;
Let's colorize the names:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(defun boldify-names ()&lt;br /&gt;
    (switch-to-buffer-other-window &amp;quot;*test*&amp;quot;)&lt;br /&gt;
    (goto-char (point-min))&lt;br /&gt;
    (while (re-search-forward &amp;quot;Bonjour \\(.+\\)!&amp;quot; nil t)&lt;br /&gt;
      (add-text-properties (match-beginning 1)&lt;br /&gt;
                           (match-end 1)&lt;br /&gt;
                           (list 'face 'bold)))&lt;br /&gt;
    (other-window 1))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Searching regexps ===&lt;br /&gt;
&lt;br /&gt;
This functions introduces `re-search-forward': instead of&lt;br /&gt;
searching for the string &amp;quot;Bonjour&amp;quot;, you search for a pattern,&lt;br /&gt;
using a &amp;quot;regular expression&amp;quot; (abbreviated in the prefix &amp;quot;re-&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The regular expression is &amp;quot;Bonjour \\(.+\\)!&amp;quot; and it reads:&lt;br /&gt;
the string &amp;quot;Bonjour &amp;quot;, and&lt;br /&gt;
a group of (this is the \\( ... \\) construct)&lt;br /&gt;
any character (this is the .)&lt;br /&gt;
possibly repeated (this is the +)&lt;br /&gt;
and the &amp;quot;!&amp;quot; string.&lt;br /&gt;
&lt;br /&gt;
Ready?  Test it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=lisp&amp;gt;&lt;br /&gt;
(boldify-names)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
`add-text-properties' adds... text properties, like a face.&lt;br /&gt;
&lt;br /&gt;
OK, we are done.  Happy hacking!&lt;br /&gt;
&lt;br /&gt;
=== How to get documentation ===&lt;br /&gt;
&lt;br /&gt;
If you want to know more about a variable or a function:&lt;br /&gt;
&lt;br /&gt;
C-h v a-variable RET&lt;br /&gt;
C-h f a-function RET&lt;br /&gt;
&lt;br /&gt;
To read the Emacs Lisp manual with Emacs:&lt;br /&gt;
&lt;br /&gt;
C-h i m elisp RET&lt;br /&gt;
&lt;br /&gt;
To read an online introduction to Emacs Lisp:&lt;br /&gt;
https://www.gnu.org/software/emacs/manual/html_node/eintr/index.html&lt;br /&gt;
&lt;br /&gt;
Thanks to these people for their feedback and suggestions:&lt;br /&gt;
* Wes Hardaker&lt;br /&gt;
* notbob&lt;br /&gt;
* Kevin Montuori&lt;br /&gt;
* Arne Babenhauserheide&lt;br /&gt;
* Alan Schmitt&lt;br /&gt;
* LinXitoW&lt;br /&gt;
* Aaron Meurer&lt;/div&gt;</summary>
		<author><name>Elvince</name></author>
	</entry>
</feed>