<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Egy beteg srác naplója &#187; planet_emacsen</title>
	<atom:link href="http://blog.20y.hu/tag/planet_emacsen/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.20y.hu</link>
	<description>Török Gábor blogja</description>
	<lastBuildDate>Sun, 24 Feb 2013 15:30:43 +0000</lastBuildDate>
	<language>hu</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.20y.hu' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Egy beteg srác naplója &#187; planet_emacsen</title>
		<link>http://blog.20y.hu</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.20y.hu/osd.xml" title="Egy beteg srác naplója" />
	<atom:link rel='hub' href='http://blog.20y.hu/?pushpress=hub'/>
		<item>
		<title>Unit testing Emacs Lisp code with ElUnit</title>
		<link>http://blog.20y.hu/2010/03/17/unit-testing-emacs-lisp-code-with-elunit/</link>
		<comments>http://blog.20y.hu/2010/03/17/unit-testing-emacs-lisp-code-with-elunit/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 15:02:59 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[elisp]]></category>
		<category><![CDATA[elunit]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2417</guid>
		<description><![CDATA[ElUnit is a unit test framework for Emacs Lisp. You can define your test suites and see how they run against your code. It&#8217;s a great toolkit for test-driven development in Emacs Lisp as well. Running your tests manually after each changes may make you bored, though. Fortunately, you are using an extensible editor. In [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2417&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><i>ElUnit</i> is a unit test framework for Emacs Lisp. You can define your test suites and see how they run against your code. It&#8217;s a great toolkit for <a href="http://www.flickr.com/photos/nyuhuhuu/4431466615/">test-driven development in Emacs Lisp</a> as well. Running your tests manually after each changes may make you bored, though. Fortunately, you are using an extensible editor. In my scenario, I taught Emacs to automatically run corresponding test suites whenever I save the file I&#8217;m editing. As for the file topology, I put my tests under sub-directory <code>tests/</code>, and call them in scheme <code>my-file-test.el</code>. On the very beginning of each code file, I place a magic comment to specify <a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html">file variable</a> <code>elunit-default-suite</code> that holds the name of the test suite I want to run.</p>
<pre>;; -*- elunit-default-suite: "my-demo-suite" -*-</pre>
<p>The following snippet does the rest of the job: <a href="http://gist.github.com/335296#file_my_elunit.el">my_elunit.el</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2417/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2417/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2417&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2010/03/17/unit-testing-emacs-lisp-code-with-elunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
		<item>
		<title>A kiterjeszthető szövegeditor felépítéséről</title>
		<link>http://blog.20y.hu/2009/01/08/a-kiterjesztheto-szovegeditor-felepiteserol/</link>
		<comments>http://blog.20y.hu/2009/01/08/a-kiterjesztheto-szovegeditor-felepiteserol/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 13:15:10 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[programozás]]></category>
		<category><![CDATA[texteditor]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2303</guid>
		<description><![CDATA[Az Emacs erőssége abban rejlik, hogy programozható editor. Persze bármelyik editor programozható, akár a Gedithez (neked Vim) is írhatsz Pythonban bővítményeket, és még meg sem kell tanulnod egy új nyelvet, pláne nem egy Lispet (sic!). Az Emacs erőssége és bonyolultsága viszont tényleg abban rejlik, hogy magát az editort programozhatod. Másképp fogalmazva – fejlesztői szempontból – [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2303&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Az Emacs erőssége abban rejlik, hogy programozható editor. Persze bármelyik editor programozható, akár a Gedithez (<a href="/20080915/ubuntu-konferencia-2008-megvolt.html">neked Vim</a>) is írhatsz Pythonban bővítményeket, és még meg sem kell tanulnod egy új nyelvet, pláne nem <em>egy</em> Lispet (sic!). Az Emacs erőssége és <a title="François Pinard: Thoughts on editors (Emacs in particular)" href="http://pinard.progiciels-bpi.ca/opinions/editors.html">bonyolultsága</a> viszont tényleg abban rejlik, hogy magát az editort programozhatod. Másképp fogalmazva – fejlesztői szempontból – az Emacs egy <a href="/20080827/a-linuxportal-bemutatja-gnu-emacs-aperitif.html">hatalmas kódtár</a>; ha úgy tessék, egy <em>Elisp API</em>. Ez persze nem teljesen igaz. Nem igaz abban a formában, hogy az API az alkalmazás fölé emelt, jól definiált réteg, amin keresztül külső bővítmények (pluginok) az API alatt meghúzódó alkalmazással kommunikálhatnak, annak szolgáltatásait használhatják, és azokra épülve egészíthetik ki annak tudását. (Az ábrák <cite>Benjamin Ferrari: <a href="http://blog.bookworm.at/2007/03/introduction-to-all-these-emacs.html">Emacs is different</a></cite> értekezése nyomán.)</p>
<p><img src="http://static.20y.hu/wp-images/20090107/other_editors_architecture.png" alt="Ábra: átlagos szövegeditorok felépítése Plugin API-val" /></p>
<p>Az Emacsban az API maga az Emacs. Emacsban – amikor API-ról beszélek – magát az Emacsot értem, nem egy mezsgyéjét a kódoknak, hanem az editor teljes forráskódját, amelynek bármelyik része elérhető, módosítható, kiterjeszthető. A te kódod (bővítményed) ugyanabban a szegmensben lesz, mint a mag fejlesztőinek kódja, nincs egy éles határ (ld. API) húzva a kettő közé.</p>
<p><img src="http://static.20y.hu/wp-images/20090107/emacs_architecture.png" alt="Ábra: az Emacs szövegeditor felépítése Plugin API nélkül" /></p>
<p>Tényleg <em>nyílt</em> forrású, és abban az értelemben is, hogy nem csak tanulmányozhatod a kódot, hanem tetszés szerint, futás időben is változtathatod annak működését. (Nem forkolod az alkalmazást, hanem testreszabod.) Gedithez is írható <a href="/20081217/listening-to-lastfm-in-emacs.html">Last.fm plugin</a>, sőt, meg merem kockáztatni, hogy talán még triviálisabb is: <a href="http://phanatic.hu/archives/2008/10/egyszeru-lastfm-kliens-pythonban/">import LastFm</a>. Az Emacs előnye akkor jelentkezik, amikor olyan funkcionalitást vagy úgy szeretnél, amire nem vagy nem úgy kínál megoldást a (plugin) API, és ez a gondolat elvezethető egészen olyan szélsőséges esetekig, mint amikor a CVS Emacsban megjelent bugot átmenetileg egy advise-zal (neked decorator) orvoslod.</p>
<p>Éppen ezért emacsos kiegészítő (terminussal élve: <em><a href="/20081021/a-linuxportal-bemutatja-bevezetes-az-emacs-hasznalataba.html#mode">mode</a></em>) fejlesztésekor külön azzal foglalkozni nem szükséges, hogy rögzítsük az alkalmazás program-interfészét. A lispes alulról felfele építkezés és az a tény, hogy bármelyik függvényünk vagy változónk mások fejlesztése során felhasználásra kerülhet, kikényszeríti, hogy a teljes kiegészítő rugalmas és biztonságos legyen, és szükség szerint API-ként funkcionáljon egyéb komponensek felé.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2303&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2009/01/08/a-kiterjesztheto-szovegeditor-felepiteserol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20090107/other_editors_architecture.png" medium="image">
			<media:title type="html">Ábra: átlagos szövegeditorok felépítése Plugin API-val</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20090107/emacs_architecture.png" medium="image">
			<media:title type="html">Ábra: az Emacs szövegeditor felépítése Plugin API nélkül</media:title>
		</media:content>
	</item>
		<item>
		<title>Listening to Last.fm in Emacs</title>
		<link>http://blog.20y.hu/2008/12/17/listening-to-lastfm-in-emacs/</link>
		<comments>http://blog.20y.hu/2008/12/17/listening-to-lastfm-in-emacs/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 12:58:14 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[emms]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[lastfm]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2288</guid>
		<description><![CDATA[During the backup process before I had upgraded my notebook to Fedora 10, I decided not to copy back my Music folder to the fresh installation, but start using Last.fm whenever I&#8217;d like to listen to music. The question came quite straight—so how to play Last.fm streams in Emacs? Emacs has its great multimedia system, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2288&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>During the backup process before I had <a href="http://www.flickr.com/photos/nyuhuhuu/tags/f10/">upgraded my notebook to Fedora 10</a>, I decided not to copy back my Music folder to the fresh installation, but start using Last.fm whenever I&#8217;d like to listen to music. The question came quite straight—so how to play Last.fm streams in Emacs?</p>
<p>Emacs has its great multimedia system, which has Last.fm support in development stage. Following the <a href="http://www.gnu.org/software/emms/quickstart.html">instructions on EMMS</a>&#8216;s homepage and <a href="https://svn.rizoma.cl/svn/emacswiki/.emacs-emms-thierry-mpd.el">rizoma&#8217;s dotemacs</a>, soon I got Last.fm working under my Emacs.</p>
<p>(To be exact, I used the <a href="http://www.tsdh.de/repos/darcs/emms/">EMMS source code patched by tsdh</a>. It has some convenient addons.)</p>
<p>Put the following to into your dotemacs:</p>
<pre><code class="lisp language-elisp language-lisp">(add-to-list 'load-path "~/elisp/emms/")
(require 'emms-setup)
(emms-devel)
(emms-default-players)
(emms-lastfm-enable)
</code></pre>
<p>At this point, you&#8217;re almost ready to play the radio. You still need to set your Last.fm username and password. For the former, you may simply customize `<var>emms-lastfm-username</var>&#8216; for future sessions, but for the latter, I don&#8217;t recommend you to store your password in a plain text file—you&#8217;d rather add the following advise into your dotemacs, that asks you interactively for your Last.fm password every time you start the radio.</p>
<pre><code class="lisp language-elisp language-lisp">(defadvice emms-lastfm-radio (before read-passwd (lastfm-url))
  (if (string= emms-lastfm-password "")
      (setq emms-lastfm-password (read-passwd "Password: "))))

(ad-activate 'emms-lastfm-radio)
</code></pre>
<p>Go listening to Last.fm!</p>
<pre><kbd>M-x emms-lastfm-radio-similar-artists RET angelspit</kbd></pre>
<p>With the offical code, try this:</p>
<pre><kbd>M-x emms-lastfm-radio RET lastfm://artist/Imperial brothers/similarartists</kbd></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2288&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/12/17/listening-to-lastfm-in-emacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
		<item>
		<title>A LinuxPortál bemutatja: Bevezetés az Emacs használatába</title>
		<link>http://blog.20y.hu/2008/10/21/a-linuxportal-bemutatja-bevezetes-az-emacs-hasznalataba/</link>
		<comments>http://blog.20y.hu/2008/10/21/a-linuxportal-bemutatja-bevezetes-az-emacs-hasznalataba/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 22:22:09 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[én]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[linuxportál]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[prezentáció]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2195</guid>
		<description><![CDATA[A LinuxPortál nyíltforrású technológiákat érintő és szabadszoftveres közösségeket, projekteket népszerűsítő tévéműsor 348. adásában Bevezetés az Emacs használatába címen előadtam. A bemutató logikus folytatása a korábbi műsorban tartott Emacs apéritif prezentációmnak. Ezúttal az Emacssal ismerkedők számára az alkalmazás alapvető használatához szükséges fogásokat ismertettem. A továbbiakban az előadás szöveges kivonata olvasható. A tévéműsor felvétele megtekinthető a Bevezetés [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2195&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A LinuxPortál nyíltforrású technológiákat érintő és szabadszoftveres közösségeket, projekteket népszerűsítő tévéműsor 348. adásában <em>Bevezetés az Emacs használatába</em> címen előadtam. A bemutató logikus folytatása a korábbi műsorban tartott <em><a href="/20080827/a-linuxportal-bemutatja-gnu-emacs-aperitif.html">Emacs apéritif</a></em> prezentációmnak. Ezúttal az Emacssal ismerkedők számára az alkalmazás alapvető használatához szükséges fogásokat ismertettem. A továbbiakban az előadás szöveges kivonata olvasható. A tévéműsor felvétele megtekinthető a <em><a href="http://video.google.com/videoplay?docid=-390806325785687319&amp;ei=mzr-SOuKJqf22gLjvszdDg&amp;q=linuxport%C3%A1l">Bevezetés az Emacs használatába</a></em> címmel a Google Video felületén.</p>
<div class="frame"><a href="http://video.google.com/googleplayer.swf?docid=-390806325785687319&#038;hl=en&#038;fs=true">http://video.google.com/googleplayer.swf?docid=-390806325785687319&#038;hl=en&#038;fs=true</a></div>
<p lang="en"><em>To dear Emacs Planet readers:</em> some weeks ago, I hold my second presentation on Emacs in the hungarian FLOSS related TV programme <em>LinuxPortál</em>. I talked about the basic steps needed to feel convenient in Emacs. I highlighted the main reasons to choose GNU Emacs 23, explained its user interface, keybinding conventions, terminology, mentioned the modes, and covered a lot of other things a user meets when she starts Emacs for the first time.</p>
<p><span id="more-2195"></span></p>
<div class="frame"><a href="http://documents.scribd.com/ScribdViewer.swf?document_id=6184023&#038;access_key=key-2mnxv6f3nzqy7nqijgom&#038;page=&#038;version=1&#038;auto_size=true&#038;viewMode=">http://documents.scribd.com/ScribdViewer.swf?document_id=6184023&#038;access_key=key-2mnxv6f3nzqy7nqijgom&#038;page=&#038;version=1&#038;auto_size=true&#038;viewMode=</a></div>
<h3><a id="verziok">Emacs 21, 22, 23?</a></h3>
<p>Az Emacs telepítésekor az első felmerülő kérdés, hogy melyik verziót szerezzük be. Jelen sorok keltekor az Emacs hivatalos stabil kiadása a 22.3-as, de sok helyütt találkozhatunk még 21-es verzióval is. Az utóbbi évben az Emacs fejlesztése rendkívül felélénkült, 23-as rajtszámmal – még alfa stádiumban – beszerezhető a legfrissebb funkciókat, szolgáltatásokat tartalmazó csomag. Aki hosszabb ismeretséget kíván kötni az Emaccsal, mindenképpen a 23-as kiadást javasolom a számára. Néhány terület, melyben kiváltképp jeleskedik:</p>
<ul>
<li>teljes körű unicode támogatás</li>
<li>GTK mint alapértelmezett toolkit</li>
<li>élsimított betűk</li>
<li>grafikus felületű szerverhez akár karakteres felületű kliens indítása és vice versa</li>
<li>SVG támogatás</li>
<li>PDF-olvasó</li>
<li>nyíltkulcsú titkosítás támogatása</li>
<li>JSON támogatás</li>
<li>nXML-mode az XML dokumentumok szerkesztéséhez</li>
<li>kitörölt fájlok akár a munkakörnyezet (pl. GNOME) szemetesébe is kerülhetnek</li>
</ul>
<p>Naprakész részletekért lapozza fel a <a href="http://cvs.savannah.gnu.org/viewvc/*checkout*/emacs/emacs/etc/NEWS?content-type=text%2Fplain&amp;revision=HEAD">CVS forrásfa híreit</a>.</p>
<h3><a id="telepites">Emacs 23 telepítése</a></h3>
<p>A legtöbb linuxos disztribúció <var>emacs-snapshot</var> néven szállítja az Emacs 23-at. Ha még sem lenne így, külső, nem hivatalos tárolókból, vagy közvetlenül a CVS (illetve átjárókon keresztül Arch, bzr vagy akár git) forrásból is telepíthetjük az alkalmazást.</p>
<h3><a id="inditas">Emacs indítása</a></h3>
<p>Az Emacsot a grafikus munkakörnyezetünk biztosította parancsindítóval, vagy az <code>emacs</code> utasítással indíthatjuk. Automatikusan az Emacs grafikus felülete (GTK+) indul. A <code>-nw</code> kapcsolóval karakteres üzemmódra kényszeríthetjük. Az Emacs filozófiája szerint lehetőséghez mérten egy futó Emacsot használjunk, ne indítsunk több példányt belőle. Ha az Emacsot szerver módban indítjuk, lehetőségünk van hozzá kliensekkel kapcsolódni. Ezek a kliensek a megadott fájlt akár a már futó vagy egy önálló Emacs programablakban képesek megnyitni – mint említett – akár a szöveges, akár grafikus felületen. Ez utóbbinak több haszna is lehet: például távolról SSH-n bejelentkezve, szöveges felületen is dolgozhatunk az egyébiránt a grafikus felületen indított Emacson; egy másik felhasználása, amit én a mindennapokban használok, hogy a háttérben egy <a href="/20080326/screen-kepernyomenedzser-karakteres-feluletre.html">screen session</a>ben elindul az Emacs szerver, a GNOME munkakörnyezetben pedig ehhez csatlakozó grafikus felületű kliensekben nyitom meg a munkafájlokat. Ennek a módszernek járulékos előnye, hogy a screen miatt az Emacs szerver addig fut, amíg le nem kapcsolom a számítógépet, még véletlenül sem fogok kilépni belőle.</p>
<h3><a id="ui">UI</a></h3>
<p>Az Emacs felhasználói felülete némileg eltért a megszokottaktól, azonban hamar meg lehet vele barátkozni. Az Emacs terminológiában a programablakot keretnek (frame) hívják. Keretet nyithatunk Emacs klienssel vagy meglévő keretből. Keretek között az Emacs gyorsbillentyűivel is válthatunk. Minden kerethez tartozik menüsor és eszközsáv (ez utóbbi csak grafikus felületen), egy ún. echo area (ez szolgál az Emacs üzeneteinek a megjelenítésére, továbbá parancsbevitelkor ennek a helyén jelenik meg a minipuffer, amelyen keresztül az Emacsnak üzenhetünk), a keret fennmaradó részét pedig tetszőleges ablakra oszthatjuk (split window) fel.</p>
<p><a href="http://flickr.com/photos/nyuhuhuu/tags/emacs/"><img src="http://static.20y.hu/wp-images/20081021/emacs_ui.jpg" alt="Az Emacs felhasználói felülete linuxos környezetben" /></a></p>
<p>Az egyes ablakok a tényleges munkaterületek. Ha megnyitunk egy fájlt, az Emacs létrehoz a számára egy ablakot. Az ablak azon egységét puffernek nevezzük, amely a megnyitott fájl tartalmát jeleníti meg. Minden ablakhoz tartozik egy modeline, amely a puffer állapotát tükrözi (aktuális sor, bekapcsolt funkciók stb.). Az ablakok opcionálisan tartalmazhatnak még görgetősávot, valamint sorszámozást. Találkozhatunk olyan szolgáltatásokkal is az Emacson belül, amelyek felhasználói felületükön füleket (tab) alkalmaznak.</p>
<p>Egyszerre ugyan megnyithatunk több fájlt, de nem szükségszerűen látjuk valamennyit. Az ablakok segítségével oszthatjuk fel az Emacs keretet munkafelületekre. Az ablakok az egyidejűleg látni kívánt tartalmak megjelenítésére szolgálnak (pl. két fájl összevetése, <em>diff</em>). Egyszerre egy ablak lehet aktív, amely a kiadott parancsokat fogadja és feldolgozza. Ahogy a keretek között, ablakok és pufferek között is billentyűparancsokkal válthatunk.</p>
<h3><a id="fajlok">Fájlok</a></h3>
<p>Fájlt többféleképpen nyithatunk meg. Belehúzhatjuk a keretbe (húzd-és-ejtsd), kiválaszthatjuk az eszköztárra helyezett ikon segítségével, valamint – a hosszú távon preferált módon a <kbd>C-x C-f</kbd> billentyűkombinációval a minipufferben felbukkanó bevitelen keresztül adhatjuk meg. Az Emacs fájlkezelőt (file manager, commander) is tartalmaz, ha nem fájlt, hanem könyvtárat választottunk, automatikusan betöltődik.</p>
<p>Az Emacs „hurok” (hook) rendszerű felépítésének köszönhetően az alapvető szolgáltatásokra (pl. fájl megnyitás) rátelepülhetnek további kiegészítő funkciók. Ilyen például a <em>tramp</em>, amely segítségével távoli erőforrásokhoz csatlakozhatunk. A <kbd>C-x C-f</kbd> esetében megadott elérést amennyiben protokollal (és szükség esetén belépési témaszámmal, jelszóval) egészítjük ki, az Emacs automatikusan csatlakozik a kiszolgálóhoz, majd annak fájljai és könyvtárai között ugyanúgy böngészhetünk, mint ha csak a helyi fájlrendszeren lennénk.</p>
<p>A tramp teszi lehetővé továbbá, hogy helyi állományokat más felhasználóként szerkeszthessünk. Ha <var>su</var> vagy <var>sudo</var> megjelöléssel adjuk meg a path-t, az Emacs bekéri a vonatkozó jelszót, és akár rendszergazdai állományokat is módosíthatunk úgy, hogy el sem kellett hagynunk az Emacsot.</p>
<pre><kbd>C-x C-f /su:root@localhost:/etc/hosts</kbd></pre>
<h3><a id="billentyuk">Mozgás</a></h3>
<p>Az Emacs elsajátításának talán legnagyobb kihívása – amely az antipatikusok körében a legtöbbet emlegetett –, hogy elsőre bonyolultnak tűnnek a billentyűkombinációk (keybinding). Az Emacs a legtöbb texteditorhoz hasonlóan nem modális, tehát mindig – vimes terminussal élve – „insert módban” vagyunk, a különféle funkciókat a módosító billentyűkkel társított kombinációkkal érhetjük el. Az Emacsot symbolics-os billentyűzetre találták ki, annak kiosztásán voltak nagyon kényelmesen elérhetők az emacsos billentyűkombinációk.</p>
<p>Aki már esetleg használt egyéb GNU-s alkalmazást (pl. bash), és ismeri annak gyorsbillentyűit, magabiztosan érezheti magát eleinte az Emacsban is.</p>
<p>A pufferen belüli mozgás elsajátításához célszerű a beépített angol nyelvű Emacs Tutorialt (<kbd>C-h t</kbd>) átolvasni, és az ott szereplő feladványokat gyakorolni. A kurzorbillentyűk, <kbd>PgUp</kbd>, <kbd>PgDown</kbd> és hasonszőrű társaik használatáról idővel nyugodtan leszokhatunk: feleslegesen kell mozgatnunk a kézfejünket a billentyűzet felett, hogy elérjük őket. Nagyobb hátrányuk azonban, hogy <a href="/20080124/one-goes-emacs-never-goes-back.html">rossz magatartásformákat kölcsönöznek</a>. Az emacsos mozgások lehetnek fizikai vagy logikai mozgások. Léphetünk előre karaktert, szót, paragrafust, függvénytörzset stb. Ezek használatára csak akkor lesz igényünk, ha túllépünk azon, hogy a kurzorral lépkedünk, ergo csak karakter alapú mozgást használunk. A villogó kurzor pozíciójától két mondattal hátrébb szereplő mondat első szavát elgépeltük. Odagyalogol a nyílakkal, vagy <kbd>M-a M-a M-f</kbd>?</p>
<p>Tipp: a <kbd>Caps Lock</kbd> helyett állítsuk be, hogy az a jövőben a <kbd>Control</kbd> billentyű szerepét töltse be. A felhasználónk könyvtárában elhelyezett <var>.xmodmap</var> állományba szúrjuk be az alábbi kódot:</p>
<pre><code>! capslock to ctrl_l
keycode 66 = Control_L
clear Lock
add Control = Control_L</code></pre>
<h3><a id="kereses">Keresés</a></h3>
<p>Az Emacs keresés gyorsbillentyűjével (<kbd>C-s</kbd>) inkrementális keresést kezdeményezhetünk a pufferen (a keresőkifejezés begépelése során egyből jelzi az egyezéseket). Ha csupa kisbetűvel adjuk meg a kifejezést, keresés során a program figyelmen kívül hagyja a kis- és nagybetűk közötti különbséget. Kezeli továbbá a reguláris kifejezéseket (inkrementálisan is), és további egyéb szolgáltatást is nyújt.</p>
<p>Bármilyen billentyűparancsról a <kbd>C-h c</kbd>-vel lekérdezhető, hogy milyen utasítást hajt végre a háttérben. Adott utasítás működéséről pedig a <kbd>C-h f</kbd>-fel kapunk részletes tájékoztatást. A keresés példájánal maradva az <code>isearch-forward</code> fut le a háttérben. Ha megnézzük a függvény súgóját (<kbd>C-h f isearch-forward</kbd>), láthatjuk, hogy keresés közben tucat további billentyűparancs áll a rendelkezésünkre, amivel a keresés irányát, típusát, a keresés kifejezést stb. szabályozhatjuk.</p>
<h3><a id="edit">Szerkesztés</a></h3>
<p>A mozgás során intelemként feltüntetett „nem nyilazunk” a szerkesztésre is vonatkozik. Felcserélünk gépelés során két szót. Kitöröljük azokat, majd a helyes sorrendbe begépeljük újra? Ehelyett álljunk inkább a második szóra (<kbd>M-f M-f</kbd>), majd adjuk ki az Emacs <code>transpose-words</code> utasítását (<kbd>M-t</kbd>). Ki akarjuk mégis törölni a következő szót? <kbd>M-d</kbd>. Ki akarjuk törölni a teljes sort? <kbd>C-k</kbd>.</p>
<p>Temérdek szerkesztő funkciót támogat az Emacs. Értelemszerűen ezek nem mindegyikéhez nyújt gyorsbillentyűt. Parancsokat közvetlenül a <kbd>M-x</kbd> billentyűkombinációval felbukkanó minipufferben adhatunk ki.</p>
<p>Bármelyik parancs előtt a <kbd>C-u <em>szám</em></kbd> vagy <kbd>ESC <em>szám</em></kbd> prefixummal az adott parancs számszor fog lefutni. Próbáljuk ki! <kbd>ESC 10 a</kbd>. A pufferbe tíz darab „a” betű kerül. (Az Emacsban minden billentyű vagy billentyűkombináció a háttérben egy függvényt futtat le. Így van ez még az olyan triviális esetekben is, mint egy „a” betű. Házi feladat: nézzük meg, milyen utasítás fut le az „a” betű lenyomásakor.)</p>
<h3><a id="yank">Kivágás–másolás</a></h3>
<p>Az Emacs <var>Edit</var> menüpontjában bekapcsolható a CUA (Common User Access) szabvány támogatása. Ennek hatására például a kivágás–másolás–beillesztés a megszokott billentyűkombinációkon lesz elérhető (ezek ugyanis Emacsban eltérőek). Ezzel a lehetőséggel <a href="http://trey-jackson.blogspot.com/2008/10/emacs-tip-26-cua-mode-specifically.html">csak megfelelő indok</a> esetén érdemes élni, ugyanis üti az Emacs alapvető billentyűkombinációit.</p>
<p>Emacsban a kijelölés kezdetét ún. mark (<kbd>C-SPC</kbd>), a kijelölés végét pedig a kurzor pozíciója jelöli. A kivágás Emacs szakszava <em>kill</em>. Minden, amit kivágunk, rákerül egy végtelen előzménylistával rendelkező kill-ringre (gyakorlatilag vágólap). Billesztéskor (másnéven <em>yank</em>, <kbd>C-y</kbd>) a kill-ringre legutóbb másolt (jobban mondva kivágott) elemet illeszthetjük be. A <kbd>M-y</kbd> billentyűkombinációval végig pörgethetjük az előzménylistát.</p>
<h3><a id="undo">Undo–redo</a></h3>
<p>Egy szövegszerkesztőben a legutóbbi akciókat undóval tehetjük semmissé, majd a redóval ismételhetjük meg. Emacsban nincs külön redo funkció, ha megszakítjuk az undózást, az undók undózásával érhetjük el a redót. Ez a működés abból fakad, hogy az Emacs az undo eseményeket is undoként tárolja el. Míg a hagyományos, lineáris undokezelésben egy undót követő akció felülírja a redot, Emacsban a puffer bármelyik korábbi állapotát visszanyerhetjük.</p>
<p><img src="http://static.20y.hu/wp-images/20081021/tree_undo.jpg" alt="Faszerű, végtelen előzménylista az Emacsban" /></p>
<p>Forrás: <cite><a href="http://www.linux-mag.com/id/2906">Vimming to New Heights</a></cite></p>
<h3><a id="mode">Mode-ok</a></h3>
<p>Noha korábban úgy nyilatkoztam, az Emacs modeless, mégis beszélhetünk az esetében mode-okról (a továbbiakban: módokról). Minden megnyitott pufferhez tartozik egy major mód, amely annak viselkedését (így érvényes billentyűkombinációk), megjelenését (így színkiemelés) határozza meg. Ilyen major mód a <var>python-mode</var>, amely praktikusan Python forráskódok szerkesztéséhez nyújt segítséget. Valamennyi pufferhez kapcsolhatók további szolgáltatások, ún. minor módok. Ezek kötődhetnek egy adott pufferhez, de jelen lehetnek globális módként is. Egy pufferhez tetszőleges minor mód hívható meg. Minor mód például a <var>linum-mode</var>, amely a soreleji sorszám kijelzésért felelős. Egy adott pufferen aktív módok listáját a <kbd>C-h m</kbd> gyorsbillentyűvel kérhetjük le.</p>
<h3><a id="kilepes">Kilépés</a></h3>
<p>Az Emacsból legegyszerűbben úgy léphetünk ki, ha a programablakot (keretet) a megszokott módon bezárjuk. A <kbd>C-5 0</kbd> billentyűparanccsal egy keretből, a <kbd>C-x C-c</kbd> pedig magából az Emacs alkalmazásból is kiléphetünk. (Ha ez utóbbit egy szerverhez kapcsolódó kliensen adjuk ki, az természetesen csak a klienset zárja be, a szerver tovább fut.)</p>
<h3><a id="hibajegyzek">Hibajegyzék</a></h3>
<p>Az alábbiakban az élő adásban tett egy-némely pontatlan megfogalmazásom helyesbítem.</p>
<ul>
<li>a <var>Meta</var> nem karakter, hanem módosító billentyű</li>
<li>a pufferlistát <kbd>C-x C-b</kbd>-vel kérdezhetjük le, nem <kbd>C-x b</kbd>-vel (ez utóbbi a megadott pufferre vált)</li>
<li>a <kbd>C-l</kbd> nem a <var>center-line</var> utasítás „rövidítése”, hanem ahhoz rendelt gyorsbillentyű</li>
<li>természetszerűen a „kedvenc vesszőparipám” kifejezés redundáns, annak valamely tagját hagyjuk el</li>
<li>az Emacs undo kezelése nem hagyományos, hanem rendhagyó</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2195&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/10/21/a-linuxportal-bemutatja-bevezetes-az-emacs-hasznalataba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20081021/emacs_ui.jpg" medium="image">
			<media:title type="html">Az Emacs felhasználói felülete linuxos környezetben</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20081021/tree_undo.jpg" medium="image">
			<media:title type="html">Faszerű, végtelen előzménylista az Emacsban</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu Konferencia 2008, benne: Emacs és Vim fej-fej mellett</title>
		<link>http://blog.20y.hu/2008/09/15/ubuntu-konferencia-2008-megvolt/</link>
		<comments>http://blog.20y.hu/2008/09/15/ubuntu-konferencia-2008-megvolt/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 09:15:52 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[én]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[photoblog]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[ubuntu konferencia]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2103</guid>
		<description><![CDATA[A második magyarországi Ubuntu konferencián Horák György barátommal Emacs és Vim fej fej mellett c. előadásunkat tartottuk meg. Köszönjük a nagy számú érdeklődést, valamint a hasznos visszajelzéseket*. Köszönjük a konferencia kérdőívét kitöltők közül azoknak, akik az ötös skálán hatossal pontozták előadásunkat, és végül köszönjük a konferencia szervezőinek a színvonalas rendezvényt. With my friend, Horák György, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2103&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A második magyarországi Ubuntu konferencián <a href="http://blog.horak.hu">Horák György</a> barátommal <a title="Az Emacs és Vim fej fej mellett c. előadás fóliái" href="http://www.scribd.com/doc/5641987/Emacs-es-Vim-fej-fej-mellett">Emacs és Vim fej fej mellett</a> c. előadásunkat tartottuk meg. Köszönjük a nagy számú érdeklődést, valamint a hasznos visszajelzéseket<sup><a href="/20080915/ubuntu-konferencia-2008-megvolt.html#visszajelzes">*</a></sup>. Köszönjük a konferencia kérdőívét kitöltők közül azoknak, akik az ötös skálán hatossal pontozták előadásunkat, és végül köszönjük a konferencia szervezőinek a színvonalas rendezvényt.</p>
<p lang="en">With my friend, Horák György, we gave a 20-minutes talk at the second hungarian Ubuntu conference. We presented two high-tech text editors—Emacs and Vim—to the audience. We tried to convince them, it&#8217;s time to switch to a better editing tool.</p>
<p><a href="http://www.flickr.com/photos/nyuhuhuu/2856498982/"><img src="http://static.20y.hu/wp-images/20080915/ubuntukonf2008.jpg" alt="Konferenciakitűzők az Ubuntu Konferenciáról" /></a></p>
<p>Előadásunk tárgya nem két rivális eszköz közötti feszültség élezése, hanem a <a href="http://www.gnu.org/software/emacs/">GNU Emacs</a> (továbbiakban: Emacs) <em>és</em> <a href="http://www.vim.org/">Vim</a> szolgáltatásainak bemutatása volt. Úgy véljük, hogy az Emacs és Vim együtt versenytársai más texteditoroknak. Az alábbiakban a prezentáción elhangzottak Emacs-vetületének szövegezése olvasható.</p>
<p><span id="more-2103"></span></p>
<h3><a id="inditas">Hogyan indítható el a program?</a></h3>
<p>Az Emacsot az <code>emacs</code> paranccsal indíthatjuk. Ha grafikus munkakörnyezetben indítjuk az alkalmazást, automatikusan a program GTK-s felülete indul. X-kiszolgáló hiányában vagy az <code>-nw</code> kapcsoló megadásával az Emacs karakteres felületű verziója töltődik be. Az Emacsot célszerű szerver-kliens üzemmódban használni. Akár már a bootup során elindítható egy Emacs-szerver, amelyhez a munkafolyamat során kliensekkel kapcsolódhatunk (akár karakteres, akár grafikus módban).</p>
<h3><a id="platform">Hol fut?</a></h3>
<p>Az Emacs nyílt forrású, minden elterjedt operációs rendszer alatt telepíthető. A linuxos disztribúcióknak <var>emacs</var> nevű csomagként képezi a részét. Nem feltétlenül kerül telepítésre az alaprendszerrel.</p>
<h3><a id="nyelv">Milyen nyelven érhető el?</a></h3>
<p>Az Emacs felhasználói felülete angol nyelvű. Jelenleg nem nyújt támogatást lokalizációra. Az Emacs beépített dokumentációja szintén angol nyelvű.</p>
<h3><a id="indulasi_sebesseg">Indulási sebesség</a></h3>
<p>A gyári kiszerelés néhány másodperc alatt indul. A bekapcsolt funkciók mennyiségétől függően természetesen ez az érték változhat. A <var>-Q</var> kapcsolóval a <var>.emacs</var>-ot nem olvassa be az Emacs. Rendszeres használatra javallott az Emacsot szerver üzemmódban használni, a hozzá kapcsolódó kliensek így azonnal indulnak. Az Elisp (Emacs Lisp) kódokat az Emacs képes bájtkódra fordítani. Ezt célszerű figyelembe venni a külső tárolókból beszerzett csomagok esetén, de a <var>.emacs</var>-ot (ld. következő pont) is lehetőség van lefordítani, ezzel is sebesség növekedés érhető el.</p>
<h3><a id="konfiguracio">Konfiguráció, testreszabás</a></h3>
<p>Az Emacs definició szerint kiterjeszthető, testreszabható texteditor. Az Emacs Elisp nyelvű konfigurációs állománya a $HOME alatt található <var>.emacs</var> (ejtsd: dotemacs). Lehetőség van a főbb opciókat a programablak menüjének segítségével is beállítani, akár a jelenlegi, akár a későbbi munkafolyamatok számára. Az Emacs kiterjedt <em>Customization</em> alrendszerének köszönhetően menüvezérelten valamennyi funkció paraméterei állíthatók. Minden felülbírálható, testreszabható, megváltoztatható Emacs Lisp nyelven.</p>
<h3><a id="ui">Felhasználói felület felépítése</a></h3>
<p>Az ablakkezelő szempontjából ablaknak tekintett programablakot az Emacs keretnek (frame) nevezi. Keretből nyitható több, ezek között billentyűparancsok segítségével válthatunk. Minden kerethez tartozik egy menüsor, egy eszköztár (ezek elrejthetők) és egy minibuffer. Egy keretet feloszthatunk több – Emacs terminussal élve – ablakra (split windows).</p>
<p><a href="http://flickr.com/photos/nyuhuhuu/tags/emacs/"><img src="http://static.20y.hu/wp-images/20080915/emacs_screenshot.jpg" alt="Az Emacs felhasználói felülete" /></a></p>
<p>Az ablakok egy pufferből (buffer) és modeline-ból állnak. A puffer egy megnyitott fájl tartalmát vagy egy esemény eredményét tükrözheti. Puffer lehet írható vagy olvasható. A modeline a pufferről, annak tartalmáról és ahhoz kapcsolódó szolgáltatásokról ad részletes tájékoztatást. A pufferen végezhető műveleteket ún. mode-ok határozzák meg. Minden pufferhez tartozik pontosan egy major mode, és további tetszőleges számú minor mode. A minor mode-ok nem feltétlenül pufferhez kötöttek, vonatkozhatnak valamennyi pufferre is.</p>
<h3><a id="billentyu">Billentyűkombinációk</a></h3>
<p>Az alapvető &#8211; többnyire navigálásra szolgáló – billentyűkombinációk egybevágnak a GNU-kiosztással, így a már máshol (pl. bash) megszerzett tudást itt kamatoztathatjuk. Az Emacs – hasonlóan a legtöbb editorhoz – nem modális, azaz az egyes funkciókat módosító billentyűkkel kiadott parancsokkal érhetjük el. Ezek jellemzően az Escape/Alt/Meta, Control és Shift. Az Emacs tehát nem modális, azonban mégis beszélhetünk az esetében mode-okról. A kiadható billentyűparancsok hatásáért ablakonként egy major-mode, és tetszőleges további kiegészítő funkcionalitást nyújtó minor-mode felelős. Ezek a mode-ok határozzák meg, hogy például milyen színkiemelést kapunk, vagy a <kbd>TAB</kbd> leütésére milyen funkció fut le a háttérben. Emacsban <em>minden</em> billentyűkombináció egy explicit is kiadható parancsot futtat le a háttérben. Ezeket a függvényeket a <kbd>M-x</kbd>-szel közvetlenül is kiadhatjuk a minibufferen keresztül. A <kbd>C-h c</kbd> és <kbd>C-h k</kbd> segítségével bármely billentyűkombinációról megtudhatjuk, hogy mit csinál.</p>
<h3><a id="mozgas">Mozgás a pufferben</a></h3>
<p>Mint említettem, a navigációt szolgáló billentyűparancsok egybeesnek a GNU-kiosztással. Ilyen például a soreleje és sorvége parancs (<kbd>C-a</kbd>, <kbd>C-e</kbd>), a következő sor vagy következő oldal (<kbd>C-n</kbd>, <kbd>C-v</kbd>). Az Emacs megkülönböztet ún. fizikai (sor, oszlop, téglalap stb.) és logikai szövegegységeket (paragrafus, függvénydefinició stb.). Előbbieket többnyire a <kbd>C-&lt;karakter&gt;</kbd>, utóbbiakat <kbd>M-&lt;karakter&gt;</kbd> billentyűparanccsal érjük el. Tetszőleges sorra a <kbd>M-g M-g</kbd>-vel ugorhatunk. Az aktuális sort a <kbd>C-l</kbd>-lel az ablak közepére igazíthatjuk.</p>
<h3><a id="pozicio">Puffer pozició mentése</a></h3>
<p>Pufferpoziciók mentésére a legkényelmesebb a regiszterek használata, amelyek az ábécé betűivel vagy számmal azonosítható tárolók. A regiszterek adott pufferhez kötődnek, kilépéskor tartalmuk elveszik. A könyvjelzők tárolhatók, és adott fájl ill. azon belüli poziciót jelölnek. Az előzőleg szerkesztett területekhez a <kbd>C-u C-SPC</kbd>-szel térhetünk vissza.</p>
<h3><a id="kereses">Inkrementális és regex-alapú keresés</a></h3>
<p>Alapértelmezetten az inkrementális keresést ajánlja fel az Emacs. Lehetőségünk van reguláris kifejezésre, szintén inkrementális módon keresni. Az Emacs a grep eszközhöz hasonló, egyszerű regexp kifejezéseket támogatja. Az Emacs tartalmaz egy grep burkolót is, amely a parancssoros grepek (akár <var>egrep</var>) valamelyike fölé kínál felületet. Ha a keresőszót csupa kisbetűvel írjuk – és másként nem rendelkeztünk róla – az Emacs a kis- és nagybetűk közötti különbséget figyelmen kívül hagyja keresésnél. Ez regex-alapú keresésnél is igaz. A keresés-és-csere funkcióban is használhatunk reguláris kifejezéseket. A <kbd>M-/</kbd> paranccsal indukálható szolgáltatást interaktív, azaz a rendszer rákérdez minden egyes csere előtt, így pontosan látjuk, miket fog lecserélni.</p>
<h3><a id="menekules">Menekülés</a></h3>
<p>Az előzőleg kiadott billentyűparancs a <kbd>C-g</kbd>-vel semmissé tehető. Ha már olyan módba léptünk, amelyből így mégsem sikerül kilépnünk, az <kbd>ESC ESC ESC</kbd> lenyomásával alapállapotba kérhetjük az Emacsot. A minipufferben az Emacs jelzi a lenyomott billentyűket.</p>
<h3><a id="kollaboracio">Egyidejű szerkesztés több fél között</a></h3>
<p>A <code>make-frame-on-display</code> paranccsal egy távoli X-kiszolgálón is felhozható a futó Emacs-szerverhez kapcsolódó kliens. Ezzel a módszerrel mindenki külön kurzort kap, így egymás mellett párhuzamosan dolgozhatunk ugyanazon az állományon.</p>
<h3><a id="vcs">Verziókezelés</a></h3>
<p>Az Emacs támogatja valamennyi elterjedt nyílt forrású verziókövető rendszert. Egységes felületet nyújt a háttérben használt VCS fölé, így ugyanazokkal a billentyűkombinációkkal és parancsokkal érhetők el a verziókezelők szolgáltatásai, függetlenül attól, hogy a háttérben éppen svn-t vagy gitet használunk. Ha több verziókövető alá is regisztrált állományon dolgozunk, a <kbd>C-x b</kbd> paranccsal választhatjuk ki az aktívat.</p>
<h3><a id="undo">Undo–redo</a></h3>
<p>Az előző módosítások a pufferben a <kbd>C-_</kbd> billentyűparanccsal hívhatók elő (undo). Emacsban az undo annyiban sajátságos, hogy az undók is az undolistába kerülnek, a hagyományosan vett redo funkció itt nincs meg (telepíthető mode, amely erre szolgál). Az előzménylista mérete gyakorlatilag végtelen. Az előzmények vizuális megjelenítéséhez, lejátszásához az <var>undo-browse</var> kiegészítés javasolt.</p>
<h3><a id="makro">Parancsok ismétlése, makrók</a></h3>
<p>A <kbd>C-u &lt;szám&gt;</kbd> prefixummal számszor futtathatjuk le a kívánt parancsot. Makrók rögzítése <kbd>F3</kbd>-mal, befejezése az <kbd>F4</kbd>-gyel történik. A felvett makró lejátszásához újból az <kbd>F4</kbd>-et kell megnyomnunk. Ha többször is futtatni szeretnénk, a <kbd>M-&lt;szám&gt;</kbd> prefixum lesz a segítségünkre. A makrók névvel tárolhatók későbbi felhasználás végett. Lehetőség van a szerkesztésükre is.</p>
<h3><a id="kijeloles">Dolgozás kijelölt területen</a></h3>
<p>Emacsban a legtöbb szövegeditálási funkció az adott pontban, kijelölésen vagy a puffer tartalmán dolgozik. Nem minden funkció veszi figyelembe a kijelölést (pl. keresés). Emacsban a narrowing szolgáltatással szűkíthetjük le a területet a kijelölés tartalmára. Ebben az esetben, amíg vissza nem állítjuk a területet, a szűkítés úgy fog viselkedni, mint ha ő lenne a teljes puffer.</p>
<h3><a id="shell">Shell elérése</a></h3>
<p>Tetszőleges shell parancs futtatására a <code>shell-command</code> függvény (<kbd>M-/</kbd>) szolgál. A <code>shell-command-on-region</code>-nel a kijelölt terület adható át pipe-ként a megjelölt parancsnak. Adott shellt a <code>term</code> utasítással indíthatunk. Ebben az esetben speciális billentyűparanccsal válthatunk a shell és az egyéb pufferek között annak érdekében, hogy a shellben megszokott billentyűkombinációkat ne kezelje le az Emacs. Az Eshell a megszokott shell parancsokon túl (ls, cp, find) natív Elisp kifejezések kiértékelését is lehetővé teszi.</p>
<h3><a id="root">Más felhasználó birtokolta file szerkesztése</a></h3>
<p>Emacs alatt a tramp alrendszerén keresztül érhetünk el távoli fájlokat. Bizonyos tekintetben a más felhasználó által birtokolt fájlok is felfoghatók távoli állományokként. A tramp a meglévő <code>find-file</code> függvényre épül rá. A fájl útvonala elé <code>/sudo:</code> vagy <code>/su:</code> kiegészítést szúrva más user állományait nyithatjuk meg írásra.</p>
<h3><a id="remote">Távoli file-ok elérése</a></h3>
<p>A tramp támogatja a legtöbb elterjedt protokollt, a <code>/&lt;ssh:user@host:/</code> paranccsal távoli erőforráshoz csatlakozhatunk SSH-n keresztül. A kiszolgálóra bejelentkezést követően annak fájlai és könyvtárai között ugyanúgy tallózhatunk, mintha a helyi fájlrendszert érnénk el.</p>
<h3><a id="script">Bővíthetőség, scriptelhetőség</a></h3>
<p>Az Emacs &#8211; mint említett &#8211; kiterjeszthető, testreszabható texteditor. Tetszőleges funkcionalitás megvalósítható Emacs Lispben. A gyári kiszerelésben érkező csomagokon túl hivatalos tároló nincsen egyéb csomagok begyűjtésére. Az <a href="http://www.emacswiki.org/">EmacsWiki</a> megfelelő kiindulási pont a fellelhető csomagok beszerzésére.</p>
<h3><a id="ide">Fejlesztést támogató eszközök</a></h3>
<p>Elmondható, hogy az Emacs gyakorlatilag tetszőleges másik fejlesztő környezet nyújtotta funkciót képes ellátni: színkiemelés, auto-indenting, kapcsolódás távoli debuggerhez, projektkezelés, forráskód helyességének automatikus ellenőrzése, snippetek támogatása, kódkiegészítés, élő-dokumentáció stb.</p>
<h3><a id="atjaras">Átjárás</a></h3>
<p>A Vimet használókat célozza meg a <em>viper-mode</em>, amely a vimes billentyűkiosztást és működést próbálja meg szimulálni bizonyos határokon belül, hogy könnyítse az áttérést. Hasonló felhasználási területet fed le a <em>Vile</em>, amely egy Emacs-alapú, teljesmértékben Vi-jellegű texteditor. <em>NetBeans</em> és <em>Eclipse</em> alatt választható emacsos kiosztás. A <em><a href="/tag/conkeror">Conkeror</a></em> egy Firefox-kiterjesztés, amely Emacs-szerű működést és küllemet kölcsönöz a böngészőnek. A <em><a href="/tag/firemacs">Firemacs</a></em> Emacs-kiosztást produkál Firefoxban.</p>
<h3><a id="megnyithato">Legnagyobb megnyitható fájl</a></h3>
<p>Tetszőleges méretű állomány megnyitható. Bizonyos mode-ok bizonyos működése ezt lassíthatja.</p>
<h3><a id="memoria">Memóriafoglalás</a></h3>
<p>A Fedora 9-es rendszeremen indítást követően 15M-ot foglalt a memóriából. Az én beállításaim mellett (nem csak texteditáláshoz szükséges funkciókkal együtt) 43M volt ez az érték. Az Emacsot javasolt szerver módban indítani, és a továbbiakban kliens ablakokat megnyitni.</p>
<h3><a id="sugo">Beépített segítség</a></h3>
<p>Az elindulást segíti az Emacs beépített tutorialja (<kbd>C-h t</kbd>). Tartalmaz továbbá teljes értékű angol nyelvű dokumentációt és Elisp referenciát.</p>
<h3><a id="kilepes">Kilépés</a></h3>
<p>A <kbd>C-x C-c</kbd> billentyűparanccsal hagyhatjuk el az Emacsot. Ha szerver–kliens módban használjuk az alkalmazást, a kliensablakokat a <kbd>C-5 0</kbd>-val is bezárhatjuk be.</p>
<h3><a id="mire_hasznalom">Mire használom?</a></h3>
<p>Az Emacsot elsősorban JavaScript, PHP, Python és Emacs Lisp nyelvű fejlesztéshez,  másodsorban minden másra használom.</p>
<hr />
<p><sup>*</sup> Előadásunkkal kapcsolatban javarészt egyedüli kifogásolható pontként annak információtartalmát jelölték meg páran. A 20 perces időtartamra vonatkozólag kellett a vonalat meghúznunk, mit mondhatunk el, s milyen mélységbe már nem mehetünk. Utólag visszatekintve lehet, hogy szerencsésebb lett volna egy demóval megspékelt előadás 45 perces időkeretben. Majd jövőre.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/2103/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/2103/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2103&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/09/15/ubuntu-konferencia-2008-megvolt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20080915/ubuntukonf2008.jpg" medium="image">
			<media:title type="html">Konferenciakitűzők az Ubuntu Konferenciáról</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20080915/emacs_screenshot.jpg" medium="image">
			<media:title type="html">Az Emacs felhasználói felülete</media:title>
		</media:content>
	</item>
		<item>
		<title>Hey Emacs-w3m, meet IDNs!</title>
		<link>http://blog.20y.hu/2008/09/10/hey-emacs-w3m-meet-idns/</link>
		<comments>http://blog.20y.hu/2008/09/10/hey-emacs-w3m-meet-idns/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 10:42:57 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[idn]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2073</guid>
		<description><![CDATA[Despite IDNA support is bundled with Emacs since 2003 (C-h f idna-*), Emacs-w3m does not handle international domains. It simply encodes all non-ASCII characters in the given URL, which makes in the context of IDNs non-sense. But advising the function w3m-url-transfer-encode-string—responsible for urlencoding unsafe data—to pre-encode IDNs may help a lot. My solution below has [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2073&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Despite IDNA support is bundled with Emacs since 2003 (<kbd>C-h f idna-*</kbd>), <a href="http://emacs-w3m.namazu.org/">Emacs-w3m</a> does not handle international domains. It simply encodes all non-ASCII characters in the given URL, which makes in the context of IDNs non-sense. But advising the function <code>w3m-url-transfer-encode-string</code>—responsible for urlencoding unsafe data—to pre-encode IDNs may help a lot. My solution below has a known limitation, so that after activating <code>encode-idna</code>, <code>w3m-url-transfer-encode-string</code> will refuse invalid URL schemes.</p>
<pre><code class="lisp">(defadvice w3m-url-transfer-encode-string
  (around encode-idna (url &amp;optional coding))
  (let* ((host (w3m-http-url-host
                (w3m-parse-http-url (w3m-canonicalize-url url))))
         (url (replace-regexp-in-string host (idna-to-ascii host) url)))
    ad-do-it))

(ad-activate 'w3m-url-transfer-encode-string)</code></pre>
<p>From now, you can <code>w3m-goto-url</code> my slides at <a href="http://xn--gbor-5na.20y.hu/">gábor.20y.hu</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/2073/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/2073/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2073/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2073&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/09/10/hey-emacs-w3m-meet-idns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
		<item>
		<title>A LinuxPortál bemutatja: GNU Emacs apéritif</title>
		<link>http://blog.20y.hu/2008/08/27/a-linuxportal-bemutatja-gnu-emacs-aperitif/</link>
		<comments>http://blog.20y.hu/2008/08/27/a-linuxportal-bemutatja-gnu-emacs-aperitif/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 21:11:18 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[én]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[linuxportál]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[prezentáció]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/?p=2039</guid>
		<description><![CDATA[A nyílt forrású technológiákat bemutató LinuxPortál tévéműsor 344. adásában lehetőségem nyílt áttekintést nyújtani a GNU Emacsról. Az előadás célja egy átfogó kép kialakítása volt. Várhatók további Emacs tárgyú bemutatók a jövőbeni adásokban. http://documents.scribd.com/ScribdViewer.swf?document_id=5385032&#038;access_key=key-xobpmmqi9noyh40qrci&#038;page=&#038;version=1&#038;auto_size=true&#038;viewMode= For the English-readers out there, I gave a talk in the hungarian TV programme LinuxPortál focused on open source technologies. I showed [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2039&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A nyílt forrású technológiákat bemutató <a href="http://linuxportal.hu/?q=node/58">LinuxPortál tévéműsor 344. adásában</a> lehetőségem nyílt áttekintést nyújtani a GNU Emacsról. Az előadás célja egy átfogó kép kialakítása volt. Várhatók további Emacs tárgyú bemutatók a jövőbeni adásokban.</p>
<div class="frame"><a href="http://documents.scribd.com/ScribdViewer.swf?document_id=5385032&#038;access_key=key-xobpmmqi9noyh40qrci&#038;page=&#038;version=1&#038;auto_size=true&#038;viewMode=">http://documents.scribd.com/ScribdViewer.swf?document_id=5385032&#038;access_key=key-xobpmmqi9noyh40qrci&#038;page=&#038;version=1&#038;auto_size=true&#038;viewMode=</a></div>
<p lang="en">For the English-readers out there, I gave a talk in the hungarian TV programme <em>LinuxPortál</em> focused on open source technologies. I showed off the main features of GNU Emacs. In the future, there&#8217;ll be more presentations on specific areas of Emacs.</p>
<p>Az alábbiakban az előadás kivonatos tartalma olvasható. <span id="more-2039"></span></p>
<blockquote><p>‘Presenting Emacs as an editor is analogous to presenting mathematics as arithmetic.’ (<cite>Mike Mattie az <em>emacs-devel</em>-en</cite>)</p></blockquote>
<p>Az Emacsot csupán szövegszerkesztőként aposztroválni annyit tesz, mint a matematikát csupán aritmetikának tekinteni. Az Emacs egy összetett keretrendszer. Hogy miként nevezzük, az leginkább attól függ, milyen feladatokra használjuk. Az Emacsra tekinthetünk úgy, mint szövegszerkesztő, táblázatkezelő, webböngésző, képnézegető, PDF-olvasó, zenelejátszó, határidőnapló, fejlesztőeszköz, fájlkezelő stb. Ha ennyi minden az Emacs, akkor valójában mi az Emacs?</p>
<blockquote><p>‘You think that Emacs is not a text editor, but a fucking operating system with a built in kitchen sink, and a circus tent.’</p></blockquote>
<p>A GNU Emacs Richard M. Stallman által írt általános célú szövegeditor. Szövegeditor, hiszen az esetek többségében információkat dolgozunk fel: szöveget írunk, olvasunk, szerkesztünk. Az Emacs funkcionalitásának nagy része Elisp (Emacs Lisp) programozási nyelvben íródott. Elispben lehetséges az Emacs testreszabása, tudásának tetszőleges bővítése, vagy akár a számunkra nem kielégítő funkciók újraírása.</p>
<p>Az Emacsot úgy a legérdemesebb el kezdeni használni, hogy elkezdjük használni. A program alapvetően billentyűorientált (így érhető el a használatával nagy fokú hatékonyság), de a főbb funkciókat grafikus felületű menüszerkezetben egérrel is elérjük (ez kiváltképp a tanulási időszakban hasznos).</p>
<p>Az Emacs fontosabb billentyűkombinációi – lévén GNU termék – egybevágnak a standard GNU kiosztással (bash, most, screen, nano és a többiek). Az Emacs saját gyorsbillentyűinek utánanézhetünk beépített súgójában, de valamennyi menüpont mellett is fel van tüntetve a billentyűkombináció. A későbbiekben az Emacs fölötti teljes uralom elnyeréséhez célszerű elsajátítani az Elispet. Maga az Emacs konfigurációs állománya (.emacs vagy dotemacs) is Elisp nyelvű. A GNU billentyűkombinációk elsajátítása a jövőben sokszor vissza fog köszönni, hiszen hogy messzire ne menjünk, a Linux-disztribúciókkal érkező alapértelmezett Bash shell is támogatja azokat. Emellett bizton számíthatunk rá, hogy ahol a GNU jelzést látjuk, használni tudjuk majd ebbéli tudásunkat.</p>
<p>A legtöbb szövegszerkesztő nem kényszerít rá a helyes editálási magatartásra, használatuk rossz megszokásokat kölcsönöz. Okos eszközök – mint az Emacs vagy a Vim – használatával hatékonyabbá tehető a munkafolyamatunk. A rendszeresen ismétlődő, monoton (mondhatnók unalmas) részfeladatokat célszerűnek tűnik rögzíteni, nem csak az aktív munkafolyamatra, hanem jövőbeni felhasználásra is. Az Emacs egyszerűen teszi lehetővé ún. makrók rögzítését, lejátszását, módosítását, vagy akár programozott írását.</p>
<p>Az Elisp egy Lisp dialektusú programozási nyelv kifejezetten Emacshoz. A Lisp bír valamennyi nyelvi ismérvvel és támogatja azon módszertani technikákat, amellyel a modern programozási nyelvekben és azok fejlesztése során találkozhatunk. Ha soha nem is válik belőlünk kiváló Lisp programozó, olyan szemléletbeli újdonságok birtokába jutunk, amelyeket más nyelvű fejlesztések során is kamatoztatni tudunk. Mint említettem, az Emacs javarészt Elisp nyelven íródott, abban tetszőleges funkciókkal bővíthetjük. Nem véletlen az a szólás, hogy az Emacs-használók az Emacsban „élnek&#8221;, lehetőség szerint nem hagyják el annak felületét soha, hiszen minden feladat megoldható benne.</p>
<p>Az Emacsot használat közben a legegyszerűbb megtanulni, így kezdjük is el már most! Egyaránt indítható szöveges és grafikus felületű változata, valamint a tanulási szakaszban bátran használhatjuk az egeret, amíg megismerjük, megtanuljuk az egyes fogásokat.</p>
<p>A GNU Emacs nyílt forrású, GPL licenc alatt, a legtöbb operációs rendszer alá elérhető eszköz. Beépített angol nyelvű súgót (<kbd>C-h r</kbd>) és oktatóleckét (<kbd>C-h t</kbd>) tartalmaz. Minden billentyűparancstól megtudható, hogy mit csinál (<kbd>C-h m </kbd>). Az Emacshoz elérhető szolgáltatások tematikus gyűjteményét az online EmacsWiki-ben találhatjuk meg. A 2008. szeptember 13-án esedékes Ubuntu Konferencián Horák Györggyel <em><a href="http://konf.ubuntu.hu/2008/program/emacs-es-vim-fej-fej-mellett/">Emacs és vim fej fej mellett</a></em> címmel tartunk előadást.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/2039/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/2039/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/2039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/2039/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=2039&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/08/27/a-linuxportal-bemutatja-gnu-emacs-aperitif/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
		<item>
		<title>Unique lines in an Emacs buffer</title>
		<link>http://blog.20y.hu/2008/06/03/unique-lines-in-an-emacs-buffer/</link>
		<comments>http://blog.20y.hu/2008/06/03/unique-lines-in-an-emacs-buffer/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 12:16:57 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[elisp]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[uniq]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/20080603/unique-lines-in-an-emacs-buffer.html</guid>
		<description><![CDATA[I needed to unique lines in a buffer&#8217;s content&#8212;the same functionality that shell command uniq provides&#8212;but could not find the proper Elisp equivalent for it, though. Even EmacsWiki suggests using the shell command to delete duplicate lines. Here goes my implementation for Lisp programs, it may come in useful. Updated: regex quoting fixed. Updated again: [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1919&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I needed to unique lines in a buffer&#8217;s content&mdash;the same functionality that shell command <var>uniq</var> provides&mdash;but could not find the proper Elisp equivalent for it, though. Even <a href="http://www.emacswiki.org/cgi-bin/wiki/EmacsNiftyTricks#toc8">EmacsWiki suggests</a> using the shell command to delete duplicate lines. Here goes my implementation for Lisp programs, it may come in useful.</p>
<p><em>Updated</em>: regex quoting fixed.<br />
<em>Updated again</em>: Aaron S. Hawley pointed me a much cleaner <a href="http://www.emacswiki.org/cgi-bin/wiki/MultilineRegexp#DuplicateLines">duplicate lines</a> solution.</p>
<pre><code class="lisp">(defun uniq-lines (beg end)
  "Unique lines in region.
Called from a program, there are two arguments:
BEG and END (region to sort)."
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (while (not (eobp))
        (kill-line 1)
        (yank)
        (let ((next-line (point)))
          (while
              (re-search-forward
               (format "^%s" (regexp-quote (car kill-ring))) nil t)
            (replace-match "" nil nil))
          (goto-char next-line))))))
</code></pre>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/1919/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/1919/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/1919/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/1919/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1919&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/06/03/unique-lines-in-an-emacs-buffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
		<item>
		<title>Spice up your life!</title>
		<link>http://blog.20y.hu/2008/04/30/spice-up-your-life/</link>
		<comments>http://blog.20y.hu/2008/04/30/spice-up-your-life/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 14:20:44 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>

		<guid isPermaLink="false">http://20y.hu/20080430/spice-up-your-life.html</guid>
		<description><![CDATA[Let me show you what I&#8217;ve got. For coding&#8212;while working on my laptop&#8212;I found color theme Bharadwaj the best. At home on a TFT display I use Schematic mainly. Recently I came across Alex&#8217;s brand new Pink Bliss color theme for Emacs. There&#8217;s no word to express my vibes about it. It&#8217;s simply gay!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1900&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Let me show you what I&#8217;ve got.</p>
<div class="frame"><a title="Emacs color theme »Pink Bliss«" href="http://www.flickr.com/photos/nyuhuhuu/2395136809/"><img src="http://static.20y.hu/wp-images/20080407/pink_emacs.png" alt="Emacs color theme »Pink Bliss«" /></a></div>
<p>For coding&mdash;while working on my laptop&mdash;I found color theme <var>Bharadwaj</var> the best. At home on a TFT display I use <var>Schematic</var> mainly. Recently I <a href="http://www.ee.ryerson.ca/~elf/powerbook/#hellokitty">came across</a> Alex&#8217;s brand new <a href="http://www.emacswiki.org/cgi-bin/emacs/pink-bliss.el">Pink Bliss color theme</a> for Emacs. There&#8217;s no word to express my vibes about it. It&#8217;s simply gay!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/1900/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/1900/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/1900/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/1900/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1900&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/04/30/spice-up-your-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>

		<media:content url="http://static.20y.hu/wp-images/20080407/pink_emacs.png" medium="image">
			<media:title type="html">Emacs color theme »Pink Bliss«</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello Planet Emacs from my Emacs buffer</title>
		<link>http://blog.20y.hu/2008/03/23/hello-planet-emacs-from-my-emacs-buffer/</link>
		<comments>http://blog.20y.hu/2008/03/23/hello-planet-emacs-from-my-emacs-buffer/#comments</comments>
		<pubDate>Sun, 23 Mar 2008 20:25:38 +0000</pubDate>
		<dc:creator>nyuhuhuu</dc:creator>
				<category><![CDATA[Napló bejegyzések]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[elisp]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[planet_emacsen]]></category>
		<category><![CDATA[Webfejlesztés, nyíltforráskód, peremvidék]]></category>
		<category><![CDATA[weblogger]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://20y.hu/20080323/hello-planet-emacs-from-my-emacs-buffer.html</guid>
		<description><![CDATA[I keep my blog posts since more than a year in a version controlled plain text file. I write off all my drafts in blog.txt, and publish them from it. Inspite of It&#8217;s All Text supplies a convenient way from moving the text to WordPress&#8217; admin, I felt it such annoying to visit a website [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1869&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I keep my blog posts since more than a year in a version controlled plain text file. I write off all my drafts in blog.txt, and publish them from it. Inspite of <a href="/20070412/piszkozat-mentese-funkcio-webes-szovegdobozokhoz.html">It&#8217;s All Text</a> supplies a convenient way from moving the text to WordPress&#8217; admin, I felt it such annoying to visit a website just for this purpose, and by the way, why should I copy the already written text to anywhere, why can&#8217;t I post directly from my Emacs buffer? <span id="more-1869"></span></p>
<p><a href="http://sachachua.com/wp/2008/02/02/4728/">According to Sacha Chua</a>, weblogger.el <q>is somewhat okay</q>, however it allowed me to publish this post as simple as saving the buffer&#8217;s content. The mode handles (<kbd>M-x weblogger-setup-weblog</kbd>) more than one blog at once, and actually, it can post to any type of blogging engines that accept calls through XML-RPC.</p>
<p>One of the disturbing things of <a href="http://elisp.info/package/weblogger/weblogger.el">weblogger.el</a> was the default bind to <kbd>C-x C-s</kbd>&mdash;it publishes the post immediately instead of just storing it as draft for further editing when you save buffer. It may be overwritten, for sure. The second&mdash;which comes from that WordPress is not an officially supported platform by weblogger.el&mdash;is you cannot attach tags to the posts, or at least WordPress won&#8217;t process it. As me don&#8217;t use the category system of WordPress, I simply customized weblogger.el to fit my needs, and send back categories (the <var>Keywords</var> field indeed) as they were tags.</p>
<pre>--- weblogger.el        2008-03-23 21:00:20.000000000 +0100
+++ weblogger-slink.el  2008-03-23 21:00:41.000000000 +0100
@@ -1080,7 +1080,7 @@
                      (when dateCreated
                        (cons "dateCreated"  dateCreated))
                      (when categories
-                       (cons "categories"   categories))
+                       (cons "mt_keywords"  categories))
                      (when textType
                        (cons "texttype"     textType)))))
          (t
@@ -1099,7 +1099,7 @@
                                   (cdr (assoc "texttype"    entry))))
         (cons "link"              (cdr (assoc "url"         entry)))
         (cons "description"       (cdr (assoc "content"     entry)))
-        (cons "categories"        (cdr (assoc "categories"     entry))))))
+        (cons "mt_keywords"       (cdr (assoc "categories"     entry))))))

 (defun weblogger-server-userid ()
   "Get information on user."
</pre>
<p><a href="http://peadrop.com/blog/2007/05/11/blogging-with-emacs/">Alexandre Vassalotti</a> and the guy behind tolchz.net show off in detail <a href="http://www.tolchz.net/2008/01/06/posting-to-wordpress-with-emacs-webloggerel/">the setup procedure of weblogger.el</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/nyuhuhuu.wordpress.com/1869/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/nyuhuhuu.wordpress.com/1869/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nyuhuhuu.wordpress.com/1869/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nyuhuhuu.wordpress.com/1869/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.20y.hu&#038;blog=12573012&#038;post=1869&#038;subd=nyuhuhuu&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.20y.hu/2008/03/23/hello-planet-emacs-from-my-emacs-buffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/a73599568e9ab3c8db26a80b810f6af3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nyuhuhuu</media:title>
		</media:content>
	</item>
	</channel>
</rss>
