理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

Anything を使ったときに大文字が入力できなくなる

Anything 使っていると、anything 関連機能において "英大文字で入力ができなくなる" という事象にみまわれてました。調べるのメンドいからずっと放置してたんだけど、今日ちょっと調べてみた。

困ること

例えば、anything-find-file を使うときに、"Test.txt" というようなファイルを Emacs から作成することができなくなります。これはスゴいストレスで、このままだとストレス性のハゲができてしまう。

解決策

anything-map にて、"A" から "Z" キー self-insert-command にリバインドすると大文字入力可能になります。

(loop for c from ?A to ?Z do
      (define-key anything-map (make-string 1 c) 'self-insert-command))

原因

anything.el で、"A"から"Z"までのキーが anything-select-with-digit-shortcut にバインドされてること。

(defvar anything-map
  (let ((map (copy-keymap minibuffer-local-map)))
    (define-key map (kbd "<down>") 'anything-next-line)
    ;; 略
    (loop for c from ?A to ?Z do
          (define-key map (make-string 1 c) 'anything-select-with-digit-shortcut))
    ;; 略

anything-select-with-digit-shortcut はショートカットキーによる選択機能(anything-enable-shortcuts) を有効にしている場合にのみ効果があるので、この機能を使ってない人にとっては、リバインドしても無害なはず。