--- On Mon, 1/12/09, sebacyp wrote:
[...]
> Cxu iu uzas Vim-on por redakti ReVo dosierojn?
Mi uzas Emakson -- sed mi supozas, ke eblas adapti mian pakaĵon
ankaŭ por Vim.
> Eble tiu havas makroojn kiuj sxangxas liter-entojn al utf-8 literojn
> cxe dosiermalfermo kaj reen cxe gxia fermo?
Eble vi povus ekstrakti la asoci-tabelon el mia pakaĵo tiucela
(kunsendata) por viaj bezonoj.
--
Sergio
; -*- coding: utf-8 -*-
(defvar sgml-list
'(
(?½ . "½")
(?Ä . "Ĉ") (?Ä . "ĉ")
(?Ä . "Ĝ") (?Ä . "ĝ")
(?Ĥ . "Ĥ") (?Ä¥ . "ĥ")
(?Ä´ . "Ĵ") (?ĵ . "ĵ")
(?Å . "Ŝ") (?Å . "ŝ")
(?Ŭ . "Ŭ") (?Å . "ŭ")
(?à . "Á") (?á . "á")
(?à . "Â") (?â . "â")
(?Ã . "À") (?Ã . "à")
(?Ã
. "Å") (?Ã¥ . "å")
(?à . "Ã") (?ã . "ã")
(?à . "Ä") (?ä . "ä")
(?à . "Ç") (?ç . "ç")
(?à . "É") (?é . "é")
(?à . "Ê") (?ê . "ê")
(?à . "È") (?è . "è")
(?à . "Ë") (?ë . "ë")
(?Ã . "Í") (?Ã . "í")
(?à . "Î") (?î . "î")
(?à . "Ì") (?ì . "ì")
(?à . "Ï") (?ï . "ï")
(?à . "Ñ") (?ñ . "ñ")
(?à . "Ó") (?ó . "ó")
(?à . "Ô") (?ô . "ô")
(?à . "Ò") (?ò . "ò")
(?Ã . "Õ")
(?à . "Ö") (?ö . "ö")
(?à . "Ø") (?ø . "ø")
(?Ã . "×")
(?Ã . "ß")
(?à . "Ú") (?ú . "ú")
(?à . "Û") (?û . "û")
(?à . "Ù") (?ù . "ù")
(?à . "Ü") (?ü . "ü")
(?Ä . "Č") (?Ä . "č")
(?Å . "Š") (?Å¡ . "š")
(?Å . "Ř") (?Å . "ř")
(?à . "Ý") (?ý . "ý")
(?Ž . "Ž") (?ž . "ž")
(?Å» . "Ż") (?ż . "ż")
(?Å . "Ň") (?Å . "ň")
(?Ä . "Ě") (?Ä . "ě")
(?Ä . "Ď") (?Ä . "ď")
(?Ť . "Ť") (?Å¥ . "ť")
(?Ä . "&Aogonek;") (?Ä
. "&aogonek;")
(?Å . "&Lstroke;") (?Å . "&lstroke;")
(?Ä . "&Eogonek;") (?Ä . "&eogonek;")
(?Ä . "Ć") (?Ä . "ć")
(?Å . "Ń") (?Å . "ń")
(?Å . "Ś") (?Å . "ś")
(?Ź . "Ź") (?ź . "ź")
(?Ä . "Ğ") (?Ä . "ğ")
(?ı . "ı") (?İ . "İ")
(?Å . "Ş") (?Å . "ş")
(?Å . "Ő") (?Å . "ő")
(?Ű . "Ű") (?ű . "ű")
(?§ . "¶")
(?² . "&quadrat;") (?³ . "&cubic;")
(?° . "˚")
(?« . "&leftquot;") (?» . "&rightquot;")
(?â . "№")
(?Ю . "&c_Ju;") (?Ñ . "&c_ju;")
(?Р. "&c_A;") (?а . "&c_a;")
(?Р. "&c_B;") (?б . "&c_b;")
(?Ц . "&c_C;") (?Ñ . "&c_c;")
(?Р. "&c_D;") (?д . "&c_d;")
(?Р. "&c_Je;") (?е . "&c_je;")
(?Ð . "&c_Jo;") (?Ñ . "&c_jo;")
(?Ф . "&c_F;") (?Ñ . "&c_f;")
(?Р. "&c_G;") (?г . "&c_g;")
(?Ð¥ . "&c_H;") (?Ñ
. "&c_h;")
(?Р. "&c_I;") (?и . "&c_i;")
(?Р. "&c_J;") (?й . "&c_j;")
(?Р. "&c_K;") (?к . "&c_k;")
(?Р. "&c_L;") (?л . "&c_l;")
(?Р. "&c_M;") (?м . "&c_m;")
(?Р. "&c_N;") (?н . "&c_n;")
(?Р. "&c_O;") (?о . "&c_o;")
(?Р. "&c_P;") (?п . "&c_p;")
(?Я . "&c_Ja;") (?Ñ . "&c_ja;")
(?Ð . "&c_R;") (?Ñ . "&c_r;")
(?С . "&c_S;") (?Ñ . "&c_s;")
(?Т . "&c_T;") (?Ñ . "&c_t;")
(?У . "&c_U;") (?Ñ . "&c_u;")
(?Р. "&c_Zh;") (?ж . "&c_zh;")
(?Р. "&c_V;") (?в . "&c_v;")
(?Ь . "&c_Mol;") (?Ñ . "&c_mol;")
(?Ы . "&c_Y;") (?Ñ . "&c_y;")
(?Р. "&c_Z;") (?з . "&c_z;")
(?Ш . "&c_Sh;") (?Ñ . "&c_sh;")
(?Ð . "&c_E;") (?Ñ . "&c_e;")
(?Щ . "&c_Shch;") (?Ñ . "&c_shch;")
(?Ч . "&c_Ch;") (?Ñ . "&c_ch;")
(?Ñ . "&c_malmol;")
(?Ð . "&c_Ib;") (?Ñ . "&c_ib;")
(?Ð . "&c_W;") (?Ñ . "&c_w;")
(?Π. "&Alfa;") (?α . "&alfa;")
(?á½± . "&alfa_acute;") (?á¾» . "&Alfa_acute;")
(?á¾´ . "&alfa_acute_subj;")
(?ᾰ . "&alfa_breve;") (?Ᾰ . "&Alfa_breve;")
(?á¾¶ . "&alfa_circ;") (?á¾· . "&alfa_circ_subj;")
(?á¼ . "&alfa_densa;") (?á¼ . "&Alfa_densa;")
(?á¼
. "&alfa_densa_acute;") (?á¼ . "&Alfa_densa_acute;")
(?á¾
. "&alfa_densa_acute_subj;") (?á¾ . "&Alfa_densa_acute_Subj;")
(?á¼ . "&alfa_densa_circ;") (?á¼ . "&Alfa_densa_circ;")
(?á¾ . "&alfa_densa_circ_subj;") (?á¾ . "&Alfa_densa_circ_Subj;")
(?á¼ . "&alfa_densa_grave;") (?á¼ . "&Alfa_densa_grave;")
(?á¾ . "&alfa_densa_grave_subj;") (?á¾ . "&Alfa_densa_grave_Subj;")
(?á¾ . "&alfa_densa_subj;") (?á¾ . "&Alfa_densa_Subj;")
(?ὰ . "&alfa_grave;") (?Ὰ . "&Alfa_grave;") (?ᾲ . "&alfa_grave_subj;")
(?á¾± . "&alfa_makron;") (?á¾¹ . "&Alfa_makron;")
(?á¼ . "&alfa_psili;") (?á¼ . "&Alfa_psili;")
(?á¼ . "&alfa_psili_acute;") (?á¼ . "&Alfa_psili_acute;")
(?á¾ . "&alfa_psili_acute_subj;") (?á¾ . "&Alfa_psili_acute_Subj;")
(?á¼ . "&alfa_psili_circ;") (?á¼ . "&Alfa_psili_circ;")
(?á¾ . "&alfa_psili_circ_subj;") (?á¾ . "&Alfa_psili_circ_Subj;")
(?á¼ . "&alfa_psili_grave;") (?á¼ . "&Alfa_psili_grave;")
(?á¾ . "&alfa_psili_grave_subj;") (?á¾ . "&Alfa_psili_grave_Subj;")
(?á¾ . "&alfa_psili_subj;") (?á¾ . "&Alfa_psili_Subj;")
(?á¾³ . "&alfa_subj;") (?á¾¼ . "&Alfa_Subj;")
(?Π. "&Alfa_ton;") (?ά . "&alfa_ton;")
(?Î . "Β") (?β . "β")
(?Î . "Γ") (?γ . "γ")
(?Î . "Δ") (?δ . "δ")
(?Î . "Ε") (?ε . "ε")
(?á½³ . "&epsilon_acute;") (?á¿ . "&Epsilon_acute;")
(?á¼ . "&epsilon_densa;") (?á¼ . "&Epsilon_densa;")
(?á¼ . "&epsilon_densa_acute;") (?á¼ . "&Epsilon_densa_acute;")
(?á¼ . "&epsilon_densa_grave;") (?á¼ . "&Epsilon_densa_grave;")
(?á½² . "&epsilon_grave;") (?á¿ . "&Epsilon_grave;")
(?á¼ . "&epsilon_psili;") (?á¼ . "&Epsilon_psili;")
(?á¼ . "&epsilon_psili_acute;") (?á¼ . "&Epsilon_psili_acute;")
(?á¼ . "&epsilon_psili_grave;") (?á¼ . "&Epsilon_psili_grave;")
(?Î . "&Epsilon_ton;") (?Î . "&epsilon_ton;")
(?Î . "Ζ") (?ζ . "ζ")
(?Î . "Η") (?η . "η")
(?á½µ . "&eta_acute;") (?á¿ . "&Eta_acute;") (?á¿ . "&eta_acute_subj;")
(?á¿ . "&eta_circ;") (?á¿ . "&eta_circ_subj;")
(?ἡ . "&eta_densa;") (?Ἡ . "&Eta_densa;")
(?á¼¥ . "&eta_densa_acute;") (?á¼ . "&Eta_densa_acute;")
(?á¾ . "&eta_densa_acute_subj;") (?á¾ . "&Eta_densa_acute_Subj;")
(?ἧ . "&eta_densa_circ;") (?Ἧ . "&Eta_densa_circ;")
(?á¾ . "&eta_densa_circ_subj;") (?á¾ . "&Eta_densa_circ_Subj;")
(?ἣ . "&eta_densa_grave;") (?Ἣ . "&Eta_densa_grave;")
(?á¾ . "&eta_densa_grave_subj;") (?á¾ . "&Eta_densa_grave_Subj;")
(?á¾ . "&eta_densa_subj;") (?á¾ . "&Eta_densa_Subj;")
(?á½´ . "&eta_grave;") (?á¿ . "&Eta_grave;") (?á¿ . "&eta_grave_subj;")
(?ἠ. "&eta_psili;") (?Ἠ . "&Eta_psili;")
(?ἤ . "&eta_psili_acute;") (?Ἤ . "&Eta_psili_acute;")
(?á¾ . "&eta_psili_acute_subj;") (?á¾ . "&Eta_psili_acute_Subj;")
(?ἦ . "&eta_psili_circ;") (?Ἦ . "&Eta_psili_circ;")
(?á¾ . "&eta_psili_circ_subj;") (?á¾ . "&Eta_psili_circ_Subj;")
(?ἢ . "&eta_psili_grave;") (?Ἢ . "&Eta_psili_grave;")
(?á¾ . "&eta_psili_grave_subj;") (?á¾ . "&Eta_psili_grave_Subj;")
(?á¾ . "&eta_psili_subj;") (?á¾ . "&Eta_psili_Subj;")
(?á¿ . "&eta_subj;") (?á¿ . "&Eta_Subj;")
(?Π. "&Eta_ton;") (?ή . "&eta_ton;")
(?Î . "Θ") (?θ . "θ")
(?Π. "&Jota;") (?ι . "&jota;")
(?á½· . "&jota_acute;") (?á¿ . "&Jota_acute;")
(?á¿ . "&jota_breve;") (?á¿ . "&Jota_breve;")
(?á¿ . "&jota_circ;")
(?á¼± . "&jota_densa;") (?á¼¹ . "&Jota_densa;")
(?á¼µ . "&jota_densa_acute;") (?á¼½ . "&Jota_densa_acute;")
(?ἷ . "&jota_densa_circ;") (?Ἷ . "&Jota_densa_circ;")
(?á¼³ . "&jota_densa_grave;") (?á¼» . "&Jota_densa_grave;")
(?á½¶ . "&jota_grave;") (?á¿ . "&Jota_grave;")
(?á¿ . "&jota_makron;") (?á¿ . "&Jota_makron;")
(?ἰ . "&jota_psili;") (?Ἰ . "&Jota_psili;")
(?á¼´ . "&jota_psili_acute;") (?á¼¼ . "&Jota_psili_acute;")
(?á¼¶ . "&jota_psili_circ;") (?á¼¾ . "&Jota_psili_circ;")
(?ἲ . "&jota_psili_grave;") (?Ἲ . "&Jota_psili_grave;")
(?Π. "&Jota_ton;") (?ί . "&jota_ton;")
(?Ϊ . "&Jota_trema;") (?Ï . "&jota_trema;")
(?á¿ . "&jota_trema_acute;")
(?á¿ . "&jota_trema_circ;")
(?á¿ . "&jota_trema_grave;")
(?Î . "&jota_trema_ton;")
(?Î . "Κ") (?κ . "κ")
(?Î . "Λ") (?λ . "λ")
(?Π. "&My;") (?μ . "&my;")
(?Π. "&Ny;") (?ν . "&ny;")
(?Î . "Ξ") (?ξ . "ξ")
(?Π. "&Omikron;") (?ο . "&omikron;")
(?ό . "&omikron_acute;") (?Ό . "&Omikron_acute;")
(?á½ . "&omikron_densa;") (?á½ . "&Omikron_densa;")
(?á½
. "&omikron_densa_acute;") (?á½ . "&Omikron_densa_acute;")
(?á½ . "&omikron_densa_grave;") (?á½ . "&Omikron_densa_grave;")
(?ὸ . "&omikron_grave;") (?Ὸ . "&Omikron_grave;")
(?á½ . "&omikron_psili;") (?á½ . "&Omikron_psili;")
(?á½ . "&omikron_psili_acute;") (?á½ . "&Omikron_psili_acute;")
(?á½ . "&omikron_psili_grave;") (?á½ . "&Omikron_psili_grave;")
(?Î . "&Omikron_ton;") (?Ï . "&omikron_ton;")
(?Î . "Π") (?Ï . "π")
(?Ρ . "Ρ") (?Ï . "ρ")
(?ῥ . "&rho_densa;") (?Ῥ . "&Rho_densa;")
(?ῤ . "&rho_psili;")
(?Σ . "Σ") (?Ï . "σ") (?Ï . "&sigma_fina;")
(?Τ . "Τ") (?Ï . "τ")
(?Î¥ . "&Ypsilon;") (?Ï
. "&ypsilon;")
(?á½» . "&ypsilon_acute;") (?á¿« . "&Ypsilon_acute;")
(?ῠ. "&ypsilon_breve;") (?Ῠ . "&Ypsilon_breve;")
(?ῦ . "&ypsilon_circ;")
(?á½ . "&ypsilon_densa;") (?á½ . "&Ypsilon_densa;")
(?á½ . "&ypsilon_densa_acute;") (?á½ . "&Ypsilon_densa_acute;")
(?á½ . "&ypsilon_densa_circ;") (?á½ . "&Ypsilon_densa_circ;")
(?á½ . "&ypsilon_densa_grave;") (?á½ . "&Ypsilon_densa_grave;")
(?ὺ . "&ypsilon_grave;") (?Ὺ . "&Ypsilon_grave;")
(?á¿¡ . "&ypsilon_makron;") (?á¿© . "&Ypsilon_makron;")
(?á½ . "&ypsilon_psili;")
(?á½ . "&ypsilon_psili_acute;")
(?á½ . "&ypsilon_psili_circ;")
(?á½ . "&ypsilon_psili_grave;")
(?Î . "&Ypsilon_ton;") (?Ï . "&ypsilon_ton;")
(?Ϋ . "&Ypsilon_trema;") (?Ï . "&ypsilon_trema;")
(?á¿£ . "&ypsilon_trema_acute;")
(?á¿§ . "&ypsilon_trema_circ;")
(?á¿¢ . "&ypsilon_trema_grave;")
(?ΰ . "&ypsilon_trema_ton;")
(?Φ . "Φ") (?Ï . "φ")
(?Χ . "Χ") (?Ï . "χ")
(?Ψ . "Ψ") (?Ï . "ψ")
(?Ω . "Ω") (?Ï . "ω")
(?á½½ . "&omega_acute;") (?á¿» . "&Omega_acute;")
(?á¿´ . "&omega_acute_subj;")
(?á¿¶ . "&omega_circ;") (?á¿· . "&omega_circ_subj;")
(?ὡ . "&omega_densa;") (?Ὡ . "&Omega_densa;")
(?á½¥ . "&omega_densa_acute;") (?á½ . "&Omega_densa_acute;")
(?á¾¥ . "&omega_densa_acute_subj;") (?á¾ . "&Omega_densa_acute_Subj;")
(?ὧ . "&omega_densa_circ;") (?Ὧ . "&Omega_densa_circ;")
(?ᾧ . "&omega_densa_circ_subj;") (?ᾯ . "&Omega_densa_circ_Subj;")
(?ὣ . "&omega_densa_grave;") (?Ὣ . "&Omega_densa_grave;")
(?ᾣ . "&omega_densa_grave_subj;") (?ᾫ . "&Omega_densa_grave_Subj;")
(?ᾡ . "&omega_densa_subj;") (?ᾩ . "&Omega_densa_Subj;")
(?ὼ . "&omega_grave;") (?Ὼ . "&Omega_grave;")
(?ῲ . "&omega_grave_subj;")
(?ὠ. "&omega_psili;") (?Ὠ . "&Omega_psili;")
(?ὤ . "&omega_psili_acute;") (?Ὤ . "&Omega_psili_acute;")
(?ᾤ . "&omega_psili_acute_subj;") (?ᾬ . "&Omega_psili_acute_Subj;")
(?ὦ . "&omega_psili_circ;") (?Ὦ . "&Omega_psili_circ;")
(?ᾦ . "&omega_psili_circ_subj;") (?ᾮ . "&Omega_psili_circ_Subj;")
(?ὢ . "&omega_psili_grave;") (?Ὢ . "&Omega_psili_grave;")
(?ᾢ . "&omega_psili_grave_subj;") (?ᾪ . "&Omega_psili_grave_Subj;")
(?ᾠ. "&omega_psili_subj;") (?ᾨ . "&Omega_psili_Subj;")
(?ῳ . "&omega_subj;") (?ῼ . "&Omega_Subj;")
(?Î . "&Omega_ton;") (?Ï . "&omega_ton;")
(?× . "&alef;") ; 05d0
(?× . "&bet;") ; 05d1
(?× . "ℷ") ; 05d2
(?× . "&dalet;") ; 05d3
(?× . "&he;") ; 05d4
(?× . "&vav;") ; 05d5
(?× . "&zayin;") ; 05d6
(?× . "&het;") ; 05d7
(?× . "&tet;") ; 05d8
(?× . "&yod;") ; 05d9
(?× . "&fkaf;") ; ;05da
(?× . "&kaf;") ; 05db
(?× . "&lamed;") ; 05dc
(?× . "&fmem;") ; ;05dd
(?× . "&mem;") ; 05de
(?× . "&fnun;") ; ;05df
(?× . "&nun;") ; 05e0
(?ס . "&samekh;") ; 05e1
(?×¢ . "&ayin;") ; 05e2
(?×£ . "&fpe;") ; ;05e3
(?פ . "&pe;") ; 05e4
(?×¥ . "&ftsadi;") ; ;05e5
(?צ . "&tsadi;") ; 05e6
(?×§ . "&qof;") ; 05e7
(?ר . "&resh;") ; 05e8
(?ש . "&shin;") ; 05e9
(?ת . "&tav;") ; 05ea
))
;(defvar cyr-uni "ÐÐÐÐÐ
ÐÐÐÐÐÐÐÐÐÐ\
;ÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐРСТУФХЦЧШЩЪЫЬÐЮЯ\
;абвгдежзийклмнопÑÑÑÑÑÑ
ÑÑÑÑÑÑÑÑÑÑ\
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ")
;
;(defun >hex-cyr (char)
; (cond
; ((>= char ?Ð)
; (progn
; (delete-char 1)
; (insert (format "&#x%x;"
; (- char (if (< char ?Ñ) (- ?Ð 1025)
; (- ?Ñ 1088))
; )
; )
; )))
; (t (error "Mankas sgml por %c" char))
;))
(defun >& () "Translate UTF-8 region into the XML &-notation."
(interactive)
(let* ((beg (point-min))
(end (or (search-forward "</art>" nil t) (point-max)))
(coding buffer-file-coding-system))
(if (or (not coding)
(eq (coding-system-type coding) t))
(setq coding default-buffer-file-coding-system))
(save-excursion
(goto-char beg)
(while (re-search-forward "---" nil t)
(replace-match "‐" t t))
(goto-char beg)
(while (re-search-forward "\\>--\\<" nil t)
(replace-match "–" t t))
(goto-char end)
(while (> (point) beg)
(forward-char -1)
(setq end (point))
(let ((char (following-char)))
(if (>= char 128)
(progn
(let ((sgm (assoc char sgml-list)))
(if (null sgm)
(error "Nekonata kodono: <%c>, point=%d\n" char (point))
; (let ((ucs (char-to-ucs char)))
; (delete-char 1)
; (insert (format "&#x%X;" ucs)))
;; (>hex-cyr char)
(progn
(delete-char 1)
(insert (cdr sgm)))))
(goto-char end))
))
)
)))
(defun &> () "Translate &entity => Unikodo in the region."
(interactive)
(let* ((beg (point-min))
(end (point-max))
cxeno kodono)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "&#\\(x?\\)\\(\\w+\\);" nil t)
; (setq kodono
; (- (string-to-number
; (buffer-substring (match-beginning 2) (match-end 2))
; (if (= 0 (length (buffer-substring
; (match-beginning 1) (match-end 1)))) 10 16))
; 1025))
; (if (and (>= kodono 0) (<= kodono 94))
; (replace-match (substring cyr-uni kodono (1+ kodono)) t t)))
(setq kodono
(string-to-number
(buffer-substring (match-beginning 2) (match-end 2))
(if (= 0 (length (buffer-substring
(match-beginning 1) (match-end 1)))) 10 16)))
; (if (>= kodono 128)
; (progn
; (replace-match "" t t)
; (insert-char (ucs-to-char kodono) 1)))
)
; === named entities:
(goto-char (point-min))
(while (re-search-forward "\\(&[a-z_]+;\\)" nil t)
(setq cxeno (buffer-substring (match-beginning 1) (match-end 1)))
(if (setq cxeno (rassoc cxeno sgml-list))
(replace-match (string (car cxeno)) t t)))
)
)
)
;===== Se vi uzas psgml-mode, la du sekvaj difinoj disponigos transkodadon
; per la menuo:
; Modify => Decode Character Entities
; Modify => Encode Characters
(defadvice sgml-display-char-to-charent (around >revo activate)
(>&))
(defadvice sgml-charent-to-display-char (around <revo activate)
(progn
(&>)
(goto-char (point-min))
(while (re-search-forward "\\(\n *\\)*<drv\\>" nil t)
(replace-match "\n\n<drv" t t))
(goto-char (point-min))
(while (re-search-forward "<snc +num=\"[1-9]\">" nil t)
(replace-match "<snc>" t t))
(goto-char (point-min))
(while (re-search-forward ": *<ekz>" nil t)
(replace-match ":\n<ekz>" t t))
(goto-char (point-min))
(while (re-search-forward "<ekz>\\(.\\)" nil t)
(replace-match "<ekz>\n\\1" t nil))
(goto-char (point-min))
(while (re-search-forward "</ekz> *\\(\n *\\)*<ekz>" nil t)
(replace-match "</ekz><ekz>" t t))
(goto-char (point-min))
(while (re-search-forward "\n\n*<ekz>" nil t)
(replace-match "\n<ekz>" t t))
(goto-char (point-min))
(indent-region (point-min) (point-max) nil)
(let ((case-fold-search nil))
(query-replace "k" "kaj" t))
))
(provide 'ent8)