← Back to team overview

sslug-teknik team mailing list archive

Re: Re: tabs/spaces baseret på filtype i emacs

 

Mads Jensen <madsj@xxxxxxxxx>, 2009-06-17 12:55 (+0200):

> Jeg tror du skal bruge noget ala:
>
> (add-hook 'mode-hook '(lambda ()
> 	(setq tab-width 4)))

Där "mode-hook" alltså skall bytas ut till den hook som just den här
moden har. 

Om man skall sätta många saker kan det kanske vara snyggare att ha en
namngiven funktion i stället för en lambda-funktion:

----------------- 8< -----------------
(defun my-mode-settings ()
  "Set stuff for my mode."
  (setq tab-width 4
	indent-tabs-mode t))

(add-hook 'my-mode-hook 'my-mode-settings)
----------------- 8< -----------------

Anledningen till att det där behövs är att både variabeln tab-width och
indent-tabs-mode blir automagiskt bufferlokala när de sätts. Se själv i
hjälptexten med C-h v. Alltså kan man inte sätta dem i sin .emacs eller
motsvarande.

Observera att tab-width bara påverkar hur ett TAB-tecken visas. Om
indenteringen i en viss mode ibland görs med mellanslag i stället så
kommer inte det att påverkas. Många modes blandar ju friskt mellan
mellanslag och TAB-tecken, irriterande nog. 

Personligen föredrar jag att låta tab-width vara ifred och alltid se
TAB-tecken som 8 mellanslag. Sedan sätter jag min indentering att alltid
göras med mellanslag i stället.

Jag kommer tyvärr just inte på något enkelt sätt att tvinga fram att
*enbart* TAB-tecken skall användas som indentering. Det går dock, som
jag skrev förut, att använda C-q TAB hela tiden för att alltid skjuta in
just TAB-tecken.

Det kanske i modens kod går att hitta någon variabel som sätter just
indenteringen och sätta den i stället för tab-width? Då kan Atte
dessutom sätta om indent-tabs-mode till nil och alltid ha mellanslag som
indentering i stället och låta en TAB alltid vara 8, som gudinnan
menade att världen skulle vara fallen... *flin*

-- 
M.C. Widerkrantz, http://hack.org/mc/
Plain text e-mail, please. OpenPGP welcome.


Follow ups

References