2009-06-09 2 views
0

Название моего вопроса - ссылка на sane tabs in emacs.полностью прозрачные вкладки и пробелы в emacs?

В принципе, я хочу, чтобы глобальные настройки вкладок и отступа работали в каким-то единообразным способом. Я чувствую, что emacs намного лучше, чем TextMate или BBEdit, но на самом деле способ, которым они обрабатывают отступ, прост и хорош для моих целей. В emacs, если вы используете какую-либо схему табуляции/пробела, которая равна , отличной от схемы, применяемой второстепенным режимом, который вы используете, вы находитесь в проблемах.

Когда я нажимаю кнопку ввода, я бы хотел, чтобы меня переместили на следующую строку с отступом до в нужном месте с помощью вкладок. Если я смогу получить торт и съесть его, я бы хотел бы иметь отступы, используя пробелы, если остальная часть файла составлена ​​ таким образом.

Я попробовал это также:
doing tabs in emacs
force emacs to use tabs

Спасибо всем, кто может помочь мне достичь этого.

-Mike

+0

Мне в итоге пришлось объединить кучу разных фрагментов из статей, упомянутых в моем вопросе и других битах из ответов ниже. Я опасаюсь принять только один ответ, потому что ни один из них не был полным решением для меня. Конечно, это может сказать больше о моем вопросе, чем о ответах. Спасибо всем. Если кто-то хочет знать, что я закончил, я могу опубликовать его здесь, просто дайте мне знать. -Mike –

+0

Можете ли вы разместить то, что сработало для вас. Я также ищу способ получить торт и съесть его тоже :). Благодарю. – sateesh

ответ

4

(global-set-key (kbd "RET") 'newline-and-indent) Возможно, это то, что вы хотите? (Или reindent-then-newline-and-indent, если это доступно, или вы можете просто нажать C-j вместо клавиши Enter.)

2

Для этой части вашего вопроса:

Если я могу иметь свой кусок пирога и съесть его тоже я d хотел бы иметь отступы, используя пробелы, если остальная часть файл составлен таким образом.

это делает то, что вы хотите?

(defun dtrt-indent() 
    (setq indent-tabs-mode 
     (save-excursion 
      (goto-char (point-min)) 
      (search-forward "\t" nil t)))) 
(add-hook 'text-mode-hook #'dtrt-indent) 
(add-hook 'c-mode-hook #'dtrt-indent) 
; etc for all modes you care about 

Так что если в буфере есть вкладка, отступ с помощью вкладок; если нет вкладки, отступ с использованием пробелов.

+0

FWIW, а не гадать, объявляю такие настройки, как это, с помощью eproject: http://wiki.github.com/jrockway/eproject/project-attributes – jrockway

0

если вы делаете ваши настройки, как описано:

(setq indent-tabs-mode t) 
(setq-default indent-tabs-mode t) 
(setq tab-width 4) ;; 8 is way too many 
(setq default-tab-width 4) ;; 8 is way too many 
(global-set-key (kbd "RET") 'newline-and-indent) 

indent-tabs-mode вещь будет сказать Emacs, чтобы создать отступы с помощью и табуляций, чтобы составить нужный отступ (определяется индивидуальным режимом). Это означает, что если вы хотите включить TAB вместо TABS/SPACES, вам необходимо настроить свой режим на использование tab-width в качестве отступа.

Например, если вы используете c-mode и выберите cc-mode как стиль отступов (выберите с C-c .), который использует 4 в качестве значения отступа, newline-and-indent будет вставлять пробелы.

В заключении:

  1. Убедитесь, что ваш режим использует tab-width как отступ
  2. Проверьте, что режим не overwride indent-tabs-mode (python-mode, кажется, сделать это)

Хотя я лично дон 't нравится TABS удачи в вашем путешествии :)

0

Лучшая стратегия - убедить ваш p режим перепрограммирования до отступы, как вам нравится. Это, как правило, очень легко; Я picky о отступе, и мой emacs всегда делает правильную вещь автоматически. (Это означает, что «indent-region» также всегда делает , что я хочу, что очень удобно.)

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