在此之前,我刚刚将代码剪切并粘贴到我的.emacs文件中,但后来我决定为emacs添加一些maven功能。现在,我没有看到我是如何弄清楚这一点的,但昨晚我在运行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"))
答案 0 :(得分:36)
您需要提供更多信息才能确定。尝试设置
(setq debug-on-error t)
它将为您提供一个堆栈跟踪,显示哪些函数抱怨该字符串为nil。
我的猜测是buffer-file-name
返回nil,这就是问题所在(并非所有缓冲区都有文件名)。查看debugging的An Introduction To Programming in Emacs Lisp部分或Emacs Lisp手册的debugging部分。
答案 1 :(得分:14)
在init文件中发现问题的秘诀不是秘密:二进制搜索。
使用comment-region
注释掉一半的初始文件,然后是3/4,7 / 8,...... 非常快速识别问题。 comment-region
也取消注释:C-h f comment-region RET
。