Почему мой Emacs может использовать пробелы вместо вкладок? - PullRequest
2 голосов
/ 22 мая 2010

Я пытаюсь диагностировать эту проблему. TAB создает 4 пробела вместо 4 col, как я хочу. Но я не думаю, что так должно быть, потому что C-h v indent-tabs-mode в рассматриваемом буфере говорит, что он установлен в t. Когда я проверяю свои сочетания клавиш, TAB устанавливается на c-indent-line-or-region. Эта функция игнорирует мой режим вкладок?

Ответы [ 5 ]

3 голосов
/ 25 мая 2010

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

Следующая страница в Emacs Wiki объединяет большую часть соответствующей дискуссии: http://www.emacswiki.org/emacs/CategoryIndentation

Там довольно много, но это стоит посмотреть.

Одна или другая из конфигураций TabsAreEvil и SmartTabs, скорее всего, вам понравится, между прочим, в зависимости от вашего личного мнения по этому вопросу!

Убедитесь, что вы читаете страницу в переменной tab-stop-list. Он спрятан в нижней части этого списка ссылок, но очень важен для понимания поведения вкладок при отсутствии правил автоматического отступа, а также таких вещей, как «tabify».

ruler-mode также полезен здесь. Я включаю его автоматически в текстовом режиме:

;; Use ruler in text-mode
(add-hook 'text-mode-hook
          (function (lambda ()
                      (setq ruler-mode-show-tab-stops t)
                      (ruler-mode 1))))
2 голосов
/ 22 мая 2010

Я разобрался в проблеме.В конце концов, он вставлял символ табуляции.Оказывается, я думал, что это не потому, что когда я нажимаю клавишу Backspace, этот ключ привязывается к c-electric-backspace, который смотрит на переменную c-backspace-function, которая была установлена ​​на backward-delete-char-untabify, что в IMO не позволяет использовать вкладки.

1 голос
/ 18 ноября 2014

Обязательно взгляните и на первую строку файла. Если вы видите что-то вроде // - - tab-width: 4; Режим: C ++; c-basic-offset: 4; Режим отступа-вкладок: ноль - - Эта строка переопределяет любые глобальные настройки или настройки режима.

1 голос
/ 22 мая 2010

Проверка файла для Emacs "File Local Variables" . Эти специально отформатированные строки могут переопределять ваши настройки при загрузке этого файла.

Ниже приведен пример небольшого фрагмента кода Ruby с принудительным отступом в 2 пробела и переходами табуляции в пробелы:

# Local Variables:
# tab-width: 2
# ruby-indent-level: 2
# indent-tabs-mode: nil
# End:
1 голос
/ 22 мая 2010

Проверьте tab-width переменная.Если это 8 (по умолчанию), то Emacs, конечно, должен вставить четыре пробела, так как вкладка будет «слишком много».

...