トップ «前の日(07-06) 最新 次の日(07-08)» 追記   RSS 1.0 FEED  

Journal InTime


2004-07-07 (Wed)

_ libapache2-mod-ruby

sidに入ったみたい。

_ uim-primeのvi対応

viでuim-primeを使っていると、ついつい英数モードにするのを忘れて escapeを押してしまう。

anthy-dev MLで聞いてみたところ、.uimにこんなのを入れとけば、escapeの 時に自動で英数モードにできるようだ。

(define prime-push-key-orig prime-push-key)
(set! prime-push-key
  (lambda (c key key-state)
    (if (or (= key 'escape)
            (and (= key 91) ;; [
                 (= key-state 2))) ;; control
      (let ((sc (context-data c))
            (id (context-id c)))
        (prime-context-set-mode! sc prime-mode-latin)
        (prime-update-mode id sc)))
    (prime-push-key-orig c key key-state)))

ついでに、もう一度iとかでinsert modeに戻る時に、前のuim-primeの モードに戻すようにしてみた。

(define prime-suspended-mode -1)
(define prime-in-vi-c-command #f)

(define prime-context-set-mode-orig! prime-context-set-mode!)
(set! prime-context-set-mode!
  (lambda (ac mode)
    (set! prime-suspended-mode -1)
    (set! prime-in-vi-c-command #f)
    (prime-context-set-mode-orig! ac mode)))

(define prime-push-key-orig prime-push-key)
(set! prime-push-key
  (lambda (c key key-state)
    (let* ((sc (context-data c))
           (mode (prime-context-mode sc)))
      (prime-push-key-orig c key key-state)
      (cond
        ((and (not (= mode prime-mode-latin))
              (or (= key 'escape)
                  (and (= key 91) ;; [
                       (= key-state 2)))) ;; control
         (prime-context-set-mode-orig! sc prime-mode-latin)
         (prime-update-mode (context-id c) sc)
         (set! prime-suspended-mode mode)
         (set! prime-in-vi-c-command #f))
        ((and (= mode prime-mode-latin)
              (>= prime-suspended-mode 0))
         (cond
           ((or (= key 105) ;; i
                (= key 73) ;; I
                (= key 97) ;; a
                (= key 65) ;; A
                (= key 111) ;; o
                (= key 79) ;; O
                (= key 67) ;; C
                (= key 115) ;; s
                (= key 83) ;; S
                (and prime-in-vi-c-command
                     (or (= key )
                         (= key 108) ;; l
                         (= key 119) ;; w
                         (= key 101) ;; e
                         (= key 99) ;; c
                         (= key 71)))) ;; G
            (prime-context-set-mode-orig! sc prime-suspended-mode)
            (prime-update-mode (context-id c) sc)
            (set! prime-suspended-mode -1)
            (set! prime-in-vi-c-command #f))
           ((= key 99) ;; c
            (set! prime-in-vi-c-command #t))
           ((or (= key 58) ;; :
                (= key 47) ;; /
                (= key 63) ;; ?
                (= key 33) ;; !
                (= key 'escape))
            (set! prime-suspended-mode -1)
            (set! prime-in-vi-c-command #f))))))))

やっぱりSchemeは日常的に使うのはつらそうだなあ。 自分の能力的に。

_ modruby.net

リニューアルしました。

Tags: mod_ruby