2012-07-04 4 views
4

Мне нравится Emacs, но мне не нравится, как это делает отступ: либо неконтролируемое сочетание вкладок и пробелов, либо просто пробелов ((setq indent-tabs-mode nil)).Использование вкладок только для отступов в Emacs

Я хочу Emacs делать делать отступы:

  1. С только вкладки.

  2. Сделайте отступ фиксированному количеству мест (не 6, а иногда 8, а иногда и 4 в некоторых других местах).

  3. Уметь устанавливать один уровень отступов равным 4 (или 2) местам.

  4. Если изменить значение табуляции, все вновь открываемые или Reloaded файлы должны использовать новое значение (или может это изменение влияет только путем повторного запуска Emacs?)

ли все это возможно? Некоторые настройки в .emacs или в пакете?

Большинство IDE (например, Eclipse) предлагают выше.

+3

Я использую только пробелы, поэтому у меня нет ответа на ваш вопрос. Но вы видели эту страницу? http://www.emacswiki.org/SmartTabs – kindahero

+0

@kindahero ссылка, которую вы дали довольно много ответов на все мои вопросы (и некоторые из них!). Могу ли я помешать вам добавить эту ссылку в качестве ответа, чтобы я мог отметить ее как принятую и дать вам кредит на ваши усилия? Благодаря! – markvgti

+0

ответил, спасибо – kindahero

ответ

7

smart tabs вставит вкладки и пробелы контекстуально.

Лично я использую пробелы как для отступов, так и для выравнивания (по крайней мере для моих собственных проектов). Here - еще одна статья об emacswiki, которую я нашел очень полезной по теме

+0

+1, режим умных вкладок - это способ сделать это в Emacs. –

3

Для C/C++/Java, вы можете попробовать добавить в свой режим зацепить идентичную вкладку ширины, отступов уровня и с-Бейсик-offet:

(defun my-c-mode-common-hook() 
    (setq c-indent-level 3 
    c-brace-offset -3) 
    (setq c-basic-offset 3) 
    (setq-default tab-width 3) 
    (setq tab-width 3)) 

(add-hook 'c-mode-common-hook 'my-c-mode-common-hook) 

Это делает его так, когда вы в режиме cc, вкладки и отступы равны, поэтому emacs всегда будет выбирать вкладки над пробелами. Смотрите также Indenting C

tab-width может быть установлен в другом месте, и вы можете применить его к другим режимам в сочетании с отступом переменной длиной, как python's python-indent.


Edit:

На самом деле, это выглядит как ссылка kindahero в значительной степени делает это: http://www.emacswiki.org/SmartTabs

+0

Это полезный код, особенно для кого-то - вроде меня - кто не знает elisp. Спасибо, но, как вы сами указали, ссылка @ kindahero в значительной степени охватывает все по этой теме. – markvgti

3

Я использую вкладки для отступов. Но когда кто-то другой использовал другой редактор, они могли видеть, что отступы исчезли. Таким образом, вы можете выбрать фрагмент кода с отступом, используя вкладки, и запустить «M-x untabify». Это заменяет вкладки пробелом, поэтому первая указанная проблема не будет у пользователей, использующих другой редактор.

Смежные вопросы