|
Search Wiki PageName Search Пані Маєш: <<Уроки>>
Тут зібрана різноманітна інформація з тих областей, які мене цікавлять. В основному це буде так чи інакше пов'язане моєю роботою (я все ще працюю системним адміністратором Юнікса) чи загальними інтересами, як то українська мова, література. Або ж з місцями мого перебування -- Київ, Токіо.
Але немає ґарантії, що тут не з'явиться іще щось цікавеньке (як на мою особисту думку).
Last blog posts Зареєструватись |
Використання української мови в Gnu/Emacs та XEmacs
Використання української мови в X/GNU Emacs'і
Зміни до модуля ukrainian.elЧерез деякі розбіжності в типах даних в elisp'і GNU Emacs 'а та elisp'і X Emacs 'а модуль, написаний для GNU Emacs 'а, не працює з X Emacs 'ом. Тут ви можете знайти трохи видозмінену версію ukrainian.el , яка дозволяє працювати з обома версіями emacs 'ів. Старт emacs'у
Необхідні зміни до .emacsДалі я переходжу до основної частини свого твору. Вона складається із того тексту, який необхідно додати до файлу . emacs , та моїх коментарів до цього тексту. Навіть, якщо ви не розумієте про що йде мова, просто "cut-n-paste" всі ці шматки lisp коду, вставте його в . emacs і ви готові. Як змусити emacs "розуміти" українські літери
;;;;;; Ukrainian/Russian viewing/input setting
;;;
;;
;; D.Kovalev (DK) kov@tokyo.email.ne.jp :- Some customizations around
;; ukrainian.el, russian.el and Cyrillic HOWTO from Linux HOWTO's
;;
;; From Cyrillic HOWTO by Belikov :
;;
;; [...] Emacs doesn't know yet, that Cyrililic characters may
;; constitute a word, let alon the upper/lower case conversion
;; rules. In order to teach Emacs doing that, you have to modify the
;; syntax and case tables of emacs :
;;
(require 'case-table)
;; added 4 Ukrainian letters (DK)
;; і \246\266
;; ї \247\267
;; ґ \255\275
;; є \244\264
;;
;; Also changed r?c -> c?c from the source to be politically
;; correct. It's supposed to be 'Cyrillic Character', not 'Russian',
;; right? (DK)
;;
; Attention !!! included here
; works only for KOI8-U, for
; other encodings 'cuc' and
; 'cul' entries must be
; redefined.
(let* ((cuc "\266\267\275\264\341\342\367\347\344\345\263\366\372\351\3
52\353\354\355\356\357\360\362\363\364\365\346\350\343\376\373\375\370\371\377\
374\340\361")
(clc "\246\247\255\244\301\302\327\307\304\305\243\326\332\311\3
12\313\314\315\316\317\320\322\323\324\325\306\310\303\336\333\335\330\331\337\
334\300\321")
(i 0)
(len (length cuc)))
(while (< i len)
(modify-syntax-entry (elt cuc i) "w ")
(modify-syntax-entry (elt clc i) "w ")
(set-case-syntax-pair (elt cuc i) (elt clc i) (standard-case-table)
)
(setq i (+ i 1))))
Дякуючи цим модифікаціям також можливо користуватися функціями переведення слів із реґістру в реґістр - тобто із малих українських літер в великі, і навпаки. Як зробити так, щоб emacs показував українські літериВ цьому розділі нічого нового немає. Все повністю взяте із переписки з Степаном Бобиком і може бути знайденим на його сторінці з українізації emacs 'у. Тому я привожу тут це без всяких коментарів:
;; Ukrainian displaying mode -- file: ukrainian.el --------------
;; From Stephen Bobik
; Force the upper part of the
; ascii displayed as-it-is
(standard-display-8bit 160 255)
; Load the emacs lisp code to
; perform koi8 text
; transformations.
Як зробити так, щоб можна було користуватися не тільки українською, а також і російськю мовамиДля вживання російської мови в emacs 'і існує інший модуль - russian.el (від якого походить ukrainian.el ). emacs дозволяє користуватися обома модулями одночасно. Для цього потрібно завантажити обидва модулі в emacs , це робиться за допомогою двох наступних рядків тексту. Зверніть увагу, що в моїй системі всі модулі в emacs Lisp'і знаходяться в директорії ~/.lisp . Змініть цю назву відповідно до вашої системи.
(load-file "~/.lisp/ukrainian.el")
(load-file "~/.lisp/russian.el")
Але, переходити із українського режиму в російський безпосередньо неможливо. Якщо ви, знаходячись, наприклад, в українському режимі спробуєте виконати команду M-x russian-insertion-mode , emacs перейде в якийсь невідомий режим і почне друкувати бозна що. Для того, щоб коректно перейти з режиму в режим, потрібно спочатку вийти з українського режиму (командою M-x ukrainian-insertion-mode , а потім вже вмикати російський режим командою M-x russian-insertion-mode . З урахуванням цього я додав кілька нових функцій, які теж мають своє місце в . emacs , і забезпечують необхідну функціональність. Функція toggle-ukrainian , перш за все вимикає російський режим (не залежно від того був він вмикнений, чи ні), а потім вже перемикає український режим (тобто перемикається з українського в англійський і навпаки).
;; Because I have both Ukrainian and Russian in my emacs I need
;; following. If I, let's say, in Ukrainian insertion mode and want to
;; switch to Russian, I need to switch Ukrianian off first and *then*
;; turn Russian on. If I do 'M-x russian-insertion-mode', without
;; doing 'M-x ukrainian-insertion-mode' my keyboard ends up all
;; screwed. And vice-versa for switching from R -> U. So the
;; following 2 functions defined to provide easy "cross" switching
;; from one mode into another. (-DK)
(defun toggle-ukrainian ()
(interactive)
"Make sure the Russian is off first and then toggle Ukrainian"
(russian-insertion-mode -1)
(ukrainian-insertion-mode)
)
Функція toggle-russian працює аналоґічно до toggle-ukrainian .
(defun toggle-russian ()
(interactive)
"Turn off Ukrainian mode before setting Russian mode"
(ukrainian-insertion-mode -1)
(russian-insertion-mode)
)
Перемикання клавіатурДля того, щоб було зручно перемикати клавіатуру з одного режиму в інший, в моєму . emacs визначені такі "клавіатурні прискорювачі":
(global-set-key "\C-c\C-u" 'toggle-ukrainian)
(local-set-key "\C-c\C-u" 'toggle-ukrainian)
(global-set-key "\C-c\C-r" 'toggle-russian)
(local-set-key "\C-c\C-r" 'toggle-russian)
CTRL-C, CTRL-U вмикає/вимикає український режим, а CTRL-C, CTRL-R - російський. Я — давній Макінтошевський фан. Першим комп'ютером, в якому з'явилася справжня підтримка багатомовних середовищ, був (і багато в чому залишається єдиним до сьогоднішнього дня) Макінтош. Я дуже довго користувався Макінтошем і довгий час в emacs 'і мені не вистачало тих клавіш, якими я перемикався з мови на мову в Макінтоші - < CMD >-< SPACE >. І хоча, звичайно, я не мав ніякої надії знайти на своїй пісішній (чи навіть спарківській) клавіатурі клавішу < CMD >, але мене не полишали сподівання замінити її на < ALT >. Наступний шматок коду дозволяє вмикати/вимикати український режим за допомогою < Alt >-< ПРОПУСК >.
;Aug 11 1999
;; Two more bindings for Ukrainan -
(local-set-key [?\M- ] 'toggle-ukrainian) (global-set-key [?\M- ]
'toggle-ukrainian) ;; ;; End of Ukrainian/Cyrillic settings ;;
Кілька слів про користування модулем ukrainian.elДалі - в стислій формі про користування модулем ukrainian.el , особливо там, де це стосується нових можливостей.
Наступні команди є стандартними для emacs 'а. Я їх приводжу тут тільки тому, що без тих змін, які описані в цьому документі, вони не працюють з українською мовою.
Кілька корисних порадКонвертування із однієї кодової таблиці в іншу (транслітерація) за допомогою emacs'а.Модуль ukrainian.el дозволяє не тільки передивлятися та редагувати тексти різними кодовими таблицями, але і перекодовувати тексти із однієї кодової таблиці в іншу. Для цього він має дві функції - ukrainian-translate-buffer та ukrainian-translate-region. Перша функція транслітерує весь текст в відкритому буфері, друга - тільки виділений блок тексту. Якщо ви, наприклад, отримали листа, написаного на Віндовс'і в кодовій таблиці windows-1251, а маєте шрифти тільки для koi8-u, відкрийте отриманий файл в emacs 'і. І виконайте такі команди:
Скрипт для транслітерації текстівЯкщо вам доводиться конвертувати тексти досить часто (або просто ліньки кожного разу відкривати текст і друкувати ці кілька команд), ви можете написати дуже простенький скрипт для конвертування текстів. Відкрийте emacs і надрукуйте в ньому всі підряд українські літери. Порядок літер не має ніякого значення, і тому, щоб нічого не пропустити, я друкую всі підряд клавіші на клавіатурі: йцукенгшщзхґфивапролджєячсмітьбюЙЦУКЕНГШЩЗХҐФИВАПРОЛДЖЄЯЧСМІТЬБЮїЇ Далі зробіть копію всього цього рядка, і за допомогою функції ukrainian-translate-region переведіть один із рядків в кодову таблицю із якої (або в яку) ви збираєтесь перекладати тексти. Далі додайте лапки навколо цих текстових рядків, додайте назву команди для транслітерації tr і ще один невеликий рядок на вершині файлу і ваш текстовий фільтр готовий. Наступний фільтр переводить тексти із Windows-1251 в KOI8-U .
#!/bin/sh
tr \
'ИЖСЙЕМЦЬЫГУЄТХБЮОПНКДФ╨ЪВЯЛЁРЭАЧижсйемцьыгу╔тхбюопнкдф╙ъвял╡рэач©╞' \
'йцукенгшщзхґфивапролджєячсмітьбюЙЦУКЕНГШЩЗХҐФИВАПРОЛДЖЄЯЧСМІТЬБЮїЇ'
Протилежний до нього, який перекладає із KOI8-U в Windows-1251 є такий:
#!/bin/sh
tr \
'йцукенгшщзхґфивапролджєячсмітьбюЙЦУКЕНГШЩЗХҐФИВАПРОЛДЖЄЯЧСМІТЬБЮїЇ'
'ИЖСЙЕМЦЬЫГУЄТХБЮОПНКДФ╨ЪВЯЛЁРЭАЧижсйемцьыгу╔тхбюопнкдф╙ъвял╡рэач©╞' \
Посилання: 1. http://www.accessone.com/~bobick/software/emacs_howto.html |
|
This is Tiki v1.8.5 (CVS) -Polaris- © 2002–2004 by the Tiki community Created by: dmytro last modification: Monday 15 of November, 2004 [01:34:57 UTC] by dmytro | дмитро ковальов |