2011-02-03 15 views
11

Düzenleyiciyi yapılandırma konusunda yetenekleri olmayan bir Emacs kullanıcısıyım.Haskell-modu 2.7'de haskell-indent-mode overkell-indentation-mode üzerinde zorlama mı?

  • Girinti oldukça sevmiyorum bir bakıma, her nasılsa farklı: Ben 2.7'ye haskell-mode 2.4 yükseltme sonra iki değişiklik fark ettik. Parmağımı ne olduğu üzerine koyamıyorum.
  • Daha da önemlisi: Cua modu etkinleştirilmiş ve bir metin bloğunu vurguladığımda, geri silme/silme değil tüm bloğu, işaretçimden önceki/sonraki karakteri siler.

Haskell kipinin 2.7 varsayılan olarak kük modda kestirme girinti kipini kullandığını görüyorum, 2.4'in davranışı haskell-indent-kipi biçiminde korunmuştur. İlkini ilk olarak kapatırsam ve daha sonra, ikinci durumda, istediğim davranış geri yüklenir (yani, girinti önceki gibi görünür ve geri al/vurgula vurgulanan blokları siler).

Ancak, bir .hs son eki içeren bir dosyayı açtığımda bunu otomatik olarak gerçekleştiremiyorum. Çeşitli

(remove-hook 'haskell-mode-hook 'turn-on-haskell-indentation-mode) 
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent-mode) 

benzeyen şeyler ve bunun gibileri denedim, ama ben de standart modda veya girinti ve doc olmadan düz haskell-mod ile bitirmek.

Herhangi bir fikrin var mı?

Çözüm (teşekkürler nominolo için):

(add-hook 'haskell-mode-hook 'my-haskell-mode-hook) 

(defun my-haskell-mode-hook() 
    (haskell-indentation-mode -1) ;; turn off, just to be sure 
    (haskell-indent-mode 1)  ;; turn on indent-mode 

    ;; further customisations go here. For example: 
    (setq locale-coding-system 'utf-8) 
    (flyspell-prog-mode) ;; spell-checking in comments and strings 
    ;; etc.  

    ) 

Ayrıca orada bir anonim işlev sopa olabilir:

(remove-hook 'haskell-mode-hook 'turn-on-haskell-indent) 
(remove-hook 'haskell-mode-hook 'turn-on-haskell-indentation) 
(add-hook 'haskell-mode-hook 'my-haskell-mode-hook) 
(defun my-haskell-mode-hook() 
    (haskell-indentation-mode -1) ;; turn off, just to be sure 
    (haskell-indent-mode 1)  ;; turn on indent-mode 
    ) 

cevap

14

böyle şeyler yapılandırmak için en iyi yolu özel kanca yazarak olduğunu Ancak, bazı ayarlarla denemek istiyorsanız, adlandırılmış bir işleve sahip olmak daha kolaydır. Sadece işlevi yeniden tanımlamak (ve bir Haskell dosyasını yeniden açmak) size yeni davranışı verecektir.

+0

Harika cevap; Bu, daha önce sahip olduğum rastgele 'add-hook'un modelinden çok daha iyi. Teşekkürler! – acfoltzer

+0

Ne yazık ki, bu bana yardımcı olmaz. Verdiğim kodu .emacs'e ekliyorum, ama açtığımda bir .hs haskell-indentation-mode hala devam ediyor. 'M-x haskell-indentation-mode' çalmak, beklendiği gibi kapatır. – gspr

+0

@gspr: Ardından başka bir çengeliniz olabilir. Aktif kancaları görmek için 'C-h v haskell-mode-hook'unu kullanın. Alternatif olarak, aslında üç girinti modu var gibi görünüyor, bu yüzden belki başka bir modu kapatmak gerekiyor? – nominolo