2012-03-26 17 views
5

stackoverflow! Geçtiğimiz birkaç gün içinde emaclarımı biraz uyarlamaya çalıştım ve nasıl yaklaşacağımı bilmediğim problemle yüzleştim.Küresel ayar anahtarıyla maskelenen ido modu bağlama

Yapmaya çalıştığım şey, farklı anahtarlar yapmak için aynı anahtarları kullanan genel bir anahtar ciltleme ve bir ido modu tuş bağlama tanımlamaktır.

Ido modlu keybinding bu şekilde tanımlanır :

(defun ido-my-keys() 
    "Add my keybindings for ido." 
    (define-key ido-completion-map (kbd "M-<return>") 
    'ido-invoke-in-vertical-split) 
) 

(add-hook 'ido-setup-hook 'ido-my-keys) 

Ve ben .emacs dosyasında aşağıdaki satırı koyun kadar iyi çalışır: bu hat mevcut M-dönüş ile

(global-set-key (kbd "M-<return>") 'insert-newline-and-indent) 

ido-switch-buffer'dan bile insert-newline-ve-indent'i çağırır. İlginç bir şekilde, global-set-anahtarını interaktif olarak kullandığımda (yani, init dosyasından değil M-x çağrısından), her şey beklendiği gibi çalışır.

Yardımlarınız için teşekkürler. İngilizcem için üzgünüm.


Sorun, açtığım ergoemacs modunda olduğu ortaya çıktı. Bu mod, bu etkiye neden olan global ayar anahtarı için bir öneri tanımlar.

Genel ayarlı çağrıyı ergoemac başlatma işleminin üstüne getirerek sorunu çözdüm. En iyi çözüm değil, basit bir tanesi.

+0

Bunu çoğaltmak olamaz. BTW 'ido-invoke-in-vertical-split' dahili işlev değil, bunun için google'a sahip olmak zorunda kaldım. https://gist.github.com/493269 – kindahero

+0

Böyle bir belirsizlik için özür dilerim. Her neyse, bu işlev problemle ilgili görünmüyor: başka bir şeye (örneğin, ido-exit-minibuffer) değiştirerek efekt değişmez. – campugnatus

+0

Hangi Emacs sürümünü kullanıyorsunuz? Bu sorunu yeniden üretemiyorum (Emacs 24.0.94'te). – phils

cevap

3

sorun ergoemacs-mode.el tarafından, daha spesifik olmak gerekirse, ergoemacs-keybinding paket yüzünden veya edildi Bu paket aslında, değiştirir, küresel-set-anahtarı için bir tavsiye tanımlar

kendi ergoemacs-global-set-key. Ancak ergoemacs küçük bir mod olduğu için, anahtar haritasının küresel haritasından daha yüksek bir önceliği vardır, bu nedenle ido minor modunun keybinding özelliğini geçersiz kılar. ergoemacs-mode.el içinde

  1. Comment aşımı tavsiye:

    O sorunun üç çözüm görüyoruz.

  2. Ergoemacs modunu açmadan ÖNCE global ayar anahtarını kullanın. hatayı düzeltmek için ergoemacs yazar için
  3. bekleyin;)