Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Необходимо будет быть конкретными относительно того, что Вы подразумеваете под "остальными". За исключением инспектора объектов (что я "m знающий), emacs делает все вышеупомянутое довольно легко:
M-x compile
и вводит Вашу команду компиляции. Оттуда на, Вы можете всего M-x compile
и использовать значение по умолчанию. Emacs получит ошибки компилятора C/C++ (работы лучше всего с GCC) и поможет Вам перейти к строкам с предупреждениями или ошибками. M-x gdb
и это создаст буфер gdb со специальной привязкой Редактирование: Я понимаю, что мой ответ о поиске документации действительно принадлежал навигации кода. Вот некоторая главная информация:
поиск Google несомненно покажет дальнейшие примеры.
, Поскольку вторая ссылка показывает, искание функций (и безотносительно) в другой документации может быть сделано, даже если не поддерживаемый из поля.
На поиске документации: это зависит от Вашего языка (языков) программирования.
библиотеки C и системные вызовы обычно документируются в страницы справочника. Для этого можно использовать M-x man
. Некоторые вещи могут быть зарегистрированы лучше на информационных страницах; используйте M-x info
.
Для самого elisp, используйте C-h f
. Для Python используйте >>> help(<function, class, module>)
в интерпретаторе.
я нахожу, что большинство других языков предлагает документацию в форме HTML. Для этого попробуйте встроенный браузер (я использую w3m). Установите Ваш BROWSER
переменная среды к сценарию обертки приблизительно emacsclient -e "(w3m-goto-url-new-session \"$@\")"
(на *, отклоняют), в случае, если что-то могло бы открыть браузер, и Вы хотите открытый внутри emacs.
компиляция, следующая ошибка и предыдущая ошибка являются всеми довольно важными командами для разработки C++ в Emacs (работает отлично на выводе grep также). Завершающие теги, таблица тегов посещения и находить-тег важны также. completion.el является одним из больших незамеченных взломов 20-го века и может ускорить Ваше взламывание C++ порядком величины. О, и давайте не забывать ediff.
я должен все же изучить, как использовать управление версиями, не посещая оболочку, но теперь, когда я выполняю фиксации настолько более часто (с мерзавцем), я буду, вероятно, иметь к.
Я соглашаюсь, что необходимо узнать о компиляции M-x (свяжите ту и следующую ошибку M-x с коротким сочетанием клавиш).
Узнают о привязке для управления версиями (например, vc-diff, vc-next-action, и т.д.)
Изучают регистры. Не только можно помнить местоположения в буферах, но и целых конфигурациях окна (C-x r w - window-configuration-to-register).
Для управления версиями существует несколько вещей, которые можно использовать, в зависимости от какой системы управления версиями Вы используете. Но часть функциональности характерна для всех них.
vc.el является встроенным способом обработать управление версиями на уровне файла. Это имеет бэкенды для большинства систем управления версиями. Например, бэкенд Подрывной деятельности идет с Emacs, и существуют бэкенды мерзавца и другие, доступные из других источников.
самая полезная команда C-x v v (vc-next-action), который делает соответствующее следующее действие для файла, который Вы посещаете. Это могло бы означать обновлять из репозитория или фиксировать Ваши изменения, vc.el также снова переплетает C-x C-q для регистрации и файлы, если Вы используете систему, которой нужен он (как RCS).
Другие очень полезные команды C-x v l и C-x v = , которые показывают Вам журнал и текущую разность для файла, который Вы используете.
, Но для реальной производительности, необходимо избегать использования однофайловых команд vc.el кроме для простых вещей. Существует несколько пакетов, которые могут дать Вам обзор состояния Вашего целого дерева, и давать Вам больше питания, и не говоря уже о способности создать когерентные фиксации, охватывающие несколько файлов.
на Большинство из них в большой степени влияют или на основе оригинала pcl-cvs / pcvs для CVS. Существует даже два из них, который идет с подрывной деятельностью, psvn.el и dsvn.el. Существуют пакеты для мерзавца и т.д.
Можно найти подробное описание emacs & интеграция управления версиями на мой сайт . Я также работаю над статьей об использовании Emacs как Среда разработки для многих языков - C/C++, Java, Perl, Lisp/схема, Erlang, и т.д.
Существуют углы emacs, который когда-то обнаружил, делают Вас более продуктивными способами, которыми Вы никогда не думали. Как другие упомянули, использование отмечает, фантастический и быстрый способ масштабировать вокруг Вашего исходного кода, и использующий M-/(dabbrev-расширяются), часто делает точно, что Вы ожидаете при завершении имени переменной.
Используя происходят, полезно для получения буфера со всеми происшествиями регулярного выражения в буфере. Это действительно удобно при рефакторинге кода и поиске фрагментов кода или использования переменных, или если Вы используете маркеры TODO в своих исходных файлах, и Вы хотите посетить их всех.
строки сброса, числовые поля вида, замена-regexp и прямоугольные функции могут быть действительно полезны для взятия дампа от некоторого инструмента и преобразования его к полезным данным, таким как elisp программа, или запятая разграничила электронную таблицу.
я записал страницу о IDE как вещи, которые можно сделать с emacs
http://justinsboringpage.blogspot.com/2007/09/11-visual-studio-tricks-in-emacs.html
, Учась elisp, другой отличный способ ответить для себя, что еще emacs может сделать вне того, что может сделать типичный IDE.
, Например, я вел блог о записи По необходимости функций помощника как вина (пишущий, что Ваше собственное означает, что можно заставить ее вести себя точно, как Вы хотите)...
http://justinsboringpage.blogspot.com/2009/01/who-changed-line-your-working-on-last.html
я также написал код, который динамично создает комментарии для функции в точке, которая соответствует стандартам кодирования, с которыми я работаю.
Ни один из моего кода elisp не является особенно большим, и большая часть из него уже существует в библиотеках, но действительно полезно смочь заставить emacs сделать пользовательский материал, который просто подходит в течение рабочего дня.
Я должен рекомендовать Браузер Кода Emacs как более "традиционная" среда стиля IDE для emacs.
РЕДАКТИРОВАНИЕ : Я также теперь рекомендую Magit высоко по стандартному интерфейсу VCS в emacs.
Вместо того, чтобы выполнить сделать команду в окне оболочки, Вы попробовали компиляцию M-x? Это выполнит Ваш делать команду, ошибки дисплея, и во многих случаях сделает очень легким перейти к строке кода, который вызвал ошибку, если вывод включает имена файлов и номера строки.
, Если Вы - поклонник IDE, Вы могли бы также хотеть посмотреть на пакет панели кнопок быстрого доступа emac (панель кнопок быстрого доступа M-x). И, если Вы уже не имеете, узнаете о том, как использовать таблицы тегов для навигации по коду.
Начальная точка (который может быть неочевидным) для исследования функций VC Emacs M-x vc-next-action.
Это делает "следующую логическую операцию управления версиями" на текущем файле, в зависимости от состояния файла и бэкенда VC. Таким образом, если файл не является объектом управления версиями, он регистрирует его, если файл был изменен, изменения отправлены и т.д.
, требуется немного привыкающее к, но я нахожу его очень полезным.
привязка клавиш По умолчанию C-x v v
Вы также можете найти панель вкладок полезной. Он имитирует единственное поведение, которое я пропустил при переходе с Eclipse на Emacs. Связан с "," и "." для перехода к предыдущей и следующей панели вкладок он избавляет вас от постоянного переключения буфера с помощью Ctrl-x b.
К сожалению, указанная веб-страница не предоставляет правильную версию для загрузки. Однако большинство версий Ubuntu поставляют его в своих пакетах emacs-goodies.
Существует TFS.el для интеграции emacs в Microsoft TFS . Он работает с любой TFS, включая TFS, на которой работает Codeplex.com.
Основные шаги для установки:
Поместите tfs.el в путь загрузки.
В файле .emacs:
(требуется 'tfs)
(setq tfs / tf-exe "c: \ vs2008 \ common7 \ ide \ tf.exe")
(setq tfs / login "/ login: домен \\ идентификатор пользователя, пароль")
-или-
(setq tfs / login (getenv "TFSLOGIN")) ;; если у вас есть этот набор
Также в вашем файле .emacs задайте локальные или глобальные привязки клавиш для команд tfs. примерно так:
(global-set-key "\ C-xvo" 'tfs / checkout)
(global-set-key "\ C-xvi" 'tfs / checkin)
(global-set-key "\ C-xvp" 'tfs / properties)
(global-set-key "\ C-xvr" 'tfs / переименовать)
(глобальный набор-ключ "\ C-xvg" 'tfs / get)
(глобальный-набор-ключ "\ C-xvh" 'tfs / history)
(global-set-key "\ C-xvu" 'tfs / undo)
(глобальный-набор-ключ "\ C-xvd" 'tfs / diff)
(глобальный-набор-ключ "\ C-xv-" 'tfs / delete)
(global-set-key "\ C-xv +" 'tfs / add)
(глобальный-набор-ключ "\ C-xvs" 'tfs / status)
(global-set-key "\ C-xva" 'tfs / annotate)
(глобальный-набор-ключ "\ C-xvw" 'tfs / workitem)