错误的类型参数:stringp,nil

Hah*_*ess 27 emacs elisp

在此之前,我刚刚将代码剪切并粘贴到我的.emacs文件中,但后来我决定为emacs添加一些maven功能.现在,我没有看到我是如何弄清楚这一点的,但昨晚我在运行Mx 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"))
Run Code Online (Sandbox Code Playgroud)

Tre*_*son 38

您需要提供更多信息以确保.尝试设置

(setq debug-on-error t)
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个堆栈跟踪,显示哪些函数抱怨字符串为nil.

我的猜测是buffer-file-name返回nil,这就是问题所在(并非所有缓冲区都有文件名).退房调试的部分中的Emacs Lisp的编程简介,或者调试的的Emacs Lisp手册的部分.


Dre*_*rew 14

在init文件中找到问题的秘诀不是秘密:二进制搜索.

使用comment-region注释掉一半的init文件,然后3/4,7/8,...这是非常快速的找出问题所在.comment-region也取消评论:C-h f comment-region RET.