Paramah's (X)Emacs

Długo przesiedziałem na vi, vim etc - ale ileż można siedzieć na tym samym :). W końcu stwierdziłem, że trzeba coś zmienić i przesiadłem się na emacs'a, a dokładniej mówiąc na Xemacs21-mule, owszem na poszątku miałem trochę problemów. Męczyłem się z polskimi znakami, wyglądem no i ogólnymi ułatwieniami pracy na tekscie. Ale po paru dniach bojów, przewertowaniu inetu udało mi się osiągnąć zadowalający efekt.
Teram mam ładne kodowanie, ustawione defaultowo na iso-8859-2, kreator towrzenia dokumentów html, chwilę się nawet bawiłem erc'em kilentem IRC pod emacs'a, ale jednak wolę irssi.
Część osób mnie wyklnie ale uważam po tym czasie, że emacs ma wiele zalet i jest w pewnych zadaniach duzo lepszy od vi(m), choćby przy pracy na zdalnych plikach emacs jest cudowny i bardzo ułatwia żywot - szczególnie dopełnianiem nazw katalogów i plików.
Jakoże pracuję na Xemacs używam do konfigurowania pliczku ~/.xemacs/init.el, który u mnie wygląda nastpępująco:
;;Ustawienia językowe
;;by paramah [ac@horisone.com]
(set-default-file-coding-system 'iso-8859-2)
(set-default-buffer-file-coding-system 'iso-8859-2)
(set-buffer-file-coding-system 'iso-8859-2 nil)
(set-buffer-file-coding-system-for-read 'iso-8859-2)
(load "~/.xemacs/polskie.el")
;;Automagiczne tworzenie plików HTML
(load "~/.xemacs/htm.el")
    
Pierwsze linijki set'y odpowiadają za ustawienie domyślnego kodowania na polskie iso2, jest z tym problem przy domyślej konfiguracji ponieważ emacs zapisując plik robi "krzaki", a otwarcie go porowduje wskoczenie emacsa w tryp RAW, co przy pisaniu polskich tekstów jest co najmniej upierdliwe :), ale powyższy konfig załatwia ten problem całkowicie.
Drugim problemem jest polska klawiatura w emacs'ie ale dlatego umieściłem sobie w initice linijkę:
(load "~/.xemacs/polskie.el")
    
W tym właśnie pliku mam definicje polskich znaków i przypisanych do nich klawiszy. Plik zaś wygląda następująco (został skopiowany z PLD;kowego emacs'a) i działa bez zarzutu (oczywiście na klasycznym PC'cie z domyslną klawiaturką).
;; Funkcje wstawiajace polskie litery

(defun insert-a-ogonek ()
  (interactive "*")
  (insert 305) ;; ą
)

(defun insert-c-acute ()
  (interactive "*")
  (insert 358) ;; ć
)

(defun insert-e-ogonek ()
  (interactive "*")
  (insert 362) ;; ę 
)

(defun insert-l-slash ()
  (interactive "*")
  (insert 307) ;; ł
)

(defun insert-n-acute ()
  (interactive "*")
  (insert 369) ;; ń
)

(defun insert-o-acute ()
  (interactive "*")
  (insert 371) ;; ó
)

(defun insert-s-acute ()
  (interactive "*")
  (insert 310) ;; ś
)

(defun insert-z-acute ()
  (interactive "*")
  (insert 316) ;; ź
)

(defun insert-z-dot ()
  (interactive "*")
  (insert 319) ;; ż
)

(defun insert-A-ogonek ()
  (interactive "*")
  (insert 289) ;; Ą
)

(defun insert-C-acute ()
  (interactive "*")
  (insert 326) ;; Ć


(defun insert-E-ogonek ()
  (interactive "*")
  (insert 330) ;; Ę
)

(defun insert-L-slash ()
  (interactive "*")
  (insert 291) ;; Ł
)

(defun insert-N-acute ()
  (interactive "*")
  (insert 337) ;; Ń
)

(defun insert-O-acute ()
  (interactive "*")
  (insert 339) ;; Ó
)

(defun insert-S-acute ()
  (interactive "*")
  (insert 294) ;; Ś
)

(defun insert-Z-acute ()
  (interactive "*")
  (insert 300) ;; Ź
)

(defun insert-Z-dot ()
  (interactive "*")
  (insert 303) ;; Ż
)

(global-set-key (quote [aogonek])   (quote insert-a-ogonek))
(global-set-key (quote [Aogonek])  (quote insert-A-ogonek))
(global-set-key (quote [cacute]) (quote insert-c-acute))
(global-set-key (quote [Cacute]) (quote insert-C-acute))
(global-set-key (quote [eogonek]) (quote insert-e-ogonek))
(global-set-key (quote [Eogonek]) (quote insert-E-ogonek))
(global-set-key (quote [lstroke]) (quote insert-l-slash))
(global-set-key (quote [Lstroke]) (quote insert-L-slash))
(global-set-key (quote [nacute]) (quote insert-n-acute))
(global-set-key (quote [Nacute]) (quote insert-N-acute))
(global-set-key (quote [oacute]) (quote insert-o-acute))
(global-set-key (quote [Oacute]) (quote insert-O-acute))
(global-set-key (quote [sacute]) (quote insert-s-acute))
(global-set-key (quote [Sacute]) (quote insert-S-acute))
(global-set-key (quote [zacute]) (quote insert-z-acute))
(global-set-key (quote [Zacute]) (quote insert-Z-acute))
(global-set-key (quote [zabovedot]) (quote insert-z-dot))
(global-set-key (quote [Zabovedot]) (quote insert-Z-dot))
(global-set-key (quote [?\M-`]) (quote set-justification-left))
    
Jakoże lubię automatyzować sobie życie, a często piszę jakieś stronki - to należało coś zrobić z tworzeniem kodu htmlowego żebu nie kopiować i wstawiać co raz tego samego. Za tą czynność odpowiada linijka:
;;Automagiczne tworzenie plików HTML
(load "~/.xemacs/htm.el")
    
Zaś plik htm.el wygląda tak:
(setq html-helper-htmldtd-version "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n")
(setq html-helper-new-buffer-template
    '(html-helper-htmldtd-version
	"<html Lang=Pl>\n"
	"  <head>\n"
	"    <title>" (p "Document Title: " title) "</title>\n"
	"    <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\">\n"
	"    <meta name=\"keywords\" content=\""(p "Document keywords:" keywords)"\">\n"
	"    <meta name=\"description\" content=\""(p "Document description:" desc)"\">\n"
	"    <meta name=\"robots\" content=\"all\">\n"
	"    <meta name=\"revisit-after\" content=\"1 days\">\n"
	"  </head>>\n"
	"  <body>\n"
	"    <h2>" (s title) "</h2>\n\n"
	p
	"\n\n    <hr>\n"
	"    <address> <a href=\"mailto:ac@horisone.com\">Aleksander \"paramah\" Cynarski</a></address>\n"
	"    <address> <a href=\"http://sander.eu.org\">http://sander.eu.org</a></address>\n"
	(html-helper-return-created-string)
	html-helper-timestamp-start
	html-helper-timestamp-end
	"\n  \n\n"));  
(setq hm--html-expert t)
(autoload 'hm--html-minor-mode "hm--html-mode" "Support for HTML" t)
(add-hook 'html-mode-hook 'hm--html-minor-mode)  
Właściwie dzięki tym plikom Emacs działa jak należy, jak dla mnie oczywiście, ale możliwości ma wiele - a ich granice to tylko i wyłącznie Twoja wyobraźnia. Jeżeli chcesz się pobawić Emacs'em albo Xemacs'em to poprostu się zacznij bawić. Nie słuchaj ludzi, którzy mówią, że emacs jest dla wyjadaczy, że emacs jest nie do przejścia - bo to nieprawda.

Poniżej znajdują się linki do poszczególnych plików konfiguracyjnych, których używam u siebie.
init.el[SOURCE]
polskie.el[SOURCE]
htm.el[SOURCE]
całość w archiwum[TAR.GZ]

Aleksander "paramah" Cynarski
http://sander.eu.org
Last modified: Mon Sep 6 22:35:47 CEST 2004