Неверный аргумент типа: stringp, nil
До сих пор я только что вырезал и вставлял код в файл .emacs, но потом решил добавить некоторые функции maven в emacs. Теперь я не вижу, как мне удалось это испортить, но вчера вечером я продолжал получать ошибку, которую я ввел в заголовок, когда запускал M-x jarl-mvn-exec. Я спал на нем и вернулся на следующий день, но я до сих пор не дохожу.
(defun jarl-get-pom ()
(concat (locate-dominating-file
(buffer-file-name
(current-buffer))
"pom.xml")
"pom.xml"))
(defun jarl-visit-pom ()
(interactive)
(find-file (jarl-get-pom)))
(defun jarl-mvn-exec ()
(interactive)
(switch-to-buffer (get-buffer-create "maven"))
(start-process-shell-command "mvn-exec" "maven" "mvn" "-f" (jarl-get-pom) "compile")
(start-process-shell-command "mvn-exec" "maven" "mvn" "-f" (jarl-get-pom) "exec:exec"))
Ответы
Ответ 1
Вам нужно предоставить дополнительную информацию. Попробуйте установить
(setq debug-on-error t)
который даст вам трассировку стека, показывающую, какая функция жалуется на то, что строка равна нулю.
Я предполагаю, что buffer-file-name
возвращает nil и что там, где проблема (не все буферы имеют имена файлов). Ознакомьтесь с debugging в разделе Введение в программирование в Emacs Lisp или debugging руководства Emacs Lisp.
Ответ 2
Секрет поиска проблемы в вашем файле инициализации не является секретом: двоичный поиск.
Используйте comment-region
, чтобы прокомментировать половину файла инициализации, затем 3/4, 7/8,... Очень быстро определить проблему. comment-region
также отменяет: C-h f comment-region RET
.