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’s All Text supplies a convenient way from moving the text to WordPress’ 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’t I post directly from my Emacs buffer? Tovább ehhez a bejegyzéshez »
Posts Tagged ‘emacs’
One goes Emacs, never goes back
In Napló bejegyzések on 2008.01.24. at 19.52Azon felületen, amelyen akciókat egy grafikus mutató eszközzel lehet kiváltani, a támogatásával elvégzett feladatok hatékonyságukban sohasem mérhetők össze egy parancsszakkal vezényelt környezettel. Míg a pointeres környezetben tetszőleges tág időintervallumban indukálhatók olyan események, amelyek nem visznek közelebb a megoldáshoz, addig egy utasításokat fogadó bemenet késztetést ébreszt arra, hogy értelmes parancsot tápláljunk bele. Tovább ehhez a bejegyzéshez »
Getting ma things done.
In Napló bejegyzések on 2008.01.20. at 22.49Emacs w3m makes daily usage of GMail particular convenient—I’m not just talking about speed but giving up that tiresome clicking. However, I had never set up any shortcuts for my regular actions e.g. archive or star conversations. That’s by now changed. In addition, I reformed my email habits to fit GMail as a great platform for managing my tasks. So it goes:
(defun gmail-workflow ()
"Getting my Things Done."
(interactive)
(dolist (mail *inbox*)
(cond
((irrelevantp mail) (delegate mail))
((< (time-needed-minutes mail) 5) (dotask mail))
(t (star mail)))
(archive mail))
(dolist (mail *starred*)
(dotask mail)
(if (not (task-finished-p mail))
(apply-label status-msg mail)
(remove-labels mail)
(unstar mail))))
Forráskód szellőztetése glasses-mode-dal
In Uncategorized on 2008.01.04. at 12.50Az EmacsLife múltkori száma hívta fel a figyelmet az EmacsWiki NiftyTricks szócikkére. A tucatnyi hatékonyságot növelő tipp között bukkantam rá a glasses-mode-ra, amely a StudlyCaps kifejezéseket teszi olvashatóbbá azzal, hogy a váltó karakterek elé alsóvonást szúr – természetesen a forráskód tartalmi megváltoztatásának mellőzésével. Szintén a bővítmény viselkedése a függvények argumentumait, a vezérlési szerkezetek kifejezéseit határoló zárójelek előtti nem törhető szóköz szerepeltetése, amely a közkedvelt tagolási konvencióval igazán kívánatos eszköz egy programozó kezében.

