2010/12/10

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 件のコメント: