Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. (customize-variable (quote tab-stop-list))
или добавляют стоп-лист вкладки запись в пользовательские переменные набора в файл .emacs :
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))))
Попробуйте это:
(add-hook 'text-mode-hook
(function
(lambda ()
(setq tab-width 4)
(define-key text-mode-map "\C-i" 'self-insert-command)
)))
, Который заставит ВКЛАДКУ всегда вставить литеральный Символ табуляции с позициями табуляции каждые 4 символа (но только в Текстовом режиме). Если это не то, что Вы просите, опишите поведение, которое требуется видеть.
(setq tab-width 4)
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80))
(setq indent-tabs-mode nil)
Можно найти легче настроить вкладки следующим образом:
M-x customize-group
В эти Customize group:
подсказка входят indent
.
Вы будете видеть экран, где можно установить все Вы опции расположения с отступом и установить их для текущей сессии или сохранить их для всех будущих сессий.
, Если Вы делаете это этот путь, Вы захотите к , настраивает файл .
удовлетворения требованиям заказчикаЭта проблема не вызвана отсутствием табуляции; Дело в том, что в emacs есть метод табуляции (new?), называемый indent -lative, который, кажется, предназначен для выстраивания табличных данных. Клавиша TAB отображается на метод indent-for-tab-command, который вызывает любой метод, на который установлена переменная indent-line-function, который является относительным к отступу методом для текстового режима. Я не нашел хороший способ переопределить переменную indent-line-function (перехват текстового режима не работает, так что, возможно, он сбрасывается после запуска перехватчиков режима?), Но один простой способ избавиться от этого Поведение состоит в том, чтобы просто бросить метод команды intent-for-tab-command, установив TAB на более простой метод tab-to-tab-stop:
(define-key text-mode-map (kbd "TAB") 'tab- к вкладке-стоп)
Мне было достаточно просто изменить стиль с помощью c-set-style.
(setq-default tab-width 4)
(setq-default indent-tabs-mode nil)
Ключевым моментом является указание emacs вставлять все, что вы хотите, при отступе, это делается путем изменения функции-строки-отступа. Легче изменить его, чтобы вставить табуляцию, а затем заменить табуляцию на 4 пробела, чем изменить ее, чтобы вставить 4 пробела. Следующая конфигурация решит вашу проблему:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)
Из Отступ, контролируемый основным режимом @ emacs manual :
Важная функция каждого основного режим - настроить ключ для сделать отступ для языка отредактировано.
[...]
Переменная функция строки отступа функция, которая будет использоваться (и различные команды, как при звонке indent-region) для отступа текущего линия. Команда отступ в соответствии с режимом больше не работает чем вызвать эту функцию.
[...]
Значение по умолчанию зависит от отступа для многих режимов.
Из руководства @ emacs с относительным отступом:
Относительный отступ Относительный отступ до следующего точка отступа в предыдущей непустой строке.
[...]
Если в предыдущей непустой строке нет точки отступа за точкой столбца начинается с, `tab-to-tab-stop 'выполняется вместо этого.
Просто измените значение функции indent-line-function на функцию insert-tab и настройте вставку табуляции как 4 пробела.