Emacs 错误的类型参数:stringp,nil
在此之前,我只是将代码剪切并粘贴到.emacs文件中,但后来我决定向emacs添加一些maven功能。现在,我不知道我是如何把事情搞砸的,但昨晚我在运行M-x jarl mvn exec时一直在标题中输入错误。我在上面睡了一觉,第二天就回来了,但我还是一事无成Emacs 错误的类型参数:stringp,nil,emacs,elisp,Emacs,Elisp,在此之前,我只是将代码剪切并粘贴到.emacs文件中,但后来我决定向emacs添加一些maven功能。现在,我不知道我是如何把事情搞砸的,但昨晚我在运行M-x jarl mvn exec时一直在标题中输入错误。我在上面睡了一觉,第二天就回来了,但我还是一事无成 (defun jarl-get-pom () (concat (locate-dominating-file (buffer-file-name (current-buffer)) "p
(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"))
您需要提供更多信息以确保。尝试设置
(setq debug-on-error t)
这将为您提供一个堆栈跟踪,显示哪个函数抱怨字符串为nil
我猜
缓冲区文件名
返回nil,这就是问题所在(并非所有缓冲区都有文件名)。查看Emacs Lisp手册的一节或一节。在init文件中查找问题的秘密不是秘密:二进制搜索
使用
注释区域
注释掉一半的初始文件,然后是3/4、7/8,。。。识别问题的速度非常快comment region
也取消注释:C-h f comment region RET
我的意图是在文件上方为emacs中的当前缓冲区获取pom,但是我将缓冲区切换到另一个(没有文件的)以查看我的maven命令的结果。回答得好。Emacs Lisp编程入门中调试部分的链接是Tho,在本例中,他需要调试基本上是“单个块”的代码,并且他已经知道它是哪个块,因此从二进制搜索中确实没有多少收获(由于它主要是一系列独立的指令,因此通常对~/.emacs
非常有效)。值得一提的是,错误消息“错误类型参数:stringp,nil”意味着emacs需要一个字符串,但得到的却是nil
。