Poni┐szy tekst opisuje co nale┐y wstawiµ do pliku ~/.emacs, aby
zapewniµ obs│ugΩ polskich liter w edytorze GNU emacs. Mo┐na w nim wyr≤┐niµ trzy
grupy funkcji:
- Definicje funkcji wstawiaj▒cych polskie znaki do bufora. Znaki w kodzie
ISO8859-2.
- Przypisanie tych funkcji klawiszom Alt+litera i Alt+Shift+litera
Te przypisania dzia│aj▒ na klawiaturze SUN starszego typu (a la AT)
pod SunOS 4.1.3. Nie mam teraz mo┐liwo╢ci przetestowania ich na
innych maszynach. Je╢li nie dzia│aj▒, to modyfikacja powinna byµ bardzo
prosta: nale┐y wywo│aµ funkcjΩ global-set-key, nacisn▒µ po┐▒dan▒
sekwencjΩ klawiszy, wpisaµ odpowiedni▒ funkcjΩ insert-*, nacisn▒µ RET.
NastΩpnie C-x ESC ESC (repeat-complex-command), C-a C-k C-g
(zachowanie w buforze) i C-y w odpowiednim miejscu .emacs.
- Modyfikacja tablicy okreslaj▒cej typ znaku (czy mo┐e stanowiµ czΩ╢µ
s│owa) i w przypadku liter - ich `wielko╢µ' (ma│a czy wielka litera).
Jest to potrzebne do prawid│owego dzia│ania funkcji forward-word,
downcase-word itp.
Funkcje wstawiaj▒ce znaki do bufora
Definicje potrzebne s▒, by mo┐na by│o definiowane funkcje przypisaµ
odpowiednim klawiszom. Mo┐na z nich jednak korzystaµ wywo│uj▒c je przez
nazwΩ (np. poprawiaj▒c plik zdalnie z byle jak skonfigurowanego komputera).
Definicje nale┐y umie╢ciµ w pliku .emacs.
; Polish characters
(defun insert-a-ogonek ()
(interactive "*")
(insert 177)
)
(defun insert-c-acute ()
(interactive "*")
(insert 230)
)
(defun insert-e-ogonek ()
(interactive "*")
(insert 234)
)
(defun insert-l-slash ()
(interactive "*")
(insert 179)
)
(defun insert-n-acute ()
(interactive "*")
(insert 241)
)
(defun insert-o-acute ()
(interactive "*")
(insert 243)
)
(defun insert-s-acute ()
(interactive "*")
(insert 182)
)
(defun insert-z-acute ()
(interactive "*")
(insert 188)
)
(defun insert-z-dot ()
(interactive "*")
(insert 191)
)
(defun insert-A-ogonek ()
(interactive "*")
(insert 161)
)
(defun insert-C-acute ()
(interactive "*")
(insert 198)
)
(defun insert-E-ogonek ()
(interactive "*")
(insert 202)
)
(defun insert-L-slash ()
(interactive "*")
(insert 163)
)
(defun insert-N-acute ()
(interactive "*")
(insert 209)
)
(defun insert-O-acute ()
(interactive "*")
(insert 211)
)
(defun insert-S-acute ()
(interactive "*")
(insert 166)
)
(defun insert-Z-acute ()
(interactive "*")
(insert 172)
)
(defun insert-Z-dot ()
(interactive "*")
(insert 175)
)
Przypisanie klawiszom funkcji
Uwaga: przypisania dzia│aj▒ na klawiaturze typu AT na SUNach pracuj▒cych
pod kontrol▒ SunOS 4.1.3. Mog▒ byµ inne (i pewnie bΩd▒) na innym
sprzΩcie i z innym systemem operacyjnym. W celu zdefiniowania w│asnych
przypisa± nale┐y zastoswaµ opisan▒ ni┐ej procedurΩ (klawisz Alt mo┐e byµ
zast▒piony innym). Zak│adamy, ┐e edycji poddajemy plik
.emacs. Dla przyk│adu przypiszmy insert-a-ogonek do Alt-a:
- M-x global-set-key
- Wywo│anie funkcji definiuj▒cej przypisania klawiszy
- Alt-a
- To nale┐y nacisn▒µ, tzn. klawisz Alt i klawisz a
- insert a ogonek
- Nazwa funkcji, kt≤ra bΩdzie wywo│ana po naci╢niΩciu Alt-a
- RET
- Tzn. nacisn▒µ klawisz Return (lub Enter)
- C-x ESC ESC
- czyli Control-x i dwa razy klawisz Escape - wywo│anie funkcji
repeat-complex-command. Zapis lispowy wywo│ania funkcji global-set-key z
gotowymi parametrami pojawia siΩ w minibuforze.
- C-a
- Ustawiamy kursor na pocz▒tku definicji
- C-k
- Kasujemy definicjΩ (i umieszczamy j▒ w buforze rzeczy skasowanych)
- C-g
- Przerywamy wykonanie polecenia i wracamy do edycji pliku
.emacs
- C-y
- Wstawiamy skasowan▒ definicjΩ do pliku.
; key bindings for Polish characters: Alt - lowercase, Alt+Shift - uppercase
(global-set-key (quote [4194401]) (quote insert-a-ogonek)) ; A-a
(global-set-key (quote [4194403]) (quote insert-c-acute)) ; A-c
(global-set-key (quote [4194405]) (quote insert-e-ogonek)) ; A-e
(global-set-key (quote [4194412]) (quote insert-l-slash)) ; A-l
(global-set-key (quote [4194414]) (quote insert-n-acute)) ; A-n
(global-set-key (quote [4194415]) (quote insert-o-acute)) ; A-o
(global-set-key (quote [4194419]) (quote insert-s-acute)) ; A-s
(global-set-key (quote [4194424]) (quote insert-z-acute)) ; A-x
(global-set-key (quote [4194426]) (quote insert-z-dot)) ; A-z
(global-set-key (quote [4194369]) (quote insert-A-ogonek)) ; A-A
(global-set-key (quote [4194371]) (quote insert-C-acute)) ; A-C
(global-set-key (quote [4194373]) (quote insert-E-ogonek)) ; A-E
(global-set-key (quote [4194380]) (quote insert-L-slash)) ; A-L
(global-set-key (quote [4194382]) (quote insert-N-acute)) ; A-N
(global-set-key (quote [4194383]) (quote insert-O-acute)) ; A-O
(global-set-key (quote [4194387]) (quote insert-S-acute)) ; A-S
(global-set-key (quote [4194392]) (quote insert-Z-acute)) ; A-X
(global-set-key (quote [4194394]) (quote insert-Z-dot)) ; A-Z
Sk│adnia
Umieszczone poni┐ej instrukcje s▒ potrzebne do tego, by prawid│owo
dzia│aly funkcje przej╢cia do nastΩpnego/poprzedniego s│owa, zamiany
znak≤w na wielkie/ma│e itp. Dzia│aj▒ w emacsie do wersji 19.28 (byµ mo┐e
tak┐e w 19.29). W nowszych wersjach nie bΩd▒ dzia│aµ. Nale┐y w≤wczas
skorzystaµ z pakietu iso02-syn.
; case table entries for Polish characters
(let ((downcase (concat (car (standard-case-table)))))
(set-case-syntax-pair 161 177 downcase) ; Aa with ogonek
(set-case-syntax-pair 198 230 downcase) ; Cc with acute
(set-case-syntax-pair 202 234 downcase) ; Ee with ogonek
(set-case-syntax-pair 163 179 downcase) ; Ll with slash
(set-case-syntax-pair 209 241 downcase) ; Nn with acute
(set-case-syntax-pair 211 243 downcase) ; Oo with acute
(set-case-syntax-pair 166 182 downcase) ; Ss with acute
(set-case-syntax-pair 172 188 downcase) ; Zz with acute
(set-case-syntax-pair 175 191 downcase) ; Zz with dot
(set-standard-case-table (list downcase nil nil nil)))
Powodzenia!
Jan Daciuk
<jandac@pg.gda.pl>