Köszöntjük Önt a nap Emacs tippje rovatunk olvasói között!
GNEVE: quick video editing, that’s why we chose Emacs
In Uncategorized on 2007.10.18. at 14.55Although the project is under heavy development (you can call it an alpha stage or proof of concept), lots of out there had just started to discuss the grounds of GNEVE, a project originally established by Martin Howse. As the project itself described, GNEVE is the GNU Emacs Video Editor mode for editing video Edit Decision Lists (EDL) based on Avidemux and Mplayer.
Late this summer my colleague Arnold joined the project. He was looking for such an environment where he could do quick [raw] video editing — no filters and fancy effects required at this point. While working the most time in Emacs it seemed obvious to search for an environment that can be controlled just the same way — with pure key shortcuts. A short research led him to Martin’s project and he got involved immediately.
As I also use Emacs for getting most of my jobs done, and after so I’m over some Lisp courses, I hooked on my colleague to extend GNEVE the way it makes video editing more convenient for us. The project is now up and running. We’ve just opened a repository at Google Code Hosting for maintaining a devel branch of GNEVE where we can release all the fixes and improvements as soon as possible. In addition, the project was submitted to Savannah by Martin — it’s not yet approved, though.
All feedbacks and supports are welcome, and I’m very glad to see that even RMS was surprised about this kind of power of Emacs. For a teaser of such kind check out the screencast Arnold has recently recorded starring GNEVE at work.
Gyorskeresés SZTAKI-ban a kurzor alatti szóra
In Napló bejegyzések on 2007.10.12. at 17.01A funkció azóta továbbfejlődött, az emacs-sztaki legfrissebb kódbázisa elérhető a GitHubon.
A WThreeM csomag egy kevésbé ismert sajátja a w3m-retrieve-and-render függvény, amely az argumentumként kapott erőforrás szerinti weblapot az aktuális pufferben jeleníti meg. Az utolsó paramétereként átadott handler függvény segítségével aszinkron viselkedésre sarkallható, amely eredményeképpen az oldal betöltődése, majd rendelése befejeztével ez az eseménykezelő hívódik meg. A fejtörést a handler függvényfejének implementálása okozta, mígnem a w3m.el forrását tallózva rátaláltam a w3m-process-with-wait-handler-re, amely hatáskörében bevezet egy handler változót, amelyet már a w3m-retrieve-and-render is elfogad. Így megvalósítható egy olyan blokk, amelyen csak az aszinkron folyamat befejeztével lép tovább a feldolgozó. (Az aszinkron mivolthoz a folyamat háttérben futtatásához van szükség.) A továbbiakban pedig némi körítéssel bármilyen, kultúrált API-val nem rendelkező webes szolgáltatáshoz építhető burkoló. Az alábbiakban esettanulmányként álljon itt a SZTAKI angol–magyar fordítóját kiaknázó függvény, amely a kurzor alatti kifejezés fordítását keresi ki, majd küldi vissza a minipufferbe.
(defun sztaki-phrase-lookup ()
"Look up the phrase under cursor in SZTAKI and echo translation if any."
(interactive)
(let* ((phrase (thing-at-point 'word))
(url (concat "http://szotar.sztaki.hu/dict_search.php"
"?O=HUN&E=1&L=ENG%3AHUN%3AEngHunDict&W="
(w3m-url-encode-string phrase)))
(match (format "phrase '%s' not found" phrase)))
(with-temp-buffer
(w3m-process-with-wait-handler
(w3m-retrieve-and-render url nil nil nil nil handler))
(when (re-search-forward (concat phrase ":.*") nil t)
(setq match (match-string 0))))
(message (concat "SZTAKI: " match))))
Az ötletet Xah Lee Emacs Lisp Grab Bag! feladatai között talált word-definition-lookup függvénye adta.
WL contribute: blogmark küldés emacs-w3m alól
In Uncategorized on 2007.09.25. at 09.16Interaktív függvény, amellyel a Weblaborra küldhető be blogmarkként Emacs-w3m alól a kurzor alatti link vagy a w3m-ben aktuálisan megnyitott weblap. A C-c b billentyűzet kombinációhoz rendeltem. Customize to your needs.
(defun slink-weblabor-blogmark ()
"Blogmark either the url under point or
the url of the current w3m page to Weblabor."
(interactive)
(let ((w3m-async-exec nil))
(when (thing-at-point-url-at-point)
(unless (eq (current-buffer) (w3m-alive-p))
(w3m-goto-url (thing-at-point-url-at-point))))
(w3m-goto-url
(concat "http://weblabor.hu/blogmarkok/bekuldes/tavoli?"
"url=" (w3m-url-encode-string
(read-string "URL: " w3m-current-url))
"&title=" (w3m-url-encode-string
(read-string "Title: " w3m-current-title))
"&comment=" (w3m-url-encode-string
(read-string "Comment: "))
"&publish=0#maincontent"))))
(eval-after-load "w3m"
'(define-key w3m-mode-map (kbd "C-c b")
'slink-weblabor-blogmark))
A kurzor alatti link ötlete Johntól származik.
Testreszabott mentési folyamat autosave-vel: mi–hol
In Uncategorized on 2007.09.11. at 08.58Önmagában az automatikus mentés készítése az aktuálisan matatott szöveges állományokról észszerű megfontolás, mégis a legtöbb szövegszerkesztő elintézi ezt egyszerűen a munkakönyvtárban egy szuffixummal ellátott másolat készítésével. Az első problémák akkor jelentkeznek, amikor olyan könyvtárban dolgozunk, amelyen nincs írási jogunk, amikor temporális fájlokat editálunk, amelyek meghatározott időnként törlődnek, amikor az It’s All Text segítségével posztolunk, netán helyben felcsatolt távoli fájlrendszeren kell dolgozunk sít – lássuk be, hogy nem praktikus szerte a fájlstruktúrát teleszemetelni backup állományokkal.
Emacs (→ Vim) alapértelmezett kiszerelésben szintén a fennebb taglalt viselkedést tanúsítja, de hát mire van a dotemacs, mint hogy megmondjuk, mi miképpen szeretnénk. Saját munkaállomásomon kijelöltem az Emacs számára egy backup foldert, amelyet figyeljük meg, óhaj esetén némileg könnyebb backupolni is akár, és bárhol dolgozom is egy fájlon, egy helyen kell keresnem szükség esetén az autosave verziókat.
(setq backup-directory-alist
(list (cons ".*" (expand-file-name "~/bkp/emacs/"))))
Magát a funkció kikapcsolását nem javaslom, Han által az #emacs-on felvetett how to _really_ disable creating backup files which are controled by cvs? kérdésre az a válasz, hogy [jobb ha] sehogy, mert két commit között történhet bárminemű leállás, a verziókövetés nem kiváltója az autosave-nek, hanem egy intelligens továbbgondolása a problémának. C-x v v.
You’re subscribed to the daily Emacs tips.
On-the-fly JavaScript syntax checking in Emacs
In Napló bejegyzések on 2007.08.24. at 22.08I will take you through the following steps in order to get on-the-fly spell checking in your Emacs with flymake-js while coding JavaScript.

Piszkozat mentése funkció webes szövegdobozokhoz
In Uncategorized on 2007.04.12. at 09.56További számozatlan fejezet, amelyben a szerző ismertet egy Firefox bővítményt, amely közbenjárásával quasi piszkozat mentése funkció implementálható a böngészőbe. Nincs több odaveszett poszt, kitörölt komment, avagy a 20y bemutatja, felesleges az Emacsból – ízlés szerint tetszőleges szövegszerkesztő behelyettesíthető – Firefoxot csinálni, sokkal kézenfekvőbb a Firefoxot emacsosítani.
Ha az ember néha visszájára fordítja elképzeléseit, sokszor előrébb viszi a megoldásban. Az It’s All Text kiterjesztés segítségével a weblapok szövegdobozainak (precízebbeknek textarea) tartalma szerkeszthető egy választott kliens editorral. Másképp megközelítve, felesleges az általunk megszokott környezethez az elérni kivánt szolgáltatások API-jával kooperáló modulokat fejlesztenünk, fordítsunk rajta egyet, és kapcsolódjon a távoli szolgáltatás az editorunkhoz. Violá! Az It’s All Text a beállításokban megadott időérték elteltével automatikusan szinkronizálja a szövegterület tartalmát az editorunk pufferével, így azontúl, hogy sokkal szélesebb spektruma nyílik meg előttünk a szövegszerkesztő funkcióknak – lesz Redo! –, akár verzió–kezelhetjük is a tartalmakat, makrókat futtathatunk rajtuk s így tovább. A bővítmény igazi erőssége azonban mindezeken túl abban rejlik, hogyha netán elkószálunk az adott oldalról, Küldés helyett a Mégsem-re támaszkodunk a browserben, a szorgosan felvitt tartalom nem vész el, ott marad a megnyitott editorunkban, egyszerűen navigáljunk újra oda a szájton a kívánt beviteli felülethez – GMail Compose Mail –, kényszerítsünk ki a szerkesztőből a fájl mentését, és a szinkronizációs idő elteltével az elveszettnek hitt levelünk, kommentünk, posztunk újra ott teremt a textareában. Mondd, bátran – ez zsír.
A Firefox intelligens komponens kezelésére hagyatkozóan az It’s All Text valamennyi megnyitott fájl nevében elhelyezi a textarea azonosítóját, így akár a böngésző véletlen becsukása – a Firefox nem crash-sel! – sem teszi szükségessé, hogy az addig begépelt tartalmat ismét felvigyük. Egyszerűen indítsuk el (újra) a Firefoxot, és a korábban említett metódus követendő. Egyet érdemes azonban megjegyezni; az It’s All Text betöltődésekor – ergo a Firefox indulásakor – üríti az átmeneti tárolóként használt könyvtárát, így előbb nyissuk meg az adott fájlt, hogy utána legyen mit szinkronizáltatni.