2012-04-01 4 views
2

私は最近、Dvorakレイアウトの入力に切り替えました。しかし、しばらくすると、EmacsでのみDvorakを使うことに決めました。私のシステム上の他のすべてのキーバインドは、決してうまくいかないでしょう。デフォルトでEmacsのDvorakレイアウト?

だから、私はStackOverflow.comにいくつかの質問から、次を取った:ドヴォルザークするすべての新しいバッファに入力方法を切り替え

(defadvice switch-to-buffer (after activate-input-method activate) 
    (activate-input-method "english-dvorak")) 

。それはうまくいきますが、問題があります - スクラッチバッファはデフォルトの英語のレイアウトを保持しており、 "ダイアログ"(Cx Cf)を選択しているすべてのファイルもそれを保持しています。 "タイピングの考え方" 1分に数回。

emacsでdvorakレイアウトをグローバルに有効にする方法はありますか?デフォルトのショートカット(デフォルトの英語のC-xのような)をそのまま使用しますか?

EDIT:

私の問題への答え:

(defadvice switch-to-buffer (after activate-input-method activate) 
    (activate-input-method "english-dvorak")) 
(add-hook 'minibuffer-setup-hook (lambda() (set-input-method "english-dvorak"))) 

答えて

3

あなたは(保証100%テストされていないコード)のようなものを試してみてください:

(define-minor-mode dvorak-minor-mode "Use Dvorak IM." :lighter nil 
    (if dvorak-minor-mode (active-input-method "english-dvorak"))) 
(define-global-minor-mode dvorak-mode dvorak-minor-mode dvorak-minor-mode) 
+0

奇妙な - それはよさそうだが、それ*何もしません - 絶対に何もしません。そしてエラーもない。 – Rogach

+0

@Rogach:コードを読んで(それが使っている識別子に基づいて何をするのか推測しようとすると)、(よく、2つの)マイナーモードしか定義しません。その後、マイナーモードを有効にするには、そのマイナーモードを有効にする必要があります。例えば。最後に '(dvorak-mode 1)'を追加してください。 – Stefan

+0

[OK]を追加すると(dvorak-mode 1)、そのコードが実行され、アクティブ入力メソッドの識別子を見つけることができませんでした。その間、私は別の方法で問題を解決しました:) – Rogach

関連する問題