Подтвердить что ты не робот

Неверный аргумент типа: 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"))
4b9b3361

Ответ 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.