полностью прозрачные табуляции и пробелы в Emacs? - PullRequest
0 голосов
/ 09 июня 2009

Название моего вопроса - ссылка на вменяемые вкладки в emacs .

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

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

Я тоже пробовал:
делает вкладки в emacs
заставляет emacs использовать вкладки

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

-Mike

Ответы [ 4 ]

4 голосов
/ 09 июня 2009

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

2 голосов
/ 09 июня 2009

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

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

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

(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 голосов
/ 09 июня 2009

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

0 голосов
/ 09 июня 2009

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

(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 о создании отступа, используя TABS и SPACES для создания требуемого отступа (определяется индивидуальным режимом). Это означает, что если вы хотите вставить TAB вместо TABS / SPACES, вам необходимо настроить режим для использования tab-width в качестве отступа.

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

Заключить:

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

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

...