2010-03-05 6 views
5

EMACS için atlama yapıyor ve php-mode almak için .emacs dosyamda ne yapmam gerektiğini ve TAB yerine 4 boşluk eklemek için diğer tüm modları bulamıyorum. Yardım et?Bunu şulamıyorum: EMACS'ta bir SEKME yerine 4 YER ALANLARI nasıl kullanırım?

GÜNCELLEME:

Ben sekme çarptığında hala verilen cevaplar düz dosyasında 8 boşluk olsun. Php modunda hala 2 alanım var. Php modunda sekme vurma hiçbir şey yapmaz, düzenli EMACS sekmesi 8 boşluk ekler.

Update2:

Bu benim benim .emacs içinde ne var:

düzenli dosyalarında Hala
(require 'color-theme) 
(color-theme-calm-forest) 

(setq-default indent-tabs-mode nil) 
(setq-default tab-width 4) 
(setq c-basic-offset 4) 

8 boşluk ve PHP çalışmaz sekme ayarı dosyaları veya şimdi etrafında rasgele atlar. Ben TAB Tuşu vurduğunda ...

  1. İşte

    Tamam ne istiyorum, ve ben hep çarptı: My php-mode Ubuntu 9,10 apt-get install php-mode


    UDATE3 dan SEKME tuşu, 4 SPACES eklemek istiyorum.

  2. Ben Bu kurallar ama eğer tüm dosyaları uygulamak gerekir

(yine MEKANLARI girerek, son çizgiye oto sekmesi up) TAB tuşu önceki satırın nispi pozisyona atlamak istiyorum İlk ve en başta gerekli olan (metin) ve PHP dosyaları için gerekli olan ihtiyaç.

cevap

9

Değişken indent-sekme-modunu nil olarak değiştirin. M-x set-variable ile etkileşimli olarak (sadece bir arabellek için) yapabilirsiniz. Kalıcı hale getirmek için (ve tüm arabelleklere), init dosyanıza

(setq-default indent-tabs-mode nil) 

'u yerleştirin. Bir sekmeyi yapmak için

da yapmanız gerekecektir (PHP gibi) C tabanlı modlarda için

(setq-default tab-width 4) 

eklemek çoğu modlarda sadece 4 boşluk yapın: Bu ne olduğunu

(setq c-basic-offset 4) 
+0

Tamam, php modunda (hala 2) yardımcı olmadı ve genel düzenleme için 8 boşluk kullanıldı. – Urda

+0

Genel düzenlemede 4 alana nasıl değiştirileceği hakkında bir çizgi eklendi. Php modu muhtemelen bunun için kendi ayarı vardır. –

+0

Bir sözdizimi hatasının var. Ben (setq-varsayılan sekme-genişlik 4) 'olduğunu varsayalım Ve bu hiç yardımcı olmadı. Ve evet, her denediğimde EMACS'ın yeni yapılandırmayı aldığından emin oluyorum. – Urda

0

Tüm sekmeleri boşluklara dönüştürmek için M-x untabify kullanabilirsiniz.

Bu durumda php küçük modunuz için indent-tabs-mode değerini nil olarak ayarlayabilirsiniz.

Ayrıca wiki: http://www.fnal.gov/docs/products/emacs/emacs/emacs_23.html#SEC185 ve Jamie Zawinski'nin mesajını da bulabilirsiniz: http://www.jwz.org/doc/tabs-vs-spaces.html bilgilendirici.

+0

Tamam, bilmek güzel. Ancak PHP ve diğer modlardaki dosyaları düzenlerken bunun kalıcı bir ayar olmasını istiyorum. – Urda

0

Ben bitti.

;;;; Tab settings ;;;; 
;Tab width is 3 
(setq tab-width 3) 
(setq-default tab-width 3) ;;going to force it. yessir. 
;Use spaces always. 
(setq-default indent-tabs-mode nil) 
;Jump by 3. 
(setq c-basic-offset 3) 
;this defaulted to 4 and had to be reset to 3. the prior settings did not override it. Lame. 
(setq perl-indent-level 3) 
;Tab stop list out to col 60 
;Manually set by x3 
(setq tab-stop-list '(3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60)) 
+0

Neden bir satırda 2 '(setq-default tab-width 3)' var? – Gabe

+0

Aşırı aptallık. Neden soruyorsun? –

3

(Setq c-basic-indent 4) eksik.Yani sahip olmalıdır:

;; 4 spaces rather than tabs 
(setq-default indent-tabs-mode nil) 
(setq-default tab-width 4) 
(setq c-basic-offset 4) 
(setq c-basic-indent 4) 
+1

Tekrar ediyorum: Yaptığınız şeyi gerçekten bilmedikçe * sekme * değiştir "tab-width" yapınız. – Stefan

2

(programlama modlarında) Emacs TAB varsayılan davranışı için burası önemli modu tarafından açıklanan girinti kurallara dayalı karar verilir doğru yer, otomatik girinti olan (Aslında, ana modun en önemli işlerinden biri, aslında, renk vurgulamadan çok daha talepkar. Tabii ki hat zaten doğru yere girerse, TAB isabet etmek bir şey yapmayacaktır.

Bu nedenle, SEKME'yi istediğin gibi aptalca davranmaya zorlayabilirsin, ama sonra eğlencenin çoğunu kaçırırsın. E.g. Eğer

(global-set-key "\t" 
    (lambda() 
    (interactive) 
    (let ((prevline-indent (save-excursion (forward-line -1) (current-indentation)))) 
     (if (< (current-column) prevline-indent)) 
      (indent-to prevline-indent) 
     (insert " "))))) 

gibi bir şey yapabileceğini Ama bunun yerine, sana Tab Emacs amaçlanan şekilde kullanmak ve kodunuzu girintili olmak ister nasıl Emacs açıklamak önerilir. Muhtemelen gibi bir şey ayarlayarak: söylediklerinizi itibaren

(setq-default indent-tabs-mode nil) ;; Prefer SPC over TAB when indenting. 
(setq c-basic-offset 4)    ;; I like indenting by 4 spaces. 

, php-modunda TAB girinti doğru çalışmıyor, bu yüzden sadece php-modunda bir hata olabilir. Tam olarak hangi durumda çalıştığını tam olarak söyleyin, yanlış girintili metinleri gösterin ve girintinin beklentilerinize uymadığını açıklayın.

İlgili konular