#title Projects * Emacs Configuration *** Configuration for the one true editor Beyond any doubt: Emacs is the best editor of the world. But is it only an editor? The saying goes: *Emacs was an excellent operating system if it had a decent editor* This is, of course, complete BS. There is nothing that you can do better with emacs than to write text, but you can do so much more. Many programs have religious followers, but emacs is the only one with a [[news://alt.religion.emacs][newsgroup]] dedicated to its worshiping. With the right elisp package emacs can be converted to just about anything. Reading Mail? There are at least 4 packages to do this and one of them is really a newsreader. But it's really a programmers editor. And again, even for such *new* languages like Java (compared to the age of emacs), you get an development environment which is on par with the best highly specialized Java IDEs. Refactoring, code completion, jump to definition or Javadoc, no problem. With the available elisp packages you can tap the intelligence and take benefit from the experience of cool elisp hackers. This might be true as well for the modern IDEs with their plugin architectures, but hey, elisp is so much cooler and the packages can be changed to your needs at runtime easily. But flexibility comes with a price. Working towards the goal of the optimally configured emacs is a laborious task. It is never perfect. And you never know everything there is to know. Even old emacs sharks learn a new trick every day. My gathered tricks are in my emacs configuration available as a [[download/emacs-config.tar.gz][tar-archive]], or as a [[elisp/init.el.html][browseable version]], converted with EmacsWiki#SaveAsHtml. You can click on the filenames provided as arguments to the calls to =(init-load-file)= to go to the other files. Thanks to all the emacs users on the web and especially the ones on the EmacsWiki, there is plenty of *aggregated* code inside. To access the lisp files as text just remove the =.html= ending from the URL or open the index view of the [[elisp/][elisp directory]] and browse from there. These files will be published to the web with the help of a lisp function, of course. See it here: [[elisp/mylisp/publish-init.el.html][publish-init.el]]. * Read Maven POM Files with Elisp *** [[elisp/mylisp/pom.el.html][pom.el]] --- Read classpath and other tags from a Maven POM file #pom At work we use [[http://maven.apache.org][Maven]] as a build tool for our Java projects. As the projects grew in number it became a burden to enter the build configuration in two separate places, the [[http://maven.apache.org][Maven]] POM file and the [[http://jdee.sunsite.dk][JDEE]] prj.el file. This file is my solution to this problem and provides the [[http://jdee.sunsite.dk][JDEE]] with info from Maven's =project.xml= files. You can read all the tags or properties which gives you access to the classpath, project name or arbitrary properties from the =project.properties= or =build.properties= files. The newest version is version 0.4. [[elisp/mylisp/pom.el][Download]] or [[elisp/mylisp/pom.el.html][View as HTML]] * Java Code Generation *** [[elisp/mylisp/jde-gen-extra.el.html][jde-gen-extra.el]] --- Additional code generation templates for the JDEE #jdegenextra **Update**: As of [[http://jdee.sunsite.dk][JDEE]] 2.3.5 this package is now part of the official [[http://jdee.sunsite.dk][JDEE]] distribution. I still provide my latest version here for users of an older [[http://jdee.sunsite.dk][JDEE]] version. A nice feature of every emacsers favorite Java development environment [[http://jdee.sunsite.dk][JDEE]] is the code generation via tempo templates. My jde-gen-extra.el package provides some extra functions like hashCode and equals method generation or the quick creation of exception classes. It depends on a rather new semantic package as it comes with [[http://cedet.sf.net][cedet 1.0 beta3]]. If the JDEE's maintainers agree, this can become part of the main distribution. The newest version is version 1.2. [[elisp/mylisp/jde-gen-extra.el][Download]] or [[elisp/mylisp/jde-gen-extra.el.html][View as HTML]] * Emacs-Wiki-Journal *** [[elisp/mylisp/emacs-wiki-journal.el.html][emacs-wiki-journal.el]] --- The code used to produce the JournalPage #emacswikijournal The code was originally written by [[http://tld.kicks-ass.net][Gary V. Vaughan]] for his personal site. It makes it easy to add new journal entries to a wiki page and to group them by date. You can assign a category to each journal entry and [[elisp/mylisp/emacs-wiki-journal.el.html][emacs-wiki-journal.el]] will maintain a category index page for you. New categories can be created on the fly. If there is an image for the category available on the file system, the entry is adorned with this picture, giving the journal a Slashdot-like look. I improved on the original code for my JournalPage. It has now found its new home in the tla archive of the current emacs-wiki maintainer Michael Olson. Instructions how to get it are on his [[http://www.mwolson.org/projects/EmacsWiki.html][emacs-wiki page]]. You may find additional information at the EmacsWiki#EmacsWikiMode page at the EmacsWiki. * AMixer *** [[elisp/mylisp/amixer.el.html][amixer.el]] --- A very small elisp package to set the audio volume. Recently I discovered the excellent EmacsWiki#EMMS package. I used XMMS before to listen to music while programming. Using emacs as my interface to selecting the music avoids another annoying grab for the mouse. But there was no way to set the volume without the little rodent. So I came up with this crude alsa mixer interface. [[elisp/mylisp/amixer.el][Download]] or [[elisp/mylisp/amixer.el.html][View as HTML]]. *** Browse Configuration Please no bragging about the glory of the one true editor, show me the [[elisp/init.el.html][init.el]] right away. I'll find the links to the [[elisp/][other files]] myself.