emacs操作过程中,若遇到问题时,如何调查?(新手)


#1

%E5%9B%BE%E7%89%87

在Linux+emacs27环境,19行的错误,参数问题,目前调查没头绪,能给个提示吗?


#2

M-?(M-x xref-find-references)


总之就是各种跳转。


#3

toggle-debug-on-error,这样就能知道是哪里出的问题


#4

问题解决了,是一个叫做shackle的包太旧 了

查找的过程中,遇到一下几个问题

  1. M-?(M-x xref-find-references)的话,是不是要针对所有的代码生成一个TAG文件。

  2. toggle-debug-on-error开启了,为什么并没有停在出错的地方,或输出trace,只是简单的报错。

  3. M-x package-refresh-contents为什么不能保证elpa目录下是最新版,这次是我手动更新的。


#5

这个命令是更新索引,用 C-h f 看下 docstring。


#6

不是啊,看开启的 mode 怎么索引的,elisp 的话,选一下任意文件夹就行了吧。Elisp 的 find definition 都是直接跳的。


#7

A:

  1. xref在不同的mode下实现不一样,Emacs Lisp是直接跳转(你要保证这个函数所在的文件已经被require)。另外还有一大堆辅助xref的插件(比如Emacs Lisp有elisp-slime-nav,js有xref-js2)。

  2. 如果由lisp调用,应该直接设置debug-on-errort,且应在一切你觉得会出错的配置加载之前设置(一般就是init.el的第一行代码)。

  3. 你只更新了索引,并没有更新package啊……就像你只执行了apt update,却没有执行apt upgrade一样……更新package使用list-package以交互方式进行,或者把需要更新的package用package-delete卸载之后再用package-install安装……


#8

好的,学习了。下一步我学一下整个加载流程,搞清先后关系。特别是自己的设置,和下载的包之间的先后关系。


#9

好像package-reinstall就可以了