概要
コマンド M-x parenthesized-region
で、範囲指定したテキストの中に
ASCIIコードの丸括弧 '()' で括った文字
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
(11) (12) (13) (14) (15) (16) (17) (18) (19) (20)
(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M)
(N) (O) (P) (Q) (R) (S) (T) (U) (V) (W) (X) (Y) (Z)
(a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) (m)
(n) (o) (p) (q) (r) (s) (t) (u) (v) (w) (x) (y) (z)
(一) (二) (三) (四) (五) (六) (七) (八) (九) (十)
(月) (火) (水) (木) (金) (土) (日)
(株) (有) (社) (名) (特) (財) (祝)
(労) (代) (呼) (学) (監) (企) (資)
(協) (祭) (休) (自) (至)
(ᄀ) (ᄂ) (ᄃ) (ᄅ) (ᄆ)
(ᄇ) (ᄉ) (ᄋ) (ᄌ) (ᄎ) (ᄏ) (ᄐ) (ᄑ)
(ᄒ) (가) (나) (다) (라) (마) (바) (사)
(아) (자) (차) (카) (타) (파) (하) (주)
(오전) (오후)
があった場合は
丸括弧付き文字
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽
⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
🄐 🄑 🄒 🄓 🄔 🄕 🄖 🄗 🄘 🄙 🄚 🄛 🄜
🄝 🄞 🄟 🄠 🄡 🄢 🄣 🄤 🄥 🄦 🄧 🄨 🄩
⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨
⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵
㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
㈪ ㈫ ㈬ ㈭ ㈮ ㈯ ㈰
㈱ ㈲ ㈳ ㈴ ㈵ ㈶ ㈷
㈸ ㈹ ㈺ ㈻ ㈼ ㈽ ㈾
㈿ ㉀ ㉁ ㉂ ㉃
㈀ ㈁ ㈂ ㈃ ㈄
㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌
㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔
㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ㈜
㈝ ㈞
に変換します。
逆変換は M-x ucs-normalize-NFKC-region
を使ってください。
ソースコード
parenthesized.el
(defconst parenthesized-symbols-alist
'(("(1)" . "⑴") ("(2)" . "⑵") ("(3)" . "⑶") ("(4)" . "⑷")
("(5)" . "⑸") ("(6)" . "⑹") ("(7)" . "⑺") ("(8)" . "⑻")
("(9)" . "⑼") ("(10)" . "⑽") ("(11)" . "⑾") ("(12)" . "⑿")
("(13)" . "⒀") ("(14)" . "⒁") ("(15)" . "⒂") ("(16)" . "⒃")
("(17)" . "⒄") ("(18)" . "⒅") ("(19)" . "⒆") ("(20)" . "⒇")
("(A)" . "🄐") ("(B)" . "🄑") ("(C)" . "🄒") ("(D)" . "🄓") ("(E)" . "🄔")
("(F)" . "🄕") ("(G)" . "🄖") ("(H)" . "🄗") ("(I)" . "🄘") ("(J)" . "🄙")
("(K)" . "🄚") ("(L)" . "🄛") ("(M)" . "🄜") ("(N)" . "🄝") ("(O)" . "🄞")
("(P)" . "🄟") ("(Q)" . "🄠") ("(R)" . "🄡") ("(S)" . "🄢") ("(T)" . "🄣")
("(U)" . "🄤") ("(V)" . "🄥") ("(W)" . "🄦") ("(X)" . "🄧") ("(Y)" . "🄨")
("(Z)" . "🄩")
("(a)" . "⒜") ("(b)" . "⒝") ("(c)" . "⒞") ("(d)" . "⒟") ("(e)" . "⒠")
("(f)" . "⒡") ("(g)" . "⒢") ("(h)" . "⒣") ("(i)" . "⒤") ("(j)" . "⒥")
("(k)" . "⒦") ("(l)" . "⒧") ("(m)" . "⒨") ("(n)" . "⒩") ("(o)" . "⒪")
("(p)" . "⒫") ("(q)" . "⒬") ("(r)" . "⒭") ("(s)" . "⒮") ("(t)" . "⒯")
("(u)" . "⒰") ("(v)" . "⒱") ("(w)" . "⒲") ("(x)" . "⒳") ("(y)" . "⒴")
("(z)" . "⒵")
("(一)" . "㈠") ("(二)" . "㈡") ("(三)" . "㈢") ("(四)" . "㈣") ("(五)" . "㈤")
("(六)" . "㈥") ("(七)" . "㈦") ("(八)" . "㈧") ("(九)" . "㈨") ("(十)" . "㈩")
("(月)" . "㈪") ("(火)" . "㈫") ("(水)" . "㈬") ("(木)" . "㈭") ("(金)" . "㈮")
("(土)" . "㈯") ("(日)" . "㈰")
("(株)" . "㈱") ("(有)" . "㈲") ("(社)" . "㈳") ("(名)" . "㈴") ("(特)" . "㈵")
("(財)" . "㈶") ("(祝)" . "㈷") ("(労)" . "㈸") ("(代)" . "㈹") ("(呼)" . "㈺")
("(学)" . "㈻") ("(監)" . "㈼") ("(企)" . "㈽") ("(資)" . "㈾") ("(協)" . "㈿")
("(祭)" . "㉀") ("(休)" . "㉁") ("(自)" . "㉂") ("(至)" . "㉃")
("(ᄀ)" . "㈀") ("(ᄂ)" . "㈁") ("(ᄃ)" . "㈂") ("(ᄅ)" . "㈃") ("(ᄆ)" . "㈄")
("(ᄇ)" . "㈅") ("(ᄉ)" . "㈆") ("(ᄋ)" . "㈇") ("(ᄌ)" . "㈈") ("(ᄎ)" . "㈉")
("(ᄏ)" . "㈊") ("(ᄐ)" . "㈋") ("(ᄑ)" . "㈌") ("(ᄒ)" . "㈍")
("(가)" . "㈎") ("(나)" . "㈏") ("(다)" . "㈐") ("(라)" . "㈑") ("(마)" . "㈒")
("(바)" . "㈓") ("(사)" . "㈔") ("(아)" . "㈕") ("(자)" . "㈖") ("(차)" . "㈗")
("(카)" . "㈘") ("(타)" . "㈙") ("(파)" . "㈚") ("(하)" . "㈛") ("(주)" . "㈜")
("(오전)" . "㈝") ("(오후)" . "㈞")
))
(defun parenthesized-region (beg end)
(interactive (list (mark) (point)))
(let (pos kv val klen
(swp (< end beg)))
(when swp
(setq pos end)
(setq end beg)
(setq beg pos))
(goto-char beg)
(while (and (setq pos (re-search-forward "([^()]+)" nil t))
(<= pos end))
(when (setq kv (assoc (match-string 0) parenthesized-symbols-alist))
(setq klen (length (car kv)))
(setq val (cdr kv))
(setq end (+ end (length val) (- klen)))
(delete-char (- klen))
(insert val)))
(goto-char (if swp beg end))))
久しぶりに Emacs-Lisp を使ったので、もっと良い書き方があるかと思います。
参考