使用:2012-03-25 在 allspice 上发布的 GNU Emacs 23.3.1 (x86_64-pc-linux-gnu,GTK+ 版本 2.24.10),由 Debian 修改
我正在尝试做一些简单的查找和替换。没什么大不了的。我甚至没有使用正则表达式。这是简单的字符串替换。META-%,String1,String2。应该很简单。最近,我遇到了一个我不明白的非常奇怪的错误。来自消息;
Mark set
replace-match-maybe-edit: Args out of range: 597, 607
我打开了一个较长的 .sql 文件,我想更改一些日期字符串。我输入了两个字符串,然后点击了感叹号以告诉 emacs 我想更改所有可用的字符串,结果出现了这个奇怪的 Args 超出范围错误。最近我遇到过几次这种情况。几天前我确实尝试过 ECB,但我决定不使用它,但我很确定我已经从 init.el 中删除了所有 ECB 内容。这里面有一些杂乱无章的东西,但并不荒谬,这个错误只是在最近几天才开始出现的。
我用 Google 搜索了一下,但似乎什么也没找到。您觉得呢?
在我最近的例子中,我正在替换日期字符串:
Query replace (default 2012-04-01 -> 2001-01-01):
在过去几天的其他情况下,我进行了更简单的查找和替换,并获得了类似的结果。
答案1
您的 init 文件中的某些内容(或由其加载的内容)干扰了正常replace.el
代码(例如建议它),或者该代码有错误。您永远不应该看到错误Args out of range
。
replace-match-maybe-edit
在库中定义replace.el
。在 init 文件中,执行(load-library "replace.el")
然后(debug-on-entry 'replace-match-maybe-edit)
,然后逐步调试器以查看哪里出了问题。
或者,如果您认为初始化文件中的某些内容导致了问题,请以递归方式对初始化文件进行二分查找,直到找到罪魁祸首代码。