PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Arbeiten mit Emacs] - Syntaxhighlighting



dragon's might
23.06.03, 12:42
<h1>[Arbeiten mit Emacs] - Web Programmierung - Syntaxhighlighting v0.0001a</h1>
<hr>
<h3>1. Der Emacs</h3>

Unter GNU/Linux gibt es viele Editoren, doch keiner ist so umfangreich wie der Emacs.
Der wichtigste Vorteil des Emacs gegenüber anderen Editoren besteht darin, dass er
beliebig erweiter- und programmmierbar ist. Also kein Wunder das man mit ihm auch Kaffe kochen(Und ich meine nicht nur Java programmieren) ;-). Wenn man anspruchsvolle Projekte planen oder größere Textmengen effizient verarbeiten will, führt am Emacs praktisch kein Weg vorbei. Es gibt den <a href="http://www.gnu.org/software/emacs/emacs.html" target="blank"> GNU Emacs</a> und den <a href="http://www.xemacs.org/" target="blank">XEmacs</a>, welchen man benutzen will bleibt einem selbst überlassen - ich benutze den GNU Emacs. (Dieses How-To ist auf beide anwendbar). In diesem How-To beschäftigen wir uns mit dem Syntaxhighlighting verschiedener Sprachen unter Emacs. In erster Linie auf Sprachen zur programmierung von Webseiten (PHP, HTML, CSS, SGML etc.), aber man kann das How-To auch auf andere Sprachen anwenden, indem man die Emacskonfigurationsdatei entsprechent (~/.emacs) editiert.
Doch zunächst

<h3>2. Die wichtigsten Kommandos</h3>


STRG + X Zusatzkommando Wirkung

STRG + F datei ENTER Datei laden (find)

I Datein in den vorhandenen Text einfügen (insert)

STRG + S Datei speichern (save)

S, ! Alle offenen Dateien speichern

STRG + W datei ENTER Datei unter neuem Namen spreichern (write)

S Alle Dateien (mit Rückfrage) speichern

STRG + C Emacs verlassen



<h3>3. Durchforsten von EmacsWiki</h3>
Die erste Anlaufadresse für Zusatzprogramme und ähnliches ist neben der oben genannten GNU (Emacs) Seite <a href="http://www.emacswiki.org" target="blank">www.emacswiki.org</a>. Hier gibt es folgende Seiten durch die ich mich mittels der Suchfunktion (am unteren Ende der Seite)
<a href="http://www.emacswiki.org/cgi-bin/wiki.pl/ElispArea" target="blank"> von ElispArea</a> geschlagen habe:



1. http://www.emacswiki.org/cgi-bin/wiki.pl/HtmlMode

2. http://www.emacswiki.org/cgi-bin/wiki.pl/PhpMode

3. http://www.emacswiki.org/cgi-bin/wiki.pl/HtmlModeDeluxe


HTML-Highlighting (html-mode) und PHP-Highlighting (php-mode) gibt es beim Emacs oft schon standartmäßig, wenn nicht sollte man sich an den Links bedienen oder die Suche in der ElispArea benutzen. Den psgml-mode und den css-mode kann man dort auch finden. Diese "Mode"-dateien haben die Endung *.el oder *.elc und werden in das Lisp Verzeichnis des (X)Emacs kopiert. Bei mir liegt dieses Verzeichnis in /usr/share/emacs und heißt 'site-lisp'. Hat man alle Dateien die man will kommt <a href="http://mmm-mode.sourceforge.net/" target="blank"> <b>mmm-mode</b></a> ins Spiel. Dieses Programm kombiniert die verschiedenen Highlightings und bringt neue komfortable Kommandos zum Einfügen von Tags für die jeweilige Sprache mit. <a href="http://www.emacswiki.org/cgi-bin/wiki.pl/HtmlModeDeluxe" target="blank"> Hier</a> ein Bild und die Beschreibung für die ~/.emacs Datei. Die .emacs Datei muss editiert und um diese Zeilen erweitert werden:




;;************************************************ ************
;; configure HTML editing
;;************************************************ ************
;;
(require 'php-mode)
;;
;; configure css-mode
(autoload 'css-mode "css-mode")
(add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
(setq cssm-indent-function #'cssm-c-style-indenter)
(setq cssm-indent-level '2)
;;
(add-hook 'php-mode-user-hook 'turn-on-font-lock)
;;
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
;;
;; set up an mmm group for fancy html editing
(mmm-add-group
'fancy-html
'(
(html-php-tagged
:submode php-mode
:face mmm-code-submode-face
:front "<[?]php"
:back "[?]>")
(html-css-attribute
:submode css-mode
:face mmm-declaration-submode-face
:front "style=\""
:back "\"")))
;;
;; What files to invoke the new html-mode for?
(add-to-list 'auto-mode-alist '("\\.inc\\'" . html-mode))
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . html-mode))
(add-to-list 'auto-mode-alist '("\\.php[34]?\\'" . html-mode))
(add-to-list 'auto-mode-alist '("\\.[sj]?html?\\'" . html-mode))
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . html-mode))
;;
;; What features should be turned on in this html-mode?
(add-to-list 'mmm-mode-ext-classes-alist '(html-mode nil html-js))
(add-to-list 'mmm-mode-ext-classes-alist '(html-mode nil embedded-css))
(add-to-list 'mmm-mode-ext-classes-alist '(html-mode nil fancy-html))
;;
;; Not exactly related to editing HTML: enable editing help with mouse-3 in all sgml files
(defun go-bind-markup-menu-to-mouse3 ()
(define-key sgml-mode-map [(down-mouse-3)] 'sgml-tags-menu))
;;
(add-hook 'sgml-mode-hook 'go-bind-markup-menu-to-mouse3)




Falls man einen weiteren Modus hinzufügen oder einen entfernen will, ist die Datei, wie oben schon gesagt, entsprechent zu editieren.

<h3>4. Multiple Major Modes (MMM) installieren</h3>
So, dieses MMM muss man ja auch noch installieren :).
Das ist ganz einfach, entweder man installiert es per CVS oder per *.tar.gz-Packet. Die <a href="http://sourceforge.net/projects/mmm-mode" target="blank"> Projektpage</a> auf soruceforge.net beinhaltet im Moment die Version 0.4.7, doch die CVS Version wird von dem Entwickler eher empfohlen, da die Funktionen ausgereiften sind.
<h4>CVS</h4>





cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mmm-mode login

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mmm-mode co modulename



Für anonymous braucht man kein Passwort, einfach Enter drücken.
Dann wie immer:



./configure
make
su
make install (bzw. checkinstall)



Als nächstes müssen die *.el(c) Dateien in das Lisp-Verzeichnis kopiert werden.
Falls einem das Packet lieber ist geht man so vor:




tar -xzf mmm-mode-x.x.x.tar.gz
cd mmm-mode-x.x.x
./configure
make
su
make install (bzw. checkinstall)

Der Rest funktioniert wie beim CVS.

Fertig!

Have a lot of fun and may the <b>GNU</b> be with you ;) !

Die HTML-Version gibt's hier: http://www.punkroom.de.tf/doc/emacs.html