Emacs

Aus Linupedia.org
Wechseln zu: Navigation, Suche
Emacs
Emacs.png
Emacs x.jpg
Emacs 22.1.1
Basisdaten
Entwickler: Richard Stallman
Aktuelle Version: 23.3
letzte Veröffentlichung: 10.03.2011
Betriebssystem: GNU/Linux, FreeBSD, AIX, Mac OS X, MS DOS, MS Windows, NetBSD, OpenBSD, Solaris, SunOS, Ultrix
Kategorie: Office
Lizenz: GPL
Deutschsprachig: Nein
Webseite: Webseite
Diese Beschreibung wurde mit folgenden Distributionen getestet:


Info

1976 wurden unter dem Namen Emacs diverse Makros als Samlung für den Editor TECO zusammen getragen. So kommt auch der eigentliche Name Emacs zu stande - Editor MACroS. Im Jahre 1984 wurde vom bekannten Richard Stallman an einer neuen Implementierung gearbeitet woraus später GNU Emacs das erste Programm des GNU-Projektes entstand. Damals stand Emacs unter der GNU Emacs General Public License welche die Grundlage von GPL General Public License war.


Besonderheiten

Emacs ist ein Editor welche nicht nur für das schreiben von reinem Text gedacht ist. Viel mehr ist es eine Entwicklungsumgebung für die unterschiedlichsten Bereiche. Der Emacs Editor verfügt über diverse Mods, somit kann wür jede Aufgabe ein Entsprechender Modus gewählt werden welche für genau diese Aufgabe angepasst ist.


Mods

In den meisten verschiedenen Betriebsarten Mods wird zum Beispiel die Syntaxhervorhebung unterstützt. Diese sorgt dafür das Wörter oder auch Zeichen in Farben, Schriftarten und -stilen dargestellt werden können was bei Programm-Quelltexten und Konfigurationsdateien sehr hilfreich ist um die Übersicht nicht zu verlieren, da es die Lesbarkeit von Texten verbessert. Natürlich bieten die diversen Modi noch einiges mehr was einem die Arbeit erleichtert. Hierzu gehören zum Beispiel auch Übersetzungsvorgänge, Syntaxprüfer und Debugger etc. Ich möchte nun schnell ein paar der Bekanntesten aufzählen, damit man sich vorstellen kann wo man Emacs überall einsetzen kann.

  • Text
  • LISP
  • HTML
  • Perl
  • Java
  • C
  • LaTeX
  • Very High Description Language
  • Kalender
  • Newsreader
  • Mailreader
  • Shell
  • FTP Client
  • Webbrowser
  • Wikipedia Mode
  • Vi Mode :-)
  • IRC Client
  • Instand Messenger
  • WebServer
  • MP3-Player
  • Psychotherapeut
  • Spiele

Da die Auswahl so gross ist, habe ich hier die Bekanntesten genannt. Im Internet gibt es noch unzählig weitere welche man installieren und in Emacs verwenden kann. Je nach Distribution und Installation sind bei Emacs die Modi vorhanden. Wem welche fehlen und diese gerne haben möchte muss sie daher eventuell selbst nachinstallieren.


Installation

Debian

apt-get update
apt-get install emacs22


Emacs Konsole

Emacs kann nach der Installation unter der grafischen Oberfläche in einer Konsole im Textmodus gestartet werden, hierzu Emacs mit folgender Option in der Konsole oder einem Terminal starten:

emacs -nw
Emacs im Textmodus


Emacs unter X

Um Emacs unter X mit einer grafischen GUI zu nutzen reicht die Eingabe des Befehls.

emacs

Zum normalen Emacs gibt es auch noch ein weiteres Projekt welches sich vorgenommen hat Emacs an X anzupassen. Dieses weitere Projekt ist selbständig und gehört nicht zum eigentlichen Emacs. Der von diesem Projekt angepasste Editor nennt sich so Xemacs und muss in der Regel seperat installiert werden da er nicht zum eigentlichen Emacs dazu gehört.


Bedienung

Emacs ist ein Editor der ohnde Maus auskommt und so komplett mit Tastenkombinationen gesteuert werden kann. Ich kann hier nicht alle Kombinationen aufgrund der Fielfalt nennen, möchte aber die wichtigsten nicht ausen vor lassen.

Es gibt jede Menge von Beispielen und Anleitungen im Internet in denen die Tastenkombinationen entsprechend dargestellt werden. Hier eine kleine Erklärung:

  • C-
    • Bedeutet STRG
  • M-
    • Bedeutet ALT




Hilfe

  • F10
    • Help Modus über welchen auch Aktionen ausgeführt werden können.


Wichtig:
Besonders zu empfehlen: F10 >> Options >> Customize Emacs


  • F1
    • Ruft die Hilfe auf
  • M-x Tabulator
    • Listet die möglichen Befehle mit Autoverfollständigung


  • M-x help





Wir wollen nun mit der Kombination zum beenden von Emacs beginnen. Diese würde man in den üblichen Anleitungen so schreiben:

  • C-x C-c
    • Dies bedeutet das wir zum beenden die Tasten STRG x und STRG c hintereinander drücken müssen.


Datei

