Hi all, I am new to Emacs(and evil-mode). Currently I have difficulties in using evil-mode when *ecb mode* is activated. The problem is that the *Enter *key is no longer available in any windows of ecb, so I cannot switch from the navigation window to the source code window at the right side. I also tried `(evil-set-initial-state 'ecb-minor-mode 'emacs)`, this time I can use the default key-bindings in ecb(and so is the *Enter *key). What annoys me is that when I switch to the source code, evil-mode key-bindings are deactivated. And even I now toggle ecb-minor-mode off, the key-bindings are still not available. So I have to `M-x evil-mode` twice to use the right evil-mode. I know this problem may lie in the fault of ecb, however I guess someone else has also come across this problem when using evil. Thanks in advance. Hongxu Chen
On 2013-03-02, Hongxu Chen <[email protected]> wrote:
--===============1925688492== Hi all,
I am new to Emacs(and evil-mode). Currently I have difficulties in using evil-mode when *ecb mode* is activated. The problem is that the *Enter *key is no longer available in any windows of ecb, so I cannot switch from the navigation window to the source code window at the right side. I also tried `(evil-set-initial-state 'ecb-minor-mode 'emacs)`, this time I can use the default key-bindings in ecb(and so is the *Enter *key). What annoys me is that when I switch to the source code, evil-mode key-bindings are deactivated. And even I now toggle ecb-minor-mode off, the key-bindings are still not available. So I have to `M-x evil-mode` twice to use the right evil-mode.
I do not know ecb in detail, but ecb-minor-mode seems to be active in each buffer when ecb is active. Hence, using 'ecb-minor-mode to modify Evil states is a bad idea, because it will influence every buffer. Unfortunately ecb buffer windows do not have a specific major mode. However, there are several hooks. I suggest you try the following hooks (but note that you must not enable/disable evil mode while ecb is active because these hooks are only called when the ecb buffers are created, and you must install these hooks *before* ecb is activated): (add-hook 'ecb-history-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-directories-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-methods-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-sources-buffer-after-create-hook 'evil-emacs-state) Alternatively if only the *Enter* key annoys you, you can disable evil's special binding of RET: (define-key evil-motion-state-map (kbd "RET") nil) I have the feeling that this function needs a rewrite anyway. Yes, it simulates Vim's behaviour of the Enter key, but it often makes trouble if Enter is bound to something special in some modes. I think, it is not really useful in most motion state buffers, so maybe you should just bind it in normal state only: (define-key evil-normal-state-map (kbd "RET") 'evil-ret) If you remove the RET key from motion-state, then you should be able to use motion-state in ecb windows, which gives you a few bindings like h j k l: (add-hook 'ecb-history-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-directories-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-methods-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-sources-buffer-after-create-hook 'evil-motion-state) Hope this helps, Frank
Thanks very much for you kind advice, Frank. Seems that ecb has good integration with native emacs keybindings, just like buffer-menu, ediff,dired. Well, I still feel that using ecb with evil is terrible, and I don't use ecb now; it's a pity, but I have no choice:-( Many thanks, Hongxu Chen On Sat, Mar 16, 2013 at 4:24 AM, Frank Fischer <[email protected]
wrote:
On 2013-03-02, Hongxu Chen <[email protected]> wrote:
--===============1925688492== Hi all,
I am new to Emacs(and evil-mode). Currently I have difficulties in using evil-mode when *ecb mode* is activated. The problem is that the *Enter *key is no longer available in any windows of ecb, so I cannot switch from the navigation window to the source code window at the right side. I also tried `(evil-set-initial-state 'ecb-minor-mode 'emacs)`, this time I can use the default key-bindings in ecb(and so is the *Enter *key). What annoys me is that when I switch to the source code, evil-mode key-bindings are deactivated. And even I now toggle ecb-minor-mode off, the key-bindings are still not available. So I have to `M-x evil-mode` twice to use the right evil-mode.
I do not know ecb in detail, but ecb-minor-mode seems to be active in each buffer when ecb is active. Hence, using 'ecb-minor-mode to modify Evil states is a bad idea, because it will influence every buffer.
Unfortunately ecb buffer windows do not have a specific major mode. However, there are several hooks. I suggest you try the following hooks (but note that you must not enable/disable evil mode while ecb is active because these hooks are only called when the ecb buffers are created, and you must install these hooks *before* ecb is activated):
(add-hook 'ecb-history-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-directories-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-methods-buffer-after-create-hook 'evil-emacs-state) (add-hook 'ecb-sources-buffer-after-create-hook 'evil-emacs-state)
Alternatively if only the *Enter* key annoys you, you can disable evil's special binding of RET:
(define-key evil-motion-state-map (kbd "RET") nil)
I have the feeling that this function needs a rewrite anyway. Yes, it simulates Vim's behaviour of the Enter key, but it often makes trouble if Enter is bound to something special in some modes. I think, it is not really useful in most motion state buffers, so maybe you should just bind it in normal state only:
(define-key evil-normal-state-map (kbd "RET") 'evil-ret)
If you remove the RET key from motion-state, then you should be able to use motion-state in ecb windows, which gives you a few bindings like h j k l:
(add-hook 'ecb-history-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-directories-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-methods-buffer-after-create-hook 'evil-motion-state) (add-hook 'ecb-sources-buffer-after-create-hook 'evil-motion-state)
Hope this helps, Frank
_______________________________________________ implementations-list mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
participants (2)
-
Frank Fischer -
Hongxu Chen