Climacs で T-Code
以前、 uim を使って McCLIM で日本語入力 みたいなことをやっていた。
今回は Common Lisp だけでどうにかできないかと、あがいてみた。
(in-package :clim-user)
(use-package :climacs)
(use-package :climacs-gui)
(progn
(make-command-table 'tcode-table :errorp nil
:inherit-from '(drei:editor-table global-climacs-table))
(let (on)
(define-command (com-tcode-mode-toggle :name t :command-table global-climacs-table) ()
(when (setf on (not on))
(esa:simple-command-loop 'tcode-table on))))
(esa:set-key 'com-tcode-mode-toggle 'global-climacs-table '((#\\ :control)))
(macrolet ((m (k1 k2 c)
(let ((com-name (intern (format nil "com-tcode-key-~c-~c" k1 k2))))
`(progn
(define-command (,com-name :name t :command-table tcode-table) ()
(drei-core:insert-character ,c))
(esa:set-key ',com-name 'tcode-table '((,k1) (,k2)))))))
(m #\f #\u #\あ)
(m #\d #\e #\い)
(m #\f #\e #\う))
)
こんな感じで地味にできそうではある。
esa:simple-command-loop を使うのがいいかは分かってない。
マイナーモードというものが Climacs では見付けられなかったので、 esa:simple-command-loop を使ってみた。
0 件のコメント:
コメントを投稿