öffnen * speichern * beenden


  • (Öffnen) - Öffnen einer Datei, d.h. den Inhalt in einen Buffer laden.
    • C-x C-f
  • (Speichern) - Speichern vom Buffer Inhalt.
    • C-x C-s
  • (Speichern unter) - Speichern vom Buffer Inhalt in einer neuen Datei.
    • C-x C-w
  • (Beenden) - Beendet Emacs und frägt bei noch nicht gespeichertem nach.
    • C-x C-c


Buffer

listen * wählen * löschen

Bei Emacs werden geöffnete Inhalte in einen Buffer geladen, es können so auch mehrere Dateien geöffnet werden dessen Inhalt in mehreren Buffern zu finden ist und zwischen denen man hin und her schalten kann.


  • (listen) - Listet alle Buffer auf.
    • C-x C-b
  • (wählen) - Taste STRG x b drücken und anschliessend den Buffername schreiben um in ihn zu wechseln; zuvor am besten offene Buffer auflisten lassen.
    • C-x b <buffername>

Einzutragen ist dies im untersten Emacs Fenster nach der Kombination C-x b wo steht:

Switch to buffer (default *scratch*):

Beispiel:

Switch to buffer (default *scratch*): *Messages*
  • (löschen) - Löscht den aktuellen Buffer
    • C-x k


Fenster

teilen * wechseln * abschalten

Die div. Fenster in denen der Bufferinhalt oder sonstiges zu sehen ist kann entsprechend den eigenen Wünschen angepasst werden. So kann man zum Beispiel im oberen Teil ein Fenster mit einem Text geöffnet haben um daraus zu lesen und es in das untere Fenster zu schreiben.


  • (teilen) - Teilt ein Fenster horizontal.
    • C-x 2
  • (wechseln) - In ein anderes Fenster wechseln.
    • C-x o
  • (abschalten) - Das aktuelle Fenster abschalten.
    • C-x 0


Modus

Wenn wir unseren Emacs starten, so ist dieser als Standard meist im (Lisp) Modus. Weiter oben wurde ja bereit geschrieben das Emacs diverse unterschiedliche Modi zur Verfügung stellt welche diverse Funktionen für bestimmte Aufgaben haben. Emacs ist in der Regel recht schlau und nimmt uns was die Wahl des Modi angeht schon einiges an Arbeit ab. Haben wir also unseren Emacs gestartet, und öffnen mit ihm nun eine Datei welche HTML Code beinhaltet, so schaltet Emacs automatisch um und öffnet diese Datei im HTML-Modus. Wir können immer sehen in welchem Modus wir uns gerade befinden, dazu muss man sich die Leiste am unteren Rand nur etwas genauer ansehen. Der (Lisp Interaction) ist in der Regel der Standardmodus und wird so auch in der Statusleiste angezeigt. Wenn man sich den Screenshot vom Emacs im Textmodus anschaut so wird man hier den (Emacs-Lisp) Modus sehen, beim Screenshot von Emacs unter X ist es (HTML-Fly) da hier eine HTML Datei geöffnet ist. So, aber wie können wir nun selbst unseren Modus, in welchem wir arbeiten wollen, bestimmen?

  • < modus > -mode
    • M-x < gewünschter modus > -mode




  • Text Modus
    • M-x text-mode
  • HTML Modus
    • M-x html-mode
  • LaTeX Modus
    • M-x latex-mode
  • C++ Modus
    • M-x c++-mode
  • LISP Modus
    • M-x lisp-mode
  • Perl Modus
    • M-x perl-mode
  • Java Modus
    • M-x java-mode
  • Very High Description Language Modus
    • M-x vhdl-mode
  • Kalender Modus
    • M-x calendar
  • Newsreader Modus
    • M-x gnus
  • Shell script Modus
    • M-x sh-mode
  • FTP Client
    • M-x ftp
  • Webbrowser
    • M-x w3m
  • Mail (Empfang)
    • M-x rmail
  • Mail (Versand)
    • M-x mail


Und noch viel mehr sind je nach Installation verfügbar. Sollte ein Modus nicht vorhanden sein, so kann dieser in der Regel nachinstalliert werden. Das MultiMedia Modus wäre so zum Beispiel der emms-mode um MP3 Files abspielen zu können. Wer eine kleine Übersicht haben möchte welche Befehle ihm unter ALT-x zur Verfügung stehen, kann dort einmal die Tabulatortaste für die Vervollständigung drücken.

Da jeder Modus eigene Funktionen und Optionen mit sich bringt, kann ich dies hier alles nicht aufzählen, mehr Infos solltet ihr aber in der Dokumentation oder dem Netz finden. Auf ein paar kleine Funktionen und Einstellungen werde ich in der Emacs Konfigurationsdatei eingehen.


Drucken

Ich möchte hier schnell eine Möglichkeit zeigen um einen Text unter Emacs drucken zu können. Da es unter Linux div. Werkzeuge zum Drucken gibt und dadurch die Konfiguration bei jedem etwas anders ist, will ich mich hier auf das Ausdrucken in eine PostScript Datei beschränken. Diese PostScript Datei kann so nach der Erstellung von jedem auf seinem System über den ihm bekannten Weg gedruckt werden.

Zum Drucken unter Emacs muss zu Erst die zu druckende Datei geöffnet werden. Haben wir dies getan, lassen wir von Emacs diesen geöffneten Text in PostScript Form umwandeln, welcher danach in einem Extra Buffer dargestellt und anschliessend als *.ps Datei gespeichert werden muss.

Datei öffnen -> M-x ps-spool-buffer -> M-x buffer-menu -> *PostScript* -> Datei als < Dateiname >.ps speichern.
  • ps-spool-buffer - (für Schwarz-Weiss)
  • ps-spool-buffer-with-faces - (für Farbe)


Info:
Eine weitere Möglichkeit Text zu drucken wäre der Weg über LaTeX. Ich kenne Viele die gerne ihre Texte zuerst in den LaTeX-Mode kopieren, da hier entsprechend gestaltet (Grösse, Schriftart, Farbe, Formatierung etc.) werden kann und anschliessend in PS oder DIV kompilieren um es dann an den Drucker zu senden.



Emacs Konfiguration

Man kann für Emacs eine Konfigurationsdatei anlegen in der bestimmte Dinge den eigenen Wünschen angepasst werden können. Ich kann dies nur jedem empfehlen der vorhat sich ein bisschen mehr mit Emacs zu beschäftigen. Die entsprechende Konfigurationsdatei ist im /home/ ~ / anzulegen und nennt sich .emacs

/home/ ~ /.emacs

Bei den Konfigurationszeilen wird dem einen vielleich das Wort nil oder der Buchstabe t auffallen. Diese beiden bedeuten in der Lisp-Sprache:

  • Nil
    • Falsch
  • t
    • Wahr


Eigene Tastenkombinationen

Wer sich am Anfang mit den vielen Tastenkombinationen die es in Emacs und seinen Mods gibt schwer tut, kann sich mit eigenen Kombinationen schnell helfen. Ich selbst habe mir zu Beginn meiner Emacszeit die entsprechenden Tasten ebenfalls meinen eigenen Wünschen angepasst. Hier möchte ich dies mal zeigen.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Eigene Tastenkombinationen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Auto-Fill-Mode mit STRG+U an/aus schalten fuer den
; Zeilenumbruch.
  (global-set-key "\C-u" 'auto-fill-mode)

; Datei oeffnen mit STRG+O
  (global-set-key "\C-o" 'find-file)

; Datei speichern mit STRG+W
  (global-set-key "\C-w" 'save-buffer)

; Suchen nach Woertern STRG+S
; ist bereits default so eingestellt.

; Suchen u. ersetzen STRG+R
  (global-set-key "\C-r" 'replace-string)

; Drucken in PS Datei die im Buffer zu finden ist STRG+P
  (global-set-key "\C-p" 'ps-spool-buffer-with-faces)

; Kopieren von markiertem Inhalt in den Kill-Ring STRG+K
  (global-set-key "\C-k" 'kill-ring-save)

; Einfuegen von markiertem Inhalt aus den Kill-Ring STRG+E
  (global-set-key "\C-e" 'yank)


Anzeige

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;
;;; Anzeige
;;;;;;;;;;;

; Zeilenposition
; Durch diese Zeile wird die Zeilenprosition in der unteren Statusleiste angezeigt.
  (setq line-number-mode t)

; Spaltenposition
; Durch diese Zeile wird die Spaltenprosition in der unteren Statusleiste angezeigt.
  (setq column-number-mode t)

; Hervorhebung 
; Zusammengehoerenden Klammerpaaren werden hervorgehoben. 
; Nummer 1 bedeutet yes und nummer 0 bedeutet no.
; Sollte nicht im Betrieb geaendert werden.
  (show-paren-mode 1)

; Anzeigen von Uhrzeit und Datum in der unteren Statusleiste.
 (setq display-time-24hr-format t)
 (setq display-time-day-and-date t)
 (display-time)

; Keine Startup Message Meldung mehr beim starten von Emacs.
 (setq inhibit-startup-message t)

; Anti Aliasing
 (setq allow-anti-aliasing t
       fill-column 72)

; Laufleiste ein oder aus ausschalten
  (scroll-bar-mode -1)

; Schaltet blinkenden Cursor ein/aus.
  (blink-cursor-mode nil)

; Setzt Frame Titel und Buffer Name.
  (setq frame-title-format '("good luck " ("%f %m %b %a %D %I:%M:%S%p")))

; Setzt Icon Titel und Buffer Name.
  (setq icon-title-format '"Gnu Emacs")

; Im Konsolenmodus "emacs -nw" keine obere Menueleiste
 (unless window-system
 (menu-bar-mode 0))

; Setzt die Font/Schrift Groesse von Emacs unter X, hat keine Auswirkung auf Emacs in der Konsole mit -nw.
(if window-system
(progn
(set-face-font 'default "-misc-fixed-medium-r-normal--12-*-*-*-*-*-iso10646-1")))


Effekte

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;
;;; Effekte
;;;;;;;;;;;

; Sound 
; Schaltet den Pip-Ton ab.
(defun jbn-no-beep())
(setq ring-bell-function 'jbn-no-beep)


Default Mode

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Default Modus einstellen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Hier kann ein default Modus eingestellt werden.
; Text Modus waere in diesem Beispiel default.
  (setq default-major-mode 'text-mode)

; P.S. Man sollte wirklich gut überlegen ob man den dies möchte, da es mir nicht gerade sinvoll erscheint !


Rechtschreibprüfung

Es stehen unterschiedliche Tools zur Verfügung, ich empfehle Aspell da dieses im Vergleich zum älteren Ispell besser ist.
Da ich die Entscheidung allerdings jedem selbst überlassen möchte was er den nun verwendet will, sind hier beide gelistet.


Ispell

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Rechtschreibpruefung Ispell
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Rechtschreibpruefung kann unter Emacs in allen Modi verwendet werden.
; Hier wird fuer die Rechtschreibpruefung das Programm ''ispell'' verwendet welches bei jeder Distribution
; mit dabei sein sollte. Anstelle von Ispell kann auch Aspel verwendet werden, siehe unten.
  (setq-default ispell-program-name "ispell")

; Ispell wird automatisch fuer den Buffer geladen.
  (autoload 'ispell-buffer "ispell")

; Ispell kann manuell mit der Tasenkombination C-c C-v also STRG-c STRG-v gestartet werden.
  (global-set-key "\C-c\C-v" 'ispell-buffer)

; Ispell wird im ''Text Modus'' waerend dem eigentlichen schreiben verwendet und muss nicht manuell
; gestartet werden.
  (add-hook 'text-mode-hook 'flyspell-mode)

; Ispell kann auch manuell in jedem Mode aufgerufen werden durch die Eingabe von M-x ispell also ALT-x ispell

; P.S. Die Datei für Ispell welche neu hinzugefuegte Wörter beinhaltet ist in ~/.ispell zu finden.


Aspell

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Rechtschreibpruefung Aspell
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Rechtschreibpruefung kann unter Emacs in allen Modi verwendet werden.
; Hier wird fuer die Rechtschreibpruefung das Programm ''Aspell'' verwendet welches bei jeder Distribution
; mit dabei sein sollte. (ggf muss es nachinstalliert werden) Benoetigt wird i.d.R. ''aspell'' und ''aspell-de''
; fuer die entsprechende Sprache z.B. ''aspell-en'' usw. Anstelle von Aspell kann auch Ispall verwendet werden 
; welches bei jeder Distribution mit dabei sein sollte. Ispell ist allerdings etwas aelter, so das Aspell empfohlen wird.
   (setq ispell-program-name "aspell" 
   flyspell-default-dictionary "de_DE-neu" 
   flyspell-persistent-highlight nil 
   ispell-local-dictionary "de_DE-neu")

; Ispell wird automatisch fuer den Buffer geladen.
  (autoload 'ispell-buffer "aspell")

; Ispell kann manuell mit der Tasenkombination C-c C-v also STRG-c STRG-v gestartet werden.
  (global-set-key "\C-c\C-v" 'ispell-buffer)

; Ispell wird im ''Text Modus'' waerend dem eigentlichen schreiben verwendet und muss nicht manuell
; gestartet werden.
  (add-hook 'text-mode-hook 'flyspell-mode)

; Aspell kann auch manuell in jedem Mode aufgerufen werden durch die Eingabe von M-x ispell also ALT-x ispell

; P.S. Die Dateien für Aspell befinden sich nach der Installtion im /home/< user >/ Verzeichniss.
; bei DE: aspell.de.prepl, aspell.de.pws oder bei EN: aspell.de.prepl, aspell.en.pws 


Text-Mode

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;
;;; Text-Mode
;;;;;;;;;;;;;

; TEXT Mode mit Zeilenumbruch bei dem 72 Zeichen.
; Es wird also nach spaetestens dem 72 Zeichen umbrochen.
  (add-hook 'text-mode-hook
  (lambda ()
  (setq fill-column 72)

; Der Zeilenumbruch.
; Wird automatisch waerend dem schreiben durchgefuehrt. Manuell mit M-q also ALT-q
  (turn-on-auto-fill)))

; README Dateien werden im Text-Mode geoeffnet.
  (setq auto-mode-alist (cons '("\\README" .
  text-mode) auto-mode-alist))

; TXT Dateien werden im Text-Mode geoeffnet:
  (setq auto-mode-alist (cons '("\\.txt$" .
  text-mode)auto-mode-alist))


LaTeX-Mode

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;
;;; LaTeX-Mode
;;;;;;;;;;;;;;;

; TEX Dateien werden im LaTeX-Mode geoeffnet.
(setq auto-mode-alist (cons '("\\.tex$" .
latex-mode)auto-mode-alist))

; LaTeX-Mode mit ''nicht Automatischem'' Zeilenumbruch. 
; Manuell mit M-q also ALT-q möglich.
 (add-hook 'latex-mode-hook
 (lambda ()

; Umbruch bei 72 Zeichen 
 (setq fill-column 72)

; Schaltet Automatischen Umbruch ab.
(turn-off-auto-fill)))

; Programm zum Kompilieren der LaTeX u. TeX Dateien.
  (setq-default latex-run-command 'latex)


HTML-Mode

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;
;;; HTML-Mode
;;;;;;;;;;;;;;

; HTML Dateien werden im HTML-Mode geoeffnet.
(setq auto-mode-alist (cons '("\\.html$" .
html-mode)auto-mode-alist))

; HTM Dateien werden im HTML-Mode geoeffnet.
(setq auto-mode-alist (cons '("\\.htm$" .
html-mode)auto-mode-alist))

; HTML-Mode  mit ''nicht Automatischem'' Zeilenumbruch. 
; Manuell mit M-q also ALT-q möglich.
  (add-hook 'html-mode-hook
  (lambda ()

; Umbruch bei 72 Zeichen 
  (setq fill-column 72)

; Schaltet Automatischen Umbruch ab.
  (turn-off-auto-fill)))


Mutt

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Emacs im MUTT Mail-Client
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Wird der Mail-Client ''Mutt'' verwendet mit dem Editor Emacs, so wird mit Hilfe dieser Zeile der Editor Emacs
; beim schreiben einer neuen Mail im Text-Mode gestartet welcher zudem bei 72 Zeichen umbricht und mit der 
; Rechtschreibprüfung Ispell arbeitet. (Falls installiert und entsprechend konfiguriert. Siehe Konfigurationsbeispiele!)
  (setq auto-mode-alist (cons '("\\mutt" .
  text-mode) auto-mode-alist))

; P.S. In der .muttrc waere als Editor "emacs -nw" einzutragen.


Backup

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;
;;; Backup-Datei
;;;;;;;;;;;;;;;;

; Backups generell erstellen.
  (setq-default make-backup-files t)

; Copy-File anstelle von Ren-File.
  (setq-default backup-by-copying t)

; Wie viele alte Backup Versionen sollen beibehalten werden.
; Default ist hier 2.
  (setq-default kept-new-versions 10)

; Automatisches speichern einer Datei.
  (setq-default auto-save-default t)

; Automatisches speichern alle paar Sekunden oder Minuten
; Hier den Wert in Sekunden angeben. 
  (setq-default auto-save-timeout 300)


Kalender

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;
;;; Kalender
;;;;;;;;;;;;

; Pfad zur Kalenderdatei in welcher die Daten gespeichert werden. 
; Die .diary Datei im Homeverzeichniss.
 (setq diary-file "~/.diary")

; Kalender Benachrichtigung bei Ereignissen
 (display-time)
 (add-hook 'diary-hook' appt-make-list)
 (diary 0)

; Europaeisches Kalender Aussehen verwenden.
  (setq european-calendar-style t)

; Anzeige der Zeit beim Kalendermodus in der Statusleiste.
  (setq calendar-time-display-form
  '(24-hours ":" minutes (if time-zone " (") time-zone (if time-zone ")")))

; Anzeigen von Datum beim Kalendermodus in der Statusleiste.
  (setq calendar-date-display-form
  '((if dayname (concat dayname ", ")) day " " monthname " " year))

; Unterstreicht im Kalendermodus den heutigen Tag.
  (add-hook 'today-visible-calendar-hook 'calendar-mark-today)

; Eine Woche beginnt in der Kalenderansicht mit Montag als ersten Tag anstelle von Sontag.
  (setq calendar-week-start-day 1)

; Fuer deutsche Tagesnamen im Kalender.
; Hierbei stimmt allerdings die Farbliche Kennzeichnung der Feiertage nicht mehr
; ueberein. Anstelle von Mo. bis Fr. ist Mon. u. Fr. eingefaerbt.
  (setq calendar-day-name-array ["Sonntag" "Montag" "Dienstag" "Mittwoch"
  "Donnerstag" "Freitag" "Samstag"])

; Fuer deutsche Monatsnamen im Kalender.
  (setq calendar-month-name-array ["Januar" "Februar" "März" "April" "Mai"
  "Juni" "Juli" "August" "September" "Oktober" "November" "Dezember"])

; Info:
;
; Sollte man Eintraege im Kalender vornehmen und erst danach von englischen
; auf deutsche Monate umstellen, so funktionieren diese Eintraege nicht mehr.
; In der Konfigurationsdatei werden die Termina entsprechend vermerkt dessen
; schreibweise im englischen etwas anderst is als im deutschen. 
; Oktober - October, so werden Eintraege in der anderen Sprache eventuell nicht
; angezeigt. Erst Sprache einstellen, dann Termine eintragen.

; Eintraege im Kalender markieren, kann auch manuell mit der Taste M gemacht werden.
; Hier wird automatisch nach dem Start alles Markiert wo Eintraege vorhanden sind.
  (setq mark-diary-entries-in-calendar t)


Tabulator

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Tabulator Einstellung
;;;;;;;;;;;;;;;;;;;;;;;;;

; Ein Tabulator ist 8 Spaces.
; Der Wert 8 ist auch default.
  (setq-default tab-width 8)


F-Tasten Belegung

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;
;;; F-Tasten Belegung
;;;;;;;;;;;;;;;;;;;;;

; Belegt die F4 Taste mit der Rechtschreibpruefung "ispell".
  (define-key global-map [(f4)] 'ispell)

; Belegt die F5 Taste mit dem Kalender.
  (define-key global-map [(f5)] 'calendar)


Frame Grösse

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;
;;; Frame Groesse
;;;;;;;;;;;;;;;;;

; Hier kann die Frame Groesse eingestellt werden. Es ist die Groesse des Emacs bereiches in der Konsole.
; Diese werte bitte vorsichtig waehlen, wir haben hier die Standartgroesse wie man sie von Konsolen mit 25x80 kennt.
  (set-frame-height (selected-frame) 25)
  (set-frame-width (selected-frame) 80)

; P.S. In der Regel werden diese Einstellungen nicht benoetigt und sollten daher weg gelassen werden.


Farben

Mit diesen Farbeinstellungen erscheint Emacs in Blau/Weiß auf dem Bildschirm.

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;
;;; Farben
;;;;;;;;;;

(custom-set-faces
 '(default ((t (:family "Courier" :foreground "white" :background
"darkblue" :size "14pt" :bold nil))))
 '(custom-comment-tag-face ((((class color) (background light))
(:foreground "lightgrey"))))
 '(custom-state-face ((((class color) (background light)) 
(:foreground "lightgreen"))))
 '(font-latex-math-face ((((class color) (background dark)) 
(:foreground "light coral"))))
 '(font-latex-sedate-face ((((class color) (background dark))
(:foreground "LightGray" :weight bold))))
 '(font-lock-comment-face ((((class color) (background light))
(:foreground "lightgrey"))))
 '(font-lock-function-name-face ((((class color) (background light))
(:foreground "red"))))
 '(font-lock-keyword-face ((((class color) (background light))
(:foreground "white" :bold nil))))
 '(font-lock-preprocessor-face ((((class color) (background light))
(:foreground "grey" :bold nil :italic nil))))
 '(font-lock-string-face ((((class color) (background dark))
(:foreground "goldenrod" :background "darkblue"))))
 '(region ((((class color) (background dark)) (:background "light grey"
:foreground "black")))))


DarkLook

Hier eine kleine Zusammenstellung für einen etwas dunkleren Emacslook.

;;;;;;;;;;;;
;;; DarkLook
;;;;;;;;;;;;

;(set-foreground-color "#f8f8f2")
;(set-background-color "#272822")
;(set-cursor-color "#f8f8f0")
;(set-face-foreground 'font-lock-comment-face "#95917E")
;(set-face-foreground 'font-lock-string-face "#e6db74")
;(set-face-foreground 'font-lock-keyword-face "#F92672")
;(set-face-foreground 'font-lock-function-name-face "#A6E22E")
;(set-face-foreground 'font-lock-variable-name-face "#98fbff")
;(set-face-foreground 'font-lock-type-face "#A6E22E")
;(set-face-foreground 'region "#272822")
;(set-face-background 'region "#66D9EF")
;(set-face-foreground 'font-lock-constant-face "#66d9ef")

GNUS Mail

Mit Emacs ist es ebenfalls möglich mit der hier gezeigten Vorgehensweise Mails aus seinem Postfach zu holen oder welche zu versenden.

Grundeinstellungen

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; GNUS Mail Grundeinstellungen Header
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Die eigene eMail Adress angeben.
  (setq user-mail-address "Peter@Mail.de")

; Seinen Vor.- und Nachnamen angeben. 
  (setq user-full-name "Peter Musterman")

; Hier wird der Sender im Mailheader geloescht.
  (setq message-syntax-checks ' ((sender . disabled)))

; Zuerst werden alle Headerinformationen erzeugt.
  (setq message-generate-headers-first t)


Empfang RMAIL

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;
;;; GNUS Mail Empfang POP
;;;;;;;;;;;;;;;;;;;;;;;;;

; Den Mailserver eintragen.
  (setenv "MAILHOST" "pop3.web.de")

; Das Passwort wird beim Verbindungsaufbau abgefragt.
  (setq rmail-primary-inbox-list ' ("po:Peter@Mail.de") rmail-pop-password-required t)


Versand SendMail

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; GNUS Mail Versand SMTP
;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq message-send-mail-function 'smtpmail-send-it
send-mail-function 'smtpmail-send-it

; Den SMTP Server eintragen
  smtpmail-smtp-server "smtp.web.de"
  smtpmail-local-domain nil
  smtpmail-debug-info t)


NewsReader

Hier ein Beispiel für die Konfiguration das man Emacs als NewsReader nutzen kann.

Grundeinstellungen

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; NewsReader Konfiguration
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Den NNTP News Server eintragen, hier im Beispiel einer von Arcor.
  (setq gnus-select-method ' (nntp "news.arcor.de"))

; Userdaten und Zugangsinformationen zum NNTP Server werden in einer seperaten Datei 
; namens .authinfo im Homeverzeichniss gespeichert.
  (setq nntp-authinfo-file "~/.authinfo")

; Allgemeine Einstellungen: eMailadresse und Name der verwendet werden soll.
      user-mail-address "Peter@Mail.de"
      user-full-name "Peter Musterman"

; Zuerst Message-ID vom Server generieren.
  (setq message-syntax-checks '((message-id . disabled)))

; Zeitanzeige und Darstellung v. Datum, Auflistung etc.
  (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
  (setq gnus-group-line-format
  "%M%S%5y: %(%~(pad-right 60)g%) Last read on: %uT\n")
  (require 'gnus-spec)
  (defun gnus-user-format-function-T (dummy)
  (let ((time (gnus-group-timestamp gnus-tmp-group)))
  (format-time-string "%d.%m.%Y %T" time)))
  (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)

; Gruppen sollen hierarchisch sortiert werden (topic-mode).
  (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

; Formatierung der group-line: GNUS.
  (add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)

; Die group-line.
  (setq gnus-group-line-format
  "%M\%S\%p\%P\%5y: %(%-40,40G%) %ud\n")

; Format - Darstellung der Zeitausgabe.
  (defun gnus-user-format-function-d (headers)
  (let ((time (gnus-group-timestamp gnus-tmp-group)))
  (if time
  (format-time-string "%b %d  %H:%M" time)
  "")))

; Summary-Line Anzeige.
; Fuer die Ansicht im Summary Fenster.
;
; Beispiel (1)
;
  (setq gnus-user-date-format-alist
  '(((gnus-seconds-today) . "%b %d  %k:%M")
  ((+ 86400 (gnus-seconds-today)) . "%b %d  %k:%M")
  ((+ 604800 (gnus-seconds-today)) . "%b %d  %k:%M")
  ((gnus-seconds-month) . "%b %d  %k:%M")
  ((gnus-seconds-year) . "%b %d  %k:%M")
  (t . "%b %d  %k:%M"))
  gnus-summary-line-format
  (concat
  "%*%U%R%z"
  "%-14&user-date;"
  "%[%4L%] %*"
  "%(%-24,24f %)"
  "%1{ %B%s%}\n"))
;
; Beispiel (2)
; (setq
; gnus-group-line-format " %M%S%5y: + %(%g%)\n"
; gnus-summary-line-format  "%d %U %R %z %I %(%[%4L: %-18,18n%]%)
; %s %e\n")
; (setq gnus-thread-sort-functions
; '(gnus-thread-sort-by-number
; gnus-thread-sort-by-date
; gnus-thread-sort-by-total-score))
;
; Bei den Beispielen einfach mal durchtesten.

; Threads sollen sortiert werden.
  gnus-thread-sort-functions
  '(gnus-thread-sort-by-number
  gnus-thread-sort-by-total-score))

; Der erste Thread einer Gruppe soll nicht automatisch expandiert werden.
  (setq gnus-auto-select-first 'unseen-or-unread)
  (add-hook 'gnus-summary-prepared-hook 'gnus-summary-hide-all-threads)

; 3 Fenster/Frame Teilen
; Damit die ganze Sache etwas uebersichtlicher ist, koennen wir bestimmte Fenster anordnen etc.
;
; Beispiel (1)
;
  (progn
  (setq gnus-build-sparse-threads 'some
  gnus-use-trees t
  gnus-generate-tree-function 'gnus-generate-horizontal-tree
  gnus-tree-minimize-window nil)
  (gnus-add-configuration
  '(article
  (vertical 1.0
  (horizontal 0.25
  (summary 0.75 point)
  (tree 1.0))
  (article 1.0)))))
;
; Beispiel (2)
;
; (gnus-add-configuration '(article (horizontal 1.0 (vertical 25 (group 1.0) ) (vertical 1.0 (summary 0.15 point) (article 1.0) ))))
; (gnus-add-configuration '(summary (horizontal 1.0 (vertical 25 (group 1.0) ) (vertical 1.0 (summary 1.0 point) ))))
;
; Beispiel (3) Summary unten Article oben
;
;  (gnus-add-configuration
; '(article
;  (horizontal 1.0
;  (vertical 1.0
;  (article 1.0)
;  (summary 0.26 point)))))
;
; Beispiel (4) Tree unter Summary und ganz unten Article.
;
;  (setq gnus-use-trees t
;  gnus-generate-tree-function 'gnus-generate-horizontal-tree
;  gnus-tree-line-format "%(%[%6,6n%]%)")
;
; Bei den Beispiel einfach mal durchtesten.

; Signatur
; Beim antworten soll die Signatur nicht zitiert werden.
;
  (setq
      message-from-style 'angles
  message-cite-function 'message-cite-original-without-signature
  )


.authinfo

Userdaten und Zugangsinformationen zum NNTP Server werden in einer seperaten Datei gespeichert.

\home\ ~ \.authinfo 

Wie hier im Beispiel muss der Server news.arcor.de eingetragen werden, der Login-Name am Server Peter und das dazu gehörige Passwort 0100101 muss richtig angegeben werden.

machine news.arcor.de login Peter password 1100101


IRC Client

Um Emacs für IRC verwenden zu können benötigen wir ERC, falls dieses noch nicht installiert sein sollte, bitte installieren. Nach der Installation geht es an die Konfiguration welche nur ein paar Zeilen beinhaltet um überhaupt ins IRC Netz zu gelangen. Natürlich kann dies wie bei allem entsprchend bis nahezu ins unendliche erweitert werden.

;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;
;;; ERC - IRC
;;;;;;;;;;;;;

; Basis Einstellungen fuer ERC - IRC 
 (setq erc-server "irc.freenode.net"
 erc-port 6667
 erc-nick "MEIN NICKNAME"
 erc-user-full-name "MEIN REAL NAME"
 erc-email-userid "MEINE-EMAIL@ADRESSE.DE"
 erc-current-nick-highlight-type 'nick
 erc-timestamp-only-if-changed-flag nil

; Format fuer die Zeitanzeige im IRC, hier die Stunden:Minuten.
  erc-timestamp-format "%H:%M "
 )

; Passwort
  (setq erc-password "HIER STEHT MEIN PW")

; Auto /join beim Start von ''M-x erc'' 
  (setq erc-autojoin-channels-alist '(("freenode.net" "#linux-club.de" "#lc-wikiteam")))

; Es kann dann in Emacs mit ''M-x erc'' den ERC gestartet werden. Jeder Kanal bekommt einen 
; eigenen Buffer durch die man mit ''M-x buffer-menu'' eine Uebersicht erhaelt. Ansonsten 
; gelten die ganz normalen IRC Befehle. 

; Prompt / Eingabezeile.
  (setq erc-prompt ">") 

; Buttonize URLs, Spitznamen und anderer Text.
  (erc-button-mode 1)

; Wandelt Smileys in huebsche Ikons um. 
  (erc-smiley-mode 1)

; Spelling Mode, Spell-Checker, Ispell, Rechtschreibung ueberpruefen.
  (erc-spelling-mode 1)



ICQ Client


Leider gibt es für Emacs nichts um ihn als Multi-IM verwenden zu können, lediglich für Jabber ist etwas vorhanden. Mit einem kleinen Umweg jedoch, gibt es eine Möglichkeit den ICR Client "ERC" in Emacs als IM mit sämtlichen Protokollen zu verwenden. Dieser Umweg führt über Bitlbee. Bitlbee ist ein IM Client mit Netzwerk Gateway der sich als IRC Server ausgiebt und Icq, Aim, Msn, Yahoo sowie Jabber kann. Den Bitlbee Server setzt man entweder selbst auf, oder verwendet einen der freien Server die für jeden bereits im Netz laufen. Eine Serverliste bekommt man auf der Webseite des Projektes. In unserem Beipsiel ist bereits der Server "bitlbee.extreme-players.de" eingetragen. Ist man mit dem Server verbunden, müssen die IM Konten eingestellt bzw. neu angelegt werden. Dies geschieht mit Befehlen, eine Hilfe zu allen Befehlen etc. bekommt man mit dem Befehl "help". Da der Bitlbee Server ein Irc Server ist, funktionieren nach dem Login auch die Irc Befehle. Eine Kurze Anleitung ist auf der Projektseite zu finden, ein Quickstart hier.



;;; Ausgeklammerter Text im Code welcher nicht zu beruecksichtigen ist wird mit dem Semikolo (;) gekennzeichnet.

;;;;;;;;;;;;;
;;; ERC - ICQ
;;;;;;;;;;;;;

; Prompt / Eingabezeile.
  (setq erc-prompt ">")

; Buttonize URLs, Spitznamen und anderer Text.
  (erc-button-mode 1)

; Wandelt Smileys in huebsche Ikons um.
  (erc-smiley-mode 1)

; Spelling Mode, Spell-Checker, Ispell, Rechtschreibung ueberpruefen.
  (erc-spelling-mode 1)

; Konfiguration fuer den Bitlbee Server. Durch die Eingabe von "ALT+X erc-icq" wird der ERC Client gestartet fuer den Icq Modus. 
 (defun erc-icq ()
  "Connect to ICQ."
  (interactive)
  (when (y-or-n-p "Plaudern? ")
    (erc-select :server "bitlbee.extreme-players.de" :port 6667
                :nick "Nickname" :full-name "Real Name"
		:password "MeinPW")
                :timestamp-format "%H:%M "
       ))


Tipp: man sollte daran denken zu überprüfen das sich die Einstellungen vom ERC-IRC nicht mit den ERC-ICQ übeschneiden und es so zu Fehler kommt.


EMMS Emacs Multimedia System

Für den Emacs gibt es das Emacs Multimedia System namens EMMS. Ist dieses installiert, genügen wenige Konfigurationszeilen in der .emacs Datei um mit Hilfe von EMMS Musik abspielen zu können.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; EMMS Emacs Multimedia System
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Die aktuell gelistete Titelansicht welche bei Auswahl gespielt werden.
(add-hook 'emms-player-started-hook 'emms-show)
(setq emms-show-format "NP: %s")
 
;; Wird Emms gestratet, so ist das emms-play-directory,
;; das hier angegebene. Es muss entsprechend angepasst werden.
(setq emms-source-file-default-directory "~/Musik/mp3/Samlung/")
       
;; Fuer Alsa mit mpg321. 
(setq emms-player-mpg321-parameters '("-o" "alsa"))

(add-to-list 'load-path "~/elisp/emms/")
(require 'emms-setup)
(emms-all)
(emms-default-players) 


Screenshot







Versionen


Links



zurück zu